RentCheck Inspections Templates API
The Inspections Templates API from RentCheck — 4 operation(s) for inspections templates.
The Inspections Templates API from RentCheck — 4 operation(s) for inspections templates.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Inspections Templates API
version: 1.0.0
description: "\n## Mission\nAt RentCheck, our mission is plain and simple: To make renting fair and transparent for everyone involved. \nRentCheck is a property inspection solution that helps property managers save time and resources with easy self-guided inspections that residents can perform from their smartphone. \n\nWith RentCheck, property managers can avoid tenant coordination, eliminate drive time, and standardize their inspection process. \nWe provides real-time visibility to property managers and owners while bringing transparency to the security deposit deduction process.\n\n## API\nThe RentCheck API lets developers tap into the RentCheck ecosystem, building their own RentCheck-powered applications to enable inspection scheduling and creation and to leverage inspection data for a variety of use cases in the property management, maintenance, and insurance spaces.\n\nThe RentCheck REST API supports JSON requests and responses and features a resource-oriented design that generally adheres to the RFC 7321 HTTP/1.1 standard. \nOur API resources provide access to many RentCheck features, including units, buildings, communities, inspections, and residents.\n\n## Credentials\nIn addition to the Bearer Auth, RentCheck will need to send you an application ID and secret. These are required to generate the required application headers (x-app-id & x-app-secret).\nThese values can be obtained from the [RentCheck API integration page](https://app.getrentcheck.com/account/integrations/rentcheck-api).\n\n## Rate Limiting\nThe RentCheck API enforces rate limits to ensure fair usage and prevent abuse. The rate limits are as follows:\n- **Requests per second**: 8\n- **Requests per minute**: 256\n- **Requests per 10 minutes**: 1024\n\nIf you exceed the rate limits, you will receive a 429 Too Many Requests response.\n\n## Pagination\nWhen interacting with endpoints that return a list of items, the results are paginated to help manage large data sets efficiently. The following parameters control pagination:\n- **page_size** (integer): Defines the number of items returned per page. The maximum allowed value is 250. If a value larger than 250 is provided, it will be automatically clamped to 250. This ensures that the system performs optimally and prevents the server from being overwhelmed by too many items in a single response.\n - **Maximum**: `250`\n- **page_number** (integer): Indicates the page number to retrieve. Pagination starts at `page 0`. If not specified, the first page (`page 0`) is returned by default.\n### Example Request\n```http\nGET /api/v1/inspections?page_size=300&page_number=2\n```\nIn this example, although the `page_size` parameter is set to `300` **for a query with 1500 total results**, the system will return only `250` items per page, as `300` exceeds the maximum allowed value.\n#### Example Response\n```json\n{\n \"status\": 200,\n \"data\": [...],\n \"count\": 250,\n \"total_results\": 1500\n}\n```\nThis response shows that the `page_size` has been clamped to `250`, despite the initial request for `300`.\n"
contact:
name: RentCheck Support
email: support@getrentcheck.com
servers:
- url: https://prod-public-api.getrentcheck.com
description: Production server
security:
- bearerAuth: []
x-app-id: []
x-app-secret: []
tags:
- name: Inspections Templates
paths:
/v1/inspection-templates:
post:
x-internal: true
summary: Create an inspection template
tags:
- Inspections Templates
description: 'Create a user inspection template. `subscription_id` is always derived
from the caller (never accepted from the client), and
`is_rc_template` / `is_published` / `unpublished_sub_ids` are stamped
server-side. `team_ids` must be a non-empty subset of the caller''s
organizations. The supplied `permission_group_ids` are wired to the new
template, and the created template is returned in the same shape as
`GET /v1/inspection-templates/{inspectionTemplateId}`.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_template_create_request_model'
responses:
'200':
description: Returns the created inspection template.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_v1_get_by_id_response_model'
'400':
description: 'Bad request — request body validation failed. The following fields
are required: `name`, `internal_label`, `description`, `team_ids`
(min 1), `property_type`, `is_fast_track_enabled`, `template_type`,
`sections`, `contact_info`, and `permission_group_ids`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.name" is required'
'401':
$ref: '#/components/responses/401'
'403':
description: Forbidden — `invalid permissions` or `User does not have access to the provided team ids`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: User does not have access to the provided team ids
'409':
description: 'Conflict — the caller has more than one active subscription so the
target subscription to wire the template to cannot be inferred.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 409
error:
type: string
enum:
- user has more than one active subscription
example: user has more than one active subscription
'500':
description: Internal Server Error — `Failed to create inspection template`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 500
error:
type: string
example: Failed to create inspection template
get:
summary: Get all inspection templates
tags:
- Inspections Templates
description: 'Returns the list of inspection templates available to the caller. The optional boolean
`include_*` / `*_only` filters (passed as the strings `true`/`false`) and the multi-value
`property_types[]` filter narrow the result set. Templates that have no permission groups
shared with the caller are filtered out unless `include_unavailable=true`.
'
parameters:
- in: query
name: include_unavailable
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, also include templates that have no permission groups shared with the caller (which would otherwise be excluded as unavailable).
- in: query
name: include_deleted
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, include templates that have been soft-deleted.
- in: query
name: active_only
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, only return templates that have been used to create at least one inspection.
- in: query
name: published_only
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, only return templates marked `published`.
- in: query
name: exclude_rc_templates
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, exclude RentCheck-managed templates.
- in: query
name: resident_templates_only
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, only return templates intended for resident self-perform inspections.
- in: query
name: validate_pro_templates
schema:
type: string
enum:
- 'true'
- 'false'
description: When `true`, run subscription/permission validation against pro templates and surface only the ones the caller can use.
- in: query
name: property_types[]
schema:
type: array
items:
type: string
enum:
- unit
- building
- community
description: Optional list of property types to restrict templates to.
responses:
'200':
description: Returns all inspection templates
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/inspection_template_v1_get_all_response_model'
count:
type: integer
description: Amount of elements in `data`.
total_results:
type: integer
description: Amount of total elements according to search criteria.
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — the authenticated user''s profile could not be resolved
(`user not found`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
/v1/inspection-templates/{inspectionTemplateId}:
delete:
x-internal: true
summary: Delete an inspection template
tags:
- Inspections Templates
description: 'Delete an inspection template. The server decides the outcome: when no
inspection references the template it is permanently removed (the
document itself and its permission-group references); when inspections
reference it the template is archived (soft delete) instead, preserving
historical inspections. Email customizations tied to the template are
removed in both outcomes. When the template is referenced by an active
automation that prevents the delete, the response carries
`status: error` with `error.reason: in-use` and the offending
automation names instead of removing the record.
'
parameters:
- name: inspectionTemplateId
in: path
description: Inspection Template ID
required: true
schema:
type: string
responses:
'200':
description: Delete outcome envelope.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_delete_response_model'
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — `cannot delete default inspection templates`, `invalid permissions`,
or `User does not have access to the inspection template`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: cannot delete default inspection templates
'404':
description: Not Found — `inspection template not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection template not found
get:
summary: Get an inspection template by ID
tags:
- Inspections Templates
description: Get an inspection template by ID
parameters:
- name: inspectionTemplateId
in: path
description: Inspection Template ID
required: true
schema:
type: string
responses:
'200':
description: Returns the requested inspection template
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_v1_get_by_id_response_model'
'401':
$ref: '#/components/responses/401'
'403':
description: Forbidden — `invalid permissions` or `User does not have access to the inspection template`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: User does not have access to the inspection template
'404':
description: Not Found — `inspection template not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection template not found
put:
x-internal: true
summary: Update an inspection template
tags:
- Inspections Templates
description: 'Update a whitelist of editable inspection-template fields
(`is_published`, `sections`, `name`, `internal_label`, `description`,
`team_ids`, `property_type`, `is_fast_track_enabled`, `template_type`,
`contact_info`, `signature_acknowledgement`). All fields are optional; only the provided ones are
updated. `id`, `subscription_id` and `is_rc_template` are immutable and
stripped server-side. When `team_ids` is provided it must be a non-empty
subset of the caller''s organizations. When the template is referenced by
an automation that prevents unpublishing, the response carries
`status: error` with `error.reason: in-use` and the offending automation
names.
'
parameters:
- name: inspectionTemplateId
in: path
description: Inspection Template ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_template_update_request_model'
responses:
'200':
description: Returns the updated inspection template (or an error envelope when blocked).
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_update_response_model'
'400':
description: 'Bad request — request body validation failed. The `data` object must
have at least one whitelisted field, and each supplied optional field
is type-checked (e.g. `is_fast_track_enabled` boolean, `team_ids`
array with min 1 item, `property_type` one of `unit|building|community`).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data" must have at least 1 key'
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — `invalid permissions`, `User does not have access to the inspection template`,
or `User does not have access to the provided team ids` (returned when
reassigning `team_ids` to teams the caller does not belong to).
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
enum:
- invalid permissions
- User does not have access to the inspection template
- User does not have access to the provided team ids
example: invalid permissions
'404':
description: Not Found — `inspection template not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection template not found
/v1/inspection-templates/{inspectionTemplateId}/automations:
put:
x-internal: true
summary: Edit automation flags on an inspection template
tags:
- Inspections Templates
description: 'Toggle automation flags on an inspection template (currently
`is_fast_track_enabled`). Returns the updated template.
'
parameters:
- name: inspectionTemplateId
in: path
description: Inspection Template ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_template_edit_automations_request_model'
responses:
'200':
description: Returns the inspection template with the new automation flags applied.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_v1_get_by_id_response_model'
'400':
description: 'Bad request — request body validation failed. `data.is_fast_track_enabled`
(boolean) is required.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.is_fast_track_enabled" is required'
'401':
$ref: '#/components/responses/401'
'403':
description: Forbidden — `invalid permissions`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
example: invalid permissions
'404':
description: Not Found — `inspection template not found`.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection template not found
'409':
description: Conflict — the caller has more than one active subscription so the target subscription cannot be inferred.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 409
error:
type: string
example: user has more than one active subscription
/v1/inspection-templates/{inspectionTemplateId}/permission-groups:
put:
x-internal: true
summary: Replace the permission groups attached to an inspection template
tags:
- Inspections Templates
description: 'Replace the set of permission groups that govern access to the
inspection template. Returns the updated template.
'
parameters:
- name: inspectionTemplateId
in: path
description: Inspection Template ID
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/inspection_template_edit_permission_groups_request_model'
responses:
'200':
description: Returns the inspection template with the new permission groups applied.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/inspection_template_v1_get_by_id_response_model'
'400':
description: 'Bad request — request body validation failed. `data.permission_group_ids`
(array of strings) is required; an empty array is accepted and clears
all groups.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
example: '"data.permission_group_ids" is required'
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — the caller has no active subscription, or the resolved
subscription is `cancelled`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
enum:
- invalid permissions
example: invalid permissions
'404':
description: 'Not Found — the inspection template id in the path does not resolve to a
template the caller can access.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: inspection template not found
'409':
description: Conflict — the caller has more than one active subscription so the target subscription cannot be inferred.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 409
error:
type: string
example: user has more than one active subscription
components:
schemas:
inspection_template_edit_permission_groups_request_model:
x-internal: true
type: object
required:
- permission_group_ids
properties:
permission_group_ids:
type: array
items:
type: string
description: IDs of the permission groups that should govern access to this template.
inspection_template_v1_get_by_id_response_model:
type: object
description: Extends the template digest with a full `sections` list. Optional properties (`is_pro`, `new_until`, `subscription_id`, `signature_acknowledgement`, `is_resident_template`, `resident_template_info`) are omitted rather than nulled when not applicable.
required:
- id
- name
- internal_label
- display_name
- description
- is_rc_template
- is_fast_track_enabled
- template_type
- is_published
- team_ids
- property_type
- created_at
- contact_info
- permission_groups
- is_deleted
- is_new
- sections
properties:
id:
type: string
description: Inspection template ID.
example: rc_move_in
name:
type: string
description: The inspection template name.
internal_label:
type: string
description: The inspection template internal label.
display_name:
type: string
description: 'Resolved display name for the inspection template: the `internal_label` for users whose teams have access to the template, otherwise the public-facing `name`.'
description:
type: string
description: The inspection template description.
is_rc_template:
type: boolean
description: '`true` indicates that the inspection template was created by RentCheck. While `false` indicates that the inspection template was created by a user.'
is_fast_track_enabled:
type: boolean
description: Indicates whether the template supports fast track or not.
is_pro:
type: boolean
description: Whether the template is gated behind a Pro subscription. Defaults to `false` when absent.
new_until:
type: string
format: date-time
description: Optional ISO timestamp until which the template is marked as new in the UI.
is_new:
type: boolean
description: Whether the template should be flagged as new (computed from `new_until`).
is_deleted:
type: boolean
description: Whether the template has been soft-deleted (every team has lost access and it is not an RC template). Only set on the API response — not stored on the underlying document.
template_type:
type: string
description: When set to all-rooms the inspection will be created with all the rooms in the property. When set to specific-features the inspection will require features to be selected when creating the inspection.
enum:
- all-rooms
- specific-features
is_published:
type: boolean
description: Indicates if the template will be available for use on inspection creation. For RentCheck templates this is recomputed per subscription against the `unpublished_sub_ids` list.
team_ids:
type: array
items:
type: string
description: An array of team ids that have access to this template.
subscription_id:
type: string
description: The subscription id for the user that created this template.
property_type:
type: string
description: What property type this template applies to.
enum:
- unit
- building
- community
created_at:
type: string
description: The inspection template creation date.
example: 2021-12-02 14:15:37.925000
contact_info:
type: object
description: Optional contact email / phone surfaced to performers on the inspection.
properties:
email:
type: string
phone_number:
type: string
permission_groups:
type: array
description: Permission groups that grant access to this template. Each entry is `{ id, name }`.
items:
type: object
required:
- id
- name
properties:
id:
type: string
description: Entity ID
example: 00BRcZPSakXz6w7RYoE
name:
type: string
description: Permission group display name.
signature_acknowledgement:
$ref: '#/components/schemas/api_signature_acknowledgement'
is_resident_template:
type: boolean
description: Whether the template is a resident-facing template (rendered inside the resident app on the home screen).
resident_template_info:
type: object
description: Optional resident-template metadata used to render the entry in the resident app. Only populated when `is_resident_template` is `true`.
properties:
icon:
type: object
required:
- name
- color
properties:
name:
type: string
enum:
- house
- truck
- clock
description: Icon name displayed for the resident template.
color:
type: string
description: Icon color (hex string).
description:
type: string
# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-inspections-templates-api-openapi.yml