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

# List everything waiting on someone

> The union of pending media-buy approvals, pending creative reviews, failed forwards (grouped by structured error code, each carrying the recovery-class-gated action: retry, fix-and-resubmit, or escalate), and buys awaiting asynchronous source acceptance ("waiting on source moderation since T"). Groups appear only when non-empty.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml get /pending-operations
openapi: 3.0.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: |-
    REST API for partners to manage storefronts, 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: 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 storefronts
  - name: AI Usage
    description: Storefront AI token usage visibility by model
  - name: MCP
    description: Model Context Protocol endpoints
paths:
  /pending-operations:
    get:
      tags:
        - Storefront
      summary: List everything waiting on someone
      description: >-
        The union of pending media-buy approvals, pending creative reviews,
        failed forwards (grouped by structured error code, each carrying the
        recovery-class-gated action: retry, fix-and-resubmit, or escalate), and
        buys awaiting asynchronous source acceptance ("waiting on source
        moderation since T"). Groups appear only when non-empty.
      operationId: getStorefrontPendingOperations
      responses:
        '200':
          description: List everything waiting on someone
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorefrontPendingOperationsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: No storefront exists for the calling operator.
          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:
    StorefrontPendingOperationsResponse:
      description: >-
        The union of things waiting on someone: pending approvals, pending
        creative reviews, failed forwards (grouped by error code), async-pending
        source acceptance, and seller-owned source degradations. Groups appear
        only when non-empty.
      type: object
      properties:
        approvals:
          description: Media buys waiting on operator approval.
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            items:
              type: array
              items:
                $ref: '#/components/schemas/PendingOperationsApprovalItem'
          required:
            - count
            - items
          additionalProperties: false
        creativeReviews:
          description: Creatives waiting on operator review.
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            items:
              type: array
              items:
                $ref: '#/components/schemas/PendingOperationsCreativeReviewItem'
          required:
            - count
            - items
          additionalProperties: false
        failedForwards:
          description: >-
            Forwards that failed, grouped by structured error code with the
            recovery-class-gated action.
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            groups:
              type: array
              items:
                $ref: '#/components/schemas/PendingOperationsFailedForwardGroup'
          required:
            - count
            - groups
          additionalProperties: false
        awaitingSource:
          description: >-
            Buys a source accepted asynchronously and is still moderating
            ("waiting on source moderation since T").
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            items:
              type: array
              items:
                $ref: '#/components/schemas/PendingOperationsAwaitingSourceItem'
          required:
            - count
            - items
          additionalProperties: false
        sourceDegradations:
          description: >-
            Seller-owned source-health diagnoses (a degraded ad-server or
            sales-agent source) surfaced here so they are visible without
            opening the source directly. Scope3/vendor-owned diagnoses never
            appear.
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            items:
              type: array
              items:
                $ref: '#/components/schemas/PendingOperationsSourceDegradationItem'
          required:
            - count
            - items
          additionalProperties: false
        gamCleanups:
          description: >-
            Unresolved safe GAM failed-order cleanup operations. Archive is
            offered only after verified upstream safety and explicit
            confirmation.
          type: object
          properties:
            count:
              type: integer
              maximum: 9007199254740991
              minimum: 1
            items:
              type: array
              items:
                type: object
                properties:
                  operationId:
                    type: string
                  orderId:
                    type: string
                  sourceId:
                    type: string
                  sourceName:
                    nullable: true
                    type: string
                  outcome:
                    type: string
                    enum:
                      - failed
                      - refused
                  safeToCleanup:
                    type: boolean
                  requiredPermission:
                    nullable: true
                    type: string
                  retryDisposition:
                    type: string
                    enum:
                      - not_applicable
                      - retryable
                      - user_action_required
                      - manual_review_required
                  safeNextAction:
                    type: string
                    enum:
                      - none
                      - retry_cleanup
                      - grant_archive_orders_and_recheck
                      - reauthenticate_and_recheck
                      - clean_up_manually_in_gam
                      - review_order_in_gam
                  createdAt:
                    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:
                  - operationId
                  - orderId
                  - sourceId
                  - sourceName
                  - outcome
                  - safeToCleanup
                  - requiredPermission
                  - retryDisposition
                  - safeNextAction
                  - createdAt
                additionalProperties: false
          required:
            - count
            - items
          additionalProperties: false
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    PendingOperationsApprovalItem:
      description: One media buy waiting on operator approval.
      type: object
      properties:
        mediaBuyId:
          type: string
        kind:
          type: string
          enum:
            - create
            - update
        buyer:
          type: object
          properties:
            customerId:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            name:
              nullable: true
              type: string
          required:
            - customerId
            - name
          additionalProperties: false
        submittedAt:
          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:
        - mediaBuyId
        - kind
        - buyer
        - submittedAt
      additionalProperties: false
    PendingOperationsCreativeReviewItem:
      description: One creative waiting on operator review.
      type: object
      properties:
        creativeId:
          type: string
        mediaBuyId:
          nullable: true
          type: string
        buyer:
          type: object
          properties:
            customerId:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            name:
              nullable: true
              type: string
          required:
            - customerId
            - name
          additionalProperties: false
        submittedAt:
          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:
        - creativeId
        - mediaBuyId
        - buyer
        - submittedAt
      additionalProperties: false
    PendingOperationsFailedForwardGroup:
      description: Failed forwards grouped by structured error code.
      type: object
      properties:
        errorCode:
          description: >-
            Structured error code the group shares — a source outage reads as
            ONE row, not N.
          type: string
        recovery:
          nullable: true
          type: string
          enum:
            - transient
            - correctable
            - structural
        action:
          description: The action class for every item in this group.
          allOf:
            - $ref: '#/components/schemas/SellerRecoveryAction'
        count:
          type: integer
          maximum: 9007199254740991
          minimum: 1
        items:
          type: array
          items:
            $ref: '#/components/schemas/PendingOperationsFailedForwardItem'
      required:
        - errorCode
        - recovery
        - action
        - count
        - items
      additionalProperties: false
    PendingOperationsAwaitingSourceItem:
      description: One buy the source accepted asynchronously and is still moderating.
      type: object
      properties:
        mediaBuyId:
          type: string
        sourceId:
          type: string
        sourceName:
          nullable: true
          type: string
        buyer:
          type: object
          properties:
            customerId:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            name:
              nullable: true
              type: string
          required:
            - customerId
            - name
          additionalProperties: false
        since:
          description: Waiting on source moderation since this instant.
          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))$
        taskId:
          description: The source's task id for the pending acceptance — their reference.
          nullable: true
          type: string
      required:
        - mediaBuyId
        - sourceId
        - sourceName
        - buyer
        - since
        - taskId
      additionalProperties: false
    PendingOperationsSourceDegradationItem:
      description: >-
        One seller-owned source-health diagnosis
        (docs/spec/storefront/source-diagnosis-projection.md) — a projection of
        the same diagnoses array the readiness checklist and the ad-server
        widget already render.
      type: object
      properties:
        sourceId:
          nullable: true
          type: string
        sourceName:
          type: string
        severity:
          type: string
          enum:
            - blocking
            - attention
            - advisory
        headline:
          description: >-
            Customer-safe, one sentence: what is wrong and why it matters to the
            seller.
          type: string
      required:
        - sourceId
        - sourceName
        - severity
        - headline
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
    SellerRecoveryAction:
      description: >-
        Which action class applies: retry (transient failure, not terminalized —
        the platform can re-attempt), fix_and_resubmit (correctable input),
        escalate (structural or terminalized — retrying cannot succeed; escalate
        to Scope3 with the references attached).
      type: string
      enum:
        - retry
        - fix_and_resubmit
        - escalate
    PendingOperationsFailedForwardItem:
      description: One buy whose forward failed, with its gated action.
      type: object
      properties:
        mediaBuyId:
          type: string
        buyer:
          type: object
          properties:
            customerId:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            name:
              nullable: true
              type: string
          required:
            - customerId
            - name
          additionalProperties: false
        since:
          description: When the failure was recorded.
          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))$
        terminalized:
          description: >-
            True when the platform has stopped retrying this buy (structural
            failure or retry window lapsed).
          type: boolean
        action:
          $ref: '#/components/schemas/SellerRecoveryAction'
        references:
          description: >-
            Pre-attached references for an escalation: the create idempotency
            key and request timestamp.
          type: object
          properties:
            idempotencyKey:
              nullable: true
              type: string
            requestedAt:
              nullable: true
              type: string
          required:
            - idempotencyKey
            - requestedAt
          additionalProperties: false
      required:
        - mediaBuyId
        - buyer
        - since
        - terminalized
        - action
        - references
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````