FairePlace Templates API
Document templates attached to a lease type.
Document templates attached to a lease type.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/faireplace-com:faireplace-com-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: FairePlace Property Management Templates API
description: 'Comprehensive API for managing properties, leases, tenants, and all aspects of real estate management.
Built with Rust and Actix-web following hexagonal architecture principles.
## Authentication
This API uses API keys for authentication with tenant-based isolation.
## Base URL
- Production: `https://api.faireplace.com/api`'
version: 1.0.0
contact:
name: FairePlace API Support
email: api-support@faireplace.com
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: https://api.faireplace.com/api
description: Production server
security:
- BearerAuth: []
tags:
- name: Templates
description: Document templates attached to a lease type.
paths:
/lease-types/{lease_type_id}/templates:
get:
operationId: listTemplatesLeaseType
summary: List templates for a lease type
description: Retrieve all templates associated with a lease type
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Templates retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/LeaseTypeTemplate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
post:
operationId: createTemplateLeaseType
summary: Create a template for a lease type
description: Create a new template for a lease type
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLeaseTypeTemplate'
responses:
'201':
description: Template created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LeaseTypeTemplate'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/lease-types/{lease_type_id}/templates/type/{type}:
get:
operationId: listTemplatesType
summary: List templates by type
description: Retrieve all templates of a specific type for a lease type
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: type
in: path
description: Template type
required: true
schema:
type: string
enum:
- lease
- amendment
- termination
- inventory
responses:
'200':
description: Templates retrieved successfully
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/LeaseTypeTemplate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/lease-types/{lease_type_id}/templates/active/{type}:
get:
operationId: getActiveTemplateType
summary: Get active template by type
description: Retrieve the active template of a specific type for a lease type
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: type
in: path
description: Template type
required: true
schema:
type: string
enum:
- lease
- amendment
- termination
- inventory
responses:
'200':
description: Active template retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LeaseTypeTemplate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/lease-types/{lease_type_id}/templates/default/{type}:
get:
operationId: getDefaultTemplateType
summary: Get default template by type
description: Retrieve the default template of a specific type for a lease type
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: type
in: path
description: Template type
required: true
schema:
type: string
enum:
- lease
- amendment
- termination
- inventory
responses:
'200':
description: Default template retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LeaseTypeTemplate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/lease-types/{lease_type_id}/templates/{template_id}:
get:
operationId: getSpecificTemplate
summary: Get specific template
description: Retrieve the details of a specific template
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: template_id
in: path
description: Template ID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Template retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LeaseTypeTemplate'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
put:
operationId: updateTemplate
summary: Update template
description: Update an existing template
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: template_id
in: path
description: Template ID
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateLeaseTypeTemplate'
responses:
'200':
description: Template updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LeaseTypeTemplate'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
operationId: deleteTemplate
summary: Delete template
description: Delete a template
tags:
- Templates
security:
- BearerAuth: []
parameters:
- name: lease_type_id
in: path
description: Lease type ID
required: true
schema:
type: string
format: uuid
- name: template_id
in: path
description: Template ID
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Template deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
LeaseTypeTemplate:
type: object
description: Lease type template
properties:
id:
type: string
format: uuid
description: Unique identifier of the template
example: 550e8400-e29b-41d4-a716-446655440000
lease_type_id:
type: string
format: uuid
description: Lease type ID
example: 550e8400-e29b-41d4-a716-446655440001
name:
type: string
description: Template name
example: Standard furnished lease template
maxLength: 255
description:
type:
- string
- 'null'
description: Template description
example: Standard template for furnished leases
maxLength: 1000
content:
type: string
description: Template content (Typst)
example: '#= Furnished lease
Lease entered into between...'
template_type:
type: string
description: Template type
enum:
- lease
- amendment
- termination
- inventory
example: lease
version:
type: string
description: Template version
example: 1.0.0
maxLength: 50
is_active:
type: boolean
description: Indicates whether the template is active
example: true
is_default:
type: boolean
description: Indicates whether the template is the default
example: false
created_at:
type: string
format: date-time
description: Creation date
example: '2024-01-15T10:30:00Z'
updated_at:
type: string
format: date-time
description: Last modification date
example: '2024-01-15T10:30:00Z'
required:
- id
- lease_type_id
- name
- content
- template_type
- version
- is_active
- is_default
- created_at
- updated_at
CreateLeaseTypeTemplate:
type: object
description: Data for creating a new lease type template
required:
- name
- content
- template_type
- version
- is_active
- is_default
properties:
name:
type: string
description: Template name
example: Standard furnished lease template
maxLength: 255
minLength: 1
description:
type:
- string
- 'null'
description: Template description
example: Standard template for furnished leases
maxLength: 1000
content:
type: string
description: Template content (Typst)
example: '#= Furnished lease
Lease entered into between...'
minLength: 1
template_type:
type: string
description: Template type
enum:
- lease
- amendment
- termination
- inventory
example: lease
version:
type: string
description: Template version
example: 1.0.0
maxLength: 50
minLength: 1
is_active:
type: boolean
description: Indicates whether the template is active
example: true
is_default:
type: boolean
description: Indicates whether the template is the default
example: false
Error:
type: object
description: "The error envelope returned by every authenticated endpoint.\n\nTwo things are worth knowing before you write your error handling:\n\n- **`code` is a symbolic string, not a number.** The numeric HTTP status is\n in `status`. Branch on `code`: it is stable, and show `message`, which\n is written for humans and may be reworded without notice.\n- The public guest-signature endpoints use a **different, flatter shape**\n (`{ \"error_code\": …, \"message\": … }`, no `error` wrapper), because they\n are consumed by a page that has no session. Their responses document it\n inline.\n\nThe `X-Request-Id` response header carries the request identifier: quote it\nwhen reporting a problem. It is a header, not a body field.\n"
required:
- error
properties:
error:
type: object
required:
- code
- message
- status
properties:
code:
type: string
description: Stable symbolic code. Branch on this.
enum:
- NOT_FOUND
- UNAUTHORIZED
- VALIDATION_ERROR
- DATABASE_ERROR
- BUSINESS_ERROR
- STORAGE_ERROR
- CONFIG_ERROR
- FORBIDDEN
- CONFLICT
- PARSE_ERROR
- SERIALIZATION_ERROR
- AUTHENTICATION_ERROR
- AUTHORIZATION_ERROR
- EXTERNAL_SERVICE_ERROR
- RATE_LIMIT_EXCEEDED
- PAYMENT_REQUIRED
- PLAN_LIMIT_REACHED
- GONE
- BAD_REQUEST
- INTERNAL_ERROR
- INTERNAL_SERVER_ERROR
example: NOT_FOUND
message:
type: string
description: 'Human-readable explanation, most often in French. Safe to display,
not safe to parse.
'
example: Lease not found
status:
type: integer
description: The HTTP status code, repeated in the body.
example: 404
details:
type: object
additionalProperties: true
description: 'Extra machine-readable context. Only present on some errors: on
`RATE_LIMIT_EXCEEDED` it carries `retry_after_seconds`.
'
example:
retry_after_seconds: 12
UpdateLeaseTypeTemplate:
type: object
description: Data for updating a lease type template
properties:
name:
type: string
description: Template name
example: Standard furnished lease template
maxLength: 255
minLength: 1
description:
type:
- string
- 'null'
description: Template description
example: Standard template for furnished leases
maxLength: 1000
content:
type: string
description: Template content (Typst)
example: '#= Furnished lease
Lease entered into between...'
minLength: 1
template_type:
type: string
description: Template type
enum:
- lease
- amendment
- termination
- inventory
example: lease
version:
type: string
description: Template version
example: 1.0.0
maxLength: 50
minLength: 1
is_active:
type: boolean
description: Indicates whether the template is active
example: true
is_default:
type: boolean
description: Indicates whether the template is the default
example: false
responses:
InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: API key with fp_* prefix, passed as Bearer token
WorkerApiKey:
type: apiKey
in: header
name: X-API-Key
WorkerBearer:
type: http
scheme: bearer
bearerFormat: Worker