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

# Declare a verified complete book

> Requires receivables:write. Declares that the listed batches carried the complete scoped book. PayPathIQ verifies that every listed batch belongs to this connection, finished with every record (including dependent records) accepted, and that the accepted Receivables match expectedReceivableCount; otherwise nothing changes. Open Receivables that existed before the earliest batch and are missing from the verified book are flagged and their recovery and Payment actions held. They are never settled, forgiven, closed or deleted, financial history is untouched, and unaffected Receivables continue. The flag is shown on the Receivable as financialPosition.missingFromCompleteBook. A later verified complete book that contains the Receivable, an authorized close, or an authorized correction to a zero balance clears only this restriction. An identical retry returns 200 and changes nothing. Batches alone never declare completeness, and incremental omissions have no effect.



## OpenAPI

````yaml /generated/inbound-api-v1.openapi.json put /v1/clients/{clientCode}/book-completions/{externalCompletionId}
openapi: 3.1.0
info:
  description: >-
    Send Customers, Receivables, and Payment observations and related financial
    evidence from your source system to PayPathIQ, one record at a time or as
    bounded asynchronous batches, and read back changes. Every operation listed
    here is implemented; capabilities that are not implemented are not listed.
    Start in sandbox with a sandbox key and synthetic data. Every error type
    links to a page at https://docs.paypathiq.com/problems/{code}.
  title: PayPathIQ Inbound Receivables API
  version: 1.0.0
servers:
  - description: Sandbox
    url: https://api.sandbox.paypathiq.com
  - description: Production
    url: https://api.paypathiq.com
security:
  - BearerAuth: []
tags:
  - description: >-
      PayPathIQ-owned delivery of receipts to the accounting Source, with
      acknowledgement kept separate.
    name: Receipt delivery
  - description: People and businesses that owe one Client.
    name: Customers
  - description: Independently recoverable Receivables.
    name: Receivables
  - description: Immutable evidence of external payments, refunds, and reversals.
    name: Payment observations
  - description: >-
      Ordered Source balance snapshots for transaction and snapshot-only
      connections.
    name: Balance snapshots
  - description: >-
      Bounded asynchronous ingestion of up to 100 records with exact per-record
      outcomes.
    name: Batches
  - description: >-
      Verified complete-book declarations that flag and hold Receivables missing
      from the book.
    name: Complete books
  - description: Durable, resumable record of committed Customer and Receivable changes.
    name: Changes
  - description: >-
      Optional signed, minimal notifications that a Customer or Receivable
      changed.
    name: Webhooks
  - description: >-
      Fixed-amount hosted payment pages through the Client's own payment
      provider merchant.
    name: Payment requests
  - description: >-
      Partner-owned delivery of confirmed Payments to accounting, kept separate
      from accounting acceptance.
    name: Payment delivery
  - description: Explicit Receivable pause and closure commands.
    name: Receivable lifecycle
  - description: >-
      Explicit, revisioned instructions that let PayPathIQ begin recovery for a
      Receivable.
    name: Recovery instructions
  - description: >-
      Permissioned working collection position, holds, commitments and action
      outcomes, separate from the Source representation.
    name: Collection summaries
  - description: Whether accepted source evidence is recent enough to act on.
    name: Source freshness
  - description: This machine-readable API contract.
    name: Specification
paths:
  /v1/clients/{clientCode}/book-completions/{externalCompletionId}:
    put:
      tags:
        - Complete books
      summary: Declare a verified complete book
      description: >-
        Requires receivables:write. Declares that the listed batches carried the
        complete scoped book. PayPathIQ verifies that every listed batch belongs
        to this connection, finished with every record (including dependent
        records) accepted, and that the accepted Receivables match
        expectedReceivableCount; otherwise nothing changes. Open Receivables
        that existed before the earliest batch and are missing from the verified
        book are flagged and their recovery and Payment actions held. They are
        never settled, forgiven, closed or deleted, financial history is
        untouched, and unaffected Receivables continue. The flag is shown on the
        Receivable as financialPosition.missingFromCompleteBook. A later
        verified complete book that contains the Receivable, an authorized
        close, or an authorized correction to a zero balance clears only this
        restriction. An identical retry returns 200 and changes nothing. Batches
        alone never declare completeness, and incremental omissions have no
        effect.
      operationId: putBookCompletion
      parameters:
        - description: >-
            Stable non-sensitive Client code authorized by the Integration
            grant.
          in: path
          name: clientCode
          required: true
          schema:
            $ref: '#/components/schemas/ExternalResourceId'
        - description: >-
            Caller-assigned identifier of this complete-book declaration.
            Reusing it with an identical body is a safe retry.
          in: path
          name: externalCompletionId
          required: true
          schema:
            $ref: '#/components/schemas/ExternalResourceId'
      requestBody:
        description: One uncompressed resource representation, limited to 256 KiB.
        content:
          application/json:
            example:
              asOf: '2026-10-15T01:00:00Z'
              batches:
                - BATCH_BOOK_1
                - BATCH_BOOK_2
              expectedReceivableCount: 180
              scope: all_receivables
              sourcePosition: 7
            schema:
              $ref: '#/components/schemas/BookCompletion'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                acceptedAt: '2026-10-15T02:30:00.000Z'
                asOf: '2026-10-15T01:00:00.000Z'
                batches:
                  - BATCH_BOOK_1
                  - BATCH_BOOK_2
                coveredReceivableCount: 180
                externalCompletionId: BOOK_7
                omissions:
                  - externalReceivableId: REC_999
                    flaggedAt: '2026-10-15T02:30:00.000Z'
                    state: held
                omissionsTruncated: false
                omittedReceivableCount: 1
                scope: all_receivables
                sourcePosition: 7
              schema:
                $ref: '#/components/schemas/BookCompletionResponse'
          description: Identical safe retry.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '201':
          content:
            application/json:
              example:
                acceptedAt: '2026-10-15T02:30:00.000Z'
                asOf: '2026-10-15T01:00:00.000Z'
                batches:
                  - BATCH_BOOK_1
                  - BATCH_BOOK_2
                coveredReceivableCount: 180
                externalCompletionId: BOOK_7
                omissions:
                  - externalReceivableId: REC_999
                    flaggedAt: '2026-10-15T02:30:00.000Z'
                    state: held
                omissionsTruncated: false
                omittedReceivableCount: 1
                scope: all_receivables
                sourcePosition: 7
              schema:
                $ref: '#/components/schemas/BookCompletionResponse'
          description: Verified; missing Receivables flagged and held atomically.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
            Location:
              description: Canonical URL of the created Integration-facing resource.
              schema:
                type: string
                format: uri
        '400':
          content:
            application/problem+json:
              examples:
                malformed_json:
                  value:
                    detail: Request body is not valid JSON.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 400
                    title: Request body is not valid JSON.
                    type: https://docs.paypathiq.com/problems/malformed_json
              schema:
                $ref: '#/components/schemas/Problem'
          description: Request body is not valid JSON.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '401':
          content:
            application/problem+json:
              examples:
                invalid_api_key:
                  value:
                    detail: >-
                      API key is invalid, inactive, revoked, or for another
                      environment.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 401
                    title: >-
                      API key is invalid, inactive, revoked, or for another
                      environment.
                    type: https://docs.paypathiq.com/problems/invalid_api_key
              schema:
                $ref: '#/components/schemas/Problem'
          description: API key is invalid, inactive, revoked, or for another environment.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '403':
          content:
            application/problem+json:
              examples:
                client_scope_denied:
                  value:
                    detail: >-
                      The Client code is unknown, the grant lacks the required
                      scope, or the calling address is outside the grant's IP
                      allowlist.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 403
                    title: >-
                      The Client code is unknown, the grant lacks the required
                      scope, or the calling address is outside the grant's IP
                      allowlist.
                    type: https://docs.paypathiq.com/problems/client_scope_denied
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The Client code is unknown, the grant lacks the required scope, or
            the calling address is outside the grant's IP allowlist.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '409':
          content:
            application/problem+json:
              examples:
                book_completion_unverified:
                  value:
                    detail: >-
                      A listed batch is missing, not fully accepted, or its
                      accepted Receivables do not match expectedReceivableCount.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 409
                    title: >-
                      A listed batch is missing, not fully accepted, or its
                      accepted Receivables do not match expectedReceivableCount.
                    type: >-
                      https://docs.paypathiq.com/problems/book_completion_unverified
                source_position_conflict:
                  value:
                    detail: >-
                      The position is not higher than every accepted
                      complete-book position, or asOf is earlier than the latest
                      accepted book.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 409
                    title: >-
                      The position is not higher than every accepted
                      complete-book position, or asOf is earlier than the latest
                      accepted book.
                    type: >-
                      https://docs.paypathiq.com/problems/source_position_conflict
                financial_event_conflict:
                  value:
                    detail: Identity already has different immutable evidence.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 409
                    title: Identity already has different immutable evidence.
                    type: >-
                      https://docs.paypathiq.com/problems/financial_event_conflict
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            A listed batch is missing, not fully accepted, or its accepted
            Receivables do not match expectedReceivableCount. The position is
            not higher than every accepted complete-book position, or asOf is
            earlier than the latest accepted book. Identity already has
            different immutable evidence.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '413':
          content:
            application/problem+json:
              examples:
                request_too_large:
                  value:
                    detail: Request body exceeds the 256 KiB resource limit.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 413
                    title: Request body exceeds the 256 KiB resource limit.
                    type: https://docs.paypathiq.com/problems/request_too_large
              schema:
                $ref: '#/components/schemas/Problem'
          description: Request body exceeds the 256 KiB resource limit.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '415':
          content:
            application/problem+json:
              examples:
                unsupported_media_type:
                  value:
                    detail: >-
                      Media type or content encoding is unsupported. Send
                      uncompressed application/json for PUT and POST, and
                      application/merge-patch+json for PATCH.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 415
                    title: >-
                      Media type or content encoding is unsupported. Send
                      uncompressed application/json for PUT and POST, and
                      application/merge-patch+json for PATCH.
                    type: https://docs.paypathiq.com/problems/unsupported_media_type
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Media type or content encoding is unsupported. Send uncompressed
            application/json for PUT and POST, and application/merge-patch+json
            for PATCH.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '422':
          content:
            application/problem+json:
              examples:
                validation_error:
                  value:
                    detail: >-
                      Route parameters or the representation are invalid. Route
                      parameters are checked before authentication. Field errors
                      carry a code such as invalid_format, unrecognized_keys,
                      custom, sensitive_external_id, or
                      sensitive_source_reference.
                    errors:
                      - code: invalid_format
                        detail: Invalid ISO date
                        pointer: /dueDate
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 422
                    title: >-
                      Route parameters or the representation are invalid. Route
                      parameters are checked before authentication. Field errors
                      carry a code such as invalid_format, unrecognized_keys,
                      custom, sensitive_external_id, or
                      sensitive_source_reference.
                    type: https://docs.paypathiq.com/problems/validation_error
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Route parameters or the representation are invalid. Route parameters
            are checked before authentication. Field errors carry a code such as
            invalid_format, unrecognized_keys, custom, sensitive_external_id, or
            sensitive_source_reference.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '429':
          content:
            application/problem+json:
              examples:
                rate_limit_exceeded:
                  value:
                    detail: >-
                      Each API key may send 60 requests per minute and run 1
                      request at a time. In sandbox, the same limits also apply
                      per Client across all of its keys. Every request,
                      including GET, counts.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 429
                    title: >-
                      Each API key may send 60 requests per minute and run 1
                      request at a time. In sandbox, the same limits also apply
                      per Client across all of its keys. Every request,
                      including GET, counts.
                    type: https://docs.paypathiq.com/problems/rate_limit_exceeded
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Each API key may send 60 requests per minute and run 1 request at a
            time. In sandbox, the same limits also apply per Client across all
            of its keys. Every request, including GET, counts.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
            Retry-After:
              description: >-
                Seconds until this unchanged request may be retried: 1 after a
                concurrency rejection, 60 after the per-minute limit.
              schema:
                minimum: 1
                type: integer
        '503':
          content:
            application/problem+json:
              examples:
                projection_unavailable:
                  value:
                    detail: >-
                      An unexpected error prevented a safe commit, and nothing
                      was saved. Retry with backoff.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 503
                    title: >-
                      An unexpected error prevented a safe commit, and nothing
                      was saved. Retry with backoff.
                    type: https://docs.paypathiq.com/problems/projection_unavailable
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            An unexpected error prevented a safe commit, and nothing was saved.
            Retry with backoff.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
      security:
        - BearerAuth: []
components:
  schemas:
    ExternalResourceId:
      type: string
      pattern: ^[A-Za-z0-9_-]{1,128}$
    BookCompletion:
      type: object
      properties:
        asOf:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          description: >-
            UTC time at which the Source produced this book. Never later than
            the earliest listed batch submission.
        batches:
          minItems: 1
          maxItems: 50
          type: array
          items:
            type: string
            pattern: ^[A-Za-z0-9_-]{1,128}$
          description: >-
            externalBatchIds that together carried every Receivable in the
            declared scope. Each must belong to this connection and have
            succeeded with every record accepted.
        expectedReceivableCount:
          type: integer
          minimum: 0
          maximum: 9007199254740991
          description: >-
            Exact number of distinct Receivables in the Source book. It must
            equal the distinct Receivables accepted by the listed batches, so a
            truncated load cannot be declared complete.
        scope:
          type: string
          enum:
            - all_receivables
          description: >-
            all_receivables: every Receivable of this connection's Source for
            this Client.
        sourcePosition:
          type: integer
          exclusiveMinimum: 0
          maximum: 9007199254740991
          description: >-
            Strictly increasing position of this declaration across the
            connection.
      required:
        - asOf
        - batches
        - expectedReceivableCount
        - scope
        - sourcePosition
      additionalProperties: false
    BookCompletionResponse:
      type: object
      properties:
        acceptedAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
        asOf:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
        batches:
          maxItems: 50
          type: array
          items:
            type: string
            pattern: ^[A-Za-z0-9_-]{1,128}$
        coveredReceivableCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        externalCompletionId:
          type: string
          pattern: ^[A-Za-z0-9_-]{1,128}$
        omissions:
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              externalReceivableId:
                type: string
                pattern: ^[A-Za-z0-9_-]{1,128}$
              flaggedAt:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              resolution:
                description: >-
                  How a resolved flag was cleared: a later verified complete
                  book containing the Receivable, an authorized source close, or
                  an authorized non-cash correction to a zero balance. Only the
                  missing-record restriction is cleared and recovery never
                  resumes automatically.
                type: string
                enum:
                  - complete_book
                  - source_close
                  - source_correction
              resolvedAt:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              state:
                type: string
                enum:
                  - held
                  - resolved
                description: >-
                  held: recovery and payment actions on the Receivable are held
                  as missing from a verified complete book. resolved: a later
                  verified complete book contained it and only this restriction
                  was cleared.
            required:
              - externalReceivableId
              - flaggedAt
              - state
            additionalProperties: false
        omissionsTruncated:
          type: boolean
          description: >-
            True when more than 100 Receivables were flagged;
            omittedReceivableCount is the exact total.
        omittedReceivableCount:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        scope:
          type: string
          enum:
            - all_receivables
        sourcePosition:
          type: integer
          exclusiveMinimum: 0
          maximum: 9007199254740991
      required:
        - acceptedAt
        - asOf
        - batches
        - coveredReceivableCount
        - externalCompletionId
        - omissions
        - omissionsTruncated
        - omittedReceivableCount
        - scope
        - sourcePosition
      additionalProperties: false
    Problem:
      type: object
      properties:
        detail:
          type: string
        errors:
          maxItems: 20
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              detail:
                type: string
              pointer:
                type: string
            required:
              - code
              - detail
              - pointer
            additionalProperties: false
        requestId:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        status:
          type: integer
          minimum: 400
          maximum: 599
        title:
          type: string
        type:
          type: string
          format: uri
      required:
        - detail
        - requestId
        - status
        - title
        - type
      additionalProperties: false
  securitySchemes:
    BearerAuth:
      bearerFormat: ppiq_test_<keyId>_<secret> or ppiq_live_<keyId>_<secret>
      description: >-
        Integration-owned environment-specific API key. Never paste a production
        key into documentation tools.
      scheme: bearer
      type: http

````

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