RentCheck Leases API

The Leases API from RentCheck — 9 operation(s) for leases.

OpenAPI Specification

rentcheck-leases-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: RentCheck REST Account Settings Leases 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: Leases
paths:
  /v2/residents/{residentId}/leases:
    post:
      summary: Create a lease for a resident
      tags:
      - Leases
      description: This resource allows you to create a Lease for a Resident in RentCheck.
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lease_v2_create_request_model'
      responses:
        '200':
          description: Returns the created lease
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/lease_v2_response_model'
        '400':
          description: 'Bad request — request body failed validation. The raw

            message identifies the invalid field, e.g. `"data.status" is required`,

            `"data.status" must be one of [future, past, current]`,

            `"data.tags" must be an array`, or

            `"data.tags[0]" must be one of [evict, notice]`. A missing or unknown

            `property_id` surfaces as `404 unit not found`, not a 400.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.status" is required'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — `resident not found` (the resident at `residentId`

            does not exist or is inaccessible) or `unit not found` (the unit

            identified by `property_id` does not exist or is inaccessible).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: resident not found
    get:
      summary: Get all leases for resident
      tags:
      - Leases
      description: This resource allows you to get all Leases for a Resident.
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns all leases for a resident
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/lease_v2_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 — `resident not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: resident not found
  /v2/residents/{residentId}/leases/{leaseId}:
    delete:
      summary: Delete lease
      tags:
      - Leases
      description: Delete selected lease by ID for a resident.
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      - name: leaseId
        in: path
        description: Lease ID
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Successful deletion of lease
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `resident not found` or `lease not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: lease not found
                    enum:
                    - resident not found
                    - lease not found
    get:
      summary: Get a lease by ID for a resident
      tags:
      - Leases
      description: This resource allows you to get a lease for a resident Resident in RentCheck.
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      - name: leaseId
        in: path
        description: Lease ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the requested lease
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/lease_v2_response_model'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `resident not found` or `lease not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: lease not found
                    enum:
                    - resident not found
                    - lease not found
    put:
      summary: Update a lease for a resident
      tags:
      - Leases
      description: This resource allows you to update a Lease for a Resident in RentCheck.
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      - name: leaseId
        in: path
        description: Lease ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lease_v2_update_request_model'
      responses:
        '200':
          description: Returns the updated lease
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/lease_v2_response_model'
        '400':
          description: 'Bad request — request body failed validation. All body fields are

            optional; the raw message identifies the invalid field, e.g.

            `"data.status" must be one of [future, past, current]`,

            `"data.tags" must be an array`, or

            `"data.tags[0]" must be one of [evict, notice]`.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.status" must be one of [future, past, current]'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `lease not found`, `resident not found`, or `unit not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: lease not found
                    enum:
                    - lease not found
                    - resident not found
                    - unit not found
  /v2/residents/{residentId}/leases/{leaseId}/move-in:
    patch:
      summary: Update a lease move in date and status
      tags:
      - Leases
      description: This resource sets a Lease move_in_date to the current date and the status to "current".
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      - name: leaseId
        in: path
        description: Lease ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the updated lease
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/lease_v2_response_model'
        '400':
          description: Bad request — the lease's current status does not allow a move-in transition.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    enum:
                    - lease status has an invalid value
                    example: lease status has an invalid value
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `lease not found` or `resident not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: lease not found
                    enum:
                    - lease not found
                    - resident not found
  /v2/residents/{residentId}/leases/{leaseId}/move-out:
    patch:
      summary: Update a lease move out date and status
      tags:
      - Leases
      description: This resource sets a Lease move_out_date to the current date and the status to "past".
      parameters:
      - name: residentId
        in: path
        description: Resident ID
        required: true
        schema:
          type: string
      - name: leaseId
        in: path
        description: Lease ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the updated lease
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/lease_v2_response_model'
        '400':
          description: Bad request — the lease's current status does not allow a move-out transition.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    enum:
                    - lease status has an invalid value
                    example: lease status has an invalid value
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `lease not found` or `resident not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: lease not found
                    enum:
                    - lease not found
                    - resident not found
  /v1/properties/{propertyId}/leases:
    get:
      x-internal: true
      summary: List every lease on a property
      tags:
      - Leases
      description: 'Returns every lease (occupancy) associated with the unit identified by

        `propertyId`. The property is resolved through the unit fetcher — so

        building and community IDs are rejected.


        Not to be confused with `GET /v1/properties/resident-leases`, which

        returns only the leases the authenticated renter has access to.

        '
      parameters:
      - name: propertyId
        in: path
        description: Property (unit) id.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns every lease on the property.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/lease_v2_response_model'
                  count:
                    type: integer
                    description: Number of leases returned.
                  total_results:
                    type: integer
                    description: Total number of leases on the property.
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — `unit not found` when the property does not exist, is a

            building/community, or the caller is not on its authorized user list.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: unit not found
  /v1/properties/{propertyId}/resident-leases:
    post:
      x-internal: true
      summary: Create a resident lease
      tags:
      - Leases
      description: Creates a new resident lease for the given property.
      parameters:
      - name: propertyId
        in: path
        required: true
        description: ID of the property the new lease belongs to.
        schema:
          type: string
          minLength: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/tenant_occupancy_create_request_model'
      responses:
        '200':
          description: Returns the newly created resident lease.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_tenant_occupancy'
        '400':
          description: 'Bad request — request body validation failed. The raw message

            identifies the invalid field, e.g.

            `"data.status" is required`,

            `"data.status" must be one of [past, current]`, or

            `"data.move_in_date" must be in one of the allowed formats`

            (the field also allows `null`).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.status" is required'
        '401':
          $ref: '#/components/responses/resident_lease_unauthorized'
        '403':
          description: 'Forbidden — only renters can call this endpoint.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - Only renters can create resident leases
                    example: Only renters can create resident leases
        '404':
          description: Not Found — `property not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - property not found
                    example: property not found
  /v1/properties/{propertyId}/resident-leases/{residentLeaseId}:
    delete:
      x-internal: true
      summary: Delete a resident lease
      tags:
      - Leases
      description: Deletes a resident lease for the given property.
      parameters:
      - name: propertyId
        in: path
        required: true
        description: ID of the property the lease belongs to.
        schema:
          type: string
          minLength: 1
      - name: residentLeaseId
        in: path
        required: true
        description: 'ID of the resident lease. Must be a valid UUID — a non-UUID id is

          interpreted as a property-manager lease id and rejected with a 400.

          '
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns the deleted resident lease.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_tenant_occupancy'
        '400':
          description: 'Bad request — the `residentLeaseId` is not a valid UUID, which is interpreted by the

            handler as a property-manager lease id that cannot be soft-deleted via this endpoint.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: A PM lease can't be deleted
        '401':
          $ref: '#/components/responses/resident_lease_unauthorized'
        '403':
          description: 'Forbidden — only `Renter` users can delete resident leases. Property-manager and admin

            accounts get a `403` with the error string below.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    example: Only renters can delete resident leases
        '404':
          description: 'Not Found — either `property not found` (the property does not exist) or

            `lease not found` (the lease does not exist or has already been soft-deleted).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - property not found
                    - lease not found
    get:
      x-internal: true
      summary: Get a resident lease by id
      tags:
      - Leases
      description: Returns a single resident lease for the given property.
      parameters:
      - name: propertyId
        in: path
        required: true
        description: ID of the property the lease belongs to.
        schema:
          type: string
          minLength: 1
      - name: residentLeaseId
        in: path
        required: true
        description: ID of the resident lease.
        schema:
          type: string
          minLength: 1
      responses:
        '200':
          description: Returns the resident lease.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_tenant_occupancy'
        '401':
          $ref: '#/components/responses/resident_lease_unauthorized'
        '403':
          description: 'Forbidden — either the caller is not a `Renter` user, or the lease being looked up is

            a property-manager lease (non-UUID id) whose underlying tenant record does not match

            the authenticated user.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - Only renters can get resident leases
                    - Lease does not belong to user
                    example: Only renters can get resident leases
        '404':
          description: 'Not Found — the resource referenced in the path (or a related resource looked up while

            building the response) could not be found. For PM-lease ids (non-UUID), `tenant not found`

            is also possible when the authenticated user has no tenant record linked to the lease.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - property not found
                    - lease not found
                    - tenant not found
                    example: lease not found
    put:
      x-internal: true
      summary: Update a resident lease
      tags:
      - Leases
      description: Updates a resident lease for the given property.
      parameters:
      - name: propertyId
        in: path
        required: true
        description: ID of the property the lease belongs to.
        schema:
          type: string
          minLength: 1
      - name: residentLeaseId
        in: path
        required: true
        description: ID of the resident lease.
        schema:
          type: string
          minLength: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/tenant_occupancy_update_request_model'
      responses:
        '200':
          description: Returns the updated resident lease.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_tenant_occupancy'
        '400':
          description: 'Bad request — request body validation failed. The raw message

            identifies the invalid field, e.g.

            `"data.status" must be one of [past, current]` or

            `"data.move_in_date" must be in one of the allowed formats`

            (the field also allows `null`).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.status" must be one of [past, current]'
        '401':
          $ref: '#/components/responses/resident_lease_unauthorized'
        '403':
          description: 'Forbidden — either the caller is not a `Renter` user, or the lease being updated does

            not belong to the authenticated user.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - Only renters can update resident leases
                    - Lease does not belong to user
                    example: Only renters can update resident leases
        '404':
          description: 'Not Found — the property the lease belongs to does not exist, or the lease itself does

            not exist (or has already been soft-deleted).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - property not found
                    - lease not found
                    example: lease not found
  /v1/properties/resident-leases:
    get:
      x-internal: true
      summary: Get all resident leases
      tags:
      - Leases
      description: 'Returns every resident lease the caller has access to, optionally filtered by status, lease

        type, and a free-form search string. Results are returned without pagination.

        '
      parameters:
      - in: query
        name: search
        schema:
          type: string
        description: Free-form search string matched across resident and property fields.
      - in: query
        name: filters[status][value]
        schema:
          type: string
          pattern: ^(past|current)(\|(past|current))*$
        description: 'List of lease statuses to filter by. Multiple values are concatenated with `|`. When either `filters[status][value]` or `filters[status][condition]` is supplied, both are required.

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/rentcheck/refs/heads/main/openapi/rentcheck-leases-api-openapi.yml