> ## 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.interchange.io/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.interchange.io/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 Interchange-managed sales-agent plumbing behind it;
                `LINKED_STOREFRONT` is reserved for the future canonical Source
                representation of wholesale inventory from another storefront
                (the version-1 ambient compatibility pool does not create these
                rows); `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
              required:
                - tools
                - products
                - createMediaBuy
                - updateMediaBuy
                - signals
              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
            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
          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
            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
            - 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
            missedProductOpportunityCount:
              nullable: true
              type: integer
              minimum: 0
              maximum: 9007199254740991
            notes:
              type: array
              items:
                type: string
          required:
            - buyerRequestsAffected
            - 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
            owner:
              type: string
              enum:
                - seller
                - scope3
              description: >-
                Who must act on the failure. `seller` for a generic external
                sales agent or an adapter credential issue; `scope3` when an
                official Scope3-hosted adapter runtime is failing (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
                      - 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
            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
      required:
        - source
        - requestRouting
        - reporting
        - window
        - performance
        - comparison
        - timeline
        - toolBreakdown
        - externalCallLanes
        - transportRequests
        - discoveryParticipation
        - outcomeMix
        - demandImpact
        - recentActivity
        - diagnosis
        - docs
      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
    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

````