RentCheck Teams API

The Teams API from RentCheck — 11 operation(s) for teams.

OpenAPI Specification

rentcheck-teams-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: RentCheck REST Account Settings Teams 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: Teams
paths:
  /v1/teams/invites/accept:
    post:
      summary: Accept all team invites
      tags:
      - Teams
      description: This resource accepts all team invitations for the user that calls it.
      responses:
        '200':
          description: Returns all invites that were accepted by user.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/team_invite_accept_all_response_model'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
        '401':
          $ref: '#/components/responses/401'
  /v1/teams/{teamId}/invites:
    post:
      summary: Create team invite
      tags:
      - Teams
      description: Invite a user to team
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/team_invite_create_request_model'
      responses:
        '200':
          description: Returns the updated team info along two lists of users that were and weren't invited
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_invite_create_response_model'
        '400':
          description: "Bad request — request body validation failed, or the target\nemail resolves to a `System` account. Examples:\n  - `\"data.emails\" is required`\n  - `\"data.emails\" must be an array`\n  - `user type has an invalid value: System`\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.emails" is required'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: 'Forbidden — the caller is not permitted to invite for this team, or

            the underlying subscription is missing/inactive.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - user must be an admin
                    - user must be a member of the team
                    - subscription not found or inactive
                    example: user must be an admin
        '404':
          description: 'Not Found — the caller or the target team could not be resolved.

            `invite not found` is returned when the caller''s user record is

            missing; `team not found` is returned when the target team is missing.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - team not found
                    - invite not found
                    example: team not found
        '409':
          description: 'Conflict — the caller has more than one active subscription and the

            business rules require exactly one.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 409
                  error:
                    type: string
                    enum:
                    - too many subscriptions
                    example: too many subscriptions
    get:
      summary: Get all team invites
      tags:
      - Teams
      description: This resource retrieves information about team invites that have yet not been accepted.
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns all invites for a specific team
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/team_invite_get_all_response_model'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
        '401':
          $ref: '#/components/responses/401'
  /v1/users/{userId}/invites:
    delete:
      x-internal: true
      summary: Delete all open invites of a user
      tags:
      - Teams
      description: 'Cancels every outstanding (not yet accepted) team invite addressed to the target user. Used by

        admin / cleanup flows that need to revoke a user''s pending invitations across all teams in one

        call.

        '
      parameters:
      - name: userId
        in: path
        description: ID of the user whose pending invites should be cancelled.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: All outstanding invites for the user have been cancelled.
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: 'Forbidden — the target user is already a member of a team, so their

            outstanding invites cannot be cancelled through this endpoint.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - user is already part of a team
                    example: user is already part of a team
        '404':
          description: 'Not Found — the target user has no cancellable invites, or one of the

            invites references a team that no longer exists. `invite not found`

            is returned both for the top-level "no invites for this user" case

            and for any per-invite failure.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - invite not found
                    example: invite not found
  /v1/teams/{teamId}/invites/{inviteId}:
    delete:
      summary: Delete team invite
      tags:
      - Teams
      description: Delete invite sent to user.
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      - name: inviteId
        in: path
        description: Invite ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the updated team info
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '400':
          description: 'Bad request — the invite is not in `sent` state, so it cannot be

            removed.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: 'status has an invalid value: accepted'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: 'Forbidden — the caller is not an admin of the team.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 403
                  error:
                    type: string
                    enum:
                    - invalid user role
                    example: invalid user role
        '404':
          description: 'Not Found — the invite could not be resolved for the caller.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - invite not found
                    example: invite not found
    put:
      summary: Update team invite
      tags:
      - Teams
      description: Update a team invite that hasn't been accepted yet.
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      - name: inviteId
        in: path
        description: Invite ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/team_invite_update_request_model'
      responses:
        '200':
          description: Returns the updated team invite.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_invite_update_response_model'
        '400':
          description: 'Bad request — the invite is not in `sent` state, so it cannot be

            updated.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: 'status has an invalid value: accepted'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — the team or invite could not be resolved for the caller.

            `team not found` is returned when the team cannot be resolved and

            `invite not found` when the invite cannot be resolved.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - team not found
                    - invite not found
                    example: invite not found
  /v1/teams/{teamId}/invites/{inviteId}/reminders:
    post:
      summary: Team invite reminder
      tags:
      - Teams
      description: Sends an email to users that have not yet accepted specified team invite.
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      - name: inviteId
        in: path
        description: Invite ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the invite that was called.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_invite_reminder_response_model'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — `team not found` is returned when the team cannot be

            resolved for the caller, and `invite not found` is returned when the

            invite id does not resolve, or when it resolves to a different team.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - team not found
                    - invite not found
                    example: invite not found
  /v1/users/{userId}/invites/reminders:
    post:
      x-internal: true
      summary: Send reminders for all open invites of a user
      tags:
      - Teams
      description: 'Re-sends invite reminders for every outstanding (not yet accepted) team invite addressed to the

        target user. Used by admin flows that want to nudge a single invitee about all the teams they

        have pending invitations for.

        '
      parameters:
      - name: userId
        in: path
        description: ID of the user whose pending invites should be reminded.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the list of team invites that were reminded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/team_invite_reminder_response_model'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — no team invites addressed to the target user could be

            reminded. `invite not found` is returned when the target user has no

            open invites, and any invite that has already been claimed/expired

            surfaces the same error. `team not found` can also occur when the

            invite''s referenced team was deleted.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - invite not found
                    - team not found
                    example: invite not found
  /v1/teams/{teamId}/members/{memberId}:
    delete:
      summary: Delete team member
      tags:
      - Teams
      description: Delete member/user from the team.
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      - name: memberId
        in: path
        description: Member ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the updated team info
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: 'Not Found — the requested team or member could not be resolved for

            the caller.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - team not found
                    - member not found
                    example: member not found
    put:
      summary: Update team member
      tags:
      - Teams
      description: Update team member information
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      - name: memberId
        in: path
        description: Member ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/team_member_update_request_model'
      responses:
        '200':
          description: Returns the updated team info
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '400':
          description: Bad request — the supplied role / body was rejected by validation.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: '"data.role" must be one of [admin, manager, none]'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `team not found` or `member not found`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    enum:
                    - team not found
                    - member not found
                    example: team not found
  /v1/teams:
    post:
      summary: Create a team
      tags:
      - Teams
      description: Create a team
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/team_create_request_model'
      responses:
        '200':
          description: Returns the updated team info
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '400':
          description: Bad request — request body validation failed (for example, `name` or `internal_label` missing or empty), or the caller is in a subscription state that does not allow team creation.
          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.internal_label" is required'
                    - '"data.name" is not allowed to be empty'
                    - '"data.internal_label" is not allowed to be empty'
                    - there is no subscription for this user
                    - user has more than one active subscription
                    example: '"data.name" is required'
        '401':
          $ref: '#/components/responses/401'
    get:
      summary: Get all teams
      tags:
      - Teams
      description: 'This resource allows you to retrieve information about Team entities. Teams are a way to organize groups of users and the properties they manage.


        By default the response excludes the caller''s "All teams" pseudo-team. Pass `filters[include_all_teams]=true` to include it.

        '
      parameters:
      - in: query
        name: filters[include_all_teams]
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
          default: 'false'
        description: When `true`, include the caller's "All teams" pseudo-team in the result.
      responses:
        '200':
          description: Returns all teams
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/team_get_all_response_model'
                  count:
                    type: integer
                    description: Amount of elements in `data`.
                  total_results:
                    type: integer
                    description: Total amount of teams matching the request (irrespective of paging).
        '401':
          $ref: '#/components/responses/401'
  /v1/teams/{teamId}:
    delete:
      x-internal: true
      summary: Delete a team
      tags:
      - Teams
      description: 'Hard-deletes a team. The caller must be an admin of the team. The team cannot be deleted if any

        of the following apply: it is the only team on the subscription, it still contains other

        members, it still has properties associated with it, it is the only team referenced by an

        inspection template, or it is currently bound to a Latchel/Rentvine/AppFolio/RentManager

        integration mapping.

        '
      parameters:
      - name: teamId
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Team successfully deleted.
        '400':
          description: "Bad request — examples:\n  - `Only admin users can delete teams.`\n  - `You cannot delete '<name>' because every subscription requires at least one team. ...`\n  - `Cannot delete team. Remove all other team members before deleting.`\n  - `This team contains <N> properties that need to be moved before deletion. ...`\n  - `This team cannot be deleted because it's currently the only team that has access to the following inspection template(s): <names>. ...`\n  - `This team is linked to the Latchel integration. Update the integration's team, then try again.`\n  - `This team is linked to the <Rentvine|AppFolio|RentManager> integration. Update the integration's team assignment, then try again.`\n"
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — `team not found` or `subscription not found` (the team is not in any of the caller's subscriptions).
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: team not found
  /v1/teams/{id}:
    get:
      summary: Get a team by ID
      tags:
      - Teams
      description: Get a team by ID
      parameters:
      - name: id
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Returns the requested team
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '401':
          $ref: '#/components/responses/401'
        '404':
          description: Not Found — the team does not exist.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 404
                  error:
                    type: string
                    example: team not found
    put:
      summary: Update team information
      tags:
      - Teams
      description: Update team information
      parameters:
      - name: id
        in: path
        description: Team ID
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/team_update_request_model'
      responses:
        '200':
          description: Returns the updated team info
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 200
                  data:
                    $ref: '#/components/schemas/team_get_by_id_response_model'
        '400':
          description: 'Bad request — request body validation failed. All string fields are

            optional but must be strings when supplied. Example:

            `"data.name" must be a string`.

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    description: HTTP status code
                    example: 400
                  error:
                    type: string
                    example: 

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