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

# Add products to selection

> Add products to the selection. Products must have been discovered via GET /discovery/{discoveryId}/discover-products first.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml post /discovery/{discoveryId}/products
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}/products:
    post:
      tags:
        - Product Discovery
      summary: Add products to selection
      description: >-
        Add products to the selection. Products must have been discovered via
        GET /discovery/{discoveryId}/discover-products first.
      operationId: addProducts
      parameters:
        - in: path
          name: discoveryId
          schema:
            description: Discovery ID
            example: abc123-def456-ghi789
            type: string
            minLength: 1
          required: true
          description: Discovery ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddProductsRequest'
      responses:
        '200':
          description: Add products to selection
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionProductsResponse'
        '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:
    AddProductsRequest:
      description: Request to add products to a discovery session
      type: object
      properties:
        products:
          description: Products to add to the selection
          minItems: 1
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/ProductSelection'
        replace:
          description: When true, replaces all existing products instead of merging
          type: boolean
        campaignId:
          description: >-
            Optional campaign association check. When provided, the server
            verifies this discovery session is attached to the campaign before
            reporting success.
          example: campaign_ea5e33dd-d65b-44c7-a3e8-8e1db1d137b4
          type: string
      required:
        - products
    SessionProductsResponse:
      description: Response containing selected products
      type: object
      properties:
        discoveryId:
          description: Discovery ID
          type: string
        products:
          description: Selected products in the discovery session
          type: array
          items:
            $ref: '#/components/schemas/SelectedProduct'
        totalProducts:
          description: Total number of selected products
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        budgetContext:
          description: Budget allocation context
          allOf:
            - $ref: '#/components/schemas/BudgetContextResponse'
        campaignBound:
          description: >-
            Whether this 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
        - products
        - totalProducts
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    ProductSelection:
      description: Product selection for adding to a discovery session
      type: object
      properties:
        productId:
          description: >-
            Product ID to add. Pass the storefront-qualified sf1:... value
            returned by multi-storefront get_products unchanged; legacy
            discovery product IDs remain accepted.
          example: product_123
          type: string
        storefrontId:
          description: >-
            Storefront provenance. Normally decoded from a qualified productId
            by the server.
          type: string
          pattern: ^[1-9]\d*$
        inventorySourceId:
          description: >-
            Typed inventory-source provenance returned with the discovered
            product. Required to disambiguate identical product IDs from
            multiple sources in one Storefront.
          type: string
          pattern: ^[1-9]\d*$
        selectionId:
          description: >-
            Per-instance selection identity. Omit for the product’s single
            "base" selection. Supply a value distinct from productId to add the
            SAME product as an additional, independent line item (repeat) or to
            replace a specific existing instance. Re-sending an existing
            selectionId upserts that instance instead of creating a duplicate.
          example: product_123::a1b2c3
          type: string
          minLength: 1
          maxLength: 256
        salesAgentId:
          description: >-
            Sales agent ID for this product. Optional — when omitted it is
            resolved server-side from the discovery session (saved selections,
            then the discovery result cache).
          example: agent_456
          type: string
        groupId:
          description: >-
            Group ID where the product was discovered. Optional — resolved
            server-side when omitted.
          example: ctx_123-group-0
          type: string
        groupName:
          description: >-
            Name of the group where the product was discovered. Optional —
            resolved server-side when omitted.
          example: Publisher Name
          type: string
        bidPrice:
          description: >-
            Bid price for non-fixed pricing options (isFixed: false). Read from
            the product's pricingOptions (rate or floorPrice) in the discovery
            response.
          example: 12.5
          type: number
        budget:
          description: Budget allocation for this product
          example: 5000
          type: number
        pricingOptionId:
          description: Pricing option ID from the sales agent
          example: po_abc123
          type: string
        targetingOverlay:
          description: >-
            Per-line-item AdCP targeting. Use this for product-specific controls
            such as sponsored-product SKUs, keyword targets, and negative
            keywords.
          type: object
          properties:
            geo_countries:
              type: array
              items:
                type: string
            geo_countries_exclude:
              type: array
              items:
                type: string
            geo_regions:
              type: array
              items:
                type: string
            geo_regions_exclude:
              type: array
              items:
                type: string
            geo_metros:
              type: array
              items:
                type: object
                properties:
                  system:
                    anyOf:
                      - type: string
                        enum:
                          - nielsen_dma
                      - type: string
                        enum:
                          - uk_itl1
                      - type: string
                        enum:
                          - uk_itl2
                      - type: string
                        enum:
                          - eurostat_nuts2
                      - type: string
                        enum:
                          - custom
                  values:
                    type: array
                    items:
                      type: string
                required:
                  - system
                  - values
                additionalProperties: {}
            geo_metros_exclude:
              type: array
              items:
                type: object
                properties:
                  system:
                    anyOf:
                      - type: string
                        enum:
                          - nielsen_dma
                      - type: string
                        enum:
                          - uk_itl1
                      - type: string
                        enum:
                          - uk_itl2
                      - type: string
                        enum:
                          - eurostat_nuts2
                      - type: string
                        enum:
                          - custom
                  values:
                    type: array
                    items:
                      type: string
                required:
                  - system
                  - values
                additionalProperties: {}
            geo_postal_areas:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      country:
                        type: string
                        pattern: ^[A-Z]{2}$
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - postal_code
                          - type: string
                            enum:
                              - zip
                          - type: string
                            enum:
                              - zip_plus_four
                          - type: string
                            enum:
                              - outward
                          - type: string
                            enum:
                              - full
                          - type: string
                            enum:
                              - fsa
                          - type: string
                            enum:
                              - plz
                          - type: string
                            enum:
                              - code_postal
                          - type: string
                            enum:
                              - postcode
                          - type: string
                            enum:
                              - cep
                          - type: string
                            enum:
                              - pin
                          - type: string
                            enum:
                              - custom
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - country
                      - system
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - system
                      - values
                    additionalProperties: {}
            geo_postal_areas_exclude:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      country:
                        type: string
                        pattern: ^[A-Z]{2}$
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - postal_code
                          - type: string
                            enum:
                              - zip
                          - type: string
                            enum:
                              - zip_plus_four
                          - type: string
                            enum:
                              - outward
                          - type: string
                            enum:
                              - full
                          - type: string
                            enum:
                              - fsa
                          - type: string
                            enum:
                              - plz
                          - type: string
                            enum:
                              - code_postal
                          - type: string
                            enum:
                              - postcode
                          - type: string
                            enum:
                              - cep
                          - type: string
                            enum:
                              - pin
                          - type: string
                            enum:
                              - custom
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - country
                      - system
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - system
                      - values
                    additionalProperties: {}
            daypart_targets:
              type: array
              items:
                type: object
                properties:
                  days:
                    type: array
                    items:
                      anyOf:
                        - type: string
                          enum:
                            - monday
                        - type: string
                          enum:
                            - tuesday
                        - type: string
                          enum:
                            - wednesday
                        - type: string
                          enum:
                            - thursday
                        - type: string
                          enum:
                            - friday
                        - type: string
                          enum:
                            - saturday
                        - type: string
                          enum:
                            - sunday
                  start_hour:
                    type: number
                    minimum: 0
                    maximum: 23
                  end_hour:
                    type: number
                    minimum: 1
                    maximum: 24
                  label:
                    type: string
                required:
                  - days
                  - start_hour
                  - end_hour
                additionalProperties: {}
            axe_include_segment:
              type: string
            axe_exclude_segment:
              type: string
            audience_include:
              type: array
              items:
                type: string
            audience_exclude:
              type: array
              items:
                type: string
            signal_targeting_groups:
              type: object
              properties:
                operator:
                  type: string
                  enum:
                    - all
                groups:
                  type: array
                  items:
                    type: object
                    properties:
                      operator:
                        anyOf:
                          - type: string
                            enum:
                              - any
                          - type: string
                            enum:
                              - none
                      signals:
                        type: array
                        items:
                          type: object
                          properties:
                            pricing_option_id:
                              type: string
                            signal_agent_segment_id:
                              type: string
                            activation_key:
                              anyOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - segment_id
                                    segment_id:
                                      type: string
                                  required:
                                    - type
                                    - segment_id
                                  additionalProperties: {}
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - key_value
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                    - type
                                    - key
                                    - value
                                  additionalProperties: {}
                          additionalProperties: {}
                    required:
                      - operator
                      - signals
                    additionalProperties: {}
              required:
                - operator
                - groups
              additionalProperties: {}
            signal_targeting:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - binary
                      value:
                        type: boolean
                    required:
                      - value_type
                      - value
                    additionalProperties: {}
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - categorical
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - value_type
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - numeric
                      min_value:
                        type: number
                      max_value:
                        type: number
                    required:
                      - value_type
                    additionalProperties: {}
            frequency_cap:
              type: object
              properties:
                suppress:
                  type: object
                  properties:
                    interval:
                      type: number
                      minimum: 1
                    unit:
                      anyOf:
                        - type: string
                          enum:
                            - seconds
                        - type: string
                          enum:
                            - minutes
                        - type: string
                          enum:
                            - hours
                        - type: string
                          enum:
                            - days
                        - type: string
                          enum:
                            - campaign
                  required:
                    - interval
                    - unit
                  additionalProperties: {}
                suppress_minutes:
                  type: number
                  minimum: 0
                max_impressions:
                  type: number
                  minimum: 1
                per:
                  anyOf:
                    - type: string
                      enum:
                        - individuals
                    - type: string
                      enum:
                        - households
                    - type: string
                      enum:
                        - devices
                    - type: string
                      enum:
                        - accounts
                    - type: string
                      enum:
                        - cookies
                    - type: string
                      enum:
                        - custom
                window:
                  type: object
                  properties:
                    interval:
                      type: number
                      minimum: 1
                    unit:
                      anyOf:
                        - type: string
                          enum:
                            - seconds
                        - type: string
                          enum:
                            - minutes
                        - type: string
                          enum:
                            - hours
                        - type: string
                          enum:
                            - days
                        - type: string
                          enum:
                            - campaign
                  required:
                    - interval
                    - unit
                  additionalProperties: {}
              additionalProperties: {}
            property_list:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            collection_list:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            collection_list_exclude:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            age_restriction:
              type: object
              properties:
                min:
                  type: number
                  minimum: 13
                  maximum: 99
                verification_required:
                  type: boolean
                accepted_methods:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum:
                          - facial_age_estimation
                      - type: string
                        enum:
                          - id_document
                      - type: string
                        enum:
                          - digital_id
                      - type: string
                        enum:
                          - credit_card
                      - type: string
                        enum:
                          - world_id
              required:
                - min
              additionalProperties: {}
            device_platform:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - ios
                  - type: string
                    enum:
                      - android
                  - type: string
                    enum:
                      - windows
                  - type: string
                    enum:
                      - macos
                  - type: string
                    enum:
                      - linux
                  - type: string
                    enum:
                      - chromeos
                  - type: string
                    enum:
                      - tvos
                  - type: string
                    enum:
                      - tizen
                  - type: string
                    enum:
                      - webos
                  - type: string
                    enum:
                      - fire_os
                  - type: string
                    enum:
                      - roku_os
                  - type: string
                    enum:
                      - unknown
            device_type:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - desktop
                  - type: string
                    enum:
                      - mobile
                  - type: string
                    enum:
                      - tablet
                  - type: string
                    enum:
                      - ctv
                  - type: string
                    enum:
                      - dooh
                  - type: string
                    enum:
                      - unknown
            device_type_exclude:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - desktop
                  - type: string
                    enum:
                      - mobile
                  - type: string
                    enum:
                      - tablet
                  - type: string
                    enum:
                      - ctv
                  - type: string
                    enum:
                      - dooh
                  - type: string
                    enum:
                      - unknown
            store_catchments:
              type: array
              items:
                type: object
                properties:
                  catalog_id:
                    type: string
                  store_ids:
                    type: array
                    items:
                      type: string
                  catchment_ids:
                    type: array
                    items:
                      type: string
                required:
                  - catalog_id
                additionalProperties: {}
            geo_proximity:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      travel_time:
                        type: object
                        properties:
                          value:
                            type: number
                            minimum: 1
                          unit:
                            anyOf:
                              - type: string
                                enum:
                                  - min
                              - type: string
                                enum:
                                  - hr
                        required:
                          - value
                          - unit
                        additionalProperties: {}
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - lat
                      - lng
                      - travel_time
                      - transport_mode
                    additionalProperties: {}
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      radius:
                        type: object
                        properties:
                          value:
                            type: number
                          unit:
                            anyOf:
                              - type: string
                                enum:
                                  - km
                              - type: string
                                enum:
                                  - mi
                              - type: string
                                enum:
                                  - m
                        required:
                          - value
                          - unit
                        additionalProperties: {}
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - lat
                      - lng
                      - radius
                    additionalProperties: {}
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      geometry:
                        type: object
                        properties:
                          type:
                            anyOf:
                              - type: string
                                enum:
                                  - Polygon
                              - type: string
                                enum:
                                  - MultiPolygon
                          coordinates:
                            type: array
                            items: {}
                        required:
                          - type
                          - coordinates
                        additionalProperties: {}
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - geometry
                    additionalProperties: {}
            language:
              type: array
              items:
                type: string
            keyword_targets:
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                  match_type:
                    anyOf:
                      - type: string
                        enum:
                          - broad
                      - type: string
                        enum:
                          - phrase
                      - type: string
                        enum:
                          - exact
                  bid_price:
                    type: number
                    minimum: 0
                required:
                  - keyword
                  - match_type
                additionalProperties: {}
            negative_keywords:
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                  match_type:
                    anyOf:
                      - type: string
                        enum:
                          - broad
                      - type: string
                        enum:
                          - phrase
                      - type: string
                        enum:
                          - exact
                required:
                  - keyword
                  - match_type
                additionalProperties: {}
          additionalProperties: {}
        pageId:
          description: >-
            Platform-specific page identity for ad placements. Required for Meta
            products when the connected ad account has more than one authorized
            Facebook Page — pass one of the page IDs listed in the error
            message. Omit when the account has exactly one authorized page (the
            server selects it automatically).
          example: '1147910135081908'
          type: string
          minLength: 1
        pixelId:
          description: >-
            Meta Pixel / Dataset ID for conversion tracking. Required for Meta
            Sales (OUTCOME_SALES) products — pass the pixel ID listed in the
            error message. There is no auto-select: every Meta Sales buy must
            explicitly specify a pixel.
          example: '123456789012345'
          type: string
          minLength: 1
      required:
        - productId
    SelectedProduct:
      description: A product selected for inclusion in a discovery session
      type: object
      properties:
        productId:
          description: Product ID
          type: string
        storefrontId:
          description: Storefront this product selection came from
          type: string
        inventorySourceId:
          description: Typed 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:
              type: array
              items:
                type: string
            geo_countries_exclude:
              type: array
              items:
                type: string
            geo_regions:
              type: array
              items:
                type: string
            geo_regions_exclude:
              type: array
              items:
                type: string
            geo_metros:
              type: array
              items:
                type: object
                properties:
                  system:
                    anyOf:
                      - type: string
                        enum:
                          - nielsen_dma
                      - type: string
                        enum:
                          - uk_itl1
                      - type: string
                        enum:
                          - uk_itl2
                      - type: string
                        enum:
                          - eurostat_nuts2
                      - type: string
                        enum:
                          - custom
                  values:
                    type: array
                    items:
                      type: string
                required:
                  - system
                  - values
                additionalProperties: {}
            geo_metros_exclude:
              type: array
              items:
                type: object
                properties:
                  system:
                    anyOf:
                      - type: string
                        enum:
                          - nielsen_dma
                      - type: string
                        enum:
                          - uk_itl1
                      - type: string
                        enum:
                          - uk_itl2
                      - type: string
                        enum:
                          - eurostat_nuts2
                      - type: string
                        enum:
                          - custom
                  values:
                    type: array
                    items:
                      type: string
                required:
                  - system
                  - values
                additionalProperties: {}
            geo_postal_areas:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      country:
                        type: string
                        pattern: ^[A-Z]{2}$
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - postal_code
                          - type: string
                            enum:
                              - zip
                          - type: string
                            enum:
                              - zip_plus_four
                          - type: string
                            enum:
                              - outward
                          - type: string
                            enum:
                              - full
                          - type: string
                            enum:
                              - fsa
                          - type: string
                            enum:
                              - plz
                          - type: string
                            enum:
                              - code_postal
                          - type: string
                            enum:
                              - postcode
                          - type: string
                            enum:
                              - cep
                          - type: string
                            enum:
                              - pin
                          - type: string
                            enum:
                              - custom
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - country
                      - system
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - system
                      - values
                    additionalProperties: {}
            geo_postal_areas_exclude:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      country:
                        type: string
                        pattern: ^[A-Z]{2}$
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - postal_code
                          - type: string
                            enum:
                              - zip
                          - type: string
                            enum:
                              - zip_plus_four
                          - type: string
                            enum:
                              - outward
                          - type: string
                            enum:
                              - full
                          - type: string
                            enum:
                              - fsa
                          - type: string
                            enum:
                              - plz
                          - type: string
                            enum:
                              - code_postal
                          - type: string
                            enum:
                              - postcode
                          - type: string
                            enum:
                              - cep
                          - type: string
                            enum:
                              - pin
                          - type: string
                            enum:
                              - custom
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - country
                      - system
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      system:
                        anyOf:
                          - type: string
                            enum:
                              - us_zip
                          - type: string
                            enum:
                              - us_zip_plus_four
                          - type: string
                            enum:
                              - gb_outward
                          - type: string
                            enum:
                              - gb_full
                          - type: string
                            enum:
                              - ca_fsa
                          - type: string
                            enum:
                              - ca_full
                          - type: string
                            enum:
                              - de_plz
                          - type: string
                            enum:
                              - fr_code_postal
                          - type: string
                            enum:
                              - au_postcode
                          - type: string
                            enum:
                              - ch_plz
                          - type: string
                            enum:
                              - at_plz
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - system
                      - values
                    additionalProperties: {}
            daypart_targets:
              type: array
              items:
                type: object
                properties:
                  days:
                    type: array
                    items:
                      anyOf:
                        - type: string
                          enum:
                            - monday
                        - type: string
                          enum:
                            - tuesday
                        - type: string
                          enum:
                            - wednesday
                        - type: string
                          enum:
                            - thursday
                        - type: string
                          enum:
                            - friday
                        - type: string
                          enum:
                            - saturday
                        - type: string
                          enum:
                            - sunday
                  start_hour:
                    type: number
                    minimum: 0
                    maximum: 23
                  end_hour:
                    type: number
                    minimum: 1
                    maximum: 24
                  label:
                    type: string
                required:
                  - days
                  - start_hour
                  - end_hour
                additionalProperties: {}
            axe_include_segment:
              type: string
            axe_exclude_segment:
              type: string
            audience_include:
              type: array
              items:
                type: string
            audience_exclude:
              type: array
              items:
                type: string
            signal_targeting_groups:
              type: object
              properties:
                operator:
                  type: string
                  enum:
                    - all
                groups:
                  type: array
                  items:
                    type: object
                    properties:
                      operator:
                        anyOf:
                          - type: string
                            enum:
                              - any
                          - type: string
                            enum:
                              - none
                      signals:
                        type: array
                        items:
                          type: object
                          properties:
                            pricing_option_id:
                              type: string
                            signal_agent_segment_id:
                              type: string
                            activation_key:
                              anyOf:
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - segment_id
                                    segment_id:
                                      type: string
                                  required:
                                    - type
                                    - segment_id
                                  additionalProperties: {}
                                - type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - key_value
                                    key:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                    - type
                                    - key
                                    - value
                                  additionalProperties: {}
                          additionalProperties: {}
                    required:
                      - operator
                      - signals
                    additionalProperties: {}
              required:
                - operator
                - groups
              additionalProperties: {}
            signal_targeting:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - binary
                      value:
                        type: boolean
                    required:
                      - value_type
                      - value
                    additionalProperties: {}
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - categorical
                      values:
                        type: array
                        items:
                          type: string
                    required:
                      - value_type
                      - values
                    additionalProperties: {}
                  - type: object
                    properties:
                      signal_ref:
                        anyOf:
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - product
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - data_provider
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - data_provider_domain
                              - signal_id
                            additionalProperties: {}
                          - type: object
                            properties:
                              scope:
                                type: string
                                enum:
                                  - signal_source
                              signal_source_url:
                                type: string
                              signal_id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - scope
                              - signal_source_url
                              - signal_id
                            additionalProperties: {}
                      signal_id:
                        anyOf:
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - catalog
                              data_provider_domain:
                                type: string
                                pattern: >-
                                  ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - data_provider_domain
                              - id
                            additionalProperties: {}
                          - type: object
                            properties:
                              source:
                                type: string
                                enum:
                                  - agent
                              agent_url:
                                type: string
                              id:
                                type: string
                                pattern: ^[a-zA-Z0-9_-]+$
                            required:
                              - source
                              - agent_url
                              - id
                            additionalProperties: {}
                      value_type:
                        type: string
                        enum:
                          - numeric
                      min_value:
                        type: number
                      max_value:
                        type: number
                    required:
                      - value_type
                    additionalProperties: {}
            frequency_cap:
              type: object
              properties:
                suppress:
                  type: object
                  properties:
                    interval:
                      type: number
                      minimum: 1
                    unit:
                      anyOf:
                        - type: string
                          enum:
                            - seconds
                        - type: string
                          enum:
                            - minutes
                        - type: string
                          enum:
                            - hours
                        - type: string
                          enum:
                            - days
                        - type: string
                          enum:
                            - campaign
                  required:
                    - interval
                    - unit
                  additionalProperties: {}
                suppress_minutes:
                  type: number
                  minimum: 0
                max_impressions:
                  type: number
                  minimum: 1
                per:
                  anyOf:
                    - type: string
                      enum:
                        - individuals
                    - type: string
                      enum:
                        - households
                    - type: string
                      enum:
                        - devices
                    - type: string
                      enum:
                        - accounts
                    - type: string
                      enum:
                        - cookies
                    - type: string
                      enum:
                        - custom
                window:
                  type: object
                  properties:
                    interval:
                      type: number
                      minimum: 1
                    unit:
                      anyOf:
                        - type: string
                          enum:
                            - seconds
                        - type: string
                          enum:
                            - minutes
                        - type: string
                          enum:
                            - hours
                        - type: string
                          enum:
                            - days
                        - type: string
                          enum:
                            - campaign
                  required:
                    - interval
                    - unit
                  additionalProperties: {}
              additionalProperties: {}
            property_list:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            collection_list:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            collection_list_exclude:
              type: object
              properties:
                agent_url:
                  type: string
                list_id:
                  type: string
                  minLength: 1
                auth_token:
                  type: string
              required:
                - agent_url
                - list_id
              additionalProperties: {}
            age_restriction:
              type: object
              properties:
                min:
                  type: number
                  minimum: 13
                  maximum: 99
                verification_required:
                  type: boolean
                accepted_methods:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        enum:
                          - facial_age_estimation
                      - type: string
                        enum:
                          - id_document
                      - type: string
                        enum:
                          - digital_id
                      - type: string
                        enum:
                          - credit_card
                      - type: string
                        enum:
                          - world_id
              required:
                - min
              additionalProperties: {}
            device_platform:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - ios
                  - type: string
                    enum:
                      - android
                  - type: string
                    enum:
                      - windows
                  - type: string
                    enum:
                      - macos
                  - type: string
                    enum:
                      - linux
                  - type: string
                    enum:
                      - chromeos
                  - type: string
                    enum:
                      - tvos
                  - type: string
                    enum:
                      - tizen
                  - type: string
                    enum:
                      - webos
                  - type: string
                    enum:
                      - fire_os
                  - type: string
                    enum:
                      - roku_os
                  - type: string
                    enum:
                      - unknown
            device_type:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - desktop
                  - type: string
                    enum:
                      - mobile
                  - type: string
                    enum:
                      - tablet
                  - type: string
                    enum:
                      - ctv
                  - type: string
                    enum:
                      - dooh
                  - type: string
                    enum:
                      - unknown
            device_type_exclude:
              type: array
              items:
                anyOf:
                  - type: string
                    enum:
                      - desktop
                  - type: string
                    enum:
                      - mobile
                  - type: string
                    enum:
                      - tablet
                  - type: string
                    enum:
                      - ctv
                  - type: string
                    enum:
                      - dooh
                  - type: string
                    enum:
                      - unknown
            store_catchments:
              type: array
              items:
                type: object
                properties:
                  catalog_id:
                    type: string
                  store_ids:
                    type: array
                    items:
                      type: string
                  catchment_ids:
                    type: array
                    items:
                      type: string
                required:
                  - catalog_id
                additionalProperties: {}
            geo_proximity:
              type: array
              items:
                anyOf:
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      travel_time:
                        type: object
                        properties:
                          value:
                            type: number
                            minimum: 1
                          unit:
                            anyOf:
                              - type: string
                                enum:
                                  - min
                              - type: string
                                enum:
                                  - hr
                        required:
                          - value
                          - unit
                        additionalProperties: {}
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - lat
                      - lng
                      - travel_time
                      - transport_mode
                    additionalProperties: {}
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      radius:
                        type: object
                        properties:
                          value:
                            type: number
                          unit:
                            anyOf:
                              - type: string
                                enum:
                                  - km
                              - type: string
                                enum:
                                  - mi
                              - type: string
                                enum:
                                  - m
                        required:
                          - value
                          - unit
                        additionalProperties: {}
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - lat
                      - lng
                      - radius
                    additionalProperties: {}
                  - type: object
                    properties:
                      lat:
                        type: number
                        minimum: -90
                        maximum: 90
                      lng:
                        type: number
                        minimum: -180
                        maximum: 180
                      label:
                        type: string
                      transport_mode:
                        anyOf:
                          - type: string
                            enum:
                              - walking
                          - type: string
                            enum:
                              - cycling
                          - type: string
                            enum:
                              - driving
                          - type: string
                            enum:
                              - public_transport
                      geometry:
                        type: object
                        properties:
                          type:
                            anyOf:
                              - type: string
                                enum:
                                  - Polygon
                              - type: string
                                enum:
                                  - MultiPolygon
                          coordinates:
                            type: array
                            items: {}
                        required:
                          - type
                          - coordinates
                        additionalProperties: {}
                      ext:
                        type: object
                        properties: {}
                        additionalProperties: {}
                    required:
                      - geometry
                    additionalProperties: {}
            language:
              type: array
              items:
                type: string
            keyword_targets:
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                  match_type:
                    anyOf:
                      - type: string
                        enum:
                          - broad
                      - type: string
                        enum:
                          - phrase
                      - type: string
                        enum:
                          - exact
                  bid_price:
                    type: number
                    minimum: 0
                required:
                  - keyword
                  - match_type
                additionalProperties: {}
            negative_keywords:
              type: array
              items:
                type: object
                properties:
                  keyword:
                    type: string
                    minLength: 1
                  match_type:
                    anyOf:
                      - type: string
                        enum:
                          - broad
                      - type: string
                        enum:
                          - phrase
                      - type: string
                        enum:
                          - exact
                required:
                  - keyword
                  - match_type
                additionalProperties: {}
          additionalProperties: {}
        selectedAt:
          description: When the product was selected (ISO 8601)
          type: string
        groupId:
          description: Group ID where product was discovered
          type: string
        groupName:
          description: Name of the group
          type: string
      required:
        - productId
        - salesAgentId
        - selectedAt
        - groupId
        - groupName
      additionalProperties: false
    BudgetContextResponse:
      description: Budget allocation context
      type: object
      properties:
        sessionBudget:
          description: Total budget set for the session
          nullable: true
          type: number
        allocatedBudget:
          description: Budget allocated to selected products
          type: number
        remainingBudget:
          description: Remaining unallocated budget
          nullable: true
          type: number
        budgetWarning:
          description: Warning message if budget allocation has issues
          type: string
      required:
        - sessionBudget
        - allocatedBudget
        - remainingBudget
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````