RentCheck Permission Groups API

The Permission Groups API from RentCheck — 2 operation(s) for permission groups.

OpenAPI Specification

rentcheck-permission-groups-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: RentCheck REST Account Settings Permission Groups 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: Permission Groups
paths:
  /v1/permission-groups:
    post:
      summary: Create permission group
      tags:
      - Permission Groups
      description: This resource allows you to create a Permission Group in RentCheck.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/permission_group_create_request_model'
      responses:
        '201':
          description: Returns the created permission group
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 201
                  data:
                    $ref: '#/components/schemas/api_permission_group'
        '400':
          description: Bad request — request body validation failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    enum:
                    - '"data.name" is required'
                    - '"data.inspection_template_ids" is required'
                    - '"data.allow_billing_plan_editing" is required'
                    - '"data.user_ids" is required'
                    example: '"data.name" is required'
        '401':
          description: 'Unauthorized — either a standard auth-token failure, or the caller''s

            role does not allow creating permission groups. When the role is

            insufficient, the request surfaces as 401 with the error string below.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    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
                    - User does not have permissions to create permission group
                    example: User does not have permissions to create permission group
        '404':
          description: 'Not Found — `subscription not found` (caller has no active

            subscription), `inspection template not found (<id>)`, or

            `user not found (<id>)` when one of the supplied `user_ids` /

            `inspection_template_ids` does not resolve.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - subscription not found
                    - inspection template not found (<id>)
                    - user not found (<id>)
                    example: subscription not found
        '409':
          description: 'Conflict — a permission group with the requested `name` already exists

            on the caller''s subscription (names are unique per subscription).

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 409
                  error:
                    type: string
                    example: A permission group with this name already exists on the subscription
    delete:
      summary: Delete permission groups
      tags:
      - Permission Groups
      description: 'Bulk-delete permission groups belonging to the caller''s subscription. Group ids are passed in the

        request body (not the URL); at least one permission group must remain on the subscription after

        the operation, so attempting to delete every remaining group is rejected with a 403.

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/permission_group_delete_request_model'
      responses:
        '204':
          description: Successful deletion of permission groups.
        '400':
          description: 'Bad request — validation rejected the body. `data.ids` must be a

            non-empty string array, so both a missing field and an empty array

            surface here.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    enum:
                    - '"data.ids" is required'
                    - '"data.ids" must contain at least 1 items'
                    example: '"data.ids" is required'
        '401':
          description: 'Unauthorized — either a standard auth-token failure, or the caller''s

            role does not allow deleting permission groups.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    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
                    - User does not have permissions to delete permission group
                    example: User does not have permissions to delete permission group
        '403':
          description: Forbidden — the delete would leave the subscription with no remaining permission groups.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - At least one permission group must remain on the subscription
                    example: At least one permission group must remain on the subscription
        '404':
          description: 'Not Found — `subscription not found`, or `permission group not found (<id>)`.

            The permission-group message includes the offending id in parentheses,

            i.e. `<name> not found (<id>)`.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: permission group not found (abc123)
    get:
      summary: Get all permission groups
      tags:
      - Permission Groups
      description: This resource fetches all Permission Groups associated with the user's subscription.
      parameters:
      - in: query
        name: filters[search]
        description: Search by permission group name or id.
        schema:
          type: string
      - in: query
        name: filters[user_id]
        description: Restrict results to permission groups that include the given user id.
        schema:
          type: string
      - in: query
        name: options[pagination][page_size]
        description: How many items to be returned for each page.
        schema:
          type: integer
          default: 20
      - in: query
        name: options[pagination][page_number]
        description: Page number (zero-indexed).
        schema:
          type: integer
          default: 0
      - in: query
        name: options[sort][sort_type]
        description: Sort list in ascending or descending order.
        schema:
          type: string
          default: ASC
          enum:
          - ASC
          - DESC
      - in: query
        name: options[sort][sort_by]
        description: Sort list by a specific property.
        schema:
          type: string
          default: name
          enum:
          - name
          - user_count
      responses:
        '200':
          description: Returns all permission groups
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/permission_group_get_all_response_model'
                  count:
                    type: integer
                    description: Amount of elements in `data` on the current page.
                  total_results:
                    type: integer
                    description: Total amount of permission groups matching the filter criteria (irrespective of paging).
        '401':
          $ref: '#/components/responses/401'
  /v1/permission-groups/{id}:
    get:
      summary: Get permission group by ID
      tags:
      - Permission Groups
      description: This resource allows you to get a Permission Group in RentCheck.
      parameters:
      - name: id
        in: path
        description: Permission group ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the requested permission group
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_permission_group'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `subscription not found` (when the caller has no subscription) or `permission group not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - subscription not found
                    - permission group not found
                    example: permission group not found
    put:
      summary: Update permission group
      tags:
      - Permission Groups
      description: This resource allows you to update a Permission Group in RentCheck.
      parameters:
      - name: id
        in: path
        description: Permission group ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/permission_group_update_request_model'
      responses:
        '200':
          description: Returns the updated permission group
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/api_permission_group'
        '400':
          description: Bad request — validation rejected the request body.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    enum:
                    - '"data.name" is required'
                    - '"data.inspection_template_ids" is required'
                    - '"data.user_ids" is required'
                    example: '"data.name" is required'
        '401':
          description: 'Unauthorized — either a standard auth-token failure, or the caller''s

            role does not allow updating permission groups. When the role is

            insufficient, the request surfaces as 401 with the error string below.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 401
                  error:
                    type: string
                    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
                    - User does not have permissions to update permission group
                    example: User does not have permissions to update permission group
        '404':
          description: 'Not Found — `subscription not found`, `permission group not found`,

            `user not found (<id>)`, or `inspection template not found (<id>)`.

            The `user` and `inspection template` messages include the offending

            id in parentheses, i.e. `<name> not found (<id>)`.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: user not found (abc123)
        '409':
          description: 'Conflict — a different permission group already owns the requested

            `name` on the caller''s subscription (names are unique per

            subscription). Renaming to the current name is not a conflict.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 409
                  error:
                    type: string
                    example: A permission group with this name already exists on the subscription
components:
  schemas:
    permission_group_delete_request_model:
      type: object
      required:
      - ids
      properties:
        ids:
          type: array
          minItems: 1
          items:
            type: string
          description: IDs of the permission groups to be deleted. Must contain at least one id.
    permission_group_create_request_model:
      type: object
      required:
      - name
      - inspection_template_ids
      - user_ids
      - allow_billing_plan_editing
      properties:
        name:
          type: string
          description: Name for the permission group, must be unique in the subscription context
        allow_billing_plan_editing:
          type: boolean
          description: Enable or disable billing plan editing for users on this permission group
        allow_automation_editing:
          type: boolean
          description: Enable or disable automation editing for users on this permission group
        allow_notifications_preferences_editing:
          type: boolean
          description: Enable or disable notification preferences editing for users on this permission group
        allow_inspection_messaging_editing:
          type: boolean
          description: Enable or disable inspection messaging editing for users on this permission group
        allow_ai_manual_scan:
          type: boolean
          description: Enable or disable manual AI damage scans for users on this permission group
        inspection_template_ids:
          type: array
          items:
            type: string
          description: IDs of the inspection templates to be associated with the new permission group
        user_ids:
          type: array
          items:
            type: string
          description: IDs of the users to be associated with the new permission group
    api_permission_group:
      type: object
      required:
      - id
      - name
      - subscription_id
      - inspection_templates
      - users
      - allow_billing_plan_editing
      - allow_automation_editing
      - allow_notifications_preferences_editing
      - allow_inspection_messaging_editing
      - allow_ai_manual_scan
      properties:
        id:
          type: string
          description: Entity ID
          example: 00BRcZPSakXz6w7RYoE
        name:
          type: string
          description: Name for the permission group, must be unique in the subscription context
        subscription_id:
          type: string
          description: Id for the subscription the permission group belongs to
        allow_billing_plan_editing:
          type: boolean
          description: Enable or disable billing plan editing for users on this permission group
        allow_automation_editing:
          type: boolean
          description: Enable or disable automation editing for users on this permission group
        allow_notifications_preferences_editing:
          type: boolean
          description: Enable or disable notification preferences editing for users on this permission group
        allow_inspection_messaging_editing:
          type: boolean
          description: Enable or disable inspection messaging editing for users on this permission group
        allow_ai_manual_scan:
          type: boolean
          description: Enable or disable manual AI damage scans for users on this permission group
        inspection_templates:
          type: array
          description: Which inspection templates users that belong to this permission group have access to
          items:
            type: object
            required:
            - id
            - name
            - internal_label
            - property_type
            - display_name
            properties:
              id:
                type: string
                description: Inspection template identifier
              name:
                type: string
                description: Inspection template name.
              internal_label:
                type: string
                description: Inspection template internal label.
              property_type:
                type: string
                description: Inspection template property type.
              display_name:
                type: string
                description: Resolved display name for the inspection template, used by clients to render the template title (mirrors `name` for legacy templates).
        users:
          description: Which users belong to this permission group
          type: array
          items:
            properties:
              id:
                type: string
                description: Entity ID
                example: 00BRcZPSakXz6w7RYoE
              name:
                type: string
                description: Name of the user
              email:
                type: string
                description: Email of the user
              type:
                type: string
                enum:
                - Renter
                - Property Manager
                - Landlord
                - System
                description: User type discriminator.
              user_type:
                type: string
                enum:
                - Renter
                - Property Manager
                - Landlord
                example: Property Manager
    permission_group_get_all_response_model:
      type: object
      properties:
        id:
          type: string
          description: Entity ID
          example: 00BRcZPSakXz6w7RYoE
        name:
          type: string
          description: Name of the permission group
        user_count:
          type: number
          description: Total amount of users on the permission group
        allow_billing_plan_editing:
          type: boolean
          description: Whether users on this permission group can edit billing plans.
        allow_automation_editing:
          type: boolean
          description: Whether users on this permission group can edit automations.
        allow_notifications_preferences_editing:
          type: boolean
          description: Whether users on this permission group can edit notification preferences.
        allow_inspection_messaging_editing:
          type: boolean
          description: Whether users on this permission group can edit inspection messaging.
        allow_ai_manual_scan:
          type: boolean
          description: Whether users on this permission group can run manual AI damage scans.
    permission_group_update_request_model:
      type: object
      required:
      - name
      - inspection_template_ids
      - user_ids
      - allow_billing_plan_editing
      properties:
        name:
          type: string
          description: Name for the permission group, must be unique in the subscription context
        inspection_template_ids:
          type: array
          items:
            type: string
          description: IDs of the inspection templates to be associated with the permission group
        user_ids:
          type: array
          items:
            type: string
          description: IDs of the users to be associated with the permission group
        allow_billing_plan_editing:
          type: boolean
          description: Enable or disable billing plan editing for users on this permission group
        allow_automation_editing:
          type: boolean
          description: Enable or disable automation editing for users on this permission group
        allow_notifications_preferences_editing:
          type: boolean
          description: Enable or disable notification preferences editing for users on this permission group
        allow_inspection_messaging_editing:
          type: boolean
          description: Enable or disable inspection messaging editing for users on this permission group
        allow_ai_manual_scan:
          type: boolean
          description: Enable or disable manual AI damage scans for users on this permission group
  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