RentCheck Users API

The Users API from RentCheck — 20 operation(s) for users.

OpenAPI Specification

rentcheck-users-api-openapi.yml Raw ↑
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