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

# Get inventory source diagnostics

> Get recent call health, latency, timeout, failure, and prior-window movement diagnostics for a storefront inventory source.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/diagnostics
openapi: 3.0.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: >-
    REST API for partners to manage Seller Accounts, inventory sources, and
    billing.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.apostra.com/api/v2/storefront`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/storefront` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.apostra.com/api/v2/storefront
    description: Production server
security: []
tags:
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Storefront
    description: Manage storefront and inventory sources
  - name: Storefront Agents
    description: List and manage registered sales, signals, and outcomes agents
  - name: Storefront Activity
    description: Audit log of configuration and inventory changes on the storefront
  - name: Storefront Billing
    description: Payout bank details and billing configuration for Seller Accounts
  - name: AI Usage
    description: Seller Account AI token usage visibility by model
  - name: MCP
    description: Model Context Protocol endpoints
paths:
  /inventory-sources/{sourceId}/diagnostics:
    get:
      tags:
        - Storefront
      summary: Get inventory source diagnostics
      description: >-
        Get recent call health, latency, timeout, failure, and prior-window
        movement diagnostics for a storefront inventory source.
      operationId: getInventorySourceDiagnostics
      parameters:
        - in: query
          name: windowHours
          schema:
            description: >-
              Number of trailing hours to analyze for the current diagnostics
              window. The previous comparison window uses the same duration
              immediately before it.
            type: integer
            minimum: 0
            exclusiveMinimum: true
            maximum: 720
          description: >-
            Number of trailing hours to analyze for the current diagnostics
            window. The previous comparison window uses the same duration
            immediately before it.
        - in: path
          name: sourceId
          schema:
            type: string
            minLength: 1
            description: Inventory source ID
          required: true
          description: Inventory source ID
      responses:
        '200':
          description: Get inventory source diagnostics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InventorySourceDiagnosticsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    InventorySourceDiagnosticsResponse:
      type: object
      properties:
        source:
          type: object
          properties:
            id:
              type: string
            sourceId:
              type: string
            name:
              type: string
            executionType:
              type: string
              enum:
                - AGENT
                - MANAGED_SALES_AGENT
                - LINKED_STOREFRONT
                - MODULAR_SOURCE
              description: >-
                What backs this private upstream inventory source. `AGENT` is an
                external AdCP-compatible sales agent the Merchandising Agent
                connects to; `MANAGED_SALES_AGENT` is an operator-owned ad
                server with Apostra-managed sales-agent plumbing behind it;
                `LINKED_STOREFRONT` is a selected, consented wholesale source
                from another storefront for the flag-enabled pilot;
                `MODULAR_SOURCE` is a composed inventory source assembled from
                private modules such as avails, booking, trafficking, and
                reporting. Storefront-level `ADAPTER` dispatch is configured on
                the storefront, not as an inventory source.
            status:
              type: string
              enum:
                - PENDING
                - ACTIVE
                - DISABLED
              description: Inventory source lifecycle status
            verificationMode:
              type: string
              enum:
                - LIVE_SOURCE
                - LOCAL_SYNTHETIC
            agentId:
              nullable: true
              type: string
            endpointUrl:
              nullable: true
              type: string
            protocol:
              nullable: true
              type: string
              enum:
                - MCP
                - A2A
            auth:
              type: object
              properties:
                type:
                  nullable: true
                  type: string
                required:
                  type: boolean
                configured:
                  type: boolean
              required:
                - type
                - required
                - configured
              additionalProperties: false
            capabilities:
              type: object
              properties:
                tools:
                  type: array
                  items:
                    type: string
                products:
                  type: string
                  enum:
                    - supported
                    - unsupported
                    - unknown
                createMediaBuy:
                  type: string
                  enum:
                    - supported
                    - unsupported
                    - unknown
                updateMediaBuy:
                  type: string
                  enum:
                    - supported
                    - unsupported
                    - unknown
                signals:
                  type: string
                  enum:
                    - supported
                    - unsupported
                    - unknown
                requestSigning:
                  default: null
                  nullable: true
                  type: object
                  properties:
                    supported:
                      type: boolean
                    covers_content_digest:
                      anyOf:
                        - type: string
                          enum:
                            - required
                        - type: string
                          enum:
                            - forbidden
                        - type: string
                          enum:
                            - either
                    required_for:
                      type: array
                      items:
                        type: string
                    warn_for:
                      type: array
                      items:
                        type: string
                    supported_for:
                      type: array
                      items:
                        type: string
                    protocol_methods_supported_for:
                      type: array
                      items:
                        type: string
                    protocol_methods_warn_for:
                      type: array
                      items:
                        type: string
                    protocol_methods_required_for:
                      type: array
                      items:
                        type: string
                  required:
                    - supported
                  additionalProperties: {}
              required:
                - tools
                - products
                - createMediaBuy
                - updateMediaBuy
                - signals
                - requestSigning
              additionalProperties: false
            productMode:
              type: object
              properties:
                agentCapabilityUid:
                  nullable: true
                  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)$
                declaredAgentMode:
                  nullable: true
                  type: string
                  enum:
                    - WHOLESALE
                    - COMPOSING
                    - BOTH
                bindingSelection:
                  nullable: true
                  type: string
                  enum:
                    - WHOLESALE
                    - COMPOSING
                    - BOTH
                effectiveMode:
                  nullable: true
                  type: string
                  enum:
                    - WHOLESALE
                    - COMPOSING
                    - BOTH
                reasons:
                  type: array
                  items:
                    type: string
                    enum:
                      - SOURCE_NOT_ACTIVE
                      - AGENT_BINDING_MISSING
                      - AGENT_MODE_UNDECLARED
                      - BOTH_SELECTION_REQUIRED
                      - MERCHANDISING_ACCESS_INACTIVE
                      - WHOLESALE_CATALOG_NOT_READY
                paths:
                  type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                        enum:
                          - WHOLESALE
                          - COMPOSING
                      ready:
                        type: boolean
                      reasons:
                        type: array
                        items:
                          type: string
                          enum:
                            - SOURCE_NOT_ACTIVE
                            - AGENT_BINDING_MISSING
                            - AGENT_MODE_UNDECLARED
                            - BOTH_SELECTION_REQUIRED
                            - MERCHANDISING_ACCESS_INACTIVE
                            - WHOLESALE_CATALOG_NOT_READY
                    required:
                      - path
                      - ready
                      - reasons
                    additionalProperties: false
              required:
                - agentCapabilityUid
                - declaredAgentMode
                - bindingSelection
                - effectiveMode
                - reasons
                - paths
              additionalProperties: false
            health:
              type: object
              properties:
                status:
                  type: string
                  enum:
                    - healthy
                    - degraded
                    - unhealthy
                    - unknown
                condition:
                  default: null
                  nullable: true
                  type: string
                  enum:
                    - timeout
                    - error_response
                    - transport_error
                    - invalid_response
                    - other
                observationBudgetMs:
                  default: null
                  nullable: true
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  maximum: 9007199254740991
                lastError:
                  nullable: true
                  type: string
                lastErrorCode:
                  nullable: true
                  type: string
                lastErrorAt:
                  nullable: true
                  type: string
                lastSuccessAt:
                  nullable: true
                  type: string
                lastCheckedAt:
                  nullable: true
                  type: string
              required:
                - status
                - condition
                - observationBudgetMs
                - lastError
                - lastErrorCode
                - lastErrorAt
                - lastSuccessAt
                - lastCheckedAt
              additionalProperties: false
              deprecated: true
              description: >-
                Deprecated: its `unhealthy` and `unknown` values are retired.
                Read `sourceHealth.health`.
            capabilityHealth:
              type: object
              properties:
                inventory:
                  type: object
                  properties:
                    status:
                      nullable: true
                      type: string
                      enum:
                        - healthy
                        - degraded
                        - unhealthy
                    observations:
                      type: array
                      items:
                        type: object
                        properties:
                          observer:
                            type: string
                          status:
                            type: string
                            enum:
                              - healthy
                              - degraded
                              - unhealthy
                          previousStatus:
                            nullable: true
                            type: string
                            enum:
                              - healthy
                              - degraded
                              - unhealthy
                          condition:
                            nullable: true
                            type: string
                            enum:
                              - timeout
                              - error_response
                              - transport_error
                              - invalid_response
                              - other
                          observationBudgetMs:
                            default: null
                            nullable: true
                            type: integer
                            minimum: 0
                            exclusiveMinimum: true
                            maximum: 9007199254740991
                          cause:
                            nullable: true
                            type: string
                          detail:
                            nullable: true
                            type: string
                          owner:
                            nullable: true
                            type: string
                          observedAt:
                            type: string
                          lastOkAt:
                            nullable: true
                            type: string
                        required:
                          - observer
                          - status
                          - previousStatus
                          - condition
                          - observationBudgetMs
                          - cause
                          - detail
                          - owner
                          - observedAt
                          - lastOkAt
                        additionalProperties: false
                  required:
                    - status
                    - observations
                  additionalProperties: false
                reporting:
                  type: object
                  properties:
                    status:
                      nullable: true
                      type: string
                      enum:
                        - healthy
                        - degraded
                        - unhealthy
                    observations:
                      type: array
                      items:
                        type: object
                        properties:
                          observer:
                            type: string
                          status:
                            type: string
                            enum:
                              - healthy
                              - degraded
                              - unhealthy
                          previousStatus:
                            nullable: true
                            type: string
                            enum:
                              - healthy
                              - degraded
                              - unhealthy
                          condition:
                            nullable: true
                            type: string
                            enum:
                              - timeout
                              - error_response
                              - transport_error
                              - invalid_response
                              - other
                          observationBudgetMs:
                            default: null
                            nullable: true
                            type: integer
                            minimum: 0
                            exclusiveMinimum: true
                            maximum: 9007199254740991
                          cause:
                            nullable: true
                            type: string
                          detail:
                            nullable: true
                            type: string
                          owner:
                            nullable: true
                            type: string
                          observedAt:
                            type: string
                          lastOkAt:
                            nullable: true
                            type: string
                        required:
                          - observer
                          - status
                          - previousStatus
                          - condition
                          - observationBudgetMs
                          - cause
                          - detail
                          - owner
                          - observedAt
                          - lastOkAt
                        additionalProperties: false
                  required:
                    - status
                    - observations
                  additionalProperties: false
              required:
                - inventory
                - reporting
              additionalProperties: false
              deprecated: true
              description: >-
                Deprecated: read `sourceHealth.health`, one row per AdCP
                operation.
          required:
            - id
            - sourceId
            - name
            - executionType
            - status
            - agentId
            - endpointUrl
            - protocol
            - auth
            - capabilities
            - productMode
            - health
            - capabilityHealth
          additionalProperties: false
        requestRouting:
          default: null
          nullable: true
          type: object
          properties:
            storefront:
              type: object
              properties:
                id:
                  type: string
                activated:
                  type: boolean
                archived:
                  type: boolean
                paused:
                  type: boolean
                setup:
                  type: object
                  properties:
                    complete:
                      type: boolean
                    requirementIds:
                      type: array
                      items:
                        type: string
                  required:
                    - complete
                    - requirementIds
                  additionalProperties: false
              required:
                - id
                - activated
                - archived
                - paused
                - setup
              additionalProperties: false
            source:
              type: object
              properties:
                id:
                  type: string
                inventorySourceId:
                  nullable: true
                  type: string
                activated:
                  type: boolean
                archived:
                  type: boolean
                setup:
                  type: object
                  properties:
                    complete:
                      type: boolean
                    requirementIds:
                      type: array
                      items:
                        type: string
                  required:
                    - complete
                    - requirementIds
                  additionalProperties: false
                eligibility:
                  type: object
                  properties:
                    state:
                      type: string
                      enum:
                        - ELIGIBLE
                        - INELIGIBLE
                    reason:
                      nullable: true
                      type: string
                    updatedAt:
                      nullable: true
                      type: string
                  required:
                    - state
                    - reason
                    - updatedAt
                  additionalProperties: false
                health:
                  nullable: true
                  type: object
                  properties:
                    status:
                      type: string
                      enum:
                        - healthy
                        - degraded
                        - erroring
                    reasonCodes:
                      type: array
                      items:
                        type: string
                    condition:
                      nullable: true
                      type: string
                      enum:
                        - timeout
                        - error_response
                        - transport_error
                        - invalid_response
                        - other
                    observationBudgetMs:
                      nullable: true
                      type: integer
                      minimum: 0
                      exclusiveMinimum: true
                      maximum: 9007199254740991
                    lastSuccessAt:
                      nullable: true
                      type: string
                  required:
                    - status
                    - reasonCodes
                  additionalProperties: false
              required:
                - id
                - inventorySourceId
                - activated
                - archived
                - setup
                - eligibility
                - health
              additionalProperties: false
            agent:
              type: object
              properties:
                id:
                  nullable: true
                  type: string
                mappingState:
                  type: string
                  enum:
                    - UNMAPPED
                    - CERTIFIED
                    - VALIDATED
                    - UNVALIDATED
                eligibility:
                  nullable: true
                  type: object
                  properties:
                    state:
                      type: string
                      enum:
                        - ELIGIBLE
                        - INELIGIBLE
                    reason:
                      nullable: true
                      type: string
                    updatedAt:
                      nullable: true
                      type: string
                  required:
                    - state
                    - reason
                    - updatedAt
                  additionalProperties: false
                health:
                  nullable: true
                  type: object
                  properties:
                    status:
                      type: string
                      enum:
                        - healthy
                        - degraded
                        - erroring
                    reasonCodes:
                      type: array
                      items:
                        type: string
                    condition:
                      nullable: true
                      type: string
                      enum:
                        - timeout
                        - error_response
                        - transport_error
                        - invalid_response
                        - other
                    observationBudgetMs:
                      nullable: true
                      type: integer
                      minimum: 0
                      exclusiveMinimum: true
                      maximum: 9007199254740991
                    lastSuccessAt:
                      nullable: true
                      type: string
                  required:
                    - status
                    - reasonCodes
                  additionalProperties: false
              required:
                - id
                - mappingState
                - eligibility
                - health
              additionalProperties: false
            compatibility:
              type: object
              properties:
                compatible:
                  type: boolean
                reasonCodes:
                  type: array
                  items:
                    type: string
                issues:
                  type: array
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                      currencies:
                        type: array
                        items:
                          type: string
                      owner:
                        type: string
                        enum:
                          - seller
                          - scope3
                      action:
                        type: string
                        enum:
                          - test_connection
                          - review_configuration
                    required:
                      - code
                      - message
                      - currencies
                      - owner
                    additionalProperties: false
              required:
                - compatible
                - reasonCodes
              additionalProperties: false
            routingGeneration:
              type: string
            eligibility:
              type: object
              properties:
                eligible:
                  type: boolean
                reasonCodes:
                  type: array
                  items:
                    type: string
                    enum:
                      - STOREFRONT_ARCHIVED
                      - STOREFRONT_PAUSED
                      - STOREFRONT_SETUP_REQUIRED
                      - SOURCE_ARCHIVED
                      - SOURCE_SETUP_REQUIRED
                      - SOURCE_INELIGIBLE
                      - AGENT_UNMAPPED
                      - AGENT_INELIGIBLE
              required:
                - eligible
                - reasonCodes
              additionalProperties: false
            selectedForRequest:
              type: boolean
            willReceiveRequest:
              type: boolean
          required:
            - storefront
            - source
            - agent
            - compatibility
            - routingGeneration
            - eligibility
            - selectedForRequest
            - willReceiveRequest
          additionalProperties: false
        reporting:
          type: object
          properties:
            availability:
              nullable: true
              type: string
              enum:
                - supported
                - unsupported
            health:
              nullable: true
              type: string
              enum:
                - waiting
                - healthy
                - delayed
                - action_required
                - complete
            sourceProvenance:
              nullable: true
              type: string
              enum:
                - acquired
                - unsupported
            obligations:
              type: array
              items:
                type: object
                properties:
                  obligationId:
                    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)$
                  mediaBuyIds:
                    type: array
                    items:
                      type: string
                  mediaBuyIdsTruncated:
                    default: false
                    type: boolean
                  coverage:
                    nullable: true
                    type: string
                    enum:
                      - full
                      - partial
                      - none
                  periodStart:
                    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))$
                  periodEnd:
                    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))$
                  expectedAt:
                    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))$
                  nextExpectedAt:
                    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))$
                  requiredFinality:
                    type: string
                    enum:
                      - snapshot
                      - official
                  health:
                    type: string
                    enum:
                      - waiting
                      - healthy
                      - delayed
                      - action_required
                      - complete
                  missingFirstReport:
                    type: boolean
                  issue:
                    nullable: true
                    type: object
                    properties:
                      id:
                        type: string
                      code:
                        type: string
                        enum:
                          - REPORT_OVERDUE
                          - RESOURCE_EXPIRED
                      responsibleParty:
                        type: string
                        enum:
                          - seller
                      recommendedAction:
                        type: string
                        enum:
                          - wait_for_retry
                          - contact_seller
                    required:
                      - id
                      - code
                      - responsibleParty
                      - recommendedAction
                    additionalProperties: false
                  latestRevision:
                    nullable: true
                    type: object
                    properties:
                      revisionId:
                        type: string
                      kind:
                        type: string
                        enum:
                          - snapshot
                          - official
                          - restatement
                      rowCount:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      controlTotalCount:
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      dataThrough:
                        nullable: true
                        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))$
                      observedAt:
                        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))$
                    required:
                      - revisionId
                      - kind
                      - rowCount
                      - controlTotalCount
                      - dataThrough
                      - observedAt
                    additionalProperties: false
                required:
                  - obligationId
                  - mediaBuyIds
                  - mediaBuyIdsTruncated
                  - coverage
                  - periodStart
                  - periodEnd
                  - expectedAt
                  - nextExpectedAt
                  - requiredFinality
                  - health
                  - missingFirstReport
                  - issue
                  - latestRevision
                additionalProperties: false
            obligationsTruncated:
              default: false
              type: boolean
            relatedMediaBuyIds:
              type: array
              items:
                type: string
            relatedMediaBuyIdsTruncated:
              default: false
              type: boolean
            lastSuccessfulRevision:
              nullable: true
              type: object
              properties:
                revisionId:
                  type: string
                kind:
                  type: string
                  enum:
                    - snapshot
                    - official
                    - restatement
                rowCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                controlTotalCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                dataThrough:
                  nullable: true
                  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))$
                observedAt:
                  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))$
              required:
                - revisionId
                - kind
                - rowCount
                - controlTotalCount
                - dataThrough
                - observedAt
              additionalProperties: false
            freshness:
              nullable: true
              type: string
              enum:
                - current
                - stale
            dataThrough:
              nullable: true
              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))$
            nextExpectedAt:
              nullable: true
              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))$
            actions:
              type: object
              properties:
                refreshCanonicalStatus:
                  type: object
                  properties:
                    available:
                      type: boolean
                      enum:
                        - false
                    reason:
                      type: string
                      enum:
                        - adapter_pending
                  required:
                    - available
                    - reason
                  additionalProperties: false
                readCurrentSellerStatus:
                  type: object
                  properties:
                    available:
                      type: boolean
                      enum:
                        - false
                    reason:
                      type: string
                      enum:
                        - adapter_pending
                  required:
                    - available
                    - reason
                  additionalProperties: false
                replayRetainedRevision:
                  type: object
                  properties:
                    available:
                      type: boolean
                      enum:
                        - false
                    reason:
                      type: string
                      enum:
                        - adapter_pending
                  required:
                    - available
                    - reason
                  additionalProperties: false
              required:
                - refreshCanonicalStatus
                - readCurrentSellerStatus
                - replayRetainedRevision
              additionalProperties: false
          required:
            - availability
            - health
            - sourceProvenance
            - obligations
            - obligationsTruncated
            - relatedMediaBuyIds
            - relatedMediaBuyIdsTruncated
            - lastSuccessfulRevision
            - freshness
            - dataThrough
            - nextExpectedAt
            - actions
          additionalProperties: false
        window:
          type: object
          properties:
            hours:
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            startedAt:
              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))$
            endedAt:
              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))$
            sampledActivityCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            activityTruncated:
              type: boolean
            sampledTestRunCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
          required:
            - hours
            - startedAt
            - endedAt
            - sampledActivityCount
            - activityTruncated
            - sampledTestRunCount
          additionalProperties: false
        performance:
          type: object
          properties:
            requestCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            responseCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            exchangeCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            completedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            failedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            inputRequiredCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            pendingCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            rejectedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            timeoutCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            timeoutRate:
              type: number
              minimum: 0
              maximum: 1
            errorRate:
              type: number
              minimum: 0
              maximum: 1
            inputRequiredRate:
              type: number
              minimum: 0
              maximum: 1
            completedRate:
              type: number
              minimum: 0
              maximum: 1
            latencyStatus:
              type: string
              enum:
                - within_threshold
                - over_threshold
                - unknown
            latencyThresholdMs:
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            overThresholdCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            staleAsyncResponseCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            p50LatencyMs:
              nullable: true
              type: integer
              minimum: 0
              maximum: 9007199254740991
            p95LatencyMs:
              nullable: true
              type: integer
              minimum: 0
              maximum: 9007199254740991
            p99LatencyMs:
              nullable: true
              type: integer
              minimum: 0
              maximum: 9007199254740991
            unknownLatencyCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
          required:
            - requestCount
            - responseCount
            - exchangeCount
            - completedCount
            - failedCount
            - inputRequiredCount
            - pendingCount
            - rejectedCount
            - timeoutCount
            - timeoutRate
            - errorRate
            - inputRequiredRate
            - completedRate
            - latencyStatus
            - latencyThresholdMs
            - overThresholdCount
            - staleAsyncResponseCount
            - p50LatencyMs
            - p95LatencyMs
            - p99LatencyMs
            - unknownLatencyCount
          additionalProperties: false
        comparison:
          type: object
          properties:
            previousWindow:
              type: object
              properties:
                startedAt:
                  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))$
                endedAt:
                  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))$
                exchangeCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                issueCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                timeoutCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                errorRate:
                  type: number
                  minimum: 0
                  maximum: 1
                p95LatencyMs:
                  nullable: true
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                sampledActivityCount:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                activityTruncated:
                  type: boolean
              required:
                - startedAt
                - endedAt
                - exchangeCount
                - issueCount
                - timeoutCount
                - errorRate
                - p95LatencyMs
                - sampledActivityCount
                - activityTruncated
              additionalProperties: false
            issueDelta:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            timeoutDelta:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            errorRateDelta:
              type: number
            p95LatencyDeltaMs:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            trend:
              type: string
              enum:
                - new_issue
                - worse
                - improved
                - recovered
                - unchanged
                - not_enough_data
            summary:
              type: string
          required:
            - previousWindow
            - issueDelta
            - timeoutDelta
            - errorRateDelta
            - p95LatencyDeltaMs
            - trend
            - summary
          additionalProperties: false
        timeline:
          type: array
          items:
            type: object
            properties:
              startedAt:
                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))$
              endedAt:
                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))$
              exchangeCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              issueCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              failedCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              rejectedCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              timeoutCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              errorRate:
                type: number
                minimum: 0
                maximum: 1
              p95LatencyMs:
                nullable: true
                type: integer
                minimum: 0
                maximum: 9007199254740991
            required:
              - startedAt
              - endedAt
              - exchangeCount
              - issueCount
              - failedCount
              - rejectedCount
              - timeoutCount
              - errorRate
              - p95LatencyMs
            additionalProperties: false
        toolBreakdown:
          type: array
          items:
            type: object
            properties:
              tool:
                type: string
              exchangeCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              completedCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              failedCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              inputRequiredCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              rejectedCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              timeoutCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              p95LatencyMs:
                nullable: true
                type: integer
                minimum: 0
                maximum: 9007199254740991
            required:
              - tool
              - exchangeCount
              - completedCount
              - failedCount
              - inputRequiredCount
              - rejectedCount
              - timeoutCount
              - p95LatencyMs
            additionalProperties: false
        externalCallLanes:
          type: array
          items:
            type: object
            properties:
              taskType:
                type: string
              callCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              successCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              errorCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              timeoutCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              p95LatencyMs:
                nullable: true
                type: integer
                minimum: 0
                maximum: 9007199254740991
              previous:
                type: object
                properties:
                  callCount:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  successCount:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  errorCount:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  timeoutCount:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  p95LatencyMs:
                    nullable: true
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                required:
                  - callCount
                  - successCount
                  - errorCount
                  - timeoutCount
                  - p95LatencyMs
                additionalProperties: false
            required:
              - taskType
              - callCount
              - successCount
              - errorCount
              - timeoutCount
              - p95LatencyMs
              - previous
            additionalProperties: false
        transportRequests:
          type: object
          properties:
            unavailable:
              type: boolean
            totalCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            physicalRequestCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            logicalOperationCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            sourceAttributedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            sharedAgentCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            displayedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            hasMore:
              type: boolean
            retentionDays:
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            requests:
              type: array
              items:
                type: object
                properties:
                  id:
                    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)$
                  observedAt:
                    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))$
                  completedAt:
                    nullable: true
                    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))$
                  groupId:
                    type: string
                    minLength: 1
                  debugId:
                    type: string
                  operationStage:
                    nullable: true
                    type: string
                    enum:
                      - intent_accepted
                      - local_setup
                      - mutation_dispatch_attempted
                      - mutation_not_dispatched
                  attributionScope:
                    type: string
                    enum:
                      - source
                      - agent_global
                  origin:
                    nullable: true
                    type: string
                    enum:
                      - validation_test
                      - capability_health_check
                      - account_reconciliation
                      - live_demand
                      - media_buy_lifecycle
                      - status_polling
                      - manual_operator_action
                      - manual_replay
                      - background_work
                  destinationOrigin:
                    nullable: true
                    type: string
                  dispatchState:
                    type: string
                    enum:
                      - not_dispatched
                      - transport_started
                      - remote_responded
                      - timed_out_after_dispatch
                      - terminal_result_observed
                  provenance:
                    type: string
                    enum:
                      - interchange_preflight
                      - transport
                      - remote_agent
                      - callback
                      - timeout
                  requestKind:
                    type: string
                  httpMethod:
                    type: string
                  adcpTool:
                    nullable: true
                    type: string
                  protocolMethod:
                    nullable: true
                    type: string
                  outcome:
                    type: string
                    enum:
                      - started
                      - succeeded
                      - http_error
                      - transport_error
                  httpStatus:
                    nullable: true
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  latencyMs:
                    nullable: true
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  errorClass:
                    nullable: true
                    type: string
                  failureDomain:
                    type: string
                    enum:
                      - none
                      - interchange
                      - sdk_transport
                      - remote_http
                      - remote_mcp
                      - unknown
                  instrumentationGap:
                    type: boolean
                  requestHeaders:
                    type: object
                    additionalProperties:
                      type: string
                  requestBody:
                    nullable: true
                    type: string
                  requestBodyTruncated:
                    type: boolean
                  responseHeaders:
                    type: object
                    additionalProperties:
                      type: string
                  responseBody:
                    nullable: true
                    type: string
                  responseBodyTruncated:
                    type: boolean
                  statusText:
                    nullable: true
                    type: string
                  replayOfTransportRequestId:
                    nullable: true
                    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)$
                  replayEligible:
                    type: boolean
                  accountId:
                    nullable: true
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  mediaBuyId:
                    nullable: true
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  mediaBuyIdText:
                    nullable: true
                    type: string
                required:
                  - id
                  - observedAt
                  - completedAt
                  - groupId
                  - debugId
                  - operationStage
                  - attributionScope
                  - origin
                  - destinationOrigin
                  - dispatchState
                  - provenance
                  - requestKind
                  - httpMethod
                  - adcpTool
                  - protocolMethod
                  - outcome
                  - httpStatus
                  - latencyMs
                  - errorClass
                  - failureDomain
                  - instrumentationGap
                  - requestHeaders
                  - requestBody
                  - requestBodyTruncated
                  - responseHeaders
                  - responseBody
                  - responseBodyTruncated
                  - statusText
                  - replayOfTransportRequestId
                  - replayEligible
                  - accountId
                  - mediaBuyId
                  - mediaBuyIdText
                additionalProperties: false
          required:
            - unavailable
            - totalCount
            - physicalRequestCount
            - logicalOperationCount
            - sourceAttributedCount
            - sharedAgentCount
            - displayedCount
            - hasMore
            - retentionDays
            - requests
          additionalProperties: false
        discoveryParticipation:
          type: object
          properties:
            calledCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            skippedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            excludedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            timedOutCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            advertiserPropertyExclusionDataAvailable:
              type: boolean
            advertiserPropertyExcludedProductCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            advertiserPropertyExclusionRequestCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            advertiserPropertyExcludedProducts:
              type: array
              items:
                type: object
                properties:
                  productId:
                    type: string
                  productName:
                    type: string
                  matchingDomains:
                    type: array
                    items:
                      type: string
                  matchingDomainsTruncated:
                    type: boolean
                  observedAt:
                    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))$
                required:
                  - productId
                  - productName
                  - matchingDomains
                  - matchingDomainsTruncated
                  - observedAt
                additionalProperties: false
            skipReasons:
              type: array
              items:
                type: object
                properties:
                  reason:
                    type: string
                  count:
                    type: integer
                    minimum: 0
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                required:
                  - reason
                  - count
                additionalProperties: false
          required:
            - calledCount
            - skippedCount
            - excludedCount
            - timedOutCount
            - advertiserPropertyExclusionDataAvailable
            - advertiserPropertyExcludedProductCount
            - advertiserPropertyExclusionRequestCount
            - advertiserPropertyExcludedProducts
            - skipReasons
          additionalProperties: false
        outcomeMix:
          type: object
          properties:
            returnedProductsCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            returnedNoProductsCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            failedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            businessRejectedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            pendingCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            inputRequiredCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            timedOutCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            skippedCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
          required:
            - returnedProductsCount
            - returnedNoProductsCount
            - failedCount
            - businessRejectedCount
            - pendingCount
            - inputRequiredCount
            - timedOutCount
            - skippedCount
          additionalProperties: false
        demandImpact:
          type: object
          properties:
            buyerRequestsAffected:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            buyerRequestsAffectedByAdvertiserPropertyExclusions:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            missedProductOpportunityCount:
              nullable: true
              type: integer
              minimum: 0
              maximum: 9007199254740991
            notes:
              type: array
              items:
                type: string
          required:
            - buyerRequestsAffected
            - buyerRequestsAffectedByAdvertiserPropertyExclusions
            - missedProductOpportunityCount
            - notes
          additionalProperties: false
        recentActivity:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              timestamp:
                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))$
              tool:
                nullable: true
                type: string
              taskStatus:
                type: string
              activityType:
                type: string
              taskId:
                nullable: true
                type: string
              operationId:
                nullable: true
                type: string
              contextId:
                nullable: true
                type: string
              idempotencyKey:
                nullable: true
                type: string
              debugId:
                nullable: true
                type: string
              traceparent:
                nullable: true
                type: string
              requestId:
                nullable: true
                type: string
              correlationId:
                nullable: true
                type: string
              initiatorEmail:
                nullable: true
                type: string
              origin:
                type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - sandbox_test
                      - live_demand
                  testRunUid:
                    nullable: true
                    type: string
                  testRunStatus:
                    nullable: true
                    type: string
                    enum:
                      - passed
                      - partial
                      - failed
                      - planned
                  testRunToolName:
                    nullable: true
                    type: string
                  testRunCreatedAt:
                    nullable: true
                    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))$
                required:
                  - kind
                  - testRunUid
                  - testRunStatus
                  - testRunToolName
                  - testRunCreatedAt
                additionalProperties: false
              isIssue:
                type: boolean
              summary:
                nullable: true
                type: string
              details:
                nullable: true
                type: object
                properties:
                  payload:
                    type: object
                    additionalProperties: {}
                  relatedRequest:
                    nullable: true
                    type: object
                    properties:
                      timestamp:
                        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))$
                      payload:
                        type: object
                        additionalProperties: {}
                    required:
                      - timestamp
                      - payload
                    additionalProperties: false
                required:
                  - payload
                  - relatedRequest
                additionalProperties: false
            required:
              - id
              - timestamp
              - tool
              - taskStatus
              - activityType
              - taskId
              - operationId
              - contextId
              - idempotencyKey
              - debugId
              - traceparent
              - requestId
              - correlationId
              - initiatorEmail
              - origin
              - isIssue
              - summary
              - details
            additionalProperties: false
        diagnosis:
          type: object
          properties:
            severity:
              type: string
              enum:
                - ok
                - warning
                - critical
                - unknown
              deprecated: true
              description: >-
                Deprecated: this vocabulary is retired. Read
                `sourceHealth.diagnosis.severity`.
            owner:
              type: string
              enum:
                - seller
                - scope3
              deprecated: true
              description: >-
                Deprecated: read `sourceHealth.diagnosis.owner`. Who must act on
                the failure. `seller` for an error returned by a generic
                external sales agent or for an adapter credential issue;
                `scope3` when an official Apostra-hosted adapter runtime is
                failing or Apostra reached its initial-response deadline before
                capturing the Source task ID (the seller cannot and should not
                fix our infrastructure).
            topCause:
              type: string
            failure:
              default: null
              nullable: true
              type: object
              properties:
                category:
                  type: string
                  enum:
                    - request_field_rejection
                    - unclassified
                origin:
                  nullable: true
                  type: string
                  enum:
                    - source_response
                summary:
                  type: string
                tool:
                  nullable: true
                  type: string
                buyingMode:
                  nullable: true
                  type: string
                rejectedFields:
                  type: array
                  items:
                    type: string
                documentation:
                  nullable: true
                  type: object
                  properties:
                    label:
                      type: string
                    url:
                      type: string
                      format: uri
                  required:
                    - label
                    - url
                  additionalProperties: false
              required:
                - category
                - origin
                - summary
                - tool
                - buyingMode
                - rejectedFields
                - documentation
              additionalProperties: false
            issues:
              type: array
              items:
                type: object
                properties:
                  mode:
                    type: string
                    enum:
                      - disabled_retired
                      - auth_missing
                      - ad_server_connection_blocked
                      - manual_pricing_upload_required
                      - stale_async
                      - async_poll_exhausted
                      - timeout_degraded
                      - latency_degraded
                      - source_runtime_error
                      - input_required
                      - business_rejected
                      - readiness_blocker
                  severity:
                    type: string
                    enum:
                      - warning
                      - critical
                  count:
                    type: integer
                    minimum: 0
                    exclusiveMinimum: true
                    maximum: 9007199254740991
                  summary:
                    type: string
                required:
                  - mode
                  - severity
                  - count
                  - summary
                additionalProperties: false
              deprecated: true
              description: 'Deprecated: read `sourceHealth.diagnosis.findings`.'
            nextSteps:
              type: array
              items:
                type: string
            developerHandoff:
              type: object
              properties:
                sourceId:
                  type: string
                sourceName:
                  type: string
                agentId:
                  nullable: true
                  type: string
                endpointUrl:
                  nullable: true
                  type: string
                latestTaskId:
                  nullable: true
                  type: string
                latestOperationId:
                  nullable: true
                  type: string
                latestContextId:
                  nullable: true
                  type: string
                latestIdempotencyKey:
                  nullable: true
                  type: string
                latestDebugId:
                  nullable: true
                  type: string
                latestCorrelationId:
                  nullable: true
                  type: string
                correlationHeaders:
                  nullable: true
                  type: object
                  additionalProperties:
                    type: string
                latestError:
                  nullable: true
                  type: string
              required:
                - sourceId
                - sourceName
                - agentId
                - endpointUrl
                - latestTaskId
                - latestOperationId
                - latestContextId
                - latestIdempotencyKey
                - latestDebugId
                - latestCorrelationId
                - correlationHeaders
                - latestError
              additionalProperties: false
          required:
            - severity
            - owner
            - topCause
            - failure
            - issues
            - nextSteps
            - developerHandoff
          additionalProperties: false
        docs:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              url:
                type: string
                format: uri
            required:
              - label
              - url
            additionalProperties: false
        sourceHealth:
          $ref: '#/components/schemas/SourceHealth'
      required:
        - source
        - requestRouting
        - reporting
        - window
        - performance
        - comparison
        - timeline
        - toolBreakdown
        - externalCallLanes
        - transportRequests
        - discoveryParticipation
        - outcomeMix
        - demandImpact
        - recentActivity
        - diagnosis
        - docs
        - sourceHealth
      additionalProperties: false
      description: >-
        Seller-facing diagnostics for a single third-party sales-agent or
        modular inventory source.
    ErrorResponse:
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
      description: Standard error response
    SourceHealth:
      type: object
      properties:
        identity:
          type: object
          properties:
            sellerAccount:
              type: object
              properties:
                id:
                  type: string
                name:
                  nullable: true
                  type: string
              required:
                - id
                - name
              additionalProperties: false
            source:
              type: object
              properties:
                id:
                  type: string
                sourceId:
                  type: string
                name:
                  type: string
                executionType:
                  type: string
              required:
                - id
                - sourceId
                - name
                - executionType
              additionalProperties: false
            agent:
              nullable: true
              type: object
              properties:
                id:
                  type: string
                name:
                  nullable: true
                  type: string
                observedRevision:
                  nullable: true
                  type: string
              required:
                - id
                - name
                - observedRevision
              additionalProperties: false
            routing:
              nullable: true
              type: object
              properties:
                eligible:
                  type: boolean
                setupComplete:
                  type: boolean
                willReceiveRequest:
                  type: boolean
                reasonCodes:
                  type: array
                  items:
                    type: string
              required:
                - eligible
                - setupComplete
                - willReceiveRequest
                - reasonCodes
              additionalProperties: false
          required:
            - sellerAccount
            - source
            - agent
            - routing
          additionalProperties: false
        health:
          type: array
          items:
            type: object
            properties:
              operation:
                type: string
                enum:
                  - get_products
                  - sync_accounts
                  - sync_creatives
                  - create_media_buy
                  - update_media_buy
                  - get_media_buy_delivery
              status:
                nullable: true
                description: >-
                  Current verdict for this operation: `healthy`, `degraded` or
                  `erroring`; `null` when nothing has observed it.
                type: string
                enum:
                  - healthy
                  - degraded
                  - erroring
              condition:
                nullable: true
                type: string
                enum:
                  - timeout
                  - error_response
                  - transport_error
                  - invalid_response
                  - other
              lastOkAt:
                nullable: true
                type: string
              lastFailureAt:
                nullable: true
                type: string
              lastFailure:
                nullable: true
                type: string
              owner:
                nullable: true
                type: string
                enum:
                  - seller
                  - operator
                  - scope3
                description: >-
                  Who has to act: `seller`, `operator` (the party that runs the
                  agent behind the source) or `scope3` (the platform).
              window:
                nullable: true
                type: object
                properties:
                  calls:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  succeeded:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  failed:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  timedOut:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                required:
                  - calls
                  - succeeded
                  - failed
                  - timedOut
                additionalProperties: false
            required:
              - operation
              - status
              - condition
              - lastOkAt
              - lastFailureAt
              - lastFailure
              - owner
              - window
            additionalProperties: false
          description: >-
            One row per AdCP operation, always in this order: `get_products`,
            `sync_accounts`, `sync_creatives`, `create_media_buy`,
            `update_media_buy`, `get_media_buy_delivery`.
        writes:
          nullable: true
          description: >-
            One entry per write task with traffic in the window. Empty when no
            writes went to the source; `null` when the read failed.
          type: array
          items:
            type: object
            properties:
              taskKind:
                type: string
                enum:
                  - media_buy
                  - sync_creatives
                  - sync_accounts
              attempts:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              succeeded:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              failed:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              open:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              neverAnswered:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              oldestOpenAt:
                nullable: true
                type: string
              topFailure:
                nullable: true
                type: object
                properties:
                  errorCode:
                    type: string
                  recovery:
                    nullable: true
                    type: string
                    enum:
                      - transient
                      - correctable
                      - structural
                  count:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                required:
                  - errorCode
                  - recovery
                  - count
                additionalProperties: false
            required:
              - taskKind
              - attempts
              - succeeded
              - failed
              - open
              - neverAnswered
              - oldestOpenAt
              - topFailure
            additionalProperties: false
        diagnosis:
          type: object
          properties:
            severity:
              nullable: true
              type: string
              enum:
                - blocking
                - attention
                - advisory
              description: >-
                Impact on the seller: `blocking` stops selling or setup,
                `attention` degrades it, `advisory` will only matter later.
            owner:
              nullable: true
              type: string
              enum:
                - seller
                - operator
                - scope3
              description: >-
                Who has to act: `seller`, `operator` (the party that runs the
                agent behind the source) or `scope3` (the platform).
            findings:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  code:
                    type: string
                  operation:
                    nullable: true
                    type: string
                    enum:
                      - get_products
                      - sync_accounts
                      - sync_creatives
                      - create_media_buy
                      - update_media_buy
                      - get_media_buy_delivery
                  owner:
                    type: string
                    enum:
                      - seller
                      - operator
                      - scope3
                    description: >-
                      Who has to act: `seller`, `operator` (the party that runs
                      the agent behind the source) or `scope3` (the platform).
                  severity:
                    type: string
                    enum:
                      - blocking
                      - attention
                      - advisory
                    description: >-
                      Impact on the seller: `blocking` stops selling or setup,
                      `attention` degrades it, `advisory` will only matter
                      later.
                  summary:
                    type: string
                  detail:
                    nullable: true
                    type: string
                  action:
                    anyOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - recheck
                          label:
                            type: string
                          operation:
                            type: string
                            enum:
                              - refresh_esa
                              - recheck_esa_capability
                              - test_esa_connection
                              - run_inventory_source_discovery_test
                          pathParams:
                            type: object
                            additionalProperties:
                              type: string
                        required:
                          - kind
                          - label
                          - operation
                          - pathParams
                        additionalProperties: false
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - reconnect
                          label:
                            type: string
                        required:
                          - kind
                          - label
                        additionalProperties: false
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - open
                          label:
                            type: string
                        required:
                          - kind
                          - label
                        additionalProperties: false
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - none
                        required:
                          - kind
                        additionalProperties: false
                  docsAnchor:
                    nullable: true
                    type: string
                  observedAt:
                    type: string
                required:
                  - id
                  - code
                  - operation
                  - owner
                  - severity
                  - summary
                  - detail
                  - action
                  - docsAnchor
                  - observedAt
                additionalProperties: false
          required:
            - severity
            - owner
            - findings
          additionalProperties: false
        operations:
          nullable: true
          description: >-
            The operations at this source that are still open, newest wait
            first, each with who it waits on. Attempts are not listed yet, so
            `attempts` is empty. `null` when the open work could not be read.
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              operation:
                type: string
                enum:
                  - get_products
                  - sync_accounts
                  - sync_creatives
                  - create_media_buy
                  - update_media_buy
                  - get_media_buy_delivery
              subject:
                type: object
                properties:
                  kind:
                    type: string
                  id:
                    type: string
                  revision:
                    nullable: true
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                required:
                  - kind
                  - id
                  - revision
                additionalProperties: false
              state:
                type: string
                enum:
                  - open
                  - succeeded
                  - failed
                  - never_answered
              settlement:
                nullable: true
                type: string
                enum:
                  - response
                  - poll
                  - webhook
                  - terminalised
              startedAt:
                type: string
              settledAt:
                nullable: true
                type: string
              waitingOn:
                nullable: true
                description: >-
                  Set while the operation is open: who it waits on, since when,
                  and for what. `null` once it has settled.
                type: object
                properties:
                  party:
                    type: string
                    enum:
                      - seller
                      - operator
                      - buyer
                      - scope3
                    description: >-
                      Who the operation is waiting on: `seller` (the seller must
                      approve, review or do manual work), `operator` (the party
                      that runs the Agent behind the source holds a task it has
                      not settled), `buyer` (the buyer must attach creatives),
                      or `scope3` (Apostra must make the next move, such as
                      retrying a forward or delivering a creative).
                  since:
                    type: string
                    description: >-
                      When the wait on this party began (ISO-8601). Age never
                      decides whether an operation is open.
                  target:
                    nullable: true
                    description: >-
                      The exact thing being waited for: an `approval`,
                      `creative_review`, `work_item`, `account_request`, the
                      source `task` id, or the `creative` to deliver. `null`
                      when there is no single thing to name, or when the caller
                      may not see it.
                    type: object
                    properties:
                      kind:
                        type: string
                        enum:
                          - approval
                          - creative_review
                          - work_item
                          - account_request
                          - task
                          - creative
                      id:
                        type: string
                    required:
                      - kind
                      - id
                    additionalProperties: false
                required:
                  - party
                  - since
                  - target
                additionalProperties: false
              attempts:
                type: array
                items:
                  type: object
                  properties:
                    attemptNumber:
                      type: integer
                      minimum: 0
                      exclusiveMinimum: true
                      maximum: 9007199254740991
                    startedAt:
                      type: string
                    completedAt:
                      nullable: true
                      type: string
                    outcome:
                      type: string
                      enum:
                        - started
                        - succeeded
                        - failed
                    condition:
                      nullable: true
                      type: string
                      enum:
                        - timeout
                        - error_response
                        - transport_error
                        - invalid_response
                        - other
                    httpStatus:
                      nullable: true
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                    latencyMs:
                      nullable: true
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                    errorCode:
                      nullable: true
                      type: string
                    recovery:
                      nullable: true
                      type: string
                      enum:
                        - transient
                        - correctable
                        - structural
                    handoff:
                      type: object
                      properties:
                        taskId:
                          nullable: true
                          type: string
                        debugId:
                          nullable: true
                          type: string
                        idempotencyKey:
                          nullable: true
                          type: string
                        traceId:
                          nullable: true
                          type: string
                      required:
                        - taskId
                        - debugId
                        - idempotencyKey
                        - traceId
                      additionalProperties: false
                    bodies:
                      oneOf:
                        - type: object
                          properties:
                            state:
                              type: string
                              enum:
                                - visible
                            request:
                              nullable: true
                              type: string
                            response:
                              nullable: true
                              type: string
                          required:
                            - state
                            - request
                            - response
                          additionalProperties: false
                        - type: object
                          properties:
                            state:
                              type: string
                              enum:
                                - withheld
                            reason:
                              type: string
                              enum:
                                - no_debug_grant
                                - not_retained
                          required:
                            - state
                            - reason
                          additionalProperties: false
                      type: object
                  required:
                    - attemptNumber
                    - startedAt
                    - completedAt
                    - outcome
                    - condition
                    - httpStatus
                    - latencyMs
                    - errorCode
                    - recovery
                    - handoff
                    - bodies
                  additionalProperties: false
            required:
              - id
              - operation
              - subject
              - state
              - settlement
              - startedAt
              - settledAt
              - waitingOn
              - attempts
            additionalProperties: false
        liveEvidence:
          nullable: true
          type: object
          properties:
            useCases:
              type: array
              items:
                oneOf:
                  - type: object
                    properties:
                      useCaseId:
                        type: string
                      status:
                        type: string
                        enum:
                          - failing
                      lastPassedAt:
                        nullable: true
                        type: string
                      failingCheck:
                        type: object
                        properties:
                          check:
                            type: string
                          owner:
                            type: string
                            enum:
                              - seller
                              - operator
                              - scope3
                            description: >-
                              Who has to act: `seller`, `operator` (the party
                              that runs the agent behind the source) or `scope3`
                              (the platform).
                          action:
                            anyOf:
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - recheck
                                  label:
                                    type: string
                                  operation:
                                    type: string
                                    enum:
                                      - refresh_esa
                                      - recheck_esa_capability
                                      - test_esa_connection
                                      - run_inventory_source_discovery_test
                                  pathParams:
                                    type: object
                                    additionalProperties:
                                      type: string
                                required:
                                  - kind
                                  - label
                                  - operation
                                  - pathParams
                                additionalProperties: false
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - reconnect
                                  label:
                                    type: string
                                required:
                                  - kind
                                  - label
                                additionalProperties: false
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - open
                                  label:
                                    type: string
                                required:
                                  - kind
                                  - label
                                additionalProperties: false
                              - type: object
                                properties:
                                  kind:
                                    type: string
                                    enum:
                                      - none
                                required:
                                  - kind
                                additionalProperties: false
                        required:
                          - check
                          - owner
                          - action
                        additionalProperties: false
                    required:
                      - useCaseId
                      - status
                      - lastPassedAt
                      - failingCheck
                    additionalProperties: false
                  - type: object
                    properties:
                      useCaseId:
                        type: string
                      status:
                        type: string
                        enum:
                          - certified
                          - pending
                      lastPassedAt:
                        nullable: true
                        type: string
                      failingCheck:
                        type: string
                        nullable: true
                        enum:
                          - null
                    required:
                      - useCaseId
                      - status
                      - lastPassedAt
                      - failingCheck
                    additionalProperties: false
                type: object
            baseline:
              nullable: true
              type: object
              properties:
                passing:
                  type: boolean
                evaluatedAt:
                  type: string
                failingChecks:
                  type: array
                  items:
                    type: string
              required:
                - passing
                - evaluatedAt
                - failingChecks
              additionalProperties: false
            declaredRequirements:
              type: array
              items:
                type: string
          required:
            - useCases
            - baseline
            - declaredRequirements
          additionalProperties: false
        window:
          type: object
          properties:
            hours:
              type: integer
              minimum: 0
              exclusiveMinimum: true
              maximum: 9007199254740991
            startedAt:
              type: string
            endedAt:
              type: string
          required:
            - hours
            - startedAt
            - endedAt
          additionalProperties: false
        generatedAt:
          type: string
      required:
        - identity
        - health
        - writes
        - diagnosis
        - operations
        - liveEvidence
        - window
        - generatedAt
      additionalProperties: false
      description: >-
        One typed answer per inventory source: identity, health by operation,
        writes, diagnosis, operations and attempts, and live evidence.
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
        message:
          type: string
          description: Human-readable error message
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Structured error object
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````

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