> ## 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.

# Apply a proposal

> Apply a sales agent proposal to auto-add products with recommended budget allocations. Requires discover-products to have been called first.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /discovery/{discoveryId}/apply-proposal
openapi: 3.0.0
info:
  title: Scope3 Buyer API
  version: 2.0.0
  description: |-
    REST API for advertisers to manage advertisers, campaigns, and reporting.

    ## Authentication

    All endpoints require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer your-api-key
    ```

    ## Base URL

    `https://api.interchange.io/api/v2/buyer`

    ## For AI Agents

    AI agents can use the MCP endpoint at `/mcp/v2/buyer` 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/buyer
    description: Production server
security: []
tags:
  - name: Signup
    description: Request reviewed access to Interchange
  - 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: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /discovery/{discoveryId}/apply-proposal:
    post:
      tags:
        - Product Discovery
      summary: Apply a proposal
      description: >-
        Apply a sales agent proposal to auto-add products with recommended
        budget allocations. Requires discover-products to have been called
        first.
      operationId: applyProposal
      parameters:
        - in: path
          name: discoveryId
          schema:
            type: string
            minLength: 1
            description: Discovery ID
            example: abc123-def456-ghi789
          required: true
          description: Discovery ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyProposalRequest'
      responses:
        '200':
          description: Apply a proposal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyProposalResponse'
        '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:
    ApplyProposalRequest:
      type: object
      properties:
        proposalId:
          type: string
          description: Proposal ID from the discover-products response to apply
          example: proposal_abc123
        totalBudget:
          description: >-
            Total budget to distribute across products. Defaults to the proposal
            totalBudgetGuidance.recommended.
          example: 50000
          type: number
          minimum: 0
          exclusiveMinimum: true
        replace:
          description: When true, replaces all existing products instead of merging
          type: boolean
      required:
        - proposalId
      description: >-
        Apply a sales agent proposal to auto-add products with recommended
        budget allocations
    ApplyProposalResponse:
      type: object
      properties:
        discoveryId:
          type: string
          description: Discovery ID
        proposal:
          description: The proposal that was applied
          allOf:
            - $ref: '#/components/schemas/AppliedProposalSummary'
        totalBudgetUsed:
          type: number
          description: Total budget distributed across products from this proposal
        productsApplied:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Number of products added from the proposal
        productsSkipped:
          type: array
          items:
            type: string
          description: >-
            Product IDs from the proposal that could not be found in discovery
            results
        products:
          type: array
          items:
            $ref: '#/components/schemas/SelectedProduct'
          description: All selected products after applying the proposal
        totalProducts:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: Total number of selected products
        budgetContext:
          allOf:
            - $ref: '#/components/schemas/BudgetContextResponse'
        campaignBound:
          description: >-
            Whether the discovery session is attached to an active campaign.
            When false, the products are saved to the session but no active
            campaign reflects them yet.
          type: boolean
        campaignWarning:
          description: >-
            Guidance shown only when campaignBound is false: either the session
            is not attached to any campaign, or the campaign it was attached to
            has been archived. Pass campaignId for an active campaign (or
            restore the archived one) so the campaign reflects the products.
          type: string
      required:
        - discoveryId
        - proposal
        - totalBudgetUsed
        - productsApplied
        - productsSkipped
        - products
        - totalProducts
      additionalProperties: false
      description: Response from applying a proposal
    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
    AppliedProposalSummary:
      type: object
      properties:
        proposalId:
          type: string
          description: ID of the applied proposal
        name:
          type: string
          description: Name of the applied proposal
        salesAgentName:
          description: Sales agent that generated the proposal
          type: string
      required:
        - proposalId
        - name
      additionalProperties: false
      description: Summary of the proposal that was applied
    SelectedProduct:
      type: object
      properties:
        productId:
          type: string
          description: Product ID
        storefrontId:
          description: Storefront this product selection came from
          type: string
        inventorySourceId:
          description: Exact non-null inventory source selected for execution
          type: string
          pattern: ^[1-9]\d*$
        selectionId:
          description: >-
            Per-instance selection identity. Present only on repeat instances
            (the same product selected more than once); absent on a product’s
            single "base" selection.
          type: string
        salesAgentId:
          description: Sales agent ID
          type: string
        bidPrice:
          description: Bid price (CPM) the buyer set for the product
          type: number
        budget:
          description: Budget allocation for this product
          type: number
        targetingOverlay:
          description: Per-line-item AdCP targeting saved with this selection
          type: object
          properties:
            geo_countries:
              minItems: 1
              type: array
              items:
                type: string
                pattern: ^[A-Z]{2}$
              description: >-
                Restrict delivery to specific countries. ISO 3166-1 alpha-2
                codes (e.g., 'US', 'GB', 'DE').
            geo_countries_exclude:
              minItems: 1
              type: array
              items:
                type: string
                pattern: ^[A-Z]{2}$
              description: >-
                Exclude specific countries from delivery. ISO 3166-1 alpha-2
                codes (e.g., 'US', 'GB', 'DE').
            geo_regions:
              minItems: 1
              type: array
              items:
                type: string
                pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$
              description: >-
                Restrict delivery to exact canonical ISO 3166-2 subdivisions
                (states, provinces, regions, departments, or other subdivision
                categories). Unknown identifiers are invalid. At create or
                update, sellers MUST reject unsupported identifiers and MUST NOT
                silently widen, drop, or partially apply the list. During
                get_products, a seller may instead return a sparse,
                buyer-reviewable targeting_resolution modification for a valid
                but unsupported requested outcome. Exact internal translation
                preserves accepted identifiers in package readback.
            geo_regions_exclude:
              minItems: 1
              type: array
              items:
                type: string
                pattern: ^[A-Z]{2}-[A-Z0-9]{1,3}$
              description: >-
                Exclude exact canonical ISO 3166-2 subdivisions. Support is
                independent from geo_regions inclusion support. Unknown
                identifiers and values also present in geo_regions are invalid.
                At create or update, sellers MUST reject unsupported identifiers
                and partial application; during get_products, a seller may
                instead return a sparse, buyer-reviewable targeting_resolution
                modification for a valid but unsupported requested outcome.
            geo_metros:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  system:
                    type: string
                    enum:
                      - nielsen_dma
                      - uk_itl1
                      - uk_itl2
                      - eurostat_nuts2
                      - custom
                    description: >-
                      Metro area classification system (e.g., 'nielsen_dma',
                      'uk_itl2')
                  values:
                    minItems: 1
                    type: array
                    items:
                      type: string
                    description: >-
                      Metro codes within the system (e.g., ['501', '602'] for
                      Nielsen DMAs)
                required:
                  - system
                  - values
                additionalProperties: false
                description: A targeted metro area.
              description: >-
                Restrict delivery to specific metro areas. Each entry specifies
                the classification system and target values. Seller must declare
                supported systems in get_adcp_capabilities.
            geo_metros_exclude:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  system:
                    type: string
                    enum:
                      - nielsen_dma
                      - uk_itl1
                      - uk_itl2
                      - eurostat_nuts2
                      - custom
                    description: >-
                      Metro area classification system (e.g., 'nielsen_dma',
                      'uk_itl2')
                  values:
                    minItems: 1
                    type: array
                    items:
                      type: string
                    description: >-
                      Metro codes to exclude within the system (e.g., ['501',
                      '602'] for Nielsen DMAs)
                required:
                  - system
                  - values
                additionalProperties: false
              description: >-
                Exclude specific metro areas from delivery. Each entry specifies
                the classification system and excluded values. Seller must
                declare supported systems in get_adcp_capabilities.
            geo_postal_areas:
              minItems: 1
              type: array
              items:
                anyOf:
                  - allOf:
                      - type: object
                        properties:
                          country:
                            type: string
                            pattern: ^[A-Z]{2}$
                            description: >-
                              ISO 3166-1 alpha-2 country code for the postal
                              values.
                          system:
                            type: string
                            enum:
                              - postal_code
                              - zip
                              - zip_plus_four
                              - outward
                              - full
                              - fsa
                              - plz
                              - code_postal
                              - postcode
                              - cep
                              - pin
                              - custom
                              - us_zip
                              - us_zip_plus_four
                              - gb_outward
                              - gb_full
                              - ca_fsa
                              - ca_full
                              - de_plz
                              - fr_code_postal
                              - au_postcode
                              - ch_plz
                              - at_plz
                            description: >-
                              Country-local postal code system (e.g., 'zip',
                              'outward', 'plz', 'postal_code').
                          values:
                            minItems: 1
                            type: array
                            items:
                              type: string
                            description: Postal codes within the country and system.
                        required:
                          - country
                          - system
                          - values
                        additionalProperties: false
                      - description: >-
                          Valid country-local postal system pairing. Registered
                          countries only accept their registered local systems;
                          countries without a registered local system use
                          postal_code or custom.
                        anyOf:
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - US
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - zip
                                      - zip_plus_four
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - GB
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - outward
                                      - full
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - CA
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - fsa
                                      - full
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - DE
                                      - CH
                                      - AT
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - plz
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - FR
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - code_postal
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - AU
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postcode
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - BR
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - cep
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - IN
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - pin
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - ZA
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postal_code
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - {}
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postal_code
                                      - custom
                            required:
                              - country
                              - system
                            additionalProperties: false
                  - type: object
                    properties:
                      system:
                        type: string
                        enum:
                          - us_zip
                          - us_zip_plus_four
                          - gb_outward
                          - gb_full
                          - ca_fsa
                          - ca_full
                          - de_plz
                          - fr_code_postal
                          - au_postcode
                          - ch_plz
                          - at_plz
                        description: >-
                          Deprecated country-fused postal code system (e.g.,
                          'us_zip', 'gb_outward'). Prefer country +
                          postal-system.
                      values:
                        minItems: 1
                        type: array
                        items:
                          type: string
                        description: Postal codes within the legacy system.
                    required:
                      - system
                      - values
                    additionalProperties: false
                description: >-
                  Postal area values. Prefer the native country + postal system
                  form. Deprecated legacy country-fused postal-system tokens
                  remain accepted for compatibility.
              description: >-
                Restrict delivery to specific postal areas. Prefer the native
                country + postal system form. The deprecated legacy
                country-fused postal-system tokens remain accepted for
                compatibility. Seller must declare supported systems in
                get_adcp_capabilities.
            geo_postal_areas_exclude:
              minItems: 1
              type: array
              items:
                anyOf:
                  - allOf:
                      - type: object
                        properties:
                          country:
                            type: string
                            pattern: ^[A-Z]{2}$
                            description: >-
                              ISO 3166-1 alpha-2 country code for the postal
                              values.
                          system:
                            type: string
                            enum:
                              - postal_code
                              - zip
                              - zip_plus_four
                              - outward
                              - full
                              - fsa
                              - plz
                              - code_postal
                              - postcode
                              - cep
                              - pin
                              - custom
                              - us_zip
                              - us_zip_plus_four
                              - gb_outward
                              - gb_full
                              - ca_fsa
                              - ca_full
                              - de_plz
                              - fr_code_postal
                              - au_postcode
                              - ch_plz
                              - at_plz
                            description: >-
                              Country-local postal code system (e.g., 'zip',
                              'outward', 'plz', 'postal_code').
                          values:
                            minItems: 1
                            type: array
                            items:
                              type: string
                            description: Postal codes within the country and system.
                        required:
                          - country
                          - system
                          - values
                        additionalProperties: false
                      - description: >-
                          Valid country-local postal system pairing. Registered
                          countries only accept their registered local systems;
                          countries without a registered local system use
                          postal_code or custom.
                        anyOf:
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - US
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - zip
                                      - zip_plus_four
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - GB
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - outward
                                      - full
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - CA
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - fsa
                                      - full
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - DE
                                      - CH
                                      - AT
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - plz
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - FR
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - code_postal
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - AU
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postcode
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - BR
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - cep
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - IN
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - pin
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - type: string
                                    enum:
                                      - ZA
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postal_code
                            required:
                              - country
                              - system
                            additionalProperties: false
                          - type: object
                            properties:
                              country:
                                allOf:
                                  - type: string
                                    pattern: ^[A-Z]{2}$
                                    description: ISO 3166-1 alpha-2 country code.
                                  - {}
                              system:
                                allOf:
                                  - type: string
                                    enum:
                                      - postal_code
                                      - zip
                                      - zip_plus_four
                                      - outward
                                      - full
                                      - fsa
                                      - plz
                                      - code_postal
                                      - postcode
                                      - cep
                                      - pin
                                      - custom
                                      - us_zip
                                      - us_zip_plus_four
                                      - gb_outward
                                      - gb_full
                                      - ca_fsa
                                      - ca_full
                                      - de_plz
                                      - fr_code_postal
                                      - au_postcode
                                      - ch_plz
                                      - at_plz
                                    description: Country-local postal code system.
                                  - type: string
                                    enum:
                                      - postal_code
                                      - custom
                            required:
                              - country
                              - system
                            additionalProperties: false
                  - type: object
                    properties:
                      system:
                        type: string
                        enum:
                          - us_zip
                          - us_zip_plus_four
                          - gb_outward
                          - gb_full
                          - ca_fsa
                          - ca_full
                          - de_plz
                          - fr_code_postal
                          - au_postcode
                          - ch_plz
                          - at_plz
                        description: >-
                          Deprecated country-fused postal code system (e.g.,
                          'us_zip', 'gb_outward'). Prefer country +
                          postal-system.
                      values:
                        minItems: 1
                        type: array
                        items:
                          type: string
                        description: Postal codes within the legacy system.
                    required:
                      - system
                      - values
                    additionalProperties: false
                description: >-
                  Postal area values. Prefer the native country + postal system
                  form. Deprecated legacy country-fused postal-system tokens
                  remain accepted for compatibility.
              description: >-
                Exclude specific postal areas from delivery. Prefer the native
                country + postal system form. The deprecated legacy
                country-fused postal-system tokens remain accepted for
                compatibility. Seller must declare supported systems in
                get_adcp_capabilities.
            daypart_targets:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  days:
                    minItems: 1
                    type: array
                    items:
                      type: string
                      enum:
                        - monday
                        - tuesday
                        - wednesday
                        - thursday
                        - friday
                        - saturday
                        - sunday
                      description: Days of the week for daypart targeting
                    description: >-
                      Days of week this window applies to. Use multiple days for
                      compact targeting (e.g., monday-friday in one object).
                  start_hour:
                    type: integer
                    minimum: 0
                    maximum: 23
                    description: >-
                      Start hour (inclusive), 0-23 in 24-hour format. 0 =
                      midnight, 6 = 6:00am, 18 = 6:00pm.
                  end_hour:
                    type: integer
                    minimum: 1
                    maximum: 24
                    description: >-
                      End hour (exclusive), 1-24 in 24-hour format. 10 =
                      10:00am, 24 = midnight. Must be greater than start_hour.
                  timezone:
                    default: inventory_local
                    anyOf:
                      - type: string
                        enum:
                          - inventory_local
                      - description: >-
                          Concrete timezone identifier in the implementation's
                          supported IANA Time Zone Database, such as
                          America/New_York, CET, or UTC.
                    description: >-
                      Civil-time clock used to evaluate this window.
                      'inventory_local' evaluates the hours in the
                      seller-assigned local timezone of each inventory unit that
                      can deliver the impression, such as a screen, venue,
                      station, or publisher property; it never means the buyer,
                      account, or server timezone. A concrete IANA timezone
                      identifier (for example, 'America/New_York', 'CET', or
                      'UTC') evaluates one shared civil-time clock across the
                      targeted inventory. Omission defaults to
                      'inventory_local'. Buyers that begin with a user or
                      account preference MUST resolve it to a concrete IANA
                      identifier before sending the daypart; 'user_timezone' and
                      'account_timezone' are not wire values. For each candidate
                      delivery instant, convert the instant into this clock and
                      compare its resulting local day and hour with the
                      half-open window: a skipped DST hour has no matching
                      instants, while both occurrences of a repeated hour match.
                      This delivery clock is independent of
                      reporting_capabilities.timezone.
                  label:
                    type: string
                    description: >-
                      Optional human-readable name for this time window (e.g.,
                      'Morning Drive', 'Prime Time')
                required:
                  - days
                  - start_hour
                  - end_hour
                  - timezone
                additionalProperties: false
                description: >-
                  A time window for daypart targeting. Specifies days of week,
                  an hour range, and the civil-time clock used to evaluate it.
                  start_hour is inclusive, end_hour is exclusive (e.g., 6-10 =
                  6:00am to 10:00am). Follows the Google Ads AdScheduleInfo /
                  DV360 DayPartTargeting pattern.
              description: >-
                Restrict delivery to specific time windows. Each entry specifies
                days of week, an hour range, and an optional timezone that
                defaults to inventory_local. A concrete IANA zone uses one
                shared civil-time clock, while inventory_local evaluates each
                inventory unit in its seller-assigned local timezone. Entries
                are independent and MAY use different clocks.
            axe_include_segment:
              type: string
              description: >-
                Deprecated: Use TMP provider fields instead. AXE segment ID to
                include for targeting.
            axe_exclude_segment:
              type: string
              description: >-
                Deprecated: Use TMP provider fields instead. AXE segment ID to
                exclude from targeting.
            audience_include:
              minItems: 1
              type: array
              items:
                type: string
              description: >-
                Restrict delivery to members of these first-party CRM audiences.
                Only users present in the uploaded lists are eligible.
                References audience_id values from sync_audiences on the same
                seller account — audience IDs are not portable across sellers.
                Not for lookalike expansion — express that intent in the
                campaign brief. Seller must declare support in
                get_adcp_capabilities.
            audience_exclude:
              minItems: 1
              type: array
              items:
                type: string
              description: >-
                Suppress delivery to members of these first-party CRM audiences.
                Matched users are excluded regardless of other targeting.
                References audience_id values from sync_audiences on the same
                seller account — audience IDs are not portable across sellers.
                Seller must declare support in get_adcp_capabilities.
            signal_targeting_groups:
              type: object
              properties:
                operator:
                  type: string
                  enum:
                    - all
                  description: >-
                    Groups-level operator. Required even though v1 only supports
                    'all': every child group must be satisfied.
                groups:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    properties:
                      operator:
                        type: string
                        enum:
                          - any
                          - none
                        description: >-
                          How to evaluate the signals in this group. 'any' is an
                          OR include group. 'none' is an exclusion group
                          equivalent to NOT (A OR B OR C).
                      signals:
                        minItems: 1
                        type: array
                        items:
                          allOf:
                            - type: object
                              properties:
                                pricing_option_id:
                                  type: string
                                  description: >-
                                    Pricing option selected for this signal. Use
                                    the pricing_option_id from the product's
                                    signal_targeting_options entry when
                                    product-scoped pricing is present; otherwise
                                    use the seller get_signals pricing only when
                                    the product option does not override it.
                                    Required when the selected signal has
                                    pricing_options; omit only when the signal
                                    is bundled into the product price or has no
                                    incremental cost.
                                signal_agent_segment_id:
                                  type: string
                                  description: >-
                                    Optional opaque resolved-segment or seller
                                    execution handle for this signal. Omit when
                                    signal_ref plus the value expression is
                                    sufficient for the seller to resolve the
                                    signal. Include when the product option
                                    exposes a separate runtime or activation
                                    handle, and pass it verbatim. Buyers SHOULD
                                    prefer an exposed segment handle over
                                    reconstructing condition identity from
                                    categorical values because the handle can
                                    carry provider namespace and methodology
                                    distinctions.
                                activation_key:
                                  allOf:
                                    - type: object
                                      additionalProperties: {}
                                    - {}
                                  description: >-
                                    Destination-specific activation key returned
                                    by get_signals or activate_signal. Usually
                                    omitted for seller-offered signals selected
                                    directly through the same seller; include
                                    only when the selected signal was separately
                                    activated and the seller requires the
                                    activation key to correlate the package
                                    selection.
                              additionalProperties: {}
                            - description: >-
                                Predicate over a named signal definition.
                                Signals are typed dimensions, similar to feature
                                values: binary signals match true, categorical
                                signals match one of a set of values, and
                                numeric signals match a range. In package signal
                                targeting groups, include/exclude semantics are
                                controlled by the parent group operator, not by
                                negating the expression.
                          description: >-
                            Buy-time selection of one seller-offered signal
                            inside a package signal targeting group. The
                            signal_ref uses scope 'product' for a product-local
                            signal option, scope 'data_provider' for a signal
                            defined in a data provider's published adagents.json
                            signals[], or scope 'signal_source' for a
                            source-native signal that is not published in
                            adagents.json signals[]. The selected product's
                            inline Product.signal_targeting_options, get_signals
                            feed when inline options are omitted, and
                            signal_targeting_rules define buy-time eligibility.
                            Inclusion and exclusion are controlled by the parent
                            group operator: use operator 'any' to include users
                            matching the signal expression and operator 'none'
                            to exclude users matching the signal expression. For
                            binary signals, value MUST be true; do not use
                            value=false for exclusion inside
                            signal_targeting_groups. Use
                            audience_include/audience_exclude only for
                            buyer-managed first-party audiences registered
                            through sync_audiences.
                        description: >-
                          Signal targeting entries evaluated by this group. Each
                          entry uses the package signal targeting shape,
                          including signal_ref, value expression, and optional
                          pricing, execution-handle, or activation fields.
                    required:
                      - operator
                      - signals
                    additionalProperties: {}
                    description: >-
                      A basic Boolean group of package-level signal targeting
                      entries. 'any' means the user must match at least one
                      signal in the group. 'none' means the user must match none
                      of the signals in the group. Use groups for portable
                      include/exclude composition such as (A OR B) AND NOT (C OR
                      D).
                  description: >-
                    Signal targeting groups to evaluate. Use operator 'any' for
                    include groups and 'none' for exclusion groups.
              required:
                - operator
                - groups
              additionalProperties: {}
              description: >-
                Basic Boolean grouping for seller-offered signals. v1 supports a
                required top-level operator 'all' and child groups with operator
                'any' for include groups or 'none' for exclusion groups. Example
                semantics: group 1 any(A, B) plus group 2 none(C, D) means (A OR
                B) AND NOT (C OR D). Signal entries reference named signal
                definitions with signal_ref scope 'product' for product-local
                signal options or scope 'data_provider' for external signals
                published in adagents.json signals[]. For simple include-only
                targeting, send one child group with operator 'any'. Sellers
                SHOULD reject entries that are not available for the product
                through inline signal_targeting_options or get_signals, are not
                active for the account, or exceed the product's
                signal_targeting_allowed/signal_targeting_rules/product terms.
                Signal targeting limits are product-scoped, not declared in
                get_adcp_capabilities, because products may be backed by
                different ad servers. Sellers MUST echo applied
                signal_targeting_groups on the resulting package state,
                including fixed/default selections. Sellers MAY return
                REQUOTE_REQUIRED when a targeting mutation changes commercial
                terms.
            signal_targeting:
              minItems: 1
              type: array
              items:
                description: >-
                  Targeting constraint for a specific signal. Uses value_type as
                  discriminator to determine the targeting expression format.
              description: >-
                DEPRECATED. Use signal_targeting_groups for package-level signal
                targeting. Legacy flat signal_targeting remains accepted during
                the SignalRef migration window but cannot express grouped
                include/exclude composition or product-scoped pricing.
            demographics:
              type: object
              properties:
                age:
                  allOf:
                    - description: >-
                        A canonical audience-age predicate in completed integer
                        years. min and max are inclusive; omitting one bound
                        means no restriction in that direction. At least one
                        bound is required. include_unknown is always explicit
                        because people whose age is unavailable are not members
                        of any numeric interval. Implementations MUST reject min
                        greater than max; JSON Schema draft-07 cannot compare
                        sibling numeric values.
                      anyOf:
                        - type: object
                          properties:
                            min:
                              allOf:
                                - type: integer
                                  minimum: 0
                                  maximum: 150
                                  description: >-
                                    Inclusive minimum age in completed years.
                                    Omit for an open lower bound.
                                - {}
                            max:
                              type: integer
                              minimum: 0
                              maximum: 150
                              description: >-
                                Inclusive maximum age in completed years. Omit
                                for an open upper bound.
                            include_unknown:
                              type: boolean
                              description: >-
                                Whether delivery to people whose age is
                                unavailable is part of this predicate. This
                                field has no default and MUST be supplied.
                          required:
                            - include_unknown
                            - min
                        - type: object
                          properties:
                            min:
                              type: integer
                              minimum: 0
                              maximum: 150
                              description: >-
                                Inclusive minimum age in completed years. Omit
                                for an open lower bound.
                            max:
                              allOf:
                                - type: integer
                                  minimum: 0
                                  maximum: 150
                                  description: >-
                                    Inclusive maximum age in completed years.
                                    Omit for an open upper bound.
                                - {}
                            include_unknown:
                              type: boolean
                              description: >-
                                Whether delivery to people whose age is
                                unavailable is part of this predicate. This
                                field has no default and MUST be supplied.
                          required:
                            - include_unknown
                            - max
                    - type: object
                      properties:
                        accepted_bases:
                          minItems: 1
                          type: array
                          items:
                            type: string
                            enum:
                              - verified
                              - declared
                              - inferred
                            description: >-
                              User-level bases that may resolve age for
                              demographic targeting execution. Population
                              estimates are deliberately absent because
                              aggregate composition cannot establish an
                              individual impression's age.
                          description: >-
                            User-level age determination bases the buyer permits
                            for this predicate. Sellers MUST use only these
                            bases or reject the request; they MUST NOT silently
                            fall back to another basis. When omitted, the buyer
                            imposes no determination-basis constraint beyond
                            product capability and any age_restriction.
                            population_estimate is structurally unavailable
                            because aggregate evidence cannot identify an
                            eligible user.
                        accepted_verification_methods:
                          minItems: 1
                          type: array
                          items:
                            type: string
                            enum:
                              - facial_age_estimation
                              - id_document
                              - digital_id
                              - credit_card
                              - world_id
                            description: >-
                              Methods for verifying user age for compliance.
                              Does not include 'inferred' as it is not accepted
                              for regulatory compliance.
                          description: >-
                            Verification methods acceptable when verified is an
                            accepted basis. This field narrows verified
                            demographic execution;
                            age_restriction.accepted_methods independently
                            governs legal eligibility and the two sets are
                            intersected when both are present.
                      additionalProperties: {}
                    - anyOf:
                        - {}
                        - type: object
                          properties:
                            accepted_verification_methods: {}
                            accepted_bases: {}
                          required:
                            - accepted_verification_methods
                            - accepted_bases
              required:
                - age
              additionalProperties: {}
              description: >-
                Canonical demographic audience targeting intent with optional
                constraints on how age may be determined. This is distinct from
                age_restriction: demographics selects an audience, while
                age_restriction expresses a legal eligibility or verification
                floor. Fresh create/update targeting MUST compile exactly or be
                rejected. During get_products, a seller may offer a different
                configured predicate only through sparse targeting_resolution
                modifications on a distinguishable product_id; selecting that
                product accepts the alternative. Sellers never silently broaden,
                narrow, default, drop, or substitute the basis.
            frequency_cap:
              allOf:
                - type: object
                  properties:
                    suppress:
                      type: object
                      properties:
                        interval:
                          type: integer
                          minimum: 1
                          maximum: 9007199254740991
                          description: >-
                            Number of time units. Must be 1 when unit is
                            'campaign'.
                        unit:
                          type: string
                          enum:
                            - seconds
                            - minutes
                            - hours
                            - days
                            - campaign
                          description: >-
                            Time unit. 'seconds' for sub-minute precision.
                            'campaign' spans the full campaign flight.
                      required:
                        - interval
                        - unit
                      additionalProperties: false
                      description: >-
                        Cooldown period between consecutive exposures to the
                        same entity. Prevents back-to-back ad delivery (e.g.
                        {"interval": 60, "unit": "minutes"} for a 1-hour
                        cooldown). Preferred over suppress_minutes.
                    suppress_minutes:
                      type: number
                      minimum: 0
                      description: >-
                        Deprecated — use suppress instead. Cooldown period in
                        minutes between consecutive exposures to the same entity
                        (e.g. 60 for a 1-hour cooldown).
                    max_impressions:
                      type: integer
                      minimum: 1
                      maximum: 9007199254740991
                      description: >-
                        Maximum number of impressions per entity per window. For
                        duration windows, implementations typically use a
                        rolling window. campaign applies across the owning
                        field's full flight: the package flight for a targeting
                        overlay, or the MediaBuy flight for a root cap.
                    per:
                      type: string
                      enum:
                        - individuals
                        - households
                        - devices
                        - accounts
                        - cookies
                        - custom
                      description: >-
                        Entity granularity for impression counting. Required
                        when max_impressions is set.
                    window:
                      type: object
                      properties:
                        interval:
                          type: integer
                          minimum: 1
                          maximum: 9007199254740991
                          description: >-
                            Number of time units. Must be 1 when unit is
                            'campaign'.
                        unit:
                          type: string
                          enum:
                            - seconds
                            - minutes
                            - hours
                            - days
                            - campaign
                          description: >-
                            Time unit. 'seconds' for sub-minute precision.
                            'campaign' spans the full campaign flight.
                      required:
                        - interval
                        - unit
                      additionalProperties: false
                      description: >-
                        Time window for the max_impressions cap (e.g.
                        {"interval": 7, "unit": "days"} or {"interval": 1,
                        "unit": "campaign"} for the full flight). Required when
                        max_impressions is set.
                  additionalProperties: {}
                - anyOf:
                    - type: object
                      properties:
                        suppress: {}
                      required:
                        - suppress
                      additionalProperties: {}
                    - type: object
                      properties:
                        suppress_minutes: {}
                      required:
                        - suppress_minutes
                      additionalProperties: {}
                    - type: object
                      properties:
                        max_impressions: {}
                      required:
                        - max_impressions
                      additionalProperties: {}
                - anyOf:
                    - {}
                    - type: object
                      properties:
                        max_impressions: {}
                        per: {}
                        window: {}
                      required:
                        - max_impressions
                        - per
                        - window
                      additionalProperties: {}
                - anyOf:
                    - {}
                    - type: object
                      properties:
                        per: {}
                        max_impressions: {}
                      required:
                        - per
                        - max_impressions
                      additionalProperties: {}
                - anyOf:
                    - {}
                    - type: object
                      properties:
                        window: {}
                        max_impressions: {}
                      required:
                        - window
                        - max_impressions
                      additionalProperties: {}
              description: >-
                Frequency capping settings for package-level application. Two
                types of frequency control can be used independently or
                together: suppress enforces a cooldown between consecutive
                exposures; max_impressions + per + window caps total exposures
                per entity in a time window. When both suppress and
                max_impressions are set, an impression is delivered only if both
                constraints permit it (AND semantics). At least one of suppress,
                suppress_minutes, or max_impressions must be set. Field location
                determines scope; this value has no scope discriminator. The
                MediaBuy root uses the narrower media-buy-frequency-cap schema,
                which permits maximum impressions only in 3.2.
            property_list:
              type: object
              properties:
                agent_url:
                  type: string
                  description: URL of the agent managing the property list
                list_id:
                  type: string
                  minLength: 1
                  description: Identifier for the property list within the agent
                auth_token:
                  type: string
                  description: >-
                    JWT or other authorization token for accessing the list.
                    Optional if the list is public or caller has implicit
                    access.
              required:
                - agent_url
                - list_id
              additionalProperties: false
              description: >-
                Reference to a property list for targeting specific properties
                within this product. The package runs on the intersection of the
                product's publisher_properties and this list. Sellers SHOULD
                return a validation error if the product has
                property_targeting_allowed: false.
            property_list_exclude:
              type: object
              properties:
                agent_url:
                  type: string
                  description: URL of the agent managing the property list
                list_id:
                  type: string
                  minLength: 1
                  description: Identifier for the property list within the agent
                auth_token:
                  type: string
                  description: >-
                    JWT or other authorization token for accessing the list.
                    Optional if the list is public or caller has implicit
                    access.
              required:
                - agent_url
                - list_id
              additionalProperties: false
              description: >-
                Reference to a property list whose properties must not carry the
                buyer's ads. Matched properties are removed from delivery. Use
                for brand-safety do-not-run lists (apps, sites). Exclude wins on
                overlap with property_list, and applies regardless of the
                product's property_targeting_allowed flag. Seller must declare
                support in get_adcp_capabilities.
            collection_list:
              type: object
              properties:
                agent_url:
                  type: string
                  description: URL of the agent managing the collection list
                list_id:
                  type: string
                  minLength: 1
                  description: Identifier for the collection list within the agent
                auth_token:
                  type: string
                  description: >-
                    JWT or other authorization token for accessing the list.
                    Optional if the list is public or caller has implicit
                    access.
              required:
                - agent_url
                - list_id
              additionalProperties: false
              description: >-
                Reference to a collection list for including specific
                collections (programs, publications, channels) within this
                product. The package runs on the intersection of matched
                collections and this list. Use for inclusion-based collection
                targeting. Seller must declare support in get_adcp_capabilities.
            collection_list_exclude:
              type: object
              properties:
                agent_url:
                  type: string
                  description: URL of the agent managing the collection list
                list_id:
                  type: string
                  minLength: 1
                  description: Identifier for the collection list within the agent
                auth_token:
                  type: string
                  description: >-
                    JWT or other authorization token for accessing the list.
                    Optional if the list is public or caller has implicit
                    access.
              required:
                - agent_url
                - list_id
              additionalProperties: false
              description: >-
                Reference to a collection list for excluding specific
                collections (programs, publications, channels) from this
                product. Matched collections must not carry the buyer's ads. Use
                for brand safety do-not-air lists. Seller must declare support
                in get_adcp_capabilities.
            placement_selection:
              allOf:
                - type: object
                  additionalProperties: {}
                - {}
              description: >-
                Purchased placement selection within the product. This
                constrains package inventory; it is distinct from
                creative_assignments[].placement_refs, which only route
                individual creatives within the purchased set. On create, mode
                selected supplies the complete selected set and mode default
                uses the product default. In request-side Targeting Input, a
                non-null value replaces this dimension, omission preserves or
                inherits it, and null clears it when the product permits that
                broader inventory set.
            collection_selection:
              allOf:
                - type: object
                  additionalProperties: {}
                - {}
              description: >-
                Purchased collection selection within the product. On create,
                mode selected supplies the complete selected set and mode
                default uses the product's full bundle. On package readback this
                is the committed selection sellers MUST echo as concrete
                selectors, materializing any collection_list composition;
                collection_list fields remain the buyer-managed list mechanism.
                In request-side Targeting Input, a non-null value replaces this
                dimension, omission preserves or inherits it, and null clears it
                when the product permits that broader inventory set.
            age_restriction:
              type: object
              properties:
                min:
                  type: integer
                  minimum: 13
                  maximum: 99
                  description: Minimum age required
                verification_required:
                  default: false
                  type: boolean
                  description: >-
                    Whether verified age (not inferred) is required for
                    compliance
                accepted_methods:
                  minItems: 1
                  type: array
                  items:
                    type: string
                    enum:
                      - facial_age_estimation
                      - id_document
                      - digital_id
                      - credit_card
                      - world_id
                    description: >-
                      Methods for verifying user age for compliance. Does not
                      include 'inferred' as it is not accepted for regulatory
                      compliance.
                  description: >-
                    Accepted verification methods. If omitted, any method the
                    platform supports is acceptable.
              required:
                - min
                - verification_required
              additionalProperties: false
              description: >-
                Age restriction for compliance. Use for legal requirements
                (alcohol, gambling), not audience targeting.
            device_platform:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - ios
                  - android
                  - windows
                  - macos
                  - linux
                  - chromeos
                  - tvos
                  - tizen
                  - webos
                  - fire_os
                  - roku_os
                  - unknown
                description: >-
                  Operating system platforms for device targeting. Browser
                  values from Sec-CH-UA-Platform standard, extended for CTV.
              description: >-
                Restrict to specific platforms. Use for technical compatibility
                (app only works on iOS). Values from Sec-CH-UA-Platform
                standard, extended for CTV.
            device_platform_exclude:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - ios
                  - android
                  - windows
                  - macos
                  - linux
                  - chromeos
                  - tvos
                  - tizen
                  - webos
                  - fire_os
                  - roku_os
                  - unknown
                description: >-
                  Operating system platforms for device targeting. Browser
                  values from Sec-CH-UA-Platform standard, extended for CTV.
              description: >-
                Exclude specific operating-system platforms from delivery. When
                a platform appears in both device_platform and
                device_platform_exclude, exclusion wins. Sellers MUST reject a
                request they cannot enforce rather than silently dropping the
                exclusion.
            device_type:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - desktop
                  - mobile
                  - tablet
                  - ctv
                  - dooh
                  - unknown
                description: >-
                  Device form factor categories for targeting and reporting.
                  Complements device-platform (operating system) with hardware
                  classification. OpenRTB mapping: 1 (Mobile/Tablet General) →
                  mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) →
                  tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv.
                  DOOH inventory uses dooh.
              description: >-
                Restrict to specific device form factors. Use for campaigns
                targeting hardware categories rather than operating systems
                (e.g., mobile-only promotions, CTV campaigns).
            device_type_exclude:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - desktop
                  - mobile
                  - tablet
                  - ctv
                  - dooh
                  - unknown
                description: >-
                  Device form factor categories for targeting and reporting.
                  Complements device-platform (operating system) with hardware
                  classification. OpenRTB mapping: 1 (Mobile/Tablet General) →
                  mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) →
                  tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv.
                  DOOH inventory uses dooh.
              description: >-
                Exclude specific device form factors from delivery (e.g.,
                exclude CTV for app-install campaigns).
            browser:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - chrome
                  - safari
                  - firefox
                  - edge
                  - opera
                  - samsung_internet
                  - android_webview
                  - other
                  - unknown
                description: >-
                  Portable browser families for targeting the impression
                  delivery and rendering environment, not a post-click
                  landing-page browser. Values identify browser families, not
                  versions or seller-native browser IDs, and MUST NOT be
                  inferred solely from operating system, device, web/mobile-web
                  inventory, or placement. android_webview means an impression
                  reliably classified as rendering in Android WebView. other
                  means a seller-recognized browser family that is not
                  explicitly enumerated; unknown means the seller cannot
                  classify the browser into a recognized family.
              description: >-
                Restrict delivery to specific canonical browser families in the
                impression delivery and rendering environment, not the
                post-click landing-page browser. Values MUST NOT be inferred
                solely from operating system, device, web/mobile-web inventory,
                or placement. Values in this array use OR semantics. When
                browser is supplied, families not listed are ineligible: other
                includes a seller-recognized family that is not explicitly
                enumerated, while unknown includes a browser the seller cannot
                classify into a recognized family. When the same family appears
                in browser and browser_exclude, exclusion wins. Browser and
                device constraints intersect; a seller that cannot enforce the
                exact combination MUST exclude or explicitly reconfigure the
                product during discovery and MUST reject it at create or update
                rather than silently widening delivery. Browser versions and
                seller-native IDs are intentionally unsupported.
            browser_exclude:
              minItems: 1
              type: array
              items:
                type: string
                enum:
                  - chrome
                  - safari
                  - firefox
                  - edge
                  - opera
                  - samsung_internet
                  - android_webview
                  - other
                  - unknown
                description: >-
                  Portable browser families for targeting the impression
                  delivery and rendering environment, not a post-click
                  landing-page browser. Values identify browser families, not
                  versions or seller-native browser IDs, and MUST NOT be
                  inferred solely from operating system, device, web/mobile-web
                  inventory, or placement. android_webview means an impression
                  reliably classified as rendering in Android WebView. other
                  means a seller-recognized browser family that is not
                  explicitly enumerated; unknown means the seller cannot
                  classify the browser into a recognized family.
              description: >-
                Exclude specific canonical browser families from delivery. other
                excludes seller-recognized families that are not explicitly
                enumerated; unknown excludes browsers the seller cannot classify
                into a recognized family. When the same family appears in
                browser and browser_exclude, exclusion wins. Sellers MUST reject
                a request they cannot enforce rather than silently dropping the
                exclusion.
            store_catchments:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  catalog_id:
                    type: string
                    description: Synced store-type catalog ID from sync_catalogs.
                  store_ids:
                    minItems: 1
                    type: array
                    items:
                      type: string
                    description: >-
                      Filter to specific stores within the catalog. Omit to
                      target all stores.
                  catchment_ids:
                    minItems: 1
                    type: array
                    items:
                      type: string
                    description: >-
                      Catchment zone IDs to target (e.g., 'walk', 'drive'). Omit
                      to target all catchment zones.
                required:
                  - catalog_id
                additionalProperties: {}
              description: >-
                Target users within store catchment areas from a synced store
                catalog. Each entry references a store-type catalog and
                optionally narrows to specific stores or catchment zones.
            geo_proximity:
              minItems: 1
              type: array
              items:
                allOf:
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                        description: >-
                          Latitude in decimal degrees (WGS 84). Required for
                          travel_time and radius methods.
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                        description: >-
                          Longitude in decimal degrees (WGS 84). Required for
                          travel_time and radius methods.
                      label:
                        type: string
                        description: >-
                          Human-readable label for this entry (e.g.,
                          'Düsseldorf', 'Heathrow Airport', 'Primary trade
                          area').
                      travel_time:
                        type: object
                        properties:
                          value:
                            type: number
                            minimum: 1
                            description: Travel time limit.
                          unit:
                            type: string
                            enum:
                              - min
                              - hr
                            description: >-
                              Time unit for isochrone (travel-time catchment)
                              calculations.
                        required:
                          - value
                          - unit
                        additionalProperties: false
                        description: >-
                          Travel time limit for isochrone calculation. The
                          platform resolves this to a geographic boundary based
                          on actual transportation networks.
                      transport_mode:
                        type: string
                        enum:
                          - walking
                          - cycling
                          - driving
                          - public_transport
                        description: >-
                          Transportation mode for isochrone calculation.
                          Required when travel_time is provided.
                      radius:
                        type: object
                        properties:
                          value:
                            type: number
                            minimum: 0
                            exclusiveMinimum: true
                            description: Radius distance.
                          unit:
                            type: string
                            enum:
                              - km
                              - mi
                              - m
                            description: Distance unit.
                        required:
                          - value
                          - unit
                        additionalProperties: false
                        description: >-
                          Simple radius from the point. The platform draws a
                          circle of this distance around the coordinates.
                      geometry:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - Polygon
                              - MultiPolygon
                            description: GeoJSON geometry type.
                          coordinates:
                            type: array
                            items: {}
                            description: >-
                              GeoJSON coordinates array. For Polygon: array of
                              linear rings. For MultiPolygon: array of polygons.
                        required:
                          - type
                          - coordinates
                        additionalProperties: false
                        description: >-
                          Pre-computed GeoJSON geometry defining the proximity
                          boundary. Use when the buyer has already calculated
                          isochrones (via TravelTime, Mapbox, etc.) or has
                          custom boundaries. When geometry is provided, lat/lng
                          are not required.
                      ext:
                        type: object
                        additionalProperties: {}
                        description: >-
                          Extension object for platform-specific,
                          vendor-namespaced parameters. Extensions are always
                          optional and must be namespaced under a
                          vendor/platform key (e.g., ext.gam, ext.roku). Used
                          for custom capabilities, partner-specific
                          configuration, and features being proposed for
                          standardization.
                    additionalProperties: {}
                  - {}
              description: >-
                Target users within travel time, distance, or a custom boundary
                around arbitrary geographic points. Multiple entries use OR
                semantics — a user within range of any listed point is eligible.
                For campaigns targeting 10+ locations, consider using
                store_catchments with a location catalog instead. Seller must
                declare support in get_adcp_capabilities.
            language:
              minItems: 1
              type: array
              items:
                type: string
                minLength: 2
                maxLength: 63
                pattern: >-
                  ^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$
                description: >-
                  A well-formed BCP 47 language tag used by AdCP only as
                  language identity. Script and region may refine that identity;
                  other valid BCP 47 subtags remain part of tag matching but do
                  not make this a general locale-settings object. It does not
                  determine currency, time zone, number/date formatting, market,
                  or legal jurisdiction. The AdCP canonical wire profile
                  requires lower-case language and variants, title-case script,
                  and upper-case region (for example `en-US`, `zh-Hant-TW`, or
                  `x-private`). RFC 5646 comparisons are case-insensitive and
                  its case regularization is optional; AdCP intentionally
                  requires this stricter single wire spelling and receivers MUST
                  reject differently cased tags rather than silently normalizing
                  them. The schema pattern enforces the AdCP casing profile and
                  extension structure for commonly used tags; conforming
                  receivers additionally validate the complete RFC 5646 grammar
                  and registry rules. Every new AdCP field carrying BCP 47
                  language identity or a concrete language range MUST reference
                  this schema instead of declaring independent string
                  constraints.
              description: >-
                Restrict to users with specific language preferences using
                canonical BCP 47 language ranges. Each buyer range is evaluated
                against a user's language-preference tag with RFC 4647 section
                3.3.1 Basic Filtering: 'fr' matches 'fr', 'fr-CA', and 'fr-FR',
                while 'fr-CA' matches 'fr-CA' and more-specific descendants but
                not 'fr' or 'fr-FR'. Values use OR logic.
            keyword_targets:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                    description: The keyword to target
                  match_type:
                    type: string
                    enum:
                      - broad
                      - phrase
                      - exact
                    description: >-
                      Keyword targeting match type. broad: ads may serve on
                      queries semantically related to the keyword. phrase: ads
                      serve when the query contains the keyword phrase. exact:
                      ads serve only when the query matches the keyword exactly.
                  bid_price:
                    type: number
                    minimum: 0
                    description: >-
                      Per-keyword bid price, denominated in the same currency as
                      the package's pricing option. Overrides the package-level
                      bid_price for this keyword. Inherits the max_bid
                      interpretation from the pricing option: when max_bid is
                      true, this is the keyword's bid ceiling; when false, this
                      is the exact bid. If omitted, the package bid_price
                      applies.
                required:
                  - keyword
                  - match_type
                additionalProperties: false
              description: >-
                Keyword targeting for search and retail media platforms.
                Restricts delivery to queries matching the specified keywords.
                Each keyword is identified by the tuple (keyword, match_type) —
                the same keyword string with different match types are distinct
                targets. Sellers SHOULD reject duplicate (keyword, match_type)
                pairs within a single request. Seller must declare support in
                get_adcp_capabilities.
            negative_keywords:
              minItems: 1
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                    description: The keyword to exclude
                  match_type:
                    type: string
                    enum:
                      - broad
                      - phrase
                      - exact
                    description: >-
                      Keyword targeting match type. broad: ads may serve on
                      queries semantically related to the keyword. phrase: ads
                      serve when the query contains the keyword phrase. exact:
                      ads serve only when the query matches the keyword exactly.
                required:
                  - keyword
                  - match_type
                additionalProperties: false
                description: An excluded keyword.
              description: >-
                Keywords to exclude from delivery. Queries matching these
                keywords will not trigger the ad. Each negative keyword is
                identified by the tuple (keyword, match_type). Seller must
                declare support in get_adcp_capabilities.
            product_codes:
              description: >-
                Provider product codes selected for this line item, such as
                Amazon ASINs.
              type: array
              items:
                type: string
                minLength: 1
          additionalProperties: {}
        selectedAt:
          type: string
          description: When the product was selected (ISO 8601)
        groupId:
          type: string
          description: Group ID where product was discovered
        groupName:
          type: string
          description: Name of the group
        channelGroupId:
          description: Campaign channel group assigned to this product.
          type: string
          minLength: 1
          maxLength: 128
      required:
        - productId
        - salesAgentId
        - selectedAt
        - groupId
        - groupName
      additionalProperties: false
      description: A product selected for inclusion in a discovery session
    BudgetContextResponse:
      type: object
      properties:
        sessionBudget:
          nullable: true
          description: Total budget set for the session
          type: number
        allocatedBudget:
          type: number
          description: Budget allocated to selected products
        remainingBudget:
          nullable: true
          description: Remaining unallocated budget
          type: number
        budgetWarning:
          description: Warning message if budget allocation has issues
          type: string
      required:
        - sessionBudget
        - allocatedBudget
        - remainingBudget
      additionalProperties: false
      description: Budget allocation context
    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

````