RentCheck Users API
The Users API from RentCheck — 20 operation(s) for users.
The Users API from RentCheck — 20 operation(s) for users.
openapi: 3.1.0
info:
title: RentCheck REST Account Settings Users 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: Users
paths:
/v1/intercom/articles:
get:
x-internal: true
summary: List Intercom help-center articles under a parent collection or section
tags:
- Users
description: 'Returns Intercom Help Center articles that live under the given `parent_id`
collection or section, optionally filtered by publication state and
capped at a maximum number of results. Results are read from a cache
backed by the Intercom Help Center API.
'
parameters:
- in: query
name: parent_id
required: true
schema:
type: string
description: 'Intercom collection or section id to list articles for. Required —
a 400 is returned when this is missing.
'
- in: query
name: state
schema:
type: string
enum:
- published
- draft
default: published
description: 'Filter articles by publication state. Defaults to `published` when
the parameter is omitted.
'
- in: query
name: quantity
schema:
type: integer
minimum: 1
description: 'Optional cap on the number of articles returned after filtering.
When omitted, all matching articles are returned.
'
responses:
'200':
description: Returns the matching Intercom articles.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
type: array
items:
$ref: '#/components/schemas/api_intercom_article'
count:
type: integer
description: Number of articles returned in `data`.
'400':
description: 'Bad request — the required `parent_id` query parameter is missing.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
enum:
- parent_id
example: parent_id
'401':
$ref: '#/components/responses/401'
/v1/intercom/messenger-jwt:
get:
x-internal: true
summary: Mint an Intercom Messenger JWT for the caller
tags:
- Users
description: 'Returns a short-lived signed Intercom Messenger JWT for the authenticated
user. The token is signed with the platform-specific Messenger secret
(Intercom issues a distinct secret per web / iOS / Android client), so
the caller must declare which platform is booting via the `platform`
query parameter.
The token TTL is 10 minutes — refresh on every Messenger boot.
'
parameters:
- in: query
name: platform
required: true
schema:
type: string
enum:
- web
- ios
- android
description: 'Which Messenger client is booting. Determines which platform-specific
Messenger secret the JWT is signed with — `INTERCOM_MESSENGER_SECRET_WEB`,
`INTERCOM_MESSENGER_SECRET_IOS`, or `INTERCOM_MESSENGER_SECRET_ANDROID`.
'
responses:
'200':
description: The minted Intercom Messenger JWT.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/intercom_messenger_jwt_response_model'
'400':
description: 'Bad request — missing/invalid inputs are rejected. `userId`
fails when the caller''s auth token has no decoded user id; `platform`
fails when the query parameter is absent or not one of `web` / `ios`
/ `android`.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
enum:
- userId has an invalid value
- platform has an invalid value
example: platform has an invalid value
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — the caller''s `userId` did not resolve to a user record.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- user not found
example: user not found
'500':
description: 'Internal Server Error — the platform-specific Messenger secret env
var (`INTERCOM_MESSENGER_SECRET_WEB` / `..._IOS` / `..._ANDROID`)
is not configured on the server.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 500
error:
type: string
example: INTERCOM_MESSENGER_SECRET_WEB is not configured
/v1/intercom/users/companies:
put:
x-internal: true
summary: Attach the caller to an Intercom company
tags:
- Users
description: 'Attaches the authenticated user to the given Intercom company and then
refreshes their Intercom custom attributes (rentcheck/chargebee
subscription ids, company id). Both the company-attach and the user
refresh proxy through the Intercom REST API; the response payload
mirrors Intercom''s responses verbatim and is intentionally untyped.
The attach step is a no-op when the caller has an internal RentCheck
email, in which case `company` is omitted / null while `user` is still
refreshed.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/intercom_update_companies_request_model'
responses:
'200':
description: The Intercom attach + user-refresh responses.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/intercom_update_companies_response_model'
'400':
description: 'Bad request — missing/invalid inputs are rejected.
`userId` fails when the caller''s auth token has no decoded user id;
`companyId` fails when the request body omits it.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
enum:
- userId has an invalid value
- companyId has an invalid value
example: companyId has an invalid value
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — one of three lookups failed. `user not found` and
`company not found` occur when the caller''s `userId` does not resolve
to an Intercom contact or the requested `companyId` does not exist in
Intercom. `subscription not found` occurs when the caller has no
active RentCheck subscription, which is looked up before the Intercom
refresh.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
enum:
- user not found
- subscription not found
- company not found
example: company not found
/v1/me/fcm-token:
delete:
x-internal: true
summary: Clear the caller's FCM device tokens
tags:
- Users
description: 'Removes every FCM device token registered for the caller. Used by the
mobile clients on sign-out / push unregistration.
'
responses:
'200':
description: The updated user document.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
put:
x-internal: true
summary: Register an FCM device token for the caller
tags:
- Users
description: 'Replaces all of the caller''s registered FCM device tokens with the
supplied `fcm_token`. Used by the mobile clients on app start / push
registration.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/me_update_fcm_token_request_model'
responses:
'200':
description: The updated user document.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user'
'400':
description: Bad request — `fcm_token` was empty or otherwise invalid.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
/v1/me:
delete:
x-internal: true
summary: Disable the authenticated user
tags:
- Users
description: 'Disables the authenticated caller''s account. The profile is retained
for audit; the user can no longer sign in.
'
responses:
'204':
description: User disabled. No content.
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
get:
x-internal: true
summary: Get the authenticated user
tags:
- Users
description: 'Returns the full profile document for the authenticated caller, including teams,
resolved permissions, metadata and external identity verification payloads.
'
responses:
'200':
description: The authenticated user.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
put:
x-internal: true
summary: Update the authenticated user
tags:
- Users
description: 'Partial update for the authenticated caller. Changing `email` or `password`
requires `current_password` for re-authentication. Other fields update the
caller''s profile metadata in place.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/me_update_request_model'
responses:
'200':
description: The updated user.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user'
'400':
description: 'Bad request — validation failed (e.g. `password` shorter than 8
characters, malformed `email`), or `current_password` was omitted while
changing `email`/`password`, or the supplied `current_password` did not
authenticate.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
/v1/me/firebase-token:
get:
x-internal: true
summary: Mint a Firebase custom auth token for the caller
tags:
- Users
description: 'Returns a short-lived Firebase custom auth token the caller can exchange
for a Firebase ID token via the Firebase Auth client SDKs. Used by
embedded surfaces that need to re-authenticate the caller against
Firebase.
'
responses:
'200':
description: The minted custom auth token.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/me_get_firebase_token_response_model'
'401':
$ref: '#/components/responses/401'
/v1/me/notifications-preferences:
get:
x-internal: true
summary: Get the caller's personal notifications preferences
tags:
- Users
description: 'Returns the per-user notifications preferences document for the
authenticated caller. Used to drive the per-user notification settings UI.
'
responses:
'200':
description: The caller's notifications preferences.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'401':
$ref: '#/components/responses/401'
put:
x-internal: true
summary: Update the caller's personal notifications preferences
tags:
- Users
description: 'Partial update for the caller''s per-user notifications preferences. Any
combination of `inspections_awaiting_review`,
`inspections_in_revision_review`, `inspections_completed` and
`automation_failures` may be supplied; the server merges the values onto
the current document.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/notifications_preferences_update_request_model'
responses:
'200':
description: The updated notifications preferences.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'400':
description: Bad request — validation failed on one of the preference items.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
/v1/me/settings:
get:
x-internal: true
summary: Get the authenticated user's settings
tags:
- Users
description: 'Returns the metadata document for the authenticated caller — onboarding
counters, dismiss flags, and view-mode preferences. Defaults are merged
onto any persisted values.
'
responses:
'200':
description: The caller's settings.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user_metadata'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
put:
x-internal: true
summary: Update the authenticated user's settings
tags:
- Users
description: 'Partial update for the caller''s metadata. Defaults are merged onto any
currently-persisted values before the supplied fields are written.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/me_update_settings_request_model'
responses:
'200':
description: The updated settings.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/api_user_metadata'
'400':
description: Bad request — validation failed on one of the metadata fields.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
/v1/me/subscriptions/notifications-preferences:
get:
x-internal: true
summary: Get the subscription-level notifications preferences for the caller
tags:
- Users
description: 'Returns the subscription-level defaults that apply to every member of the
caller''s subscription when no per-user override exists. Resolved from the
subscription owned by (or shared with) the caller.
'
responses:
'200':
description: The subscription-level notifications preferences.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'401':
$ref: '#/components/responses/401'
put:
x-internal: true
summary: Update the subscription-level notifications preferences for the caller
tags:
- Users
description: 'Partial update for the subscription-level notifications preferences
shared across the caller''s subscription. Requires the caller to have
`allow_notifications_preferences_editing` permission on the
subscription.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/notifications_preferences_update_request_model'
responses:
'200':
description: The updated subscription-level notifications preferences.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/notifications_preferences_response_model'
'400':
description: Bad request — validation failed on one of the preference items.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
'403':
description: 'Forbidden — the caller does not have permission to edit notifications
preferences for the subscription.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 403
error:
type: string
/v1/me/integration-token:
get:
x-internal: true
summary: Get the caller's long-lived integration token
tags:
- Users
description: 'Returns the caller''s integration token, used for service-to-service API
calls (e.g. external integrations that authenticate as the caller). The
token is rotated by the backend when integration credentials change.
'
responses:
'200':
description: The caller's integration token.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 200
data:
$ref: '#/components/schemas/me_get_integration_token_response_model'
'401':
$ref: '#/components/responses/401'
'404':
description: Not Found — the caller's profile could not be located.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
example: user not found
/v1/me/link-with-tenant:
post:
x-internal: true
summary: Link the authenticated user to a tenant record
tags:
- Users
description: 'Looks up the tenant record on the invite''s inspection (or owner) that
matches the caller''s email and links it to the authenticated user. If
no matching tenant exists, a new tenant + current occupancy is created
under the appropriate owner so the caller can immediately participate
in the invited inspection.
'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/me_link_with_tenant_request_model'
responses:
'204':
description: Tenant linked. No content.
'400':
description: Bad request — `invite_id` was missing or otherwise invalid.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 400
error:
type: string
'401':
$ref: '#/components/responses/401'
'404':
description: 'Not Found — the invite, the invite''s inspection, or a suitable owner
user for the inspection''s team could not be located.
'
content:
application/json:
schema:
type: object
properties:
status:
type: integer
description: HTTP status code
example: 404
error:
type: string
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-users-api-openapi.yml