RentCheck Work Orders API

The Work Orders API from RentCheck — 3 operation(s) for work orders.

OpenAPI Specification

rentcheck-work-orders-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: RentCheck REST Account Settings Work Orders 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: Work Orders
paths:
  /v1/work_orders/providers/{provider}:
    post:
      x-internal: true
      summary: Create a work order
      tags:
      - Work Orders
      description: 'Creates a Work Order in RentCheck and dispatches it to the requested

        integration provider. The path parameter `provider` selects the

        destination integration; the request body shape varies per provider.

        '
      parameters:
      - in: path
        name: provider
        required: true
        schema:
          type: string
          enum:
          - appfolio
          - jenark
          - latchel
          - rentmanager
          - rentvine
        description: 'The integration provider that should fulfill this work order.

          '
      - in: header
        name: x-app-id
        required: false
        description: 'Creation-source identifier. Persisted as `creation_source` on each

          created work order.

          '
        schema:
          type: string
      requestBody:
        required: true
        description: "Request body shape varies per `{provider}`. The provider in the path\ndetermines which validation runs against the body:\n  * `latchel`, `rentmanager`, `jenark` — the body is validated against\n    the provider-specific schema.\n  * `appfolio` / `rentvine` — the body is forwarded to the integration\n    provider without additional validation.\n"
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/work_order_create_latchel_request_model'
              - $ref: '#/components/schemas/work_order_create_rent_manager_request_model'
              - $ref: '#/components/schemas/work_order_create_jenark_request_model'
              - $ref: '#/components/schemas/work_order_create_appfolio_request_model'
              - $ref: '#/components/schemas/work_order_create_rentvine_request_model'
      responses:
        '200':
          description: Returns the created work order
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/work_order_response_model'
        '400':
          description: "Bad request — request body validation failed, or the supplied\nfeatures span more than one inspection. Validation messages are raw, e.g.:\n  - `\"data.work_order_name\" is required`\n  - `\"data.work_order_description\" is required`\n  - `\"data.maintenance_flags\" must contain at least 1 items`\n  - `\"data.maintenance_flags\" must be an array`\n  - `\"data.latchel_property_id\" is required` (`latchel`)\n  - `\"data.ok_to_enter\" is required` (`rentmanager`)\n  - `\"data.priority\" must be one of [Low, Normal, High]` (`rentmanager`)\n  - `\"data.work_order_code\" is required` (`jenark`)\nThe cross-inspection guard returns\n`Inspection must be consistent. All features should belong to the same inspection.`\nThe Rent Manager integration also surfaces\n`property not synced with integration` and\n`No rentmanager integration is configured for this account` as 400\nwhen its preflight checks fail.\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
        '401':
          description: 'Unauthorized — standard auth failures, plus the per-work-order permission check

            (`User does not have permissions to create work order` is emitted as 401,

            not 400).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    example: User does not have permissions to create work order
        '404':
          description: 'Not Found — `subscription not found` (caller has no subscription),

            `appfolio integration not found`, `rentvine integration not found`,

            `latchel integration not found` (the destination integration is not

            configured for the caller''s subscription), `resident not found (<id>)`

            (the supplied `resident_id` does not exist), or `property not found`

            (the property associated with the flagged features is not synced to

            the requested integration).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    description: 'One of the static integration / subscription / property

                      not-found strings, OR `resident not found (<id>)` carrying

                      the supplied resident id.

                      '
                    oneOf:
                    - enum:
                      - subscription not found
                      - appfolio integration not found
                      - rentvine integration not found
                      - latchel integration not found
                      - property not found
                    - pattern: ^resident not found \(.+\)$
                    example: appfolio integration not found
        '500':
          description: "Internal server error. Sources:\n  - Unknown `provider` — `invalid provider` is returned when the path\n    parameter is not one of the registered providers. The\n    path-parameter `enum` documents the supported set; unsupported\n    providers should be rejected before processing.\n  - Jenark — `property not synced with Jenark` is returned when the\n    property is not synced through the Jenark integration. (The\n    analogous Rent Manager check surfaces as 400 — see the 400\n    response above.)\n  - AppFolio / Rentvine — `Must have work order sync switched ON in\n    order to create work orders. Please adjust your data sync\n    settings.` is returned when the integration exists but work-order\n    sync is disabled.\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 500
                  error:
                    type: string
                    enum:
                    - invalid provider
                    - property not synced with Jenark
                    - Must have work order sync switched ON in order to create work orders. Please adjust your data sync settings.
                    example: invalid provider
  /v1/work_orders/{workOrderId}:
    get:
      x-internal: true
      summary: Get a work order by ID
      tags:
      - Work Orders
      description: Get a work order by ID
      parameters:
      - name: workOrderId
        in: path
        description: work order ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the requested work order
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/work_order_response_model'
        '401':
          description: 'Unauthorized — standard auth failures, plus the per-work-order permission check.

            Returns HTTP 401 with message `User does not have permissions to get work order` when

            the caller''s role doesn''t allow read access.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    example: User does not have permissions to get work order
        '404':
          description: Not Found — `work order not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: work order not found
  /v1/work_orders/skills:
    get:
      x-internal: true
      summary: Get all work order skills
      tags:
      - Work Orders
      description: 'Returns the list of skills that can be selected when creating a work order. The

        same static list is always returned, regardless of the caller''s enabled integrations.

        '
      responses:
        '200':
          description: Returns the list of work order skills.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/api_work_order_skill'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
        '401':
          $ref: '#/components/responses/401'
components:
  schemas:
    work_order_create_latchel_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - latchel_property_id
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: 'Latchel Job #1'
        work_order_description:
          type: string
          description: A description for the work order.
          example: Faulty socket, no power, needs repair.
        vendor_instructions:
          type: string
          description: Optional vendor instruction for the work order.
          example: Use your biggest plunger, do not use little plunger.
        skill:
          type: string
          description: Vendor name of the repair to be made.
          example: Repair socket
        property_access_instructions:
          type: string
          description: Property access instructions for the work order.
          example: Look under the door mat; there is a secret entrance.
        latchel_property_id:
          type: number
          description: Latchel property id for the work order.
        vendor_id:
          type: number
          nullable: true
          description: Latchel vendor id for the work order.
        resident_id:
          type: string
          description: Resident / Tenant ID that will be associated with work order.
        primary_resident_id:
          type: string
          description: Latchel primary resident id for the work order.
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. Only each flag's `id` and `feature_id` are consumed; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
    work_order_create_appfolio_request_model:
      x-internal: true
      type: object
      description: AppFolio work-order create body. Additional AppFolio-specific properties beyond those listed here are accepted.
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
        work_order_description:
          type: string
          description: A description for the work order.
        priority:
          type: string
          enum:
          - Urgent
          - Normal
          - Low
          description: AppFolio priority for the work order.
        ok_to_enter:
          type: boolean
          description: Whether the vendor is authorized to enter the unit without the resident present.
        maintenance_flags:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
      additionalProperties: true
    work_order_create_rent_manager_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_description
      - maintenance_flags
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: Leaky faucet repair
        work_order_description:
          type: string
          description: A description for the work order.
          example: Faucet in kitchen is dripping — please replace washer.
        skill:
          type: string
          description: Trade / skill required for the work order.
          example: Plumbing
        priority:
          type: string
          enum:
          - Low
          - Normal
          - High
          description: Rent Manager work-order priority.
        ok_to_enter:
          type: boolean
          description: Whether the vendor is authorized to enter the unit without the resident present.
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. The handler only consumes each flag's `id` and `feature_id`; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
    work_order_create_jenark_request_model:
      x-internal: true
      type: object
      required:
      - work_order_name
      - work_order_code
      - maintenance_flags
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
          example: Replace HVAC filter
        work_order_description:
          type: string
          description: A description for the work order.
          example: Filter is overdue — replace with 16x20x1 pleated filter.
        work_order_code:
          type: string
          description: Jenark work-order classification code.
          example: HVAC
        skill:
          type: string
          description: Trade / skill required for the work order.
          example: HVAC
        maintenance_flags:
          type: array
          minItems: 1
          description: A list of maintenance flags. The handler only consumes each flag's `id` and `feature_id`; additional fields are accepted but ignored.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
    api_work_order_skill:
      type: object
      required:
      - name
      - latchel
      properties:
        name:
          type: string
          description: RentCheck-facing name of the skill.
        latchel:
          type: object
          description: Latchel category mapping for the skill.
          required:
          - id
          - name
          - category_id
          - category_name
          properties:
            id:
              type: integer
              description: Latchel skill id.
            name:
              type: string
              description: Latchel-facing skill name.
            category_id:
              type: integer
              description: Latchel category id.
            category_name:
              type: string
              description: Latchel category name.
    work_order_create_rentvine_request_model:
      x-internal: true
      type: object
      description: Rentvine work-order create body. Additional Rentvine-specific properties beyond those listed here are accepted.
      required:
      - work_order_name
      - work_order_description
      - priority
      - ok_to_enter
      properties:
        work_order_name:
          type: string
          description: A name / label for the work order.
        work_order_description:
          type: string
          description: A description for the work order.
        priority:
          type: string
          enum:
          - low
          - medium
          - high
          description: Rentvine priority for the work order.
        owner_approved:
          type: boolean
          default: false
          description: Whether the property owner has approved the work order in Rentvine. Server-defaulted to `false` when omitted.
        publish_with_tenant:
          type: boolean
          default: false
          description: Whether the work order should be published to the Rentvine tenant portal. Server-defaulted to `false` when omitted.
        publish_with_owner:
          type: boolean
          default: false
          description: Whether the work order should be published to the Rentvine owner portal. Server-defaulted to `false` when omitted.
        ok_to_enter:
          type: string
          enum:
          - vendor_may_access
          - resident_presence_required
          - not_applicable
          description: Vendor access mode.
        maintenance_flags:
          type: array
          description: Maintenance flags referenced by the work order. No minimum size is enforced by validation, but omitting it or passing an empty array surfaces as a 500.
          items:
            type: object
            required:
            - id
            - feature_id
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              feature_id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
            additionalProperties: true
      additionalProperties: true
    work_order_response_model:
      x-internal: true
      type: object
      description: Envelope shared by v1 (`POST /v1/work_orders`) and v2 (`GET /v2/work_orders`). Provider-specific keys (`latchel`, `yardi`, `appfolio`, `jenark`, `rentmanager`, `rentvine`) remain optional and appear only when the work order was synced through that vendor. `property` is required on v1 responses; v2 (`GET /v2/work_orders`) drops the field when the underlying row has no property snapshot, so it is not listed as required here.
      required:
      - id
      - name
      - created_date
      - created_by
      - created_by_name
      - status
      - maintenance_flags
      - organization_id
      - inspection
      properties:
        id:
          type: string
          description: Entity ID
          example: 00BRcZPSakXz6w7RYoE
        name:
          type: string
          description: The name field is the work order name / label.
          example: 'Latchel Job #1'
        created_date:
          type: string
          description: Work order creation date, ISO format.
          example: 2022-01-15 00:00:00
        created_by:
          type: string
          description: User id that created the work order.
        created_by_name:
          type: string
          description: Display name of the user that created the work order.
        organization_id:
          type: string
          description: Organization (subscription) the work order belongs to.
        status:
          type: string
          description: Up to date status of the work order.
        skill:
          type: string
          description: Skill / category selected for the work order.
        zip_report_location:
          type: string
          description: Location of the most recent generated zip report for the work order. Only present on v2 (`GET /v2/work_orders`) responses; v1 responses do not emit this field.
        last_sync_date:
          type: string
          description: ISO timestamp of the latest sync attempt to the work order provider, when one has run. Only present on v2 (`GET /v2/work_orders`) responses; v1 responses do not emit this field.
        inspection:
          type: object
          description: This is the entity id of the inspection that the entity is for.
          properties:
            id:
              type: string
              description: Selected entity's inspection id
              example: 00BRcZPSakXz6w7RYoE
            type:
              type: string
              description: Selected entity's inspection type
              enum:
              - Move-in
              - Move-out
              - Annual
              - Turn
              - Periodic
              - Maintenance Check
              - Exterior
              - Pre-Acquisition
              - RV Lot
              - Maintenance / Safety Check
              - Community Maintenance Check
            date:
              type: string
              description: Selected entity's inspection date, ISO format
              example: 2022-01-15 00:00:00
            template:
              type: object
            completed_date:
              type: string
              description: Inspection completed date in ISO format, when set.
        property:
          type: object
          required:
          - id
          - address
          - city
          - zip_code
          description: This is the entity id of the Unit, Building, or Community that the entity is for.
          properties:
            id:
              type: string
              description: Selected entity's property id
              example: 00BRcZPSakXz6w7RYoE
            address:
              type: string
              description: Selected entity's property address
              example: 2001 Red Gates
            address_2:
              type: string
              description: Selected entity's property additional address info
              example: Apt. 4B
            city:
              type: string
              description: Selected entity's property city
              example: New Orleans
            region:
              type: string
              description: Selected entity's property region
              example: Orleans
            zip_code:
              type: string
              description: Selected entity's property zip_code
              example: '70130'
        maintenance_flags:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              room:
                type: string
                description: Maintenance flag's room.
              feature:
                type: string
                description: Maintenance flag's feature name.
              feature_id:
                type: string
                description: Maintenance flag's feature ID.
              created_date:
                type: string
                description: Feature creation date, ISO format
                example: 2022-01-15 00:00:00
              created_by:
                type: object
                description: User that created the flag.
                required:
                - id
                - name
                - type
                properties:
                  id:
                    type: string
                    description: Entity ID
                    example: 00BRcZPSakXz6w7RYoE
                  name:
                    type: string
                    description: Name of the user that created the flag.
                  type:
                    type: string
                    enum:
                    - Renter
                    - Property Manager
                    - Landlord
                    - System
                    description: User type discriminator.
              responsibility:
                type: string
                description: Maintenance flag's responsibility
                enum:
                - OWNER
                - RESIDENT
                - ''
              note:
                type: string
                description: Maintenance flag's notes
              image_urls:
                type: array
                description: Maintenance flag's images
                items:
                  type: string
                  description: URL links to images related to the maintenance flags
              cost:
                type: number
                description: Maintenance flag's cost
        latchel:
          type: object
          description: Latchel-specific work order fields, present when the provider is `latchel`.
          additionalProperties: true
        yardi:
          type: object
          description: Yardi-specific work order fields, present when the provider is `yardi`.
          additionalProperties: true
        appfolio:
          type: object
          description: AppFolio-specific work order fields, present when the provider is `appfolio`.
          additionalProperties: true
        jenark:
          type: object
          description: Jenark-specific work order fields, present when the provider is `jenark`.
          additionalProperties: true
        rentmanager:
          type: object
          description: Rent Manager-specific work order fields, present when the provider is `rentmanager`.
          additionalProperties: true
        rentvine:
          type: object
          description: Rentvine-specific work order fields, present when the provider is `rentvine`.
          additionalProperties: true
  responses:
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: integer
                description: HTTP status code
                example: 401
              error:
                type: string
                description: Error message
                enum:
                - token is not valid
                - authorization header is empty
                - authorization header is not valid
                - 'format for Authorization must be: Bearer [token]'
                - refresh token is not valid for resources
                - not well-formed token
                example: token is not valid
  securitySchemes:
    bearerAuth:
      description: Authorization key needed to use the API
      type: http
      scheme: bearer
      bearerFormat: JWT
    x-app-id:
      description: Represents the identification of you application
      type: apiKey
      name: x-app-id
      in: header
      required: true
    x-app-secret:
      description: Represents the secret for your application
      type: apiKey
      name: x-app-secret
      in: header
      required: true