> ## Documentation Index
> Fetch the complete documentation index at: https://docs-v2.sortx.co.uk/llms.txt
> Use this file to discover all available pages before exploring further.

# Approve spend

> Record landlord approval of the spend



## OpenAPI

````yaml /openapi.json post /maintenance-pro/repairs/{id}/approve-spend
openapi: 3.1.0
info:
  title: SortX API
  version: 1.0.0
  description: >-
    Reactive repairs, planned maintenance, compliance and the repairs desk for
    UK letting agents and property managers.
servers:
  - url: https://api.sortx.co.uk
    description: Production
security: []
tags:
  - name: tenants
  - name: entitlements
  - name: events
  - name: workspace-settings
  - name: operational-catalogues
  - name: money
  - name: contacts
  - name: properties
  - name: address-lookup
  - name: tenancies
  - name: contractor-invoices
  - name: keys
  - name: inspections
  - name: handovers
  - name: planned-maintenance
  - name: contractors
  - name: documents
  - name: compliance
  - name: activity
  - name: tasks
  - name: today
  - name: reports
  - name: workspace-search
  - name: calendar
  - name: telephony
  - name: maintenance-pro
  - name: front-desk
  - name: maintenance-pro-public
  - name: maintenance-pro-contractor
paths:
  /maintenance-pro/repairs/{id}/approve-spend:
    post:
      tags:
        - maintenance-pro
      summary: Approve spend
      description: Record landlord approval of the spend
      operationId: maintenance-pro.approveSpend
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                approvedBy:
                  type: string
                quoteId:
                  anyOf:
                    - type: string
                    - type: 'null'
              required:
                - approvedBy
              additionalProperties: false
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  contractorWarnings:
                    anyOf:
                      - type: array
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            message:
                              type: string
                            important:
                              type: boolean
                          required:
                            - code
                            - message
                            - important
                          additionalProperties: false
                      - type: 'null'
                  id:
                    type: string
                  reference:
                    anyOf:
                      - type: string
                      - type: 'null'
                  propertyId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  blockId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  unitId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  reporterContactId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  reporterCorrection:
                    anyOf:
                      - type: string
                      - type: 'null'
                  reporterCorrectedAt:
                    anyOf:
                      - type: string
                      - type: 'null'
                  category:
                    type: string
                  faultNodeId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  subcategory:
                    anyOf:
                      - type: string
                      - type: 'null'
                  specificFault:
                    anyOf:
                      - type: string
                      - type: 'null'
                  faultAnswers:
                    anyOf:
                      - type: array
                        items:
                          type: object
                          properties:
                            questionId:
                              type: string
                            groupId:
                              type: string
                            label:
                              type: string
                            fieldType:
                              $ref: '#/components/schemas/FaultQuestionType'
                            value:
                              anyOf:
                                - type: string
                                - anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                          required:
                            - questionId
                            - groupId
                            - label
                            - fieldType
                            - value
                          additionalProperties: false
                      - type: 'null'
                  trade:
                    anyOf:
                      - type: string
                      - type: 'null'
                  description:
                    type: string
                  urgency:
                    type: string
                  status:
                    type: string
                  estimate:
                    anyOf:
                      - type: object
                        properties:
                          amountMinor:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          currency:
                            type: string
                        required:
                          - amountMinor
                          - currency
                        additionalProperties: false
                      - type: 'null'
                  spendLimit:
                    anyOf:
                      - type: object
                        properties:
                          amountMinor:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          currency:
                            type: string
                        required:
                          - amountMinor
                          - currency
                        additionalProperties: false
                      - type: 'null'
                  finalCost:
                    anyOf:
                      - type: object
                        properties:
                          amountMinor:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          currency:
                            type: string
                        required:
                          - amountMinor
                          - currency
                        additionalProperties: false
                      - type: 'null'
                  approval:
                    anyOf:
                      - type: object
                        properties:
                          approvedAt:
                            type: string
                          approvedBy:
                            type: string
                          quoteId:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - approvedAt
                          - approvedBy
                          - quoteId
                        additionalProperties: false
                      - type: 'null'
                  quotes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        repairId:
                          type: string
                        contractorContactId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        contractor:
                          anyOf:
                            - type: string
                            - type: 'null'
                        amount:
                          type: object
                          properties:
                            amountMinor:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            currency:
                              type: string
                          required:
                            - amountMinor
                            - currency
                          additionalProperties: false
                        notes:
                          anyOf:
                            - type: string
                            - type: 'null'
                        status:
                          type: string
                        receivedAt:
                          type: string
                        kind:
                          type: string
                        quoteRequestId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        documentId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        vatMinor:
                          anyOf:
                            - anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                            - type: 'null'
                        earliestStartOn:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - repairId
                        - contractorContactId
                        - contractor
                        - amount
                        - notes
                        - status
                        - receivedAt
                        - kind
                        - quoteRequestId
                        - documentId
                        - vatMinor
                        - earliestStartOn
                      additionalProperties: false
                  invoices:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        subjectKind:
                          type: string
                        subjectId:
                          type: string
                        subjectLabel:
                          anyOf:
                            - type: string
                            - type: 'null'
                        propertyId:
                          type: string
                        propertyLabel:
                          anyOf:
                            - type: string
                            - type: 'null'
                        tenancyId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        contractorContactId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        contractorName:
                          anyOf:
                            - type: string
                            - type: 'null'
                        number:
                          type: string
                        issuedOn:
                          type: string
                        dueOn:
                          anyOf:
                            - type: string
                            - type: 'null'
                        currency:
                          type: string
                        netMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        vatMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        grossMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        borneBy:
                          type: string
                          enum:
                            - landlord
                            - tenant
                            - agency
                        documentId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        status:
                          type: string
                          enum:
                            - received
                            - approved
                            - part_paid
                            - paid
                            - disputed
                            - credited
                            - void
                        approvedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        creditedMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        paidMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        outstandingMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        disputedMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        payableMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        recoveredMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        recoverableMinor:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        disputeReason:
                          anyOf:
                            - type: string
                            - type: 'null'
                        disputedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        voidedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        voidReason:
                          anyOf:
                            - type: string
                            - type: 'null'
                        legacy:
                          type: boolean
                        legacyStatus:
                          anyOf:
                            - type: string
                            - type: 'null'
                        legacySettled:
                          type: boolean
                        revision:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        createdAt:
                          type: string
                        lines:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              ordinal:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              kind:
                                type: string
                                enum:
                                  - labour
                                  - materials
                                  - other
                              description:
                                type: string
                              netMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              vatMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              grossMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                            required:
                              - id
                              - ordinal
                              - kind
                              - description
                              - netMinor
                              - vatMinor
                              - grossMinor
                            additionalProperties: false
                        payments:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              amountMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              paidOn:
                                type: string
                              reference:
                                type: string
                              legacy:
                                type: boolean
                              createdAt:
                                type: string
                              correctedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              correctionReason:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                            required:
                              - id
                              - amountMinor
                              - paidOn
                              - reference
                              - legacy
                              - createdAt
                              - correctedAt
                              - correctionReason
                            additionalProperties: false
                        creditNotes:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              number:
                                type: string
                              issuedOn:
                                type: string
                              netMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              vatMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              grossMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              reason:
                                type: string
                              documentId:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              createdAt:
                                type: string
                              correctedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              correctionReason:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                            required:
                              - id
                              - number
                              - issuedOn
                              - netMinor
                              - vatMinor
                              - grossMinor
                              - reason
                              - documentId
                              - createdAt
                              - correctedAt
                              - correctionReason
                            additionalProperties: false
                        recoveries:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              amountMinor:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              receivedOn:
                                type: string
                              reference:
                                type: string
                              createdAt:
                                type: string
                              correctedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              correctionReason:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                            required:
                              - id
                              - amountMinor
                              - receivedOn
                              - reference
                              - createdAt
                              - correctedAt
                              - correctionReason
                            additionalProperties: false
                        authorisation:
                          type: object
                          properties:
                            state:
                              type: string
                              enum:
                                - within
                                - over
                                - no_limit
                                - currency_mismatch
                                - not_checked
                            basis:
                              anyOf:
                                - type: string
                                  enum:
                                    - approved_quote
                                    - spend_limit
                                    - selected_quote
                                - type: 'null'
                            authorisedMinor:
                              anyOf:
                                - anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                - type: 'null'
                            authorisedCurrency:
                              anyOf:
                                - type: string
                                - type: 'null'
                            earlierMinor:
                              anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                            chargedMinor:
                              anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                            remainingMinor:
                              anyOf:
                                - anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                - type: 'null'
                            excessMinor:
                              anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                          required:
                            - state
                            - basis
                            - authorisedMinor
                            - authorisedCurrency
                            - earlierMinor
                            - chargedMinor
                            - remainingMinor
                            - excessMinor
                          additionalProperties: false
                        limitOverride:
                          anyOf:
                            - type: object
                              properties:
                                id:
                                  type: string
                                state:
                                  type: string
                                basis:
                                  type: string
                                authorisedMinor:
                                  anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                authorisedCurrency:
                                  type: string
                                earlierMinor:
                                  anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                chargedMinor:
                                  anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                excessMinor:
                                  anyOf:
                                    - type: number
                                    - type: string
                                      enum:
                                        - Infinity
                                        - '-Infinity'
                                        - NaN
                                reason:
                                  type: string
                                userId:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                createdAt:
                                  type: string
                              required:
                                - id
                                - state
                                - basis
                                - authorisedMinor
                                - authorisedCurrency
                                - earlierMinor
                                - chargedMinor
                                - excessMinor
                                - reason
                                - userId
                                - createdAt
                              additionalProperties: false
                            - type: 'null'
                      required:
                        - id
                        - subjectKind
                        - subjectId
                        - subjectLabel
                        - propertyId
                        - propertyLabel
                        - tenancyId
                        - contractorContactId
                        - contractorName
                        - number
                        - issuedOn
                        - dueOn
                        - currency
                        - netMinor
                        - vatMinor
                        - grossMinor
                        - borneBy
                        - documentId
                        - status
                        - approvedAt
                        - creditedMinor
                        - paidMinor
                        - outstandingMinor
                        - disputedMinor
                        - payableMinor
                        - recoveredMinor
                        - recoverableMinor
                        - disputeReason
                        - disputedAt
                        - voidedAt
                        - voidReason
                        - legacy
                        - legacyStatus
                        - legacySettled
                        - revision
                        - createdAt
                        - lines
                        - payments
                        - creditNotes
                        - recoveries
                        - authorisation
                        - limitOverride
                      additionalProperties: false
                  offers:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        repairId:
                          type: string
                        contractorContactId:
                          type: string
                        contractor:
                          anyOf:
                            - type: string
                            - type: 'null'
                        round:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        position:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        status:
                          type: string
                        offeredAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        expiresAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        respondedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        note:
                          anyOf:
                            - type: string
                            - type: 'null'
                        declineReason:
                          anyOf:
                            - type: string
                            - type: 'null'
                        createdAt:
                          type: string
                      required:
                        - id
                        - repairId
                        - contractorContactId
                        - contractor
                        - round
                        - position
                        - status
                        - offeredAt
                        - expiresAt
                        - respondedAt
                        - note
                        - declineReason
                        - createdAt
                      additionalProperties: false
                  quoteRounds:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        round:
                          anyOf:
                            - type: number
                            - type: string
                              enum:
                                - Infinity
                                - '-Infinity'
                                - NaN
                        status:
                          type: string
                        dueOn:
                          anyOf:
                            - type: string
                            - type: 'null'
                        notes:
                          anyOf:
                            - type: string
                            - type: 'null'
                        endReason:
                          anyOf:
                            - type: string
                            - type: 'null'
                        reviewTaskId:
                          anyOf:
                            - type: string
                            - type: 'null'
                        createdAt:
                          type: string
                        endedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        requests:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              contractorContactId:
                                type: string
                              contractor:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              status:
                                type: string
                              declineReason:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              declineNote:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              quoteId:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              respondedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              position:
                                anyOf:
                                  - anyOf:
                                      - type: number
                                      - type: string
                                        enum:
                                          - Infinity
                                          - '-Infinity'
                                          - NaN
                                  - type: 'null'
                              invitedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              expiresAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                            required:
                              - id
                              - contractorContactId
                              - contractor
                              - status
                              - declineReason
                              - declineNote
                              - quoteId
                              - respondedAt
                              - position
                              - invitedAt
                              - expiresAt
                            additionalProperties: false
                        mode:
                          type: string
                        wanted:
                          anyOf:
                            - anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                            - type: 'null'
                        replyHours:
                          anyOf:
                            - anyOf:
                                - type: number
                                - type: string
                                  enum:
                                    - Infinity
                                    - '-Infinity'
                                    - NaN
                            - type: 'null'
                      required:
                        - id
                        - round
                        - status
                        - dueOn
                        - notes
                        - endReason
                        - reviewTaskId
                        - createdAt
                        - endedAt
                        - requests
                        - mode
                        - wanted
                        - replyHours
                      additionalProperties: false
                  asks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        kind:
                          type: string
                          enum:
                            - tenant-emergency
                            - contractor-no-access
                            - tenant-no-show
                            - tenant-visit-change
                            - contractor-delayed
                        at:
                          type: string
                        taskId:
                          type: string
                        preferredDays:
                          anyOf:
                            - type: array
                              items:
                                type: string
                            - type: 'null'
                        timeOfDay:
                          anyOf:
                            - type: string
                            - type: 'null'
                        expectedAt:
                          anyOf:
                            - type: string
                            - type: 'null'
                        note:
                          anyOf:
                            - type: string
                            - type: 'null'
                        afterFailedVisit:
                          anyOf:
                            - type: boolean
                            - type: 'null'
                      required:
                        - id
                        - kind
                        - at
                        - taskId
                        - preferredDays
                        - timeOfDay
                        - expectedAt
                        - note
                      additionalProperties: false
                  contractorContactId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  scheduledFor:
                    anyOf:
                      - type: string
                      - type: 'null'
                  reportedVia:
                    anyOf:
                      - type: string
                      - type: 'null'
                  intakeHeldAt:
                    anyOf:
                      - type: string
                      - type: 'null'
                  reportedAddress:
                    anyOf:
                      - type: object
                        properties:
                          line1:
                            type: string
                          postcode:
                            type: string
                        required:
                          - line1
                          - postcode
                        additionalProperties: false
                      - type: 'null'
                  closedReason:
                    anyOf:
                      - type: string
                        enum:
                          - completed
                          - duplicate
                          - reported_in_error
                          - not_managed
                          - cancelled_by_tenant
                          - tenant_to_resolve
                          - landlord_to_resolve
                          - third_party
                          - no_access
                          - no_longer_required
                          - other
                      - type: 'null'
                  closeNote:
                    anyOf:
                      - type: string
                      - type: 'null'
                  closedAt:
                    anyOf:
                      - type: string
                      - type: 'null'
                  duplicateOf:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          reference:
                            anyOf:
                              - type: string
                              - type: 'null'
                        required:
                          - id
                          - reference
                        additionalProperties: false
                      - type: 'null'
                  duplicates:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        reference:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - id
                        - reference
                      additionalProperties: false
                  assetId:
                    anyOf:
                      - type: string
                      - type: 'null'
                  asset:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          name:
                            type: string
                          reference:
                            anyOf:
                              - type: string
                              - type: 'null'
                          archived:
                            type: boolean
                        required:
                          - id
                          - name
                          - reference
                          - archived
                        additionalProperties: false
                      - type: 'null'
                  firstRespondedAt:
                    anyOf:
                      - anyOf:
                          - type: string
                          - type: 'null'
                      - type: 'null'
                  firstAttendedAt:
                    anyOf:
                      - anyOf:
                          - type: string
                          - type: 'null'
                      - type: 'null'
                  targets:
                    anyOf:
                      - type: object
                        properties:
                          respond:
                            type: object
                            properties:
                              dueAt:
                                type: string
                              label:
                                type: string
                              reachedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              state:
                                type: string
                                enum:
                                  - pending
                                  - overdue
                                  - met
                                  - missed
                                  - not-reached
                            required:
                              - dueAt
                              - label
                              - reachedAt
                              - state
                            additionalProperties: false
                          attend:
                            anyOf:
                              - type: object
                                properties:
                                  dueAt:
                                    type: string
                                  label:
                                    type: string
                                  reachedAt:
                                    anyOf:
                                      - type: string
                                      - type: 'null'
                                  state:
                                    type: string
                                    enum:
                                      - pending
                                      - overdue
                                      - met
                                      - missed
                                      - not-reached
                                required:
                                  - dueAt
                                  - label
                                  - reachedAt
                                  - state
                                additionalProperties: false
                              - type: 'null'
                          complete:
                            type: object
                            properties:
                              dueAt:
                                type: string
                              label:
                                type: string
                              reachedAt:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              state:
                                type: string
                                enum:
                                  - pending
                                  - overdue
                                  - met
                                  - missed
                                  - not-reached
                            required:
                              - dueAt
                              - label
                              - reachedAt
                              - state
                            additionalProperties: false
                        required:
                          - respond
                          - attend
                          - complete
                        additionalProperties: false
                      - type: 'null'
                  lastVisit:
                    anyOf:
                      - anyOf:
                          - type: object
                            properties:
                              result:
                                type: string
                                enum:
                                  - fixed
                                  - made_safe
                                  - part_fixed
                                  - not_fixed
                                  - no_access
                                  - contractor_no_show
                              reasons:
                                type: array
                                items:
                                  type: string
                                  enum:
                                    - tenant_not_home
                                    - access_refused
                                    - keys_did_not_work
                                    - wrong_tools
                                    - parts_needed
                                    - bigger_than_expected
                                    - needs_other_trade
                                    - needs_quote_approval
                                    - unsafe_to_work
                                    - ran_out_of_time
                                    - other
                              note:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              visitStartsAt:
                                type: string
                              recordedAt:
                                type: string
                              visits:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                            required:
                              - result
                              - reasons
                              - note
                              - visitStartsAt
                              - recordedAt
                              - visits
                            additionalProperties: false
                          - type: 'null'
                      - type: 'null'
                  partsWait:
                    anyOf:
                      - anyOf:
                          - type: object
                            properties:
                              waitId:
                                type: string
                              sequence:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              state:
                                type: string
                                enum:
                                  - opened
                                  - delayed
                                  - decided
                                  - arrived
                                  - ended
                              part:
                                type: string
                              supplier:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              ordered:
                                type: boolean
                              expectedOn:
                                type: string
                              costMinor:
                                anyOf:
                                  - anyOf:
                                      - type: number
                                      - type: string
                                        enum:
                                          - Infinity
                                          - '-Infinity'
                                          - NaN
                                  - type: 'null'
                              currency:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              returnDurationMinutes:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              delays:
                                anyOf:
                                  - type: number
                                  - type: string
                                    enum:
                                      - Infinity
                                      - '-Infinity'
                                      - NaN
                              lastReason:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                              overdue:
                                type: boolean
                              decisionNeeded:
                                type: boolean
                              openedAt:
                                type: string
                              updatedAt:
                                type: string
                            required:
                              - waitId
                              - sequence
                              - state
                              - part
                              - supplier
                              - ordered
                              - expectedOn
                              - costMinor
                              - currency
                              - returnDurationMinutes
                              - delays
                              - lastReason
                              - overdue
                              - decisionNeeded
                              - openedAt
                              - updatedAt
                            additionalProperties: false
                          - type: 'null'
                      - type: 'null'
                  createdAt:
                    type: string
                  property:
                    type: string
                  reporter:
                    type: string
                  contractor:
                    anyOf:
                      - type: string
                      - type: 'null'
                required:
                  - id
                  - reference
                  - propertyId
                  - blockId
                  - unitId
                  - reporterContactId
                  - reporterCorrection
                  - reporterCorrectedAt
                  - category
                  - faultNodeId
                  - subcategory
                  - specificFault
                  - faultAnswers
                  - trade
                  - description
                  - urgency
                  - status
                  - estimate
                  - spendLimit
                  - finalCost
                  - approval
                  - quotes
                  - invoices
                  - offers
                  - quoteRounds
                  - asks
                  - contractorContactId
                  - scheduledFor
                  - reportedVia
                  - intakeHeldAt
                  - reportedAddress
                  - closedReason
                  - closeNote
                  - closedAt
                  - duplicateOf
                  - duplicates
                  - assetId
                  - asset
                  - createdAt
                  - property
                  - reporter
                  - contractor
                additionalProperties: false
        '400':
          description: >-
            TenantCreateRejected | ConfigMissing | IntegrationRejected |
            AuthRejected | RegistrationRejected | UnknownIntegration |
            WebhookUnroutable | RateUnavailable | MaintenanceRepairInvalid
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/TenantCreateRejectedEncoded'
                  - $ref: '#/components/schemas/ConfigMissingEncoded'
                  - $ref: '#/components/schemas/IntegrationRejectedEncoded'
                  - $ref: '#/components/schemas/AuthRejectedEncoded'
                  - $ref: '#/components/schemas/RegistrationRejectedEncoded'
                  - $ref: '#/components/schemas/UnknownIntegrationEncoded'
                  - $ref: '#/components/schemas/WebhookUnroutableEncoded'
                  - $ref: '#/components/schemas/RateUnavailableEncoded'
                  - $ref: '#/components/schemas/MaintenanceRepairInvalidEncoded'
        '401':
          description: Unauthenticated | WebhookRejected | ApiKeyRejected
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/UnauthenticatedEncoded'
                  - $ref: '#/components/schemas/WebhookRejectedEncoded'
                  - $ref: '#/components/schemas/ApiKeyRejectedEncoded'
        '402':
          description: TenantSuspended
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantSuspendedEncoded'
        '403':
          description: >-
            EntitlementMissing | NotAMember | ScopeUnknown | ScopeMissing |
            TenantMismatch | WorkspaceOwnerRequired | WorkspaceRoleRequired
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/EntitlementMissingEncoded'
                  - $ref: '#/components/schemas/NotAMemberEncoded'
                  - $ref: '#/components/schemas/ScopeUnknownEncoded'
                  - $ref: '#/components/schemas/ScopeMissingEncoded'
                  - $ref: '#/components/schemas/TenantMismatchEncoded'
                  - $ref: '#/components/schemas/WorkspaceOwnerRequiredEncoded'
                  - $ref: '#/components/schemas/WorkspaceRoleRequiredEncoded'
        '404':
          description: TenantNotFound | ModuleRequestNotFound | MaintenanceRepairNotFound
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/TenantNotFoundEncoded'
                  - $ref: '#/components/schemas/ModuleRequestNotFoundEncoded'
                  - $ref: '#/components/schemas/MaintenanceRepairNotFoundEncoded'
        '409':
          description: WebhookDuplicate | RegistrationConflict | MoneyBusy
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/WebhookDuplicateEncoded'
                  - $ref: '#/components/schemas/RegistrationConflictEncoded'
                  - $ref: '#/components/schemas/MoneyBusyEncoded'
        '429':
          description: RateLimited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedEncoded'
        '503':
          description: IntegrationUnavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationUnavailableEncoded'
      security:
        - apiKey: []
components:
  schemas:
    FaultQuestionType:
      type: string
      enum:
        - text
        - number
        - select
        - textarea
    TenantCreateRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - TenantCreateRejected
        reason:
          type: string
        field:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - _tag
        - reason
      additionalProperties: false
    ConfigMissingEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - ConfigMissing
        key:
          type: string
      required:
        - _tag
        - key
      additionalProperties: false
    IntegrationRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - IntegrationRejected
        integration:
          type: string
        reason:
          type: string
      required:
        - _tag
        - integration
        - reason
      additionalProperties: false
    AuthRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - AuthRejected
        code:
          type: string
        message:
          type: string
      required:
        - _tag
        - code
        - message
      additionalProperties: false
    RegistrationRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - RegistrationRejected
        message:
          type: string
        field:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - _tag
        - message
      additionalProperties: false
    UnknownIntegrationEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - UnknownIntegration
        integration:
          type: string
      required:
        - _tag
        - integration
      additionalProperties: false
    WebhookUnroutableEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - WebhookUnroutable
        integration:
          type: string
        reason:
          type: string
      required:
        - _tag
        - integration
        - reason
      additionalProperties: false
    RateUnavailableEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - RateUnavailable
        base:
          type: string
        quote:
          type: string
        'on':
          type: string
      required:
        - _tag
        - base
        - quote
        - 'on'
      additionalProperties: false
    MaintenanceRepairInvalidEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - MaintenanceRepairInvalid
        reason:
          type: string
      required:
        - _tag
        - reason
      additionalProperties: false
    UnauthenticatedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - Unauthenticated
      required:
        - _tag
      additionalProperties: false
    WebhookRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - WebhookRejected
        integration:
          type: string
        reason:
          type: string
      required:
        - _tag
        - integration
        - reason
      additionalProperties: false
    ApiKeyRejectedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - ApiKeyRejected
      required:
        - _tag
      additionalProperties: false
    TenantSuspendedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - TenantSuspended
        tenantId:
          type: string
        reason:
          type: string
      required:
        - _tag
        - tenantId
        - reason
      additionalProperties: false
    EntitlementMissingEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - EntitlementMissing
        tenantId:
          type: string
        moduleId:
          type: string
      required:
        - _tag
        - tenantId
        - moduleId
      additionalProperties: false
    NotAMemberEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - NotAMember
        userId:
          type: string
        slug:
          type: string
      required:
        - _tag
        - userId
        - slug
      additionalProperties: false
    ScopeUnknownEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - ScopeUnknown
        scope:
          type: string
      required:
        - _tag
        - scope
      additionalProperties: false
    ScopeMissingEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - ScopeMissing
        scope:
          type: string
      required:
        - _tag
        - scope
      additionalProperties: false
    TenantMismatchEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - TenantMismatch
        header:
          type: string
        organizationId:
          type: string
      required:
        - _tag
        - header
        - organizationId
      additionalProperties: false
    WorkspaceOwnerRequiredEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - WorkspaceOwnerRequired
      required:
        - _tag
      additionalProperties: false
    WorkspaceRoleRequiredEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - WorkspaceRoleRequired
        role:
          anyOf:
            - type: string
            - type: 'null'
        required:
          type: array
          items:
            type: string
        message:
          type: string
      required:
        - _tag
        - role
        - required
        - message
      additionalProperties: false
    TenantNotFoundEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - TenantNotFound
        slug:
          type: string
      required:
        - _tag
        - slug
      additionalProperties: false
    ModuleRequestNotFoundEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - ModuleRequestNotFound
        id:
          type: string
      required:
        - _tag
        - id
      additionalProperties: false
    MaintenanceRepairNotFoundEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - MaintenanceRepairNotFound
        resource:
          type: string
        id:
          type: string
      required:
        - _tag
        - resource
        - id
      additionalProperties: false
    WebhookDuplicateEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - WebhookDuplicate
        integration:
          type: string
        externalId:
          type: string
      required:
        - _tag
        - integration
        - externalId
      additionalProperties: false
    RegistrationConflictEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - RegistrationConflict
        message:
          type: string
        field:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - _tag
        - message
      additionalProperties: false
    MoneyBusyEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - MoneyBusy
        message:
          type: string
      required:
        - _tag
        - message
      additionalProperties: false
    RateLimitedEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - RateLimited
        key:
          type: string
        retryAfterSeconds:
          anyOf:
            - type: number
            - type: string
              enum:
                - Infinity
                - '-Infinity'
                - NaN
        message:
          type: string
      required:
        - _tag
        - key
        - retryAfterSeconds
        - message
      additionalProperties: false
    IntegrationUnavailableEncoded:
      type: object
      properties:
        _tag:
          type: string
          enum:
            - IntegrationUnavailable
        integration:
          type: string
        detail:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - _tag
        - integration
      additionalProperties: false
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        A workspace API key (Settings → API keys), scoped to `<group>:read` /
        `<group>:write`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.