openapi: 3.2.0 info: title: Scope3 Buyer Product Discovery 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 tags: - name: Product Discovery description: Discover and select products paths: /products/query: post: operationId: getMarketplaceProducts summary: Get products across storefronts description: Send a canonical AdCP get_products request across selected or all connected storefronts. Omit ext.interchange.screening for unscreened retrieval or provide buyer instructions for managed proposal accept, reject, and refine screening. Provisional responses are replacement snapshots; terminal cursors reference the frozen result. tags: - Product Discovery security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/GetProductsBody' responses: '200': description: Get products across storefronts content: application/json: schema: $ref: '#/components/schemas/ProjectedGetProductsResponse' '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' /media-buys/batch: post: operationId: createMediaBuysBatch summary: Stage or execute products across storefronts description: Continue from a multi-storefront get_products execution by staging qualified proposals/products on a DRAFT campaign cart, with optional execution through the existing per-storefront media-buy path. tags: - Product Discovery security: - bearerAuth: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateMediaBuysBatchBody' responses: '200': description: Stage or execute products across storefronts content: application/json: schema: $ref: '#/components/schemas/CreateMediaBuysBatchResponse' '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' /discovery/discover-products: post: operationId: discoverProducts summary: Discover products description: Discover products with automatic session creation. If discoveryId is not provided, a new session is created automatically. Returns discoveryId and discovered products. tags: - Product Discovery security: - bearerAuth: [] requestBody: required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/DiscoverProductsBody' responses: '200': description: Discover products content: application/json: schema: $ref: '#/components/schemas/DiscoverProductsResponse' '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' /discovery/{discoveryId}/discover-products: get: operationId: browseProducts summary: Browse products for discovery session description: Browse available products for an existing discovery session. Returns product suggestions grouped by publisher with pagination support. tags: - Product Discovery security: - bearerAuth: [] parameters: - in: query name: groupLimit schema: description: 'Maximum number of product groups to return (default: 10, max: 10)' example: 10 default: 10 type: integer maximum: 10 minimum: 1 description: 'Maximum number of product groups to return (default: 10, max: 10)' - in: query name: groupOffset schema: description: Number of groups to skip for pagination example: 0 default: 0 type: integer minimum: 0 maximum: 9007199254740991 description: Number of groups to skip for pagination - in: query name: productsPerGroup schema: description: 'Maximum products to return per group (default: 10, max: 15)' example: 10 default: 10 type: integer maximum: 15 minimum: 1 description: 'Maximum products to return per group (default: 10, max: 15)' - in: query name: productOffset schema: description: 'Number of products to skip within each group (default: 0, max: 1000)' example: 5 default: 0 type: integer minimum: 0 maximum: 1000 description: 'Number of products to skip within each group (default: 0, max: 1000)' - in: query name: publisherDomain schema: description: Filter products by publisher domain (exact domain component match) example: hulu type: string minLength: 1 description: Filter products by publisher domain (exact domain component match) - in: query name: pricingModel schema: description: Filter products by pricing model example: cpm type: string enum: - cpm - vcpm - cpc - cpcv - cpv - cpp - cpa - flat_rate - time description: Filter products by pricing model - in: query name: storefrontIds schema: description: Filter products by storefront ID(s) (from `list_storefronts`). example: - 42 - 57 anyOf: - maxItems: 50 type: array items: type: integer maximum: 9007199254740991 minimum: 1 - type: string description: Filter products by storefront ID(s) (from `list_storefronts`). - in: query name: storefrontNames schema: description: Filter products by storefront name (case-insensitive substring match). example: - Acme - Acme Exchange anyOf: - maxItems: 50 type: array items: type: string maxLength: 255 - type: string description: Filter products by storefront name (case-insensitive substring match). - in: query name: debug schema: description: When true, includes detailed ADCP agent request/response debug logs in the response for troubleshooting anyOf: - type: boolean - type: string description: When true, includes detailed ADCP agent request/response debug logs in the response for troubleshooting - in: query name: waitMode schema: description: '`quick` waits up to 30 seconds per storefront agent and returns partial results if slow agents miss the window. `long` waits up to 210 seconds per storefront agent; ask the user before using it.' example: quick default: quick type: string enum: - quick - long description: '`quick` waits up to 30 seconds per storefront agent and returns partial results if slow agents miss the window. `long` waits up to 210 seconds per storefront agent; ask the user before using it.' - in: query name: waitSeconds schema: description: Optional explicit per-storefront wait in seconds, max 210. Overrides waitMode. Ask the user before setting this above 30. example: 120 type: integer maximum: 210 minimum: 1 description: Optional explicit per-storefront wait in seconds, max 210. Overrides waitMode. Ask the user before setting this above 30. - in: query name: sinceRevision schema: description: 'Progressive polling: return only seller groups that landed after this snapshot revision. Groups use REPLACE semantics — a group may be re-delivered at a later revision when more of its products land; replace it by groupId, never append. The response always carries the current `revision`, `resultsComplete`, and `pendingAgents`; poll again with the returned revision until `resultsComplete` is true, and stop polling after roughly the wait budget if it never turns true (the fan-out may have been interrupted).' example: 3 type: integer minimum: 0 maximum: 9007199254740991 description: 'Progressive polling: return only seller groups that landed after this snapshot revision. Groups use REPLACE semantics — a group may be re-delivered at a later revision when more of its products land; replace it by groupId, never append. The response always carries the current `revision`, `resultsComplete`, and `pendingAgents`; poll again with the returned revision until `resultsComplete` is true, and stop polling after roughly the wait budget if it never turns true (the fan-out may have been interrupted).' - in: path name: discoveryId schema: description: Discovery ID example: abc123-def456-ghi789 type: string minLength: 1 required: true description: Discovery ID responses: '200': description: Browse products for discovery session content: application/json: schema: $ref: '#/components/schemas/DiscoverProductsResponse' '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' /discovery/{discoveryId}/products/{productId}/details: get: operationId: getProductDetails summary: Get product details description: Get the full detail view for a single discovered product — description, pricing, delivery windows, and creative format requirements. Requires the `salesAgentId` the product was discovered through. tags: - Product Discovery security: - bearerAuth: [] parameters: - in: query name: salesAgentId schema: description: Sales agent ID for the product type: string minLength: 1 required: true description: Sales agent ID for the product - in: path name: discoveryId schema: description: Discovery session id. type: string minLength: 1 required: true description: Discovery session id. - in: path name: productId schema: description: Discovered product id. type: string minLength: 1 required: true description: Discovered product id. responses: '200': description: Get product details content: application/json: schema: $ref: '#/components/schemas/DiscoveryProductDetail' '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' /discovery/{discoveryId}/products: get: operationId: getProducts summary: Get selected products description: Get the list of products that have been selected in this discovery session. tags: - Product Discovery security: - bearerAuth: [] parameters: - in: path name: discoveryId schema: description: Discovery ID example: abc123-def456-ghi789 type: string minLength: 1 required: true description: Discovery ID responses: '200': description: Get selected products 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' post: operationId: addProducts summary: Add products to selection description: Add products to the selection. Products must have been discovered via GET /discovery/{discoveryId}/discover-products first. tags: - Product Discovery security: - bearerAuth: [] 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' delete: operationId: removeProducts summary: Remove products from selection description: Remove products from the selection. tags: - Product Discovery security: - bearerAuth: [] 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/RemoveProductsRequest' responses: '200': description: Remove products from 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' /discovery/{discoveryId}/apply-proposal: post: operationId: applyProposal summary: Apply a proposal description: Apply a sales agent proposal to auto-add products with recommended budget allocations. Requires discover-products to have been called first. tags: - Product Discovery security: - bearerAuth: [] 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/ApplyProposalRequest' responses: '200': description: Apply a proposal content: application/json: schema: $ref: '#/components/schemas/ApplyProposalResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' components: schemas: DiscoveryProductDetail: type: object properties: productId: type: string name: type: string description: type: string channel: type: string deliveryType: type: string enum: - guaranteed - non_guaranteed salesAgentId: type: string salesAgentName: type: string storefrontId: type: string storefrontName: type: string cpm: type: number currency: description: ISO currency code for `cpm`. Absent when unknown. type: string required: - productId - name additionalProperties: {} CreateDiscoveryCampaignBody: description: Request body for creating a discovery-mode campaign type: object properties: advertiserId: description: Advertiser ID that will own this campaign example: 12345 type: integer maximum: 9007199254740991 minimum: 1 name: description: Name of the campaign example: Q1 2025 Campaign type: string minLength: 1 maxLength: 255 flightDates: description: Campaign flight dates type: object properties: startDate: description: Campaign start date (ISO 8601) example: '2025-01-15T00:00:00Z' type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ endDate: description: Campaign end date (ISO 8601) example: '2025-03-31T23:59:59Z' type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - startDate - endDate budget: description: Campaign budget configuration type: object properties: total: type: number exclusiveMinimum: 0 currency: description: Optional ISO 4217 currency. If provided it must match the advertiser's primary currency; otherwise the advertiser's currency is used. Campaigns cannot be created in a currency other than the advertiser's. type: string minLength: 3 maxLength: 3 dailyCap: type: number exclusiveMinimum: 0 pacing: type: string enum: - EVEN - ASAP - FRONTLOADED required: - total brief: description: Natural language brief for product search context example: Looking for premium video inventory targeting tech enthusiasts type: string maxLength: 5000 constraints: description: Campaign targeting constraints 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: {} language: type: array items: type: string 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 channels: description: Channels to target (e.g., ["ctv", "display"]) type: array items: type: string countries: description: 'Deprecated: use geo_countries. Countries to target (ISO 3166-1 alpha-2 codes). Values are normalized into geo_countries on write.' deprecated: true maxItems: 250 type: array items: type: string pattern: ^[A-Z]{2}$ additionalProperties: {} storefrontIds: description: Storefront IDs the campaign is limited to. When set, every `discover_products` run for this campaign auto-applies this filter — buyers do not need to resend it. Pass the IDs returned by `list_storefronts`. Highly encouraged so the campaign only sources inventory from sellers the buyer has chosen. example: - 42 - 57 maxItems: 50 type: array items: type: integer maximum: 9007199254740991 minimum: 1 discoveryId: description: Attach an existing discovery session to the campaign example: abc123-def456-ghi789 type: string minLength: 1 productIds: description: Product IDs to pre-select from the discovery session (requires discoveryId) example: - prod_123 - prod_456 type: array items: type: string audienceConfig: description: Audience targeting and suppression configuration. On create, listed audiences are attached to the campaign. type: object properties: targetAudienceIds: description: Audience IDs to target with this campaign example: - aud_123 - aud_456 maxItems: 100 type: array items: type: string minLength: 1 suppressAudienceIds: description: Audience IDs to suppress (exclude) from this campaign example: - aud_789 maxItems: 100 type: array items: type: string minLength: 1 performanceConfig: description: Performance optimization configuration allOf: - $ref: '#/components/schemas/PerformanceConfig' optimizationApplyMode: description: Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. If omitted, inherits the advertiser-level setting. allOf: - $ref: '#/components/schemas/OptimizationApplyMode' catalogId: description: ID of a catalog (from the advertiser catalogs list) to attach to this campaign. Only one catalog may be attached per campaign. example: 42 type: integer maximum: 9007199254740991 minimum: 1 pacingPeriods: description: Pacing schedule for the campaign. Defines time-based spend periods with varying intensity. In weight mode, budget is distributed proportionally by weighted days. In budget mode, explicit dollar amounts are set per period. Gaps between periods are treated as pauses (no spend). On execution, each product is split into one package per period with proportional budget. allOf: - $ref: '#/components/schemas/PacingPeriods' utmConfig: description: UTM (Urchin Tracking Module) parameter configuration for this campaign. Overrides advertiser-level defaults for matching param keys. allOf: - $ref: '#/components/schemas/CampaignUtmConfig' dataDelivery: $ref: '#/components/schemas/CampaignDataDeliveryInput' frequencyCaps: description: Buyer-side frequency cap configs to apply to this campaign. Enforced by Scope3 across all publishers. type: array items: $ref: '#/components/schemas/FrequencyCapConfigInput' mode: description: '"I have a brief; find it for me" — platform-managed.' type: string enum: - discovery required: - advertiserId - name - flightDates - budget - mode DiscoveryTraceDiagnostics: description: Advanced support diagnostics for tracing a discovery fan-out. type: object properties: traceId: description: OpenTelemetry trace ID for the discovery request/fan-out. example: 4bf92f3577b34da6a3ce929d0e0e4736 type: string spanId: description: OpenTelemetry span ID for the request span that initiated the discovery fan-out. example: 00f067aa0ba902b7 type: string traceparent: description: W3C traceparent value that can be pasted into internal tracing tools. example: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 type: string required: - traceId - spanId - traceparent additionalProperties: false PricingOptionData: description: Pricing option from a sales agent type: object properties: pricingOptionId: type: string pricingModel: type: string isFixed: type: boolean rate: type: number floorPrice: type: number fixedPrice: type: number currency: type: string priceGuidance: description: Cached auction guidance percentiles from the Sales Agent. These are estimates, not floors. type: object properties: floor: type: - number - 'null' p25: type: - number - 'null' p50: type: - number - 'null' p75: type: - number - 'null' p90: type: - number - 'null' additionalProperties: false additionalProperties: false 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 GetProductsBody: description: Canonical AdCP get_products request with optional Interchange multi-storefront and buyer-intelligence controls. type: object properties: adcp_version: type: string adcp_major_version: type: number buying_mode: anyOf: - type: string enum: - brief - type: string enum: - wholesale - type: string enum: - refine brief: type: string refine: type: array items: anyOf: - type: object properties: scope: type: string enum: - request ask: type: string minLength: 1 required: - scope - ask additionalProperties: {} - type: object properties: scope: type: string enum: - product product_id: type: string minLength: 1 action: anyOf: - type: string enum: - include - type: string enum: - omit - type: string enum: - more_like_this ask: type: string minLength: 1 required: - scope - product_id additionalProperties: {} - type: object properties: scope: type: string enum: - proposal proposal_id: type: string minLength: 1 action: anyOf: - type: string enum: - include - type: string enum: - omit - type: string enum: - finalize ask: type: string minLength: 1 required: - scope - proposal_id additionalProperties: {} brand: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} catalog: type: object properties: catalog_id: type: string name: type: string type: anyOf: - type: string enum: - offering - type: string enum: - product - type: string enum: - inventory - type: string enum: - store - type: string enum: - promotion - type: string enum: - hotel - type: string enum: - flight - type: string enum: - job - type: string enum: - vehicle - type: string enum: - real_estate - type: string enum: - education - type: string enum: - destination - type: string enum: - app url: type: string feed_format: anyOf: - type: string enum: - google_merchant_center - type: string enum: - facebook_catalog - type: string enum: - shopify - type: string enum: - linkedin_jobs - type: string enum: - tiktok_shop - type: string enum: - pinterest_catalog - type: string enum: - openai_product_feed - type: string enum: - custom update_frequency: anyOf: - type: string enum: - realtime - type: string enum: - hourly - type: string enum: - daily - type: string enum: - weekly items: type: array items: type: object properties: {} additionalProperties: {} ids: type: array items: type: string gtins: type: array items: type: string tags: type: array items: type: string category: type: string query: type: string conversion_events: type: array items: anyOf: - type: string enum: - page_view - type: string enum: - view_content - type: string enum: - select_content - type: string enum: - select_item - type: string enum: - search - type: string enum: - share - type: string enum: - add_to_cart - type: string enum: - remove_from_cart - type: string enum: - viewed_cart - type: string enum: - add_to_wishlist - type: string enum: - initiate_checkout - type: string enum: - add_payment_info - type: string enum: - purchase - type: string enum: - refund - type: string enum: - lead - type: string enum: - qualify_lead - type: string enum: - close_convert_lead - type: string enum: - disqualify_lead - type: string enum: - complete_registration - type: string enum: - subscribe - type: string enum: - follow - type: string enum: - content_view - type: string enum: - watch_milestone - type: string enum: - start_trial - type: string enum: - app_install - type: string enum: - app_launch - type: string enum: - contact - type: string enum: - schedule - type: string enum: - donate - type: string enum: - submit_application - type: string enum: - custom content_id_type: anyOf: - type: string enum: - sku - type: string enum: - gtin - type: string enum: - offering_id - type: string enum: - job_id - type: string enum: - hotel_id - type: string enum: - flight_id - type: string enum: - vehicle_id - type: string enum: - listing_id - type: string enum: - store_id - type: string enum: - program_id - type: string enum: - destination_id - type: string enum: - app_id feed_field_mappings: type: array items: type: object properties: feed_field: type: string catalog_field: type: string asset_group_id: type: string value: {} transform: anyOf: - type: string enum: - date - type: string enum: - divide - type: string enum: - boolean - type: string enum: - split format: type: string timezone: type: string by: type: number separator: type: string default: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - type additionalProperties: {} account: anyOf: - type: object properties: account_id: type: string required: - account_id additionalProperties: {} - type: object properties: brand: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} operator: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ sandbox: type: boolean required: - brand - operator additionalProperties: {} preferred_delivery_types: type: array items: anyOf: - type: string enum: - guaranteed - type: string enum: - non_guaranteed filters: type: object properties: delivery_type: anyOf: - type: string enum: - guaranteed - type: string enum: - non_guaranteed exclusivity: anyOf: - type: string enum: - none - type: string enum: - category - type: string enum: - exclusive is_fixed_price: type: boolean pricing_currencies: type: array items: type: string format_ids: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} standard_formats_only: type: boolean min_exposures: type: number minimum: 1 start_date: type: string format: date pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$ end_date: type: string format: date pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$ budget_range: type: object properties: min: type: number minimum: 0 max: type: number minimum: 0 currency: type: string pattern: ^[A-Z]{3}$ required: - currency additionalProperties: {} countries: type: array items: type: string regions: type: array items: type: string 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 code: type: string required: - system - code additionalProperties: {} channels: type: array items: anyOf: - type: string enum: - display - type: string enum: - olv - type: string enum: - social - type: string enum: - search - type: string enum: - ctv - type: string enum: - linear_tv - type: string enum: - radio - type: string enum: - streaming_audio - type: string enum: - podcast - type: string enum: - dooh - type: string enum: - ooh - type: string enum: - print - type: string enum: - cinema - type: string enum: - email - type: string enum: - gaming - type: string enum: - retail_media - type: string enum: - influencer - type: string enum: - affiliate - type: string enum: - product_placement - type: string enum: - sponsored_intelligence video_placement_types: type: array items: anyOf: - type: string enum: - instream - type: string enum: - accompanying_content - type: string enum: - interstitial - type: string enum: - standalone audio_distribution_types: type: array items: anyOf: - type: string enum: - music_streaming_service - type: string enum: - fm_am_broadcast - type: string enum: - podcast - type: string enum: - catch_up_radio - type: string enum: - web_radio - type: string enum: - video_game - type: string enum: - text_to_speech sponsored_placement_types: type: array items: anyOf: - type: string enum: - sponsored_search - type: string enum: - sponsored_display - type: string enum: - sponsored_native social_placement_surfaces: type: array items: anyOf: - type: string enum: - feed - type: string enum: - stories - type: string enum: - short_video - type: string enum: - explore - type: string enum: - search required_axe_integrations: type: array items: type: string trusted_match: type: object properties: providers: type: array items: type: object properties: agent_url: type: string context_match: type: boolean identity_match: type: boolean required: - agent_url additionalProperties: {} response_types: type: array items: anyOf: - type: string enum: - activation - type: string enum: - catalog_items - type: string enum: - creative - type: string enum: - deal additionalProperties: {} required_features: type: object properties: inline_creative_management: type: boolean property_list_filtering: type: boolean catalog_management: type: boolean committed_metrics_supported: type: boolean additionalProperties: type: boolean required_geo_targeting: type: array items: type: object properties: level: anyOf: - type: string enum: - country - type: string enum: - region - type: string enum: - metro - type: string enum: - postal_area country: type: string pattern: ^[A-Z]{2}$ system: type: string required: - level additionalProperties: {} signal_targeting: type: array items: type: object properties: targeting_mode: anyOf: - type: string enum: - include - type: string enum: - exclude additionalProperties: {} 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_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 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: {} 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: {} required: - geometry additionalProperties: {} required_performance_standards: type: array items: type: object properties: metric: anyOf: - type: string enum: - viewability - type: string enum: - ivt - type: string enum: - completion_rate - type: string enum: - brand_safety - type: string enum: - attention_score threshold: type: number minimum: 0 maximum: 1 standard: anyOf: - type: string enum: - mrc - type: string enum: - groupm vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} required: - metric - threshold - vendor additionalProperties: {} required_metrics: type: array items: anyOf: - type: string enum: - impressions - type: string enum: - spend - type: string enum: - clicks - type: string enum: - ctr - type: string enum: - views - type: string enum: - completed_views - type: string enum: - completion_rate - type: string enum: - conversions - type: string enum: - conversion_value - type: string enum: - roas - type: string enum: - cost_per_acquisition - type: string enum: - new_to_brand_rate - type: string enum: - leads - type: string enum: - reach - type: string enum: - frequency - type: string enum: - grps - type: string enum: - engagements - type: string enum: - engagement_rate - type: string enum: - follows - type: string enum: - saves - type: string enum: - profile_visits - type: string enum: - viewability - type: string enum: - quartile_data - type: string enum: - dooh_metrics - type: string enum: - cost_per_click - type: string enum: - cost_per_completed_view - type: string enum: - cpm - type: string enum: - downloads - type: string enum: - units_sold - type: string enum: - new_to_brand_units - type: string enum: - plays - type: string enum: - incremental_sales_lift - type: string enum: - brand_lift - type: string enum: - foot_traffic - type: string enum: - conversion_lift - type: string enum: - brand_search_lift required_vendor_metrics: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string additionalProperties: {} 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 additionalProperties: {} ext: type: object properties: {} 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: {} fields: type: array items: anyOf: - type: string enum: - product_id - type: string enum: - name - type: string enum: - description - type: string enum: - publisher_properties - type: string enum: - channels - type: string enum: - video_placement_types - type: string enum: - audio_distribution_types - type: string enum: - sponsored_placement_types - type: string enum: - social_placement_surfaces - type: string enum: - format_ids - type: string enum: - format_options - type: string enum: - placements - type: string enum: - delivery_type - type: string enum: - exclusivity - type: string enum: - pricing_options - type: string enum: - forecast - type: string enum: - outcome_measurement - type: string enum: - delivery_measurement - type: string enum: - reporting_capabilities - type: string enum: - creative_policy - type: string enum: - catalog_types - type: string enum: - metric_optimization - type: string enum: - conversion_tracking - type: string enum: - data_provider_signals - type: string enum: - included_signals - type: string enum: - signal_targeting_allowed - type: string enum: - signal_targeting_options - type: string enum: - signal_targeting_rules - type: string enum: - max_optimization_goals - type: string enum: - catalog_match - type: string enum: - collections - type: string enum: - collection_targeting_allowed - type: string enum: - installments - type: string enum: - brief_relevance - type: string enum: - expires_at - type: string enum: - product_card - type: string enum: - product_card_detailed - type: string enum: - enforced_policies - type: string enum: - trusted_match time_budget: 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: {} push_notification_config: type: object properties: url: type: string operation_id: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_.:-]{1,255}$ token: type: string minLength: 16 maxLength: 4096 authentication: type: object properties: schemes: type: array items: anyOf: - type: string enum: - Bearer - type: string enum: - HMAC-SHA256 credentials: type: string minLength: 32 required: - schemes - credentials additionalProperties: {} required: - url additionalProperties: {} pagination: type: object properties: max_results: type: number minimum: 1 maximum: 100 cursor: type: string additionalProperties: {} if_wholesale_feed_version: type: string if_pricing_version: type: string context: type: object properties: {} additionalProperties: {} required_policies: type: array items: type: string ext: type: object properties: interchange: type: object properties: advertiser_id: type: integer maximum: 9007199254740991 minimum: 1 storefronts: type: string enum: - all_connected storefront_ids: maxItems: 100 type: array items: type: integer maximum: 9007199254740991 minimum: 1 storefront_names: maxItems: 100 type: array items: type: string minLength: 1 maxLength: 255 execution_id: type: string minLength: 1 maxLength: 128 since_revision: type: integer minimum: 0 maximum: 9007199254740991 wait_mode: type: string enum: - quick - long wait_seconds: type: integer maximum: 210 minimum: 1 evaluation: allOf: - $ref: '#/components/schemas/ProposalEvaluationRequest' screening: allOf: - $ref: '#/components/schemas/ProposalScreeningRequest' debug: type: boolean additionalProperties: false additionalProperties: {} required: - buying_mode additionalProperties: {} FrequencyCapWindow: description: Rolling time window over which max_impressions applies (AdCP Duration shape). 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: {} MetricGoal: description: Optimize for a seller-tracked delivery metric. No event source required. type: object properties: kind: type: string enum: - metric metric: description: 'Seller-native metric to optimize for. Delivery metrics: clicks, views (viewable impressions, per AdCP), completed_views (video/audio completions, qualified by viewDurationSeconds). Duration/score: viewed_seconds, attention_seconds, attention_score. Audience action: engagements, follows, saves, profile_visits. To target a viewability rate, use metric: ''views'' with a threshold_rate target (proportion of impressions).' type: string enum: - clicks - views - completed_views - viewed_seconds - attention_seconds - attention_score - engagements - follows - saves - profile_visits - reach viewDurationSeconds: description: Minimum video view duration in seconds for completed_view. Only applicable when metric is 'completed_views'. type: number exclusiveMinimum: 0 target: description: Target for this metric. When omitted, the seller maximizes metric volume within budget. oneOf: - type: object properties: kind: type: string enum: - cost_per value: description: Target cost per unit in buy currency example: 25 type: number exclusiveMinimum: 0 required: - kind - value - type: object properties: kind: type: string enum: - threshold_rate value: description: 'Minimum per-impression value. Units depend on metric: proportion (clicks, views), seconds (viewed_seconds, attention_seconds), or score (attention_score).' example: 0.001 type: number exclusiveMinimum: 0 required: - kind - value type: object priority: description: Priority among goals on this package. 1 = highest. When omitted, sellers use array position. example: 2 type: integer minimum: 1 maximum: 9007199254740991 required: - kind - metric CreateMediaBuysBatchResponse: description: Cart and per-campaign execution outcome for a multi-storefront batch. type: object properties: productQueryId: type: string campaignId: type: string campaignCreated: type: boolean mode: type: string enum: - stage - execute campaignStatus: type: string queryProductsSelected: description: Current selected-product count in this product query. Use the media-buy references or get_campaign for the complete campaign cart. type: integer minimum: 0 maximum: 9007199254740991 proposalsApplied: type: integer minimum: 0 maximum: 9007199254740991 mediaBuysStaged: type: integer minimum: 0 maximum: 9007199254740991 mediaBuysExecuted: type: integer minimum: 0 maximum: 9007199254740991 mediaBuyRefs: description: Lightweight references to current media buys in the campaign cart, capped at 100 to keep the response agent-sized. maxItems: 100 type: array items: type: object properties: mediaBuyId: type: string status: description: 'Status of the LIVE media buy: what is delivering now. A queued change never replaces this value; it surfaces as `pendingChange`.' type: string pendingAt: description: Which layer the buy itself is parked at; only present while its own status is PENDING_APPROVAL. type: string enum: - storefront - salesagent - unknown pendingChange: description: Present when this buy has a submitted change that has not yet reached the delivering buy. Call `get_media_buy` for the field-level differences. type: object properties: status: type: string pendingAt: type: string enum: - storefront - salesagent - unknown required: - status additionalProperties: false required: - mediaBuyId - status additionalProperties: false mediaBuyRefsTruncated: description: True when the campaign has more than 100 current media buys; use get_campaign to page/drill into the campaign. type: boolean success: type: boolean noOp: type: boolean errors: type: array items: type: object properties: mediaBuyId: type: string salesAgentId: type: string message: type: string debug: {} required: - mediaBuyId - salesAgentId - message additionalProperties: false warnings: description: Non-blocking notices about this batch, e.g. the campaign pacing schedule has no periods covering today or later and needs re-planning before staged buys can execute. type: array items: type: string required: - productQueryId - campaignId - campaignCreated - mode - campaignStatus - queryProductsSelected - proposalsApplied - mediaBuysStaged - mediaBuysExecuted - mediaBuyRefs - mediaBuyRefsTruncated - success - noOp additionalProperties: false PendingDiscoveryAgent: description: A seller still answering during a progressive discovery — it has not settled yet. type: object properties: agentId: description: Sales agent identifier type: string agentName: description: Sales agent display name type: string storefronts: description: Storefronts this agent serves, when known type: array items: type: object properties: storefrontId: type: string storefrontName: type: string required: - storefrontId - storefrontName additionalProperties: false required: - agentId - agentName additionalProperties: false ProductCardData: description: Visual card data for rendering a product in UI type: object properties: image: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} title: type: string description: type: string price_label: type: string cta_label: type: string additionalProperties: false ApplyProposalRequest: description: Apply a sales agent proposal to auto-add products with recommended budget allocations type: object properties: proposalId: description: Proposal ID from the discover-products response to apply example: proposal_abc123 type: string totalBudget: description: Total budget to distribute across products. Defaults to the proposal totalBudgetGuidance.recommended. example: 50000 type: number exclusiveMinimum: 0 replace: description: When true, replaces all existing products instead of merging type: boolean required: - proposalId BatchMediaBuyCampaign: description: Use an existing campaign cart, or provide the complete fields for a new DRAFT discovery campaign. anyOf: - type: object properties: campaignId: type: string minLength: 1 required: - campaignId additionalProperties: false - type: object properties: create: $ref: '#/components/schemas/CreateDiscoveryCampaignBody' required: - create additionalProperties: false BudgetContextResponse: description: Budget allocation context type: object properties: sessionBudget: description: Total budget set for the session type: - number - 'null' allocatedBudget: description: Budget allocated to selected products type: number remainingBudget: description: Remaining unallocated budget type: - number - 'null' budgetWarning: description: Warning message if budget allocation has issues type: string required: - sessionBudget - allocatedBudget - remainingBudget additionalProperties: false DiscoveryRefinementItem: description: A refinement instruction for iterating on discovery results. Scoped to the overall request, a specific product, or a specific proposal. oneOf: - type: object properties: scope: type: string enum: - request ask: description: Direction for the overall selection (e.g., "more video options and less display") example: more video options and less display type: string minLength: 1 maxLength: 2000 required: - scope - ask - type: object properties: scope: type: string enum: - product id: description: Product ID from a previous discovery response example: product_123 type: string minLength: 1 action: description: '''include'': return with updated pricing. ''omit'': exclude from response. ''more_like_this'': find similar products.' type: string enum: - include - omit - more_like_this ask: description: Specific changes for this product (e.g., 'add 16:9 format'). Ignored when action is 'omit'. example: same audience but video format type: string maxLength: 2000 required: - scope - id - action - type: object properties: scope: type: string enum: - proposal id: description: Proposal ID from a previous discovery response example: proposal_abc123 type: string minLength: 1 action: description: '''include'': return with updated allocations. ''omit'': exclude from response. ''finalize'': request firm pricing and inventory hold.' type: string enum: - include - omit - finalize ask: description: Changes for this proposal (e.g., 'shift more budget toward video'). Ignored when action is 'omit'. example: reduce total by 10% type: string maxLength: 2000 required: - scope - id - action type: object ProductFormatOptionParams: description: Canonical format params. For hosted video, carries accepted containers/codecs. type: object properties: containers: description: Accepted delivery containers for hosted video. A buyer should only send a creative whose container is listed here. example: - mp4 type: array items: type: string enum: - mp4 - webm - mov video_codecs: description: Accepted video codecs for hosted video. example: - h264 type: array items: type: string enum: - h264 - h265 - vp8 - vp9 - av1 - prores audio_codecs: description: Accepted audio codecs for hosted video. example: - aac type: array items: type: string enum: - aac - mp3 - opus - pcm additionalProperties: {} AgentDiscoveryResult: description: Per-agent discovery result with optional debug info. Same structure as v1 media_product_discover debug output. type: object properties: agentId: description: Sales agent ID type: string agentName: description: Sales agent name type: string responseTimeMs: description: Wall-clock response time for this storefront agent, in milliseconds. Present in debug mode when the agent was called. type: integer minimum: 0 maximum: 9007199254740991 timedOut: description: Whether this storefront agent hit the requested discovery wait window. type: boolean storefronts: description: Storefronts represented by this sales agent result. One agent may back multiple storefronts. type: array items: type: object properties: storefrontId: type: string storefrontName: type: string required: - storefrontId - storefrontName additionalProperties: false success: description: Whether the agent responded successfully type: boolean productCount: description: Number of products returned by the agent type: integer minimum: 0 maximum: 9007199254740991 error: description: Error message if the agent failed type: string skipReason: description: Human-readable explanation of why the agent was skipped or failed (e.g. 'We do not support the list of channels you specified'). Prefer this over `error` when surfacing the reason in a UI; falls back to the raw error string when no structured reason is available. Untrusted agent-controlled content; sanitize before rendering in HTML. type: string incomplete: description: ADCP get_products incomplete scopes returned by this agent. Present in debug mode when a successful agent response declares partial data. type: array items: type: object properties: scope: type: string enum: - products - pricing - forecast - proposals - wholesale_feed description: type: string estimated_wait: type: object properties: interval: type: number exclusiveMinimum: 0 unit: type: string enum: - seconds - minutes - hours - days - campaign required: - interval - unit additionalProperties: false required: - scope - description additionalProperties: false rawResponseData: description: Raw response data from the agent (only present when debug=true) debugLogs: description: Full ADCP request/response debug logs (only present when debug=true) type: array items: $ref: '#/components/schemas/AgentDebugLog' required: - agentId - agentName - success - productCount additionalProperties: false ConnectionIssue: description: An adapter connection that requires the buyer to re-authenticate before discovery can reach it. type: object properties: providerType: description: Adapter provider type whose OAuth connection needs re-authentication, e.g. "meta" or "snap". example: meta type: string storefrontId: description: ID of the storefront whose connection needs re-authentication. type: string storefrontName: description: Name of the storefront whose connection needs re-authentication. type: string required: - providerType additionalProperties: false CreateMediaBuysBatchBody: description: Stage or execute multiple storefront-qualified get_products selections through one DRAFT campaign cart. type: object properties: productQueryId: description: The ext.interchange.execution_id returned by get_products. It identifies the durable search/refinement record whose qualified selections are being purchased. type: string minLength: 1 maxLength: 128 campaign: $ref: '#/components/schemas/BatchMediaBuyCampaign' mode: description: stage prepares the selected batch as DRAFT media buys without contacting sellers; execute prepares a new batch once and immediately dispatches it. An unchanged prepared retry dispatches the surviving DRAFTs without rebuilding them. type: string enum: - stage - execute selections: description: Whole proposals and/or proposal-less products selected from the product query. minItems: 1 maxItems: 100 type: array items: oneOf: - $ref: '#/components/schemas/BatchProposalSelection' - $ref: '#/components/schemas/BatchProductSelection' type: object discriminator: propertyName: kind mapping: proposal: '#/components/schemas/BatchProposalSelection' product: '#/components/schemas/BatchProductSelection' replace: description: Replace the cart selections before applying this batch. False merges idempotently with existing selections. default: false type: boolean debug: description: Include per-media-buy request/response diagnostics when mode is execute. default: false type: boolean required: - productQueryId - campaign - mode - selections FrequencyCapConfigInput: description: Frequency cap entry supplied inside a parent advertiser/campaign/creative request body. On PUT, the full array replaces all existing caps for that target. type: object properties: max_impressions: description: Maximum number of impressions allowed within the window example: 3 type: integer maximum: 9007199254740991 minimum: 1 window: $ref: '#/components/schemas/FrequencyCapWindow' required: - max_impressions - window additionalProperties: {} ErrorResponse: description: Standard error response type: object properties: data: type: - string - 'null' enum: - null error: $ref: '#/components/schemas/ApiError' required: - data - error additionalProperties: false Product: description: Product resource for campaign inventory type: object properties: productId: description: Unique identifier for the product example: prod_123 type: string name: description: Product name example: Premium CTV Inventory - Sports type: string channel: description: First canonical AdCP media channel. Use channels for the complete set. example: ctv type: string channels: description: Canonical AdCP media channels declared by the product example: - streaming_audio - podcast type: array items: type: string inventoryType: description: Inventory classification such as premium or run_of_site; not a media channel example: run_of_site type: string formatTypes: description: Canonical AdCP format kinds derived from formatOptions (never legacy named-format IDs) example: - video_hosted type: array items: type: string cpm: description: Cost per mille (CPM) example: 12.5 type: number currency: description: ISO currency code for `cpm` (e.g. "USD", "ZAR") example: USD type: string expiresAt: description: When this product's pricing stops being valid (ISO 8601). Present only when the seller quoted an FX-converted price (a rate-of-the-day conversion into a currency the product is not natively priced in); absent for natively-priced products, which carry no expiry and cache freely. A cached product past this timestamp MUST be treated as stale — re-discover or re-quote rather than transacting on the expired price. Selecting or booking against an expired quote gets a fresh price, not the stale one. type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ pricingScope: description: Whether this product's pricing is the seller's public rate card ('public') or reflects a buyer-specific discount/rate ('account'). Absent is equivalent to 'public' (a pre-3.1 seller, or a source that has never applied account-specific pricing). A buyer's agent should treat 'public' items as portable across a shared/anonymous cache and 'account' items as private to this account — never re-serve an account-scoped price to another account or a public cache partition. type: string enum: - public - account salesAgentId: description: Sales agent ID type: string salesAgentName: description: Sales agent name type: string storefrontId: description: Storefront ID — the storefront this product was discovered through. A single sales agent may back sources across multiple storefronts; products are stamped per (storefront, agent) pairing so the same product can appear in multiple storefronts independently. type: string storefrontName: description: Storefront display name type: string supportedRoutingTypes: deprecated: true description: Deprecated v2 compatibility field. It is not a storefront type or product capability and must not affect eligibility or execution. type: array items: type: string enum: - DECISIONED - ROUTED description: description: Product description type: string deliveryType: description: Delivery type — guaranteed means fixed delivery commitment example: guaranteed type: string enum: - guaranteed - non_guaranteed briefRelevance: description: AI-generated explanation of why this product matches the campaign brief type: string productCard: description: Standard visual card (300x400px) for UI rendering allOf: - $ref: '#/components/schemas/ProductCardData' productCardDetailed: description: Detailed card with carousel and full specifications allOf: - $ref: '#/components/schemas/ProductCardDetailedData' pricingOptions: description: Full pricing options from the sales agent type: array items: $ref: '#/components/schemas/PricingOptionData' estimatedExposures: description: Estimated impressions for guaranteed products type: integer minimum: -9007199254740991 maximum: 9007199254740991 forecast: description: Structured delivery forecast with budget points and metric ranges (ADCP 3.15+) type: object additionalProperties: {} bookability: description: Sanitized Sales Agent cached pricing/availability guidance for whether the product is bookable. type: string publisherProperties: description: Publisher properties from ADCP (domains, property types, etc.) type: array items: type: object properties: publisherDomain: type: string propertyType: type: string name: type: string selectionType: type: string identifiers: type: array items: type: object additionalProperties: {} additionalProperties: false isSandbox: description: Whether this product was discovered in sandbox mode type: boolean formatOptions: description: AdCP 3.1 format declarations for this product. Each entry carries a format_kind discriminator, optional format_option_id (stable identifier buyers use to select a specific format via format_option_refs in create_media_buy), and canonical params. For hosted-video formats (format_kind "video_hosted"), params.containers / params.video_codecs / params.audio_codecs advertise the accepted delivery containers and codecs, so a buyer can avoid sending a creative that would be rejected downstream. Present only when the sales agent publishes v2 format declarations alongside legacy format_ids. type: array items: $ref: '#/components/schemas/ProductFormatOption' required: - productId - name additionalProperties: false PacingPeriods: description: Defines a pacing schedule for a campaign. Periods represent time windows with varying spend intensity. Gaps between periods are treated as pauses (no spend). Use weight mode for relative intensity (e.g., 2x during holidays) or budget mode for explicit dollar amounts per period. type: object properties: mode: description: How period budgets are determined. "weight" uses relative weights to distribute the campaign budget proportionally. "budget" uses explicit dollar amounts per period. type: string enum: - weight - budget periods: description: Ordered list of pacing periods with date ranges and spend intensity minItems: 1 maxItems: 52 type: array items: type: object properties: label: description: Human-readable label for this period (e.g. "Memorial Day Heavy-Up") type: string minLength: 1 maxLength: 100 start: description: Period start date (YYYY-MM-DD, inclusive) type: string pattern: ^\d{4}-\d{2}-\d{2}$ end: description: Period end date (YYYY-MM-DD, inclusive) type: string pattern: ^\d{4}-\d{2}-\d{2}$ weight: description: Relative spend weight (1.0 = normal, 2.5 = 150% more, 0 = skip this period). Required when mode is "weight". type: number minimum: 0 maximum: 10 budget: description: Absolute budget for this period (0 = skip this period). Required when mode is "budget". type: number minimum: 0 required: - label - start - end required: - mode - periods AgentDebugLog: description: A single debug log entry from ADCP agent communication type: object properties: timestamp: type: string type: type: string message: type: string request: type: object additionalProperties: {} response: type: object additionalProperties: {} additionalProperties: false EventGoal: description: Optimize for advertiser-tracked conversion events via event sources. type: object properties: kind: type: string enum: - event eventSources: description: Event source and type pairs feeding this goal. Seller deduplicates by event_id across entries. minItems: 1 type: array items: type: object properties: eventSourceId: description: Event source to include (must be configured via sync_event_sources) example: website_pixel type: string minLength: 1 eventType: description: IAB ECAPI event type to optimize for type: string enum: - page_view - view_content - select_content - select_item - search - share - add_to_cart - remove_from_cart - viewed_cart - add_to_wishlist - initiate_checkout - add_payment_info - purchase - refund - lead - qualify_lead - close_convert_lead - disqualify_lead - complete_registration - subscribe - follow - content_view - watch_milestone - start_trial - app_install - app_launch - contact - schedule - donate - submit_application - custom customEventName: description: Required when eventType is 'custom'. Platform-specific custom event name. type: string valueField: description: Field on custom_data carrying the monetary value. Required when target is 'per_ad_spend'. example: value type: string valueFactor: description: Multiplier for valueField (default 1). Use -1 for refunds, 0.01 for cents. example: 1 type: number required: - eventSourceId - eventType target: description: Target cost or return. When omitted, the seller maximizes conversions within budget. oneOf: - type: object properties: kind: type: string enum: - cost_per value: description: Target cost per unit in buy currency example: 25 type: number exclusiveMinimum: 0 required: - kind - value - type: object properties: kind: type: string enum: - per_ad_spend value: description: Target return ratio (e.g. 4.0 = $4 of value per $1 spent) example: 4 type: number exclusiveMinimum: 0 required: - kind - value - type: object properties: kind: type: string enum: - maximize_value required: - kind type: object attributionWindow: description: Attribution window for this goal. When omitted, the seller uses their default. allOf: - $ref: '#/components/schemas/OptimizationAttributionWindow' priority: description: Priority among goals on this package. 1 = highest. When omitted, sellers use array position. example: 1 type: integer minimum: 1 maximum: 9007199254740991 required: - kind - eventSources OptimizationApplyMode: description: Whether optimization suggestions are automatically applied or require human approval. type: string enum: - AUTO - MANUAL GcsDeliveryConfig: type: object properties: type: type: string enum: - GCS pathPrefix: description: Object key prefix within the credential's bucket. Leading slashes are not stripped. The tokens {YYYY}, {MM}, {DD}, {HH} (from the delivery period start, UTC) and {DATA_DELIVERY_TYPE} are substituted at delivery time — e.g. "lld/{YYYY}/{MM}/{DD}/{HH}/{DATA_DELIVERY_TYPE}/" → "lld/2026/06/03/14/IMPRESSIONS/". Any other text is used verbatim. default: '' type: string maxLength: 1024 format: default: JSONL type: string enum: - JSONL - PARQUET - CSV required: - type DiscoverProductsResponse: description: Response from discovering products type: object properties: discoveryId: description: Discovery ID example: abc123-def456-ghi789 type: string productGroups: description: Products grouped by publisher type: array items: $ref: '#/components/schemas/ProductGroup' totalGroups: description: Total number of product groups available example: 25 type: integer minimum: 0 maximum: 9007199254740991 hasMoreGroups: description: Whether more groups are available beyond those shown type: boolean summary: description: Summary statistics for discovered products allOf: - $ref: '#/components/schemas/DiscoverySummary' budgetContext: description: Budget context if budget was provided allOf: - $ref: '#/components/schemas/BudgetContextResponse' proposals: description: Recommended media plans from sales agents (ADCP v3). Each proposal explains WHY certain products are recommended together and how budget should be allocated. type: array items: $ref: '#/components/schemas/Proposal' incompleteAgents: description: Storefront agents that timed out or returned ADCP incomplete scopes under the requested wait window. Present without debug=true so callers can offer a longer retry without exposing raw agent logs. type: array items: $ref: '#/components/schemas/IncompleteDiscoveryAgent' connectionIssues: description: Adapter connections that require re-authentication. When present, one or more storefronts were skipped because their OAuth credentials have expired. Go to Settings > Connections to reconnect, then retry. type: array items: $ref: '#/components/schemas/ConnectionIssue' retryWithLongerWaitAvailable: description: True when at least one storefront timed out or returned ADCP incomplete scopes and the request used less than the maximum interactive wait window. type: boolean agentResults: description: Per-agent debug info. Only present when debug=true; includes timing so callers can decide whether to retry with a longer wait. type: array items: $ref: '#/components/schemas/AgentDiscoveryResult' refinementApplied: description: Seller's response to each refinement instruction, matched by position to the request's refine array. Only present when refine was provided. type: array items: $ref: '#/components/schemas/RefinementApplied' revision: description: 'Progressive delivery: monotonic snapshot revision. Present on progressive responses and sinceRevision polls; pass it back as `sinceRevision` to fetch only newly landed seller groups.' example: 3 type: integer minimum: 0 maximum: 9007199254740991 resultsComplete: description: 'Progressive delivery: false while sellers are still answering in the background. Poll browse_discovery with `sinceRevision` until true.' example: false type: boolean pendingAgents: description: 'Progressive delivery: sellers still in flight (not yet answered). Distinct from incompleteAgents, which timed out or answered partially at the final revision.' type: array items: $ref: '#/components/schemas/PendingDiscoveryAgent' progress: description: 'Progressive delivery: authoritative storefront response counts, independent of result-group pagination and sinceRevision delta pages.' type: object properties: respondedStorefrontCount: type: integer minimum: 0 maximum: 9007199254740991 totalStorefrontCount: type: integer minimum: 0 maximum: 9007199254740991 waitSeconds: type: integer maximum: 9007199254740991 minimum: 1 required: - respondedStorefrontCount - totalStorefrontCount - waitSeconds additionalProperties: false diagnostics: description: Advanced support diagnostics. Returned only to elevated/admin contexts and intended for internal troubleshooting. allOf: - $ref: '#/components/schemas/DiscoveryDiagnostics' guidance: description: Human-readable next-step guidance. On progressive responses this spells out the exact continuation call (browse with `sinceRevision`); on empty results it explains what was queried and suggests adding a brief/brand URL or broadening filters. example: '2 seller(s) still working — call browse_discovery with sinceRevision: 3 for newly landed results.' type: string required: - discoveryId - productGroups - totalGroups - hasMoreGroups - summary additionalProperties: false Proposal: description: A recommended media plan with budget allocations across products (ADCP v3) type: object properties: proposalId: description: Unique identifier — used to refine or execute the proposal type: string name: description: Human-readable name for this media plan proposal type: string description: description: Strategic explanation of what the proposal achieves type: string briefAlignment: description: Explanation of how this proposal aligns with the brief type: string salesAgentId: description: Sales agent that generated this proposal type: string salesAgentName: description: Human-readable sales agent name type: string storefrontId: description: Storefront the proposal was surfaced through. The storefront is the buyer-facing seller identity; the underlying sales agent is internal routing detail. type: string storefrontName: description: Human-readable storefront name. Use this as the seller label on proposal cards. type: string supportedRoutingTypes: deprecated: true description: Deprecated v2 compatibility field. It is not a storefront type or proposal capability and must not affect eligibility or execution. type: array items: type: string enum: - DECISIONED - ROUTED allocations: description: Budget distribution across products — percentages sum to 100 minItems: 1 type: array items: $ref: '#/components/schemas/ProductAllocation' expiresAt: description: When the proposal expires (ISO 8601) type: string totalBudgetGuidance: description: Budget guidance for this proposal type: object properties: min: type: number recommended: type: number max: type: number currency: type: string additionalProperties: false required: - proposalId - name - allocations additionalProperties: false IncompleteDiscoveryAgent: description: Storefront agent that did not fully complete inside the requested discovery wait window, either because the call timed out locally or because the seller returned ADCP incomplete scopes. Use this to ask whether the buyer wants to retry with a longer wait. type: object properties: agentId: description: Sales agent ID type: string agentName: description: Sales agent name type: string storefronts: description: Storefronts represented by this incomplete sales agent result. type: array items: type: object properties: storefrontId: type: string storefrontName: type: string required: - storefrontId - storefrontName additionalProperties: false reason: description: Why this agent result is incomplete. type: string enum: - timeout - upstream_incomplete responseTimeMs: description: Wall-clock response time in milliseconds, usually the requested wait window. type: integer minimum: 0 maximum: 9007199254740991 waitSeconds: description: Wait window used for this attempt, in seconds. type: integer maximum: 9007199254740991 minimum: 1 incompleteScopes: description: ADCP get_products incomplete scopes reported by the upstream seller. Present when reason is upstream_incomplete. type: array items: $ref: '#/components/schemas/IncompleteDiscoveryScope' required: - agentId - agentName - reason - waitSeconds additionalProperties: false CampaignDataDeliveryInput: description: Campaign-scoped data-delivery configuration. Groups Data Delivery Outputs that override advertiser-scoped delivery for the same `dataDeliveryType`. Distinct from media-buy reporting fields elsewhere in the API. type: object properties: outputs: description: Campaign-scoped Data Delivery Outputs. Override advertiser-scoped Outputs by `dataDeliveryType`. Replaces all existing campaign-scoped Outputs when provided. Pass an empty array to clear. allOf: - $ref: '#/components/schemas/DataDeliveryOutputArrayInput' DataDeliveryOutputInput: description: A single Data Delivery Output entry. Used inline on advertiser/campaign create+update. type: object properties: dataDeliveryType: description: The kind of LLD shipped by this Output. type: string enum: - MB_DELIVERY - IMPRESSIONS - CLICKS - VAST_EVENTS - CAPI_ATTRIBUTION - MMP_POSTBACKS cadence: description: Firing rate. HOURLY fires at minute 0 every hour, DAILY at 00:00 UTC, WEEKLY at 00:00 UTC on syncWeeklyDay. type: string enum: - HOURLY - DAILY - WEEKLY syncWeeklyDay: description: Day of week for WEEKLY cadence (0=Sunday..6=Saturday). Required when cadence=WEEKLY, ignored otherwise. type: integer minimum: 0 maximum: 6 enabled: description: When false, the Temporal schedule is paused — no new runs fire, in-flight runs continue. Defaults to true. default: true type: boolean credentialName: description: Name of the Data Delivery Credential (within the same advertiser) that authenticates this Output. The credential carries the auth target (e.g., GCS bucket) and is Probe-validated. Must reference a credential whose destinationType matches deliveryConfig.type. type: string minLength: 1 maxLength: 64 pattern: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$ deliveryConfig: $ref: '#/components/schemas/DeliveryConfig' required: - dataDeliveryType - cadence - credentialName - deliveryConfig OptimizationAttributionWindow: description: Attribution window for conversion optimization type: object properties: postClick: description: Click-through attribution window example: interval: 7 unit: days allOf: - $ref: '#/components/schemas/Duration' postView: description: View-through attribution window example: interval: 1 unit: days allOf: - $ref: '#/components/schemas/Duration' required: - postClick 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 OptimizationGoal: description: A single optimization target. Either kind "event" (conversion events) or kind "metric" (seller-native delivery metric). oneOf: - $ref: '#/components/schemas/EventGoal' - $ref: '#/components/schemas/MetricGoal' type: object discriminator: propertyName: kind mapping: event: '#/components/schemas/EventGoal' metric: '#/components/schemas/MetricGoal' DeliveryConfig: description: Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union. oneOf: - $ref: '#/components/schemas/GcsDeliveryConfig' - $ref: '#/components/schemas/S3DeliveryConfig' - $ref: '#/components/schemas/AzureBlobDeliveryConfig' type: object discriminator: propertyName: type mapping: GCS: '#/components/schemas/GcsDeliveryConfig' S3: '#/components/schemas/S3DeliveryConfig' AZURE_BLOB: '#/components/schemas/AzureBlobDeliveryConfig' InterchangeProduct: description: Canonical AdCP product with an opaque storefront-qualified identity and attributed Interchange intelligence. type: object properties: product_id: description: Opaque storefront-qualified product ID. Pass this exact value to add_discovery_products; do not construct or strip it. example: sf1:42:d2g6c291cmNlOnByb2R1Y3Q type: string pattern: ^sf1:[1-9]\d*:[A-Za-z0-9_-]+$ name: type: string description: type: string publisher_properties: type: array items: anyOf: - type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ publisher_domains: type: array items: type: string selection_type: type: string enum: - all required: - selection_type additionalProperties: {} - type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ selection_type: type: string enum: - by_id property_ids: type: array items: type: string pattern: ^[a-z0-9_]+$ required: - publisher_domain - selection_type - property_ids additionalProperties: {} - type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ publisher_domains: type: array items: type: string selection_type: type: string enum: - by_tag property_tags: type: array items: type: string pattern: ^[a-z0-9_]+$ required: - selection_type - property_tags additionalProperties: {} channels: type: array items: anyOf: - type: string enum: - display - type: string enum: - olv - type: string enum: - social - type: string enum: - search - type: string enum: - ctv - type: string enum: - linear_tv - type: string enum: - radio - type: string enum: - streaming_audio - type: string enum: - podcast - type: string enum: - dooh - type: string enum: - ooh - type: string enum: - print - type: string enum: - cinema - type: string enum: - email - type: string enum: - gaming - type: string enum: - retail_media - type: string enum: - influencer - type: string enum: - affiliate - type: string enum: - product_placement - type: string enum: - sponsored_intelligence format_ids: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} format_options: type: array items: allOf: - type: object properties: format_option_id: type: string publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ display_name: type: string applies_to_channels: type: array items: anyOf: - type: string enum: - display - type: string enum: - olv - type: string enum: - social - type: string enum: - search - type: string enum: - ctv - type: string enum: - linear_tv - type: string enum: - radio - type: string enum: - streaming_audio - type: string enum: - podcast - type: string enum: - dooh - type: string enum: - ooh - type: string enum: - print - type: string enum: - cinema - type: string enum: - email - type: string enum: - gaming - type: string enum: - retail_media - type: string enum: - influencer - type: string enum: - affiliate - type: string enum: - product_placement - type: string enum: - sponsored_intelligence seller_preference: anyOf: - type: string enum: - preferred - type: string enum: - accepted - type: string enum: - discouraged canonical_formats_only: type: boolean experimental: type: boolean format_shape: type: string v1_format_ref: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} format_schema: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} additionalProperties: {} - anyOf: - type: object properties: format_kind: type: string enum: - image params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ max_file_size_kb: type: number minimum: 1 image_formats: type: array items: anyOf: - type: string enum: - jpg - type: string enum: - jpeg - type: string enum: - png - type: string enum: - gif - type: string enum: - webp - type: string enum: - svg ssl_required: type: boolean headline_max_chars: type: number minimum: 1 body_text_max_chars: type: number minimum: 1 cta_values: type: array items: type: string asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - html5 params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 max_initial_load_kb: type: number minimum: 1 max_polite_load_kb: type: number minimum: 1 host_initiated_subload: type: boolean max_animation_duration_ms: type: number minimum: 0 max_cpu_load_percent: type: number minimum: 1 maximum: 100 mraid_required: type: boolean mraid_version: anyOf: - type: string enum: - '2.0' - type: string enum: - '3.0' om_sdk_required: type: boolean clicktag_macro: anyOf: - type: string enum: - clickTag - type: string enum: - clickTAG backup_image_required: type: boolean backup_image_max_size_kb: type: number minimum: 1 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - display_tag params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 supported_tag_types: type: array items: anyOf: - type: string enum: - iframe - type: string enum: - javascript - type: string enum: - 1x1_redirect ssl_required: type: boolean max_redirect_depth: type: number minimum: 0 max_response_time_ms: type: number minimum: 1 backup_image_required: type: boolean backup_image_max_size_kb: type: number minimum: 1 om_sdk_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - image_carousel params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number card_aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ min_cards: type: number minimum: 2 max_cards: type: number allowed_card_media_asset_types: type: array items: anyOf: - type: string enum: - image - type: string enum: - video allowed_card_asset_types: type: array items: anyOf: - type: string enum: - image - type: string enum: - video card_image_max_file_size_kb: type: number minimum: 1 card_video_max_file_size_kb: type: number minimum: 1 card_video_max_duration_ms: type: number minimum: 1 primary_text_max_chars: type: number minimum: 1 card_headline_max_chars: type: number minimum: 1 card_description_max_chars: type: number minimum: 1 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - video_hosted params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number orientation: anyOf: - type: string enum: - vertical - type: string enum: - horizontal - type: string enum: - square aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ min_width: type: number minimum: 1 min_height: type: number minimum: 1 max_width: type: number minimum: 1 max_height: type: number minimum: 1 duration_ms_range: type: array items: type: - number - 'null' duration_ms_exact: type: number minimum: 1 video_codecs: type: array items: anyOf: - type: string enum: - h264 - type: string enum: - h265 - type: string enum: - vp8 - type: string enum: - vp9 - type: string enum: - av1 - type: string enum: - prores audio_codecs: type: array items: anyOf: - type: string enum: - aac - type: string enum: - mp3 - type: string enum: - opus - type: string enum: - pcm containers: type: array items: anyOf: - type: string enum: - mp4 - type: string enum: - webm - type: string enum: - mov min_bitrate_kbps: type: number minimum: 1 max_bitrate_kbps: type: number minimum: 1 max_file_size_mb: type: number minimum: 1 frame_rates: type: array items: type: number captions: anyOf: - type: string enum: - required - type: string enum: - recommended - type: string enum: - not_required om_sdk_required: type: boolean headline_max_chars: type: number minimum: 1 primary_text_max_chars: type: number minimum: 1 brand_name_max_chars: type: number minimum: 1 cta_values: type: array items: type: string companion_banner_widths: type: array items: type: number companion_banner_heights: type: array items: type: number asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - video_vast params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number orientation: anyOf: - type: string enum: - vertical - type: string enum: - horizontal - type: string enum: - square aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ vast_version: anyOf: - type: string enum: - '2.0' - type: string enum: - '3.0' - type: string enum: - '4.0' - type: string enum: - '4.1' - type: string enum: - '4.2' vpaid_enabled: type: boolean vpaid_version: anyOf: - type: string enum: - '1.0' - type: string enum: - '2.0' simid_supported: type: boolean duration_ms_range: type: array items: type: number duration_ms_exact: type: number minimum: 1 min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 linear_required: type: boolean skippable_after_ms: type: number minimum: 0 max_wrapper_depth: type: number minimum: 0 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - audio_hosted params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number duration_ms_range: type: array items: type: - number - 'null' duration_ms_exact: type: number minimum: 1 audio_codecs: type: array items: anyOf: - type: string enum: - mp3 - type: string enum: - aac - type: string enum: - wav - type: string enum: - opus - type: string enum: - flac audio_sample_rates: type: array items: type: number audio_channels: type: array items: anyOf: - type: string enum: - mono - type: string enum: - stereo min_bitrate_kbps: type: number minimum: 1 max_bitrate_kbps: type: number minimum: 1 loudness_lufs: type: number loudness_tolerance_db: type: number minimum: 0 true_peak_dbfs: type: number asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected companion_image_required: type: boolean companion_image_aspect_ratio: type: string companion_image_max_file_size_kb: type: number minimum: 1 brand_name_max_chars: type: number minimum: 1 additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - audio_daast params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number daast_version: anyOf: - type: string enum: - '1.0' - type: string enum: - '1.1' duration_ms_range: type: array items: type: number duration_ms_exact: type: number minimum: 1 linear_required: type: boolean max_wrapper_depth: type: number minimum: 0 ssl_required: type: boolean companion_image_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - sponsored_placement params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number supported_catalog_types: type: array items: anyOf: - type: string enum: - product - type: string enum: - store - type: string enum: - offering - type: string enum: - hotel - type: string enum: - flight - type: string enum: - vehicle - type: string enum: - real_estate - type: string enum: - education - type: string enum: - destination - type: string enum: - app - type: string enum: - job - type: string enum: - inventory min_items: type: number minimum: 1 max_items: type: number fanout_mode: anyOf: - type: string enum: - per_item - type: string enum: - multi_item_in_creative - type: string enum: - single_item required_catalog_fields: type: array items: type: string supported_id_types: type: array items: anyOf: - type: string enum: - asin - type: string enum: - sku - type: string enum: - gtin - type: string enum: - offering_id - type: string enum: - store_id - type: string enum: - hotel_id - type: string enum: - flight_id - type: string enum: - vehicle_id - type: string enum: - listing_id - type: string enum: - program_id - type: string enum: - destination_id - type: string enum: - app_id - type: string enum: - job_id hero_asset_supported: type: boolean item_production_model: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - native_in_feed params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number title_max_chars: type: number minimum: 1 body_text_max_chars: type: number minimum: 1 cta_max_chars: type: number minimum: 1 cta_values: type: array items: type: string main_image_sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} icon_size: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} max_image_file_size_kb: type: number minimum: 1 image_formats: type: array items: anyOf: - type: string enum: - jpg - type: string enum: - jpeg - type: string enum: - png - type: string enum: - gif - type: string enum: - webp ssl_required: type: boolean asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - responsive_creative params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number headlines_min: type: number minimum: 0 headlines_max: type: number minimum: 0 headline_max_chars: type: number minimum: 1 long_headlines_min: type: number minimum: 0 long_headlines_max: type: number minimum: 0 long_headline_max_chars: type: number minimum: 1 descriptions_min: type: number minimum: 0 descriptions_max: type: number minimum: 0 description_max_chars: type: number minimum: 1 images_landscape_min: type: number minimum: 0 images_landscape_max: type: number minimum: 0 images_landscape_aspect_ratio: type: string images_square_min: type: number minimum: 0 images_square_max: type: number minimum: 0 images_vertical_min: type: number minimum: 0 images_vertical_max: type: number minimum: 0 videos_min: type: number minimum: 0 videos_max: type: number minimum: 0 video_min_duration_ms: type: number minimum: 1 video_max_duration_ms: type: number minimum: 1 logo_min: type: number minimum: 0 logo_max: type: number minimum: 0 logo_aspect_ratios: type: array items: type: string business_name_max_chars: type: number minimum: 1 asset_image_max_file_size_kb: type: number minimum: 1 supports_catalog_input: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - agent_placement params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number output_modality: anyOf: - type: string enum: - text - type: string enum: - audio - type: string enum: - card max_mention_length_chars: type: number minimum: 1 max_mention_duration_ms: type: number minimum: 1 supports_offering_reference: type: boolean supports_landing_page_url: type: boolean tone_constraints: type: array items: type: string disclosure_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - custom params: type: object properties: {} additionalProperties: {} required: - format_kind - params additionalProperties: {} placements: type: array items: type: object properties: kind: anyOf: - type: string enum: - publisher_ref - type: string enum: - seller_inline placement_id: type: string publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ name: type: string description: type: string mode: anyOf: - type: string enum: - targetable - type: string enum: - included tags: type: array items: type: string format_ids: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} format_options: type: array items: allOf: - type: object properties: format_option_id: type: string publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ display_name: type: string applies_to_channels: type: array items: anyOf: - type: string enum: - display - type: string enum: - olv - type: string enum: - social - type: string enum: - search - type: string enum: - ctv - type: string enum: - linear_tv - type: string enum: - radio - type: string enum: - streaming_audio - type: string enum: - podcast - type: string enum: - dooh - type: string enum: - ooh - type: string enum: - print - type: string enum: - cinema - type: string enum: - email - type: string enum: - gaming - type: string enum: - retail_media - type: string enum: - influencer - type: string enum: - affiliate - type: string enum: - product_placement - type: string enum: - sponsored_intelligence seller_preference: anyOf: - type: string enum: - preferred - type: string enum: - accepted - type: string enum: - discouraged canonical_formats_only: type: boolean experimental: type: boolean format_shape: type: string v1_format_ref: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} format_schema: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} additionalProperties: {} - anyOf: - type: object properties: format_kind: type: string enum: - image params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ max_file_size_kb: type: number minimum: 1 image_formats: type: array items: anyOf: - type: string enum: - jpg - type: string enum: - jpeg - type: string enum: - png - type: string enum: - gif - type: string enum: - webp - type: string enum: - svg ssl_required: type: boolean headline_max_chars: type: number minimum: 1 body_text_max_chars: type: number minimum: 1 cta_values: type: array items: type: string asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - html5 params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 max_initial_load_kb: type: number minimum: 1 max_polite_load_kb: type: number minimum: 1 host_initiated_subload: type: boolean max_animation_duration_ms: type: number minimum: 0 max_cpu_load_percent: type: number minimum: 1 maximum: 100 mraid_required: type: boolean mraid_version: anyOf: - type: string enum: - '2.0' - type: string enum: - '3.0' om_sdk_required: type: boolean clicktag_macro: anyOf: - type: string enum: - clickTag - type: string enum: - clickTAG backup_image_required: type: boolean backup_image_max_size_kb: type: number minimum: 1 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - display_tag params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number width: type: number minimum: 1 height: type: number minimum: 1 sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 supported_tag_types: type: array items: anyOf: - type: string enum: - iframe - type: string enum: - javascript - type: string enum: - 1x1_redirect ssl_required: type: boolean max_redirect_depth: type: number minimum: 0 max_response_time_ms: type: number minimum: 1 backup_image_required: type: boolean backup_image_max_size_kb: type: number minimum: 1 om_sdk_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - image_carousel params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number card_aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ min_cards: type: number minimum: 2 max_cards: type: number allowed_card_media_asset_types: type: array items: anyOf: - type: string enum: - image - type: string enum: - video allowed_card_asset_types: type: array items: anyOf: - type: string enum: - image - type: string enum: - video card_image_max_file_size_kb: type: number minimum: 1 card_video_max_file_size_kb: type: number minimum: 1 card_video_max_duration_ms: type: number minimum: 1 primary_text_max_chars: type: number minimum: 1 card_headline_max_chars: type: number minimum: 1 card_description_max_chars: type: number minimum: 1 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - video_hosted params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number orientation: anyOf: - type: string enum: - vertical - type: string enum: - horizontal - type: string enum: - square aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ min_width: type: number minimum: 1 min_height: type: number minimum: 1 max_width: type: number minimum: 1 max_height: type: number minimum: 1 duration_ms_range: type: array items: type: - number - 'null' duration_ms_exact: type: number minimum: 1 video_codecs: type: array items: anyOf: - type: string enum: - h264 - type: string enum: - h265 - type: string enum: - vp8 - type: string enum: - vp9 - type: string enum: - av1 - type: string enum: - prores audio_codecs: type: array items: anyOf: - type: string enum: - aac - type: string enum: - mp3 - type: string enum: - opus - type: string enum: - pcm containers: type: array items: anyOf: - type: string enum: - mp4 - type: string enum: - webm - type: string enum: - mov min_bitrate_kbps: type: number minimum: 1 max_bitrate_kbps: type: number minimum: 1 max_file_size_mb: type: number minimum: 1 frame_rates: type: array items: type: number captions: anyOf: - type: string enum: - required - type: string enum: - recommended - type: string enum: - not_required om_sdk_required: type: boolean headline_max_chars: type: number minimum: 1 primary_text_max_chars: type: number minimum: 1 brand_name_max_chars: type: number minimum: 1 cta_values: type: array items: type: string companion_banner_widths: type: array items: type: number companion_banner_heights: type: array items: type: number asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - video_vast params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number orientation: anyOf: - type: string enum: - vertical - type: string enum: - horizontal - type: string enum: - square aspect_ratio: type: string pattern: ^[0-9]+(\.[0-9]+)?:[0-9]+(\.[0-9]+)?$ vast_version: anyOf: - type: string enum: - '2.0' - type: string enum: - '3.0' - type: string enum: - '4.0' - type: string enum: - '4.1' - type: string enum: - '4.2' vpaid_enabled: type: boolean vpaid_version: anyOf: - type: string enum: - '1.0' - type: string enum: - '2.0' simid_supported: type: boolean duration_ms_range: type: array items: type: number duration_ms_exact: type: number minimum: 1 min_width: type: number minimum: 1 max_width: type: number minimum: 1 min_height: type: number minimum: 1 max_height: type: number minimum: 1 linear_required: type: boolean skippable_after_ms: type: number minimum: 0 max_wrapper_depth: type: number minimum: 0 ssl_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - audio_hosted params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number duration_ms_range: type: array items: type: - number - 'null' duration_ms_exact: type: number minimum: 1 audio_codecs: type: array items: anyOf: - type: string enum: - mp3 - type: string enum: - aac - type: string enum: - wav - type: string enum: - opus - type: string enum: - flac audio_sample_rates: type: array items: type: number audio_channels: type: array items: anyOf: - type: string enum: - mono - type: string enum: - stereo min_bitrate_kbps: type: number minimum: 1 max_bitrate_kbps: type: number minimum: 1 loudness_lufs: type: number loudness_tolerance_db: type: number minimum: 0 true_peak_dbfs: type: number asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - publisher_host_recorded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected companion_image_required: type: boolean companion_image_aspect_ratio: type: string companion_image_max_file_size_kb: type: number minimum: 1 brand_name_max_chars: type: number minimum: 1 additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - audio_daast params: type: object properties: experimental: type: boolean deprecated: type: boolean v1_translatable: type: boolean since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number daast_version: anyOf: - type: string enum: - '1.0' - type: string enum: - '1.1' duration_ms_range: type: array items: type: number duration_ms_exact: type: number minimum: 1 linear_required: type: boolean max_wrapper_depth: type: number minimum: 0 ssl_required: type: boolean companion_image_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - sponsored_placement params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number supported_catalog_types: type: array items: anyOf: - type: string enum: - product - type: string enum: - store - type: string enum: - offering - type: string enum: - hotel - type: string enum: - flight - type: string enum: - vehicle - type: string enum: - real_estate - type: string enum: - education - type: string enum: - destination - type: string enum: - app - type: string enum: - job - type: string enum: - inventory min_items: type: number minimum: 1 max_items: type: number fanout_mode: anyOf: - type: string enum: - per_item - type: string enum: - multi_item_in_creative - type: string enum: - single_item required_catalog_fields: type: array items: type: string supported_id_types: type: array items: anyOf: - type: string enum: - asin - type: string enum: - sku - type: string enum: - gtin - type: string enum: - offering_id - type: string enum: - store_id - type: string enum: - hotel_id - type: string enum: - flight_id - type: string enum: - vehicle_id - type: string enum: - listing_id - type: string enum: - program_id - type: string enum: - destination_id - type: string enum: - app_id - type: string enum: - job_id hero_asset_supported: type: boolean item_production_model: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - native_in_feed params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number title_max_chars: type: number minimum: 1 body_text_max_chars: type: number minimum: 1 cta_max_chars: type: number minimum: 1 cta_values: type: array items: type: string main_image_sizes: type: array items: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} icon_size: type: object properties: width: type: number minimum: 1 height: type: number minimum: 1 required: - width - height additionalProperties: {} max_image_file_size_kb: type: number minimum: 1 image_formats: type: array items: anyOf: - type: string enum: - jpg - type: string enum: - jpeg - type: string enum: - png - type: string enum: - gif - type: string enum: - webp ssl_required: type: boolean asset_source: anyOf: - type: string enum: - buyer_uploaded - type: string enum: - seller_pre_rendered_from_brief - type: string enum: - seller_human_designed - type: string enum: - agent_synthesized - type: string enum: - publisher_owned_reference buyer_asset_acceptance: anyOf: - type: string enum: - accepted - type: string enum: - rejected additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - responsive_creative params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number headlines_min: type: number minimum: 0 headlines_max: type: number minimum: 0 headline_max_chars: type: number minimum: 1 long_headlines_min: type: number minimum: 0 long_headlines_max: type: number minimum: 0 long_headline_max_chars: type: number minimum: 1 descriptions_min: type: number minimum: 0 descriptions_max: type: number minimum: 0 description_max_chars: type: number minimum: 1 images_landscape_min: type: number minimum: 0 images_landscape_max: type: number minimum: 0 images_landscape_aspect_ratio: type: string images_square_min: type: number minimum: 0 images_square_max: type: number minimum: 0 images_vertical_min: type: number minimum: 0 images_vertical_max: type: number minimum: 0 videos_min: type: number minimum: 0 videos_max: type: number minimum: 0 video_min_duration_ms: type: number minimum: 1 video_max_duration_ms: type: number minimum: 1 logo_min: type: number minimum: 0 logo_max: type: number minimum: 0 logo_aspect_ratios: type: array items: type: string business_name_max_chars: type: number minimum: 1 asset_image_max_file_size_kb: type: number minimum: 1 supports_catalog_input: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - agent_placement params: type: object properties: experimental: {} deprecated: type: boolean v1_translatable: {} since_version: type: string migration_target_version: type: string composition_model: anyOf: - type: string enum: - deterministic - type: string enum: - algorithmic provenance_required: type: boolean platform_extensions: type: array items: type: object properties: uri: type: string pattern: ^https:\/\/ digest: type: string pattern: ^sha256:[a-f0-9]{64}$ required: - uri - digest additionalProperties: {} synthesis_nondeterministic: type: boolean slots: {} required_connections: type: array items: type: object properties: provider: type: string connection_type: anyOf: - type: string enum: - advertiser_account - type: string enum: - publisher_identity - type: string enum: - post_authorization required_for: type: array items: type: string scope: anyOf: - type: string enum: - account - type: string enum: - identity - type: string enum: - post - type: string enum: - unknown status: anyOf: - type: string enum: - connected - type: string enum: - missing - type: string enum: - pending - type: string enum: - expired - type: string enum: - revoked - type: string enum: - not_required - type: string enum: - unknown connection_id: type: string resource_ref: type: object properties: platform_account_id: type: string identity_id: type: string handle: type: string profile_url: type: string post_id: type: string post_url: type: string additionalProperties: {} authorization_url: type: string authorization_instructions: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - connection_type additionalProperties: {} reference_mutability: anyOf: - type: string enum: - immutable_snapshot - type: string enum: - mutable_requires_reapproval - type: string enum: - mutable_auto_recheck production_window_business_days: type: number output_modality: anyOf: - type: string enum: - text - type: string enum: - audio - type: string enum: - card max_mention_length_chars: type: number minimum: 1 max_mention_duration_ms: type: number minimum: 1 supports_offering_reference: type: boolean supports_landing_page_url: type: boolean tone_constraints: type: array items: type: string disclosure_required: type: boolean additionalProperties: {} required: - format_kind - params additionalProperties: {} - type: object properties: format_kind: type: string enum: - custom params: type: object properties: {} additionalProperties: {} required: - format_kind - params additionalProperties: {} video_placement_types: type: array items: anyOf: - type: string enum: - instream - type: string enum: - accompanying_content - type: string enum: - interstitial - type: string enum: - standalone audio_distribution_types: type: array items: anyOf: - type: string enum: - music_streaming_service - type: string enum: - fm_am_broadcast - type: string enum: - podcast - type: string enum: - catch_up_radio - type: string enum: - web_radio - type: string enum: - video_game - type: string enum: - text_to_speech sponsored_placement_types: type: array items: anyOf: - type: string enum: - sponsored_search - type: string enum: - sponsored_display - type: string enum: - sponsored_native social_placement_surfaces: type: array items: anyOf: - type: string enum: - feed - type: string enum: - stories - type: string enum: - short_video - type: string enum: - explore - type: string enum: - search required: - kind - placement_id - mode additionalProperties: {} video_placement_types: type: array items: anyOf: - type: string enum: - instream - type: string enum: - accompanying_content - type: string enum: - interstitial - type: string enum: - standalone audio_distribution_types: type: array items: anyOf: - type: string enum: - music_streaming_service - type: string enum: - fm_am_broadcast - type: string enum: - podcast - type: string enum: - catch_up_radio - type: string enum: - web_radio - type: string enum: - video_game - type: string enum: - text_to_speech sponsored_placement_types: type: array items: anyOf: - type: string enum: - sponsored_search - type: string enum: - sponsored_display - type: string enum: - sponsored_native social_placement_surfaces: type: array items: anyOf: - type: string enum: - feed - type: string enum: - stories - type: string enum: - short_video - type: string enum: - explore - type: string enum: - search delivery_type: anyOf: - type: string enum: - guaranteed - type: string enum: - non_guaranteed exclusivity: anyOf: - type: string enum: - none - type: string enum: - category - type: string enum: - exclusive pricing_options: type: array items: anyOf: - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpm currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 max_bid: type: boolean price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - vcpm currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 max_bid: type: boolean price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpc currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 max_bid: type: boolean price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpcv currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 max_bid: type: boolean price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpv currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 max_bid: type: boolean price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} parameters: type: object properties: view_threshold: anyOf: - type: number - type: object properties: duration_seconds: type: number minimum: 1 required: - duration_seconds additionalProperties: {} required: - view_threshold additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency - parameters additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpp currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} parameters: type: object properties: demographic_system: anyOf: - type: string enum: - nielsen - type: string enum: - barb - type: string enum: - agf - type: string enum: - oztam - type: string enum: - mediametrie - type: string enum: - custom demographic: type: string min_points: type: number minimum: 0 required: - demographic additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency - parameters additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - cpa event_type: anyOf: - type: string enum: - page_view - type: string enum: - view_content - type: string enum: - select_content - type: string enum: - select_item - type: string enum: - search - type: string enum: - share - type: string enum: - add_to_cart - type: string enum: - remove_from_cart - type: string enum: - viewed_cart - type: string enum: - add_to_wishlist - type: string enum: - initiate_checkout - type: string enum: - add_payment_info - type: string enum: - purchase - type: string enum: - refund - type: string enum: - lead - type: string enum: - qualify_lead - type: string enum: - close_convert_lead - type: string enum: - disqualify_lead - type: string enum: - complete_registration - type: string enum: - subscribe - type: string enum: - follow - type: string enum: - content_view - type: string enum: - watch_milestone - type: string enum: - start_trial - type: string enum: - app_install - type: string enum: - app_launch - type: string enum: - contact - type: string enum: - schedule - type: string enum: - donate - type: string enum: - submit_application - type: string enum: - custom custom_event_name: type: string event_source_id: type: string currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - event_type - currency - fixed_price additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - flat_rate currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} parameters: type: object properties: type: type: string enum: - dooh sov_percentage: type: number minimum: 0 maximum: 100 loop_duration_seconds: type: number minimum: 1 min_plays_per_hour: type: number minimum: 1 venue_package: type: string duration_hours: type: number minimum: 0 daypart: type: string estimated_impressions: type: number minimum: 0 required: - type additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency additionalProperties: {} - type: object properties: pricing_option_id: type: string pricing_model: type: string enum: - time currency: type: string pattern: ^[A-Z]{3}$ fixed_price: type: number minimum: 0 floor_price: type: number minimum: 0 price_guidance: type: object properties: p25: type: number minimum: 0 p50: type: number minimum: 0 p75: type: number minimum: 0 p90: type: number minimum: 0 additionalProperties: {} parameters: type: object properties: time_unit: anyOf: - type: string enum: - hour - type: string enum: - day - type: string enum: - week - type: string enum: - month min_duration: type: number minimum: 1 max_duration: type: number minimum: 1 required: - time_unit additionalProperties: {} min_spend_per_package: type: number minimum: 0 price_breakdown: type: object properties: list_price: type: number adjustments: type: array items: type: object additionalProperties: {} required: - list_price - adjustments additionalProperties: {} eligible_adjustments: type: array items: anyOf: - type: string enum: - fee - type: string enum: - discount - type: string enum: - commission - type: string enum: - settlement required: - pricing_option_id - pricing_model - currency - parameters additionalProperties: {} forecast: type: object properties: points: type: array items: type: object properties: label: type: string maxLength: 128 budget: type: number minimum: 0 product_id: type: string dimensions: type: array items: anyOf: - type: object properties: kind: type: string enum: - geo geo_level: anyOf: - type: string enum: - country - type: string enum: - region - type: string enum: - metro - type: string enum: - postal_area system: type: string country: type: string pattern: ^[A-Z]{2}$ geo_code: type: string geo_name: type: string required: - kind - geo_level - geo_code additionalProperties: {} - type: object properties: kind: type: string enum: - placement placement_ref: type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ placement_id: type: string required: - placement_id additionalProperties: {} placement_name: type: string required: - kind - placement_ref additionalProperties: {} - type: object properties: kind: type: string enum: - device_type device_type: 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 required: - kind - device_type additionalProperties: {} - type: object properties: kind: type: string enum: - device_platform device_platform: 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 required: - kind - device_platform additionalProperties: {} - type: object properties: kind: type: string enum: - audience audience_id: type: string audience_source: anyOf: - type: string enum: - synced - type: string enum: - platform - type: string enum: - third_party - type: string enum: - lookalike - type: string enum: - retargeting - type: string enum: - unknown audience_name: type: string required: - kind - audience_id - audience_source additionalProperties: {} - type: object properties: kind: type: string enum: - signal 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: type: string pattern: ^[a-zA-Z0-9_-]+$ signal_value: anyOf: - type: string - type: number - type: boolean presence: anyOf: - type: string enum: - present - type: string enum: - absent signal_name: type: string signal_value_name: type: string required: - kind - presence additionalProperties: {} metrics: type: object properties: audience_size: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} reach: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} frequency: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} clicks: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} spend: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} completed_views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} grps: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} engagements: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} follows: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} saves: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} profile_visits: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} measured_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} downloads: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} plays: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} coverage_rate: allOf: - type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} - type: object properties: low: type: object additionalProperties: {} mid: type: object additionalProperties: {} high: type: object additionalProperties: {} additionalProperties: {} additionalProperties: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} viewability: type: object additionalProperties: {} vendor_metric_values: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string value: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} unit: type: string measurable_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} breakdown: type: object properties: {} additionalProperties: {} required: - vendor - metric_id - value additionalProperties: {} required: - metrics additionalProperties: {} forecast_range_unit: anyOf: - type: string enum: - spend - type: string enum: - availability - type: string enum: - reach_freq - type: string enum: - weekly - type: string enum: - daily - type: string enum: - clicks - type: string enum: - conversions - type: string enum: - package method: anyOf: - type: string enum: - estimate - type: string enum: - modeled - type: string enum: - guaranteed currency: type: string demographic_system: anyOf: - type: string enum: - nielsen - type: string enum: - barb - type: string enum: - agf - type: string enum: - oztam - type: string enum: - mediametrie - type: string enum: - custom demographic: type: string measurement_source: type: string maxLength: 64 pattern: ^[a-z0-9_]+$ reach_unit: 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 generated_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ valid_until: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ ext: type: object properties: {} additionalProperties: {} required: - points - method - currency additionalProperties: {} outcome_measurement: type: object properties: type: type: string attribution: type: string 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: {} reporting: type: string required: - type - attribution - reporting additionalProperties: {} delivery_measurement: type: object properties: vendors: type: array items: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} provider: type: string notes: type: string additionalProperties: {} measurement_terms: type: object properties: billing_measurement: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} max_variance_percent: type: number minimum: 0 measurement_window: type: string finalization_deadline_hours: type: number minimum: 0 required: - vendor additionalProperties: {} makegood_policy: type: object properties: available_remedies: type: array items: anyOf: - type: string enum: - additional_delivery - type: string enum: - credit - type: string enum: - invoice_adjustment required: - available_remedies additionalProperties: {} additionalProperties: {} performance_standards: type: array items: type: object properties: metric: anyOf: - type: string enum: - viewability - type: string enum: - ivt - type: string enum: - completion_rate - type: string enum: - brand_safety - type: string enum: - attention_score threshold: type: number minimum: 0 maximum: 1 standard: anyOf: - type: string enum: - mrc - type: string enum: - groupm vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} required: - metric - threshold - vendor additionalProperties: {} cancellation_policy: type: object properties: notice_period: 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: {} cancellation_fee: anyOf: - type: object properties: type: type: string enum: - percent_remaining rate: type: number minimum: 0 maximum: 1 amount: type: number minimum: 0 required: - type - rate additionalProperties: {} - type: object properties: type: type: string enum: - full_commitment rate: type: number minimum: 0 maximum: 1 amount: type: number minimum: 0 required: - type additionalProperties: {} - type: object properties: type: type: string enum: - fixed_fee rate: type: number minimum: 0 maximum: 1 amount: type: number minimum: 0 required: - type - amount additionalProperties: {} - type: object properties: type: type: string enum: - none rate: type: number minimum: 0 maximum: 1 amount: type: number minimum: 0 required: - type additionalProperties: {} required: - notice_period - cancellation_fee additionalProperties: {} allowed_actions: type: array items: type: object properties: action: anyOf: - type: string enum: - pause - type: string enum: - resume - type: string enum: - cancel - type: string enum: - extend_flight - type: string enum: - shorten_flight - type: string enum: - update_flight_dates - type: string enum: - increase_budget - type: string enum: - decrease_budget - type: string enum: - reallocate_budget - type: string enum: - update_targeting - type: string enum: - update_pacing - type: string enum: - update_frequency_caps - type: string enum: - replace_creative - type: string enum: - update_creative_assignments - type: string enum: - remove_creative - type: string enum: - add_packages - type: string enum: - remove_packages - type: string enum: - update_budget - type: string enum: - update_dates - type: string enum: - update_packages - type: string enum: - sync_creatives modes: type: array items: anyOf: - type: string enum: - self_serve - type: string enum: - conditional_self_serve - type: string enum: - requires_approval allowed_statuses: type: array items: anyOf: - type: string enum: - pending_creatives - type: string enum: - pending_start - type: string enum: - active - type: string enum: - paused - type: string enum: - completed - type: string enum: - rejected - type: string enum: - canceled sla: type: object properties: response_max: type: string pattern: ^P(?!$)(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$ completion_max: type: string pattern: ^P(?!$)(\d+Y)?(\d+M)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$ additionalProperties: {} terms_ref: type: string required: - action - modes additionalProperties: {} reporting_capabilities: type: object properties: available_reporting_frequencies: type: array items: anyOf: - type: string enum: - hourly - type: string enum: - daily - type: string enum: - monthly expected_delay_minutes: type: number minimum: 0 timezone: type: string supports_webhooks: type: boolean available_metrics: type: array items: anyOf: - type: string enum: - impressions - type: string enum: - spend - type: string enum: - clicks - type: string enum: - ctr - type: string enum: - views - type: string enum: - completed_views - type: string enum: - completion_rate - type: string enum: - conversions - type: string enum: - conversion_value - type: string enum: - roas - type: string enum: - cost_per_acquisition - type: string enum: - new_to_brand_rate - type: string enum: - leads - type: string enum: - reach - type: string enum: - frequency - type: string enum: - grps - type: string enum: - engagements - type: string enum: - engagement_rate - type: string enum: - follows - type: string enum: - saves - type: string enum: - profile_visits - type: string enum: - viewability - type: string enum: - quartile_data - type: string enum: - dooh_metrics - type: string enum: - cost_per_click - type: string enum: - cost_per_completed_view - type: string enum: - cpm - type: string enum: - downloads - type: string enum: - units_sold - type: string enum: - new_to_brand_units - type: string enum: - plays - type: string enum: - incremental_sales_lift - type: string enum: - brand_lift - type: string enum: - foot_traffic - type: string enum: - conversion_lift - type: string enum: - brand_search_lift vendor_metrics: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string required: - vendor - metric_id additionalProperties: {} supports_creative_breakdown: type: boolean supports_keyword_breakdown: type: boolean supports_geo_breakdown: type: object properties: country: type: boolean region: type: boolean metro: type: object additionalProperties: type: boolean postal_area: type: object properties: US: type: array items: anyOf: - type: string enum: - zip - type: string enum: - zip_plus_four GB: type: array items: anyOf: - type: string enum: - outward - type: string enum: - full CA: type: array items: anyOf: - type: string enum: - fsa - type: string enum: - full DE: type: array items: type: string enum: - plz CH: type: array items: type: string enum: - plz AT: type: array items: type: string enum: - plz FR: type: array items: type: string enum: - code_postal AU: type: array items: type: string enum: - postcode BR: type: array items: type: string enum: - cep IN: type: array items: type: string enum: - pin ZA: type: array items: type: string enum: - postal_code us_zip: type: boolean us_zip_plus_four: type: boolean gb_outward: type: boolean gb_full: type: boolean ca_fsa: type: boolean ca_full: type: boolean de_plz: type: boolean fr_code_postal: type: boolean au_postcode: type: boolean ch_plz: type: boolean at_plz: type: boolean additionalProperties: type: array items: anyOf: - type: string enum: - postal_code - type: string enum: - custom additionalProperties: {} supports_device_type_breakdown: type: boolean supports_device_platform_breakdown: type: boolean supports_audience_breakdown: type: boolean supports_placement_breakdown: type: boolean date_range_support: anyOf: - type: string enum: - date_range - type: string enum: - lifetime_only windowed_pull_granularities: type: array items: anyOf: - type: string enum: - hourly - type: string enum: - daily - type: string enum: - monthly measurement_windows: type: array items: type: object properties: window_id: type: string maxLength: 50 description: type: string maxLength: 500 duration_days: type: number minimum: 0 expected_availability_days: type: number minimum: 0 is_guarantee_basis: type: boolean required: - window_id - duration_days additionalProperties: {} required: - available_reporting_frequencies - expected_delay_minutes - timezone - supports_webhooks - available_metrics - date_range_support additionalProperties: {} creative_policy: type: object properties: co_branding: anyOf: - type: string enum: - required - type: string enum: - optional - type: string enum: - none landing_page: anyOf: - type: string enum: - any - type: string enum: - retailer_site_only - type: string enum: - must_include_retailer templates_available: type: boolean provenance_required: type: boolean provenance_requirements: type: object properties: require_digital_source_type: type: boolean require_disclosure_metadata: type: boolean require_embedded_provenance: type: boolean additionalProperties: {} accepted_verifiers: type: array items: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string providers: type: array items: type: string required: - agent_url additionalProperties: {} required: - co_branding - landing_page - templates_available additionalProperties: {} is_custom: type: boolean property_targeting_allowed: type: boolean data_provider_signals: type: array items: anyOf: - type: object properties: data_provider_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ selection_type: type: string enum: - all required: - data_provider_domain - selection_type additionalProperties: {} - type: object properties: data_provider_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ selection_type: type: string enum: - by_id signal_ids: type: array items: type: string required: - data_provider_domain - selection_type - signal_ids additionalProperties: {} - type: object properties: data_provider_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ selection_type: type: string enum: - by_tag signal_tags: type: array items: type: string required: - data_provider_domain - selection_type - signal_tags additionalProperties: {} included_signals: type: array items: 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: {} name: type: string description: type: string methodology_url: type: string last_updated: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ value_type: anyOf: - type: string enum: - binary - type: string enum: - categorical - type: string enum: - numeric categories: type: array items: type: string range: type: object properties: min: type: number max: type: number required: - min - max additionalProperties: {} additionalProperties: {} signal_targeting_options: type: array items: 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: {} name: type: string description: type: string methodology_url: type: string last_updated: type: string value_type: anyOf: - type: string enum: - binary - type: string enum: - categorical - type: string enum: - numeric categories: type: array items: type: string range: type: object properties: min: type: number max: type: number required: - min - max additionalProperties: {} signal_agent_segment_id: type: string activation_status: anyOf: - type: string enum: - ready - type: string enum: - requires_activation allowed_targeting_modes: type: array items: anyOf: - type: string enum: - include - type: string enum: - exclude default_selected: type: boolean selection_group: type: string pricing_options: type: array items: allOf: - type: object properties: pricing_option_id: type: string applies_to_output_format_ids: type: array items: type: object properties: agent_url: type: string id: type: string pattern: ^[a-zA-Z0-9_-]+$ width: type: number minimum: 1 height: type: number minimum: 1 duration_ms: type: number minimum: 1 required: - agent_url - id additionalProperties: {} required: - pricing_option_id additionalProperties: {} - anyOf: - type: object properties: model: type: string enum: - cpm cpm: type: number minimum: 0 currency: type: string pattern: ^[A-Z]{3}$ ext: type: object properties: {} additionalProperties: {} required: - model - cpm - currency additionalProperties: {} - type: object properties: model: type: string enum: - percent_of_media percent: type: number minimum: 0 maximum: 100 max_cpm: type: number minimum: 0 currency: type: string pattern: ^[A-Z]{3}$ ext: type: object properties: {} additionalProperties: {} required: - model - percent - currency additionalProperties: {} - type: object properties: model: type: string enum: - flat_fee amount: type: number minimum: 0 period: anyOf: - type: string enum: - monthly - type: string enum: - quarterly - type: string enum: - annual - type: string enum: - campaign currency: type: string pattern: ^[A-Z]{3}$ ext: type: object properties: {} additionalProperties: {} required: - model - amount - period - currency additionalProperties: {} - type: object properties: model: type: string enum: - per_unit unit: type: string unit_price: type: number minimum: 0 currency: type: string pattern: ^[A-Z]{3}$ ext: type: object properties: {} additionalProperties: {} required: - model - unit - unit_price - currency additionalProperties: {} - type: object properties: model: type: string enum: - custom description: type: string minLength: 1 metadata: type: object properties: summary_for_operator: type: string minLength: 1 additionalProperties: {} currency: type: string pattern: ^[A-Z]{3}$ ext: type: object properties: {} additionalProperties: {} required: - model - description - metadata additionalProperties: {} required: - signal_ref additionalProperties: {} signal_targeting_rules: type: object properties: resolution_model: anyOf: - type: string enum: - direct_targeting - type: string enum: - seller_planned selection_mode: anyOf: - type: string enum: - optional - type: string enum: - required - type: string enum: - fixed min_selected_signals: type: number minimum: 0 max_selected_signals: type: number minimum: 1 max_selected_per_group: type: number minimum: 1 max_signal_targeting_groups: type: number minimum: 1 max_signals_per_targeting_group: type: number minimum: 1 selection_group_rules: type: array items: type: object properties: selection_group: type: string targeting_mode: anyOf: - type: string enum: - include - type: string enum: - exclude selection_mode: anyOf: - type: string enum: - optional - type: string enum: - required - type: string enum: - fixed min_selected_signals: type: number minimum: 0 max_selected_signals: type: number minimum: 1 required: - selection_group additionalProperties: {} additionalProperties: {} signal_targeting_allowed: type: boolean catalog_types: type: array items: anyOf: - type: string enum: - offering - type: string enum: - product - type: string enum: - inventory - type: string enum: - store - type: string enum: - promotion - type: string enum: - hotel - type: string enum: - flight - type: string enum: - job - type: string enum: - vehicle - type: string enum: - real_estate - type: string enum: - education - type: string enum: - destination - type: string enum: - app metric_optimization: type: object properties: supported_metrics: type: array items: anyOf: - type: string enum: - clicks - type: string enum: - views - type: string enum: - completed_views - type: string enum: - viewed_seconds - type: string enum: - attention_seconds - type: string enum: - attention_score - type: string enum: - engagements - type: string enum: - follows - type: string enum: - saves - type: string enum: - profile_visits - type: string enum: - reach supported_reach_units: type: array items: 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 supported_view_durations: type: array items: type: number supported_targets: type: array items: anyOf: - type: string enum: - cost_per - type: string enum: - threshold_rate required: - supported_metrics additionalProperties: {} vendor_metric_optimization: type: object properties: supported_metrics: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string supported_targets: type: array items: anyOf: - type: string enum: - cost_per - type: string enum: - threshold_rate required: - vendor - metric_id additionalProperties: {} required: - supported_metrics additionalProperties: {} max_optimization_goals: type: number minimum: 1 measurement_readiness: type: object properties: status: anyOf: - type: string enum: - insufficient - type: string enum: - minimum - type: string enum: - good - type: string enum: - excellent required_event_types: type: array items: anyOf: - type: string enum: - page_view - type: string enum: - view_content - type: string enum: - select_content - type: string enum: - select_item - type: string enum: - search - type: string enum: - share - type: string enum: - add_to_cart - type: string enum: - remove_from_cart - type: string enum: - viewed_cart - type: string enum: - add_to_wishlist - type: string enum: - initiate_checkout - type: string enum: - add_payment_info - type: string enum: - purchase - type: string enum: - refund - type: string enum: - lead - type: string enum: - qualify_lead - type: string enum: - close_convert_lead - type: string enum: - disqualify_lead - type: string enum: - complete_registration - type: string enum: - subscribe - type: string enum: - follow - type: string enum: - content_view - type: string enum: - watch_milestone - type: string enum: - start_trial - type: string enum: - app_install - type: string enum: - app_launch - type: string enum: - contact - type: string enum: - schedule - type: string enum: - donate - type: string enum: - submit_application - type: string enum: - custom missing_event_types: type: array items: anyOf: - type: string enum: - page_view - type: string enum: - view_content - type: string enum: - select_content - type: string enum: - select_item - type: string enum: - search - type: string enum: - share - type: string enum: - add_to_cart - type: string enum: - remove_from_cart - type: string enum: - viewed_cart - type: string enum: - add_to_wishlist - type: string enum: - initiate_checkout - type: string enum: - add_payment_info - type: string enum: - purchase - type: string enum: - refund - type: string enum: - lead - type: string enum: - qualify_lead - type: string enum: - close_convert_lead - type: string enum: - disqualify_lead - type: string enum: - complete_registration - type: string enum: - subscribe - type: string enum: - follow - type: string enum: - content_view - type: string enum: - watch_milestone - type: string enum: - start_trial - type: string enum: - app_install - type: string enum: - app_launch - type: string enum: - contact - type: string enum: - schedule - type: string enum: - donate - type: string enum: - submit_application - type: string enum: - custom issues: type: array items: type: object properties: severity: anyOf: - type: string enum: - error - type: string enum: - warning - type: string enum: - info message: type: string required: - severity - message additionalProperties: {} notes: type: string required: - status additionalProperties: {} conversion_tracking: type: object properties: action_sources: type: array items: anyOf: - type: string enum: - website - type: string enum: - app - type: string enum: - offline - type: string enum: - phone_call - type: string enum: - chat - type: string enum: - email - type: string enum: - in_store - type: string enum: - system_generated - type: string enum: - other supported_targets: type: array items: anyOf: - type: string enum: - cost_per - type: string enum: - per_ad_spend - type: string enum: - maximize_value platform_managed: type: boolean additionalProperties: {} catalog_match: type: object properties: matched_gtins: type: array items: type: string matched_ids: type: array items: type: string matched_count: type: number minimum: 0 submitted_count: type: number minimum: 0 required: - submitted_count additionalProperties: {} brief_relevance: type: string expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ product_card: type: object properties: image: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} title: type: string maxLength: 60 description: type: string maxLength: 200 price_label: type: string maxLength: 30 cta_label: type: string maxLength: 25 additionalProperties: {} product_card_detailed: type: object properties: hero_image: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} carousel_images: type: array items: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} title: type: string description: type: string specifications: type: array items: type: object properties: label: type: string maxLength: 60 value: type: string maxLength: 200 required: - label - value additionalProperties: {} price_label: type: string cta_label: type: string additionalProperties: {} collections: type: array items: type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ collection_ids: type: array items: type: string required: - publisher_domain - collection_ids additionalProperties: {} collection_targeting_allowed: type: boolean installments: type: array items: type: object properties: installment_id: type: string collection_id: type: string name: type: string season: type: string installment_number: type: string scheduled_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ status: anyOf: - type: string enum: - scheduled - type: string enum: - tentative - type: string enum: - live - type: string enum: - postponed - type: string enum: - cancelled - type: string enum: - aired - type: string enum: - published duration_seconds: type: number minimum: 0 flexible_end: type: boolean valid_until: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ content_rating: type: object properties: system: anyOf: - type: string enum: - tv_parental - type: string enum: - mpaa - type: string enum: - podcast - type: string enum: - esrb - type: string enum: - bbfc - type: string enum: - fsk - type: string enum: - acb - type: string enum: - chvrs - type: string enum: - csa - type: string enum: - pegi - type: string enum: - custom rating: type: string required: - system - rating additionalProperties: {} topics: type: array items: type: string special: type: object properties: name: type: string category: anyOf: - type: string enum: - awards - type: string enum: - championship - type: string enum: - concert - type: string enum: - conference - type: string enum: - election - type: string enum: - festival - type: string enum: - gala - type: string enum: - holiday - type: string enum: - premiere - type: string enum: - product_launch - type: string enum: - reunion - type: string enum: - tribute starts: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ ends: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - name additionalProperties: {} guest_talent: type: array items: type: object properties: role: anyOf: - type: string enum: - host - type: string enum: - guest - type: string enum: - creator - type: string enum: - cast - type: string enum: - narrator - type: string enum: - producer - type: string enum: - correspondent - type: string enum: - commentator - type: string enum: - analyst name: type: string brand_url: type: string required: - role - name additionalProperties: {} ad_inventory: type: object properties: expected_breaks: type: number minimum: 0 total_ad_seconds: type: number minimum: 0 max_ad_duration_seconds: type: number minimum: 1 unplanned_breaks: type: boolean supported_formats: type: array items: type: string required: - expected_breaks additionalProperties: {} deadlines: type: object properties: booking_deadline: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ cancellation_deadline: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ material_deadlines: type: array items: type: object properties: stage: type: string due_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ label: type: string required: - stage - due_at additionalProperties: {} additionalProperties: {} derivative_of: type: object properties: installment_id: type: string type: anyOf: - type: string enum: - clip - type: string enum: - highlight - type: string enum: - recap - type: string enum: - trailer - type: string enum: - bonus required: - installment_id - type additionalProperties: {} ext: type: object properties: {} additionalProperties: {} required: - installment_id additionalProperties: {} enforced_policies: type: array items: type: string trusted_match: type: object properties: context_match: type: boolean identity_match: type: boolean response_types: type: array items: anyOf: - type: string enum: - activation - type: string enum: - catalog_items - type: string enum: - creative - type: string enum: - deal dynamic_brands: type: boolean providers: type: array items: type: object properties: agent_url: type: string context_match: type: boolean identity_match: type: boolean countries: type: array items: type: string uid_types: type: array items: anyOf: - type: string enum: - rampid - type: string enum: - rampid_derived - type: string enum: - id5 - type: string enum: - uid2 - type: string enum: - euid - type: string enum: - pairid - type: string enum: - maid - type: string enum: - hashed_email - type: string enum: - publisher_first_party - type: string enum: - world_id_nullifier - type: string enum: - other required: - agent_url additionalProperties: {} required: - context_match additionalProperties: {} material_submission: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ instructions: type: string maxLength: 2000 ext: type: object properties: {} additionalProperties: {} additionalProperties: {} ext: type: object properties: interchange: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 source_product_id: type: string minLength: 1 sales_agent_id: type: string evaluation: type: object properties: disposition: type: string enum: - accept evaluated: description: Whether the evaluation model actually applied your instructions to this candidate. false = fail-open pass-through (evaluation was unavailable or ran out of budget) — the disposition does NOT reflect your instructions. Always pair with the envelope evaluation.status, which reads "degraded" when any candidate passed through. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 enrichment: type: object properties: summary: type: string minLength: 1 maxLength: 1000 strengths: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 concerns: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 labels: maxItems: 20 type: array items: type: string minLength: 1 maxLength: 100 required: - summary - strengths - concerns - labels additionalProperties: false ranking: type: object properties: rank: type: integer maximum: 9007199254740991 minimum: 1 score: type: number minimum: 0 maximum: 1 rationale: type: string minLength: 1 maxLength: 500 provisional: type: boolean required: - rank - score - rationale - provisional additionalProperties: false required: - disposition - evaluated - confidence - reasons additionalProperties: false screening: type: object properties: decision: type: string enum: - accept evaluated: description: Whether the screening model actually applied your instructions to this candidate. false = fail-open pass-through; the decision does NOT reflect your instructions. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 required: - decision - evaluated - confidence - reasons additionalProperties: false required: - storefront_id - storefront_name - source_product_id additionalProperties: false required: - interchange additionalProperties: {} required: - product_id - name - description - publisher_properties - delivery_type - pricing_options - reporting_capabilities - ext additionalProperties: {} ProposalEvaluationRequest: description: Managed buyer operating instructions for proposal disposition, optional enrichment, bounded refinement, and optional comparative ranking. This is prompt configuration, not executable customer code. type: object properties: instructions: description: Plain-language buyer operating instructions for accepting, rejecting, enriching, or refining each valid proposal candidate. type: string minLength: 1 maxLength: 8000 max_refinement_rounds: description: Maximum autonomous AdCP refine turns per candidate. Set 0 to evaluate without asking sellers for revisions. default: 1 type: integer minimum: 0 maximum: 3 max_evaluation_passes: description: Maximum managed evaluation batches for this execution. Each pass evaluates at most 10 candidates. default: 20 type: integer maximum: 100 minimum: 1 enrichment: description: When true, accepted candidates include buyer-owned summary, strengths, concerns, and labels under ext.interchange.evaluation. default: true type: boolean ranking: description: Enable comparative ranking of accepted candidates in batches of at most 100. type: object properties: instructions: description: Optional comparative objective for ordering accepted candidates. Omit to rank by overall fit to the evaluation instructions. type: string minLength: 1 maxLength: 4000 additionalProperties: false required: - instructions additionalProperties: false InterchangeProposal: description: Canonical AdCP proposal with storefront-qualified proposal and allocation product identities. type: object properties: proposal_id: description: Opaque storefront-qualified proposal ID. Pass this exact value in proposal-scoped refine requests. example: sfp1:42:cHJvcG9zYWwtNw type: string pattern: ^sfp1:[1-9]\d*:[A-Za-z0-9_-]+$ name: type: string maxLength: 500 description: type: string maxLength: 2000 allocations: type: array items: type: object properties: product_id: description: Opaque storefront-qualified product ID. Pass this exact value to add_discovery_products; do not construct or strip it. example: sf1:42:d2g6c291cmNlOnByb2R1Y3Q type: string pattern: ^sf1:[1-9]\d*:[A-Za-z0-9_-]+$ allocation_percentage: type: number minimum: 0 maximum: 100 pricing_option_id: type: string rationale: type: string sequence: type: number minimum: 1 tags: type: array items: type: string start_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ end_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ 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: {} forecast: type: object properties: points: type: array items: type: object properties: label: type: string maxLength: 128 budget: type: number minimum: 0 product_id: type: string dimensions: type: array items: anyOf: - type: object properties: kind: type: string enum: - geo geo_level: anyOf: - type: string enum: - country - type: string enum: - region - type: string enum: - metro - type: string enum: - postal_area system: type: string country: type: string pattern: ^[A-Z]{2}$ geo_code: type: string geo_name: type: string required: - kind - geo_level - geo_code additionalProperties: {} - type: object properties: kind: type: string enum: - placement placement_ref: type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ placement_id: type: string required: - placement_id additionalProperties: {} placement_name: type: string required: - kind - placement_ref additionalProperties: {} - type: object properties: kind: type: string enum: - device_type device_type: 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 required: - kind - device_type additionalProperties: {} - type: object properties: kind: type: string enum: - device_platform device_platform: 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 required: - kind - device_platform additionalProperties: {} - type: object properties: kind: type: string enum: - audience audience_id: type: string audience_source: anyOf: - type: string enum: - synced - type: string enum: - platform - type: string enum: - third_party - type: string enum: - lookalike - type: string enum: - retargeting - type: string enum: - unknown audience_name: type: string required: - kind - audience_id - audience_source additionalProperties: {} - type: object properties: kind: type: string enum: - signal 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: type: string pattern: ^[a-zA-Z0-9_-]+$ signal_value: anyOf: - type: string - type: number - type: boolean presence: anyOf: - type: string enum: - present - type: string enum: - absent signal_name: type: string signal_value_name: type: string required: - kind - presence additionalProperties: {} metrics: type: object properties: audience_size: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} reach: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} frequency: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} clicks: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} spend: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} completed_views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} grps: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} engagements: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} follows: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} saves: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} profile_visits: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} measured_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} downloads: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} plays: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} coverage_rate: allOf: - type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} - type: object properties: low: type: object additionalProperties: {} mid: type: object additionalProperties: {} high: type: object additionalProperties: {} additionalProperties: {} additionalProperties: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} viewability: type: object additionalProperties: {} vendor_metric_values: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string value: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} unit: type: string measurable_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} breakdown: type: object properties: {} additionalProperties: {} required: - vendor - metric_id - value additionalProperties: {} required: - metrics additionalProperties: {} forecast_range_unit: anyOf: - type: string enum: - spend - type: string enum: - availability - type: string enum: - reach_freq - type: string enum: - weekly - type: string enum: - daily - type: string enum: - clicks - type: string enum: - conversions - type: string enum: - package method: anyOf: - type: string enum: - estimate - type: string enum: - modeled - type: string enum: - guaranteed currency: type: string demographic_system: anyOf: - type: string enum: - nielsen - type: string enum: - barb - type: string enum: - agf - type: string enum: - oztam - type: string enum: - mediametrie - type: string enum: - custom demographic: type: string measurement_source: type: string maxLength: 64 pattern: ^[a-z0-9_]+$ reach_unit: 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 generated_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ valid_until: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ ext: type: object properties: {} additionalProperties: {} required: - points - method - currency additionalProperties: {} ext: type: object properties: {} additionalProperties: {} required: - product_id - allocation_percentage additionalProperties: {} proposal_status: anyOf: - type: string enum: - draft - type: string enum: - committed expires_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ insertion_order: type: object properties: io_id: type: string maxLength: 255 terms: type: object properties: advertiser: type: string maxLength: 500 publisher: type: string maxLength: 500 total_budget: type: object properties: amount: type: number minimum: 0 currency: type: string minLength: 3 maxLength: 3 required: - amount - currency additionalProperties: {} flight_start: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ flight_end: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ payment_terms: anyOf: - type: string enum: - net_30 - type: string enum: - net_60 - type: string enum: - net_90 - type: string enum: - prepaid - type: string enum: - due_on_receipt additionalProperties: {} terms_url: type: string signing_url: type: string requires_signature: type: boolean required: - io_id - requires_signature additionalProperties: {} total_budget_guidance: type: object properties: min: type: number minimum: 0 recommended: type: number minimum: 0 max: type: number minimum: 0 currency: type: string additionalProperties: {} brief_alignment: type: string maxLength: 2000 forecast: type: object properties: points: type: array items: type: object properties: label: type: string maxLength: 128 budget: type: number minimum: 0 product_id: type: string dimensions: type: array items: anyOf: - type: object properties: kind: type: string enum: - geo geo_level: anyOf: - type: string enum: - country - type: string enum: - region - type: string enum: - metro - type: string enum: - postal_area system: type: string country: type: string pattern: ^[A-Z]{2}$ geo_code: type: string geo_name: type: string required: - kind - geo_level - geo_code additionalProperties: {} - type: object properties: kind: type: string enum: - placement placement_ref: type: object properties: publisher_domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ placement_id: type: string required: - placement_id additionalProperties: {} placement_name: type: string required: - kind - placement_ref additionalProperties: {} - type: object properties: kind: type: string enum: - device_type device_type: 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 required: - kind - device_type additionalProperties: {} - type: object properties: kind: type: string enum: - device_platform device_platform: 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 required: - kind - device_platform additionalProperties: {} - type: object properties: kind: type: string enum: - audience audience_id: type: string audience_source: anyOf: - type: string enum: - synced - type: string enum: - platform - type: string enum: - third_party - type: string enum: - lookalike - type: string enum: - retargeting - type: string enum: - unknown audience_name: type: string required: - kind - audience_id - audience_source additionalProperties: {} - type: object properties: kind: type: string enum: - signal 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: type: string pattern: ^[a-zA-Z0-9_-]+$ signal_value: anyOf: - type: string - type: number - type: boolean presence: anyOf: - type: string enum: - present - type: string enum: - absent signal_name: type: string signal_value_name: type: string required: - kind - presence additionalProperties: {} metrics: type: object properties: audience_size: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} reach: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} frequency: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} clicks: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} spend: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} completed_views: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} grps: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} engagements: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} follows: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} saves: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} profile_visits: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} measured_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} downloads: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} plays: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} coverage_rate: allOf: - type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} - type: object properties: low: type: object additionalProperties: {} mid: type: object additionalProperties: {} high: type: object additionalProperties: {} additionalProperties: {} additionalProperties: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} viewability: type: object additionalProperties: {} vendor_metric_values: type: array items: type: object properties: vendor: type: object properties: domain: type: string pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$ brand_id: type: string industries: type: array items: type: string data_subject_contestation: type: object properties: url: type: string pattern: ^https:\/\/ email: type: string format: email pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$ languages: type: array items: type: string additionalProperties: {} brand_kit_override: type: object properties: logo: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} colors: type: object properties: primary: type: string pattern: ^#[0-9a-fA-F]{6}$ secondary: type: string pattern: ^#[0-9a-fA-F]{6}$ accent: type: string pattern: ^#[0-9a-fA-F]{6}$ additionalProperties: {} voice: type: string tagline: type: string additionalProperties: {} required: - domain additionalProperties: {} metric_id: type: string value: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} unit: type: string measurable_impressions: type: object properties: low: type: number minimum: 0 mid: type: number minimum: 0 high: type: number minimum: 0 additionalProperties: {} breakdown: type: object properties: {} additionalProperties: {} required: - vendor - metric_id - value additionalProperties: {} required: - metrics additionalProperties: {} forecast_range_unit: anyOf: - type: string enum: - spend - type: string enum: - availability - type: string enum: - reach_freq - type: string enum: - weekly - type: string enum: - daily - type: string enum: - clicks - type: string enum: - conversions - type: string enum: - package method: anyOf: - type: string enum: - estimate - type: string enum: - modeled - type: string enum: - guaranteed currency: type: string demographic_system: anyOf: - type: string enum: - nielsen - type: string enum: - barb - type: string enum: - agf - type: string enum: - oztam - type: string enum: - mediametrie - type: string enum: - custom demographic: type: string measurement_source: type: string maxLength: 64 pattern: ^[a-z0-9_]+$ reach_unit: 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 generated_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ valid_until: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ ext: type: object properties: {} additionalProperties: {} required: - points - method - currency additionalProperties: {} ext: type: object properties: interchange: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 source_proposal_id: type: string minLength: 1 sales_agent_id: type: string evaluation: type: object properties: disposition: type: string enum: - accept evaluated: description: Whether the evaluation model actually applied your instructions to this candidate. false = fail-open pass-through (evaluation was unavailable or ran out of budget) — the disposition does NOT reflect your instructions. Always pair with the envelope evaluation.status, which reads "degraded" when any candidate passed through. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 enrichment: type: object properties: summary: type: string minLength: 1 maxLength: 1000 strengths: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 concerns: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 labels: maxItems: 20 type: array items: type: string minLength: 1 maxLength: 100 required: - summary - strengths - concerns - labels additionalProperties: false ranking: type: object properties: rank: type: integer maximum: 9007199254740991 minimum: 1 score: type: number minimum: 0 maximum: 1 rationale: type: string minLength: 1 maxLength: 500 provisional: type: boolean required: - rank - score - rationale - provisional additionalProperties: false required: - disposition - evaluated - confidence - reasons additionalProperties: false screening: type: object properties: decision: type: string enum: - accept evaluated: description: Whether the screening model actually applied your instructions to this candidate. false = fail-open pass-through; the decision does NOT reflect your instructions. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 required: - decision - evaluated - confidence - reasons additionalProperties: false required: - storefront_id - storefront_name - source_proposal_id additionalProperties: false required: - interchange additionalProperties: {} required: - proposal_id - name - allocations - ext additionalProperties: {} DiscoverProductsBody: description: Request body for discovering products with optional auto-session creation type: object properties: advertiserId: description: Advertiser ID used to resolve BrandReference example: 12345 type: integer maximum: 9007199254740991 minimum: 1 discoveryId: description: Existing discovery ID. If not provided, a new discovery session is created. example: abc123-def456-ghi789 type: string campaignId: description: Campaign ID to seed discovery from. The campaign brief, flight dates, and budget are used as defaults (explicit request values take precedence). example: campaign_ea5e33dd-d65b-44c7-a3e8-8e1db1d137b4 type: string proposalCode: description: Storefront-issued proposal code (e.g. "PRP-XK4A29"). When set, the server short-circuits discovery and returns the seller's saved snapshot for this code. Caller's resolved operator must match the proposal's assigned operator. Other discovery filters (brief, budget, channels, refine, etc.) are ignored. example: PRP-XK4A29 type: string channels: description: Channels to search (defaults to ["display", "olv", "ctv", "social"]). Accepts any AdCP MediaChannel value. "video" is an alias for "olv"; "audio" is an alias for "streaming_audio". example: - ctv - display type: array items: anyOf: - anyOf: - type: string enum: - display - type: string enum: - olv - type: string enum: - social - type: string enum: - search - type: string enum: - ctv - type: string enum: - linear_tv - type: string enum: - radio - type: string enum: - streaming_audio - type: string enum: - podcast - type: string enum: - dooh - type: string enum: - ooh - type: string enum: - print - type: string enum: - cinema - type: string enum: - email - type: string enum: - gaming - type: string enum: - retail_media - type: string enum: - influencer - type: string enum: - affiliate - type: string enum: - product_placement - type: string enum: - sponsored_intelligence - type: string enum: - video - type: string enum: - audio countries: description: Countries to target (defaults to brand agent countries if not specified) example: - US - CA maxItems: 250 type: array items: type: string pattern: ^[A-Z]{2}$ brief: description: Natural language context for product search example: Looking for premium video inventory targeting tech enthusiasts type: string maxLength: 5000 budget: description: Budget for the discovery example: 50000 type: number exclusiveMinimum: 0 flightDates: description: Optional flight dates for availability filtering type: object properties: startDate: description: Campaign start date (ISO 8601) example: '2025-01-15T00:00:00Z' type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ endDate: description: Campaign end date (ISO 8601) example: '2025-03-31T23:59:59Z' type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - startDate - endDate publisherDomain: description: Filter products by publisher domain (exact domain component match) example: hulu type: string minLength: 1 pricingModel: description: Filter products by pricing model example: cpm type: string enum: - cpm - vcpm - cpc - cpcv - cpv - cpp - cpa - flat_rate - time waitMode: description: '`quick` waits up to 30 seconds per storefront agent and returns partial results if slow agents miss the window. `long` waits up to 210 seconds per storefront agent; ask the user before using it.' example: quick default: quick type: string enum: - quick - long waitSeconds: description: Optional explicit per-storefront wait in seconds, max 210. Overrides waitMode. Ask the user before setting this above 30. example: 120 type: integer maximum: 210 minimum: 1 progressive: description: 'Progressive delivery: return a fast first wave of already-answered sellers with `resultsComplete: false` and `pendingAgents`, while remaining sellers keep landing in the background. Follow with browse_discovery using `sinceRevision` until `resultsComplete` is true; if it is still false after roughly the wait budget (or pendingAgents stops shrinking), treat remaining pendingAgents like incompleteAgents and proceed with what you have. waitMode/waitSeconds still cap each seller''s own deadline. A repeat of a recent identical query may return complete immediately. Ignored when `refine` or `screening` is present — those responses are terminal-only on the legacy Discover surface; use buyer `get_products` for progressive screened replacement pages.' example: true type: boolean storefrontIds: description: Filter discovery to these storefronts. Highly encouraged when the buyer wants results scoped to specific sellers — pass the IDs returned by `list_storefronts`. Combined with `storefrontNames` using OR logic. An empty array or omitted field both mean "no request-level filter" — if a `campaignId` is also provided and the campaign was created with `storefrontIds`, the campaign-level value is used in that case. example: - 42 - 57 maxItems: 50 type: array items: type: integer maximum: 9007199254740991 minimum: 1 storefrontNames: description: Filter discovery to storefronts whose name matches one of these values (case-insensitive substring match). Use when the buyer mentions a seller by name. Combined with `storefrontIds` using OR logic. An empty array or omitted field both mean "no request-level filter" — campaign-level pinning is used in that case if available. example: - Acme - Acme Exchange maxItems: 50 type: array items: type: string maxLength: 255 groupLimit: description: 'Maximum number of product groups to return (default: 10, max: 10)' example: 10 default: 10 type: integer maximum: 10 minimum: 1 groupOffset: description: Number of groups to skip for pagination example: 0 default: 0 type: integer minimum: 0 maximum: 9007199254740991 productsPerGroup: description: 'Maximum products to return per group (default: 10, max: 15)' example: 10 default: 10 type: integer maximum: 15 minimum: 1 productOffset: description: 'Number of products to skip within each group (default: 0, max: 1000)' example: 5 default: 0 type: integer minimum: 0 maximum: 1000 debug: description: When true, includes detailed ADCP agent request/response debug logs in the response for troubleshooting type: boolean screening: description: Deprecated alias for evaluation. Discover delegates these instructions to the shared proposal-evaluation engine. allOf: - $ref: '#/components/schemas/ProposalScreeningRequest' evaluation: description: 'Optional managed proposal evaluation: disposition, buyer-side enrichment, bounded seller refinement, and optional comparative ranking.' allOf: - $ref: '#/components/schemas/ProposalEvaluationRequest' refine: description: Refinement instructions for iterating on previous discovery results. When provided, discoveryId is required. minItems: 1 maxItems: 100 type: array items: $ref: '#/components/schemas/DiscoveryRefinementItem' required: - advertiserId BatchProposalSelection: description: A storefront-qualified seller proposal selected from get_products. type: object properties: kind: type: string enum: - proposal proposalId: description: Opaque storefront-qualified proposal ID. Pass this exact value in proposal-scoped refine requests. example: sfp1:42:cHJvcG9zYWwtNw type: string pattern: ^sfp1:[1-9]\d*:[A-Za-z0-9_-]+$ totalBudget: description: Total budget to distribute using the seller proposal's allocation percentages. Required when the proposal has no recommended total budget. type: number exclusiveMinimum: 0 required: - kind - proposalId additionalProperties: false ProductCardDetailedData: description: Detailed inline product card data for buyer UIs type: object properties: hero_image: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} carousel_images: type: array items: type: object properties: asset_type: type: string enum: - image url: type: string width: type: number minimum: 1 height: type: number minimum: 1 format: type: string alt_text: type: string provenance: type: object properties: digital_source_type: anyOf: - type: string enum: - digital_capture - type: string enum: - digital_creation - type: string enum: - trained_algorithmic_media - type: string enum: - composite_with_trained_algorithmic_media - type: string enum: - algorithmic_media - type: string enum: - composite_capture - type: string enum: - composite_synthetic - type: string enum: - human_edits - type: string enum: - data_driven_media ai_tool: type: object properties: name: type: string version: type: string provider: type: string required: - name additionalProperties: {} human_oversight: anyOf: - type: string enum: - none - type: string enum: - prompt_only - type: string enum: - selected - type: string enum: - edited - type: string enum: - directed declared_by: type: object properties: agent_url: type: string role: anyOf: - type: string enum: - creator - type: string enum: - advertiser - type: string enum: - agency - type: string enum: - platform - type: string enum: - tool required: - role additionalProperties: {} declared_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ created_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ c2pa: type: object properties: manifest_url: type: string required: - manifest_url additionalProperties: {} embedded_provenance: type: array items: type: object properties: method: anyOf: - type: string enum: - manifest_wrapper - type: string enum: - provenance_markers standard: type: string provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - method - provider additionalProperties: {} watermarks: type: array items: type: object properties: media_type: anyOf: - type: string enum: - audio - type: string enum: - image - type: string enum: - video - type: string enum: - text provider: type: string verify_agent: type: object properties: agent_url: type: string pattern: ^https:\/\/ feature_id: type: string required: - agent_url additionalProperties: {} c2pa_action: anyOf: - type: string enum: - c2pa.watermarked.bound - type: string enum: - c2pa.watermarked.unbound embedded_at: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ required: - media_type - provider additionalProperties: {} disclosure: type: object properties: required: type: boolean jurisdictions: type: array items: type: object properties: country: type: string region: type: string regulation: type: string label_text: type: string render_guidance: type: object properties: persistence: anyOf: - type: string enum: - continuous - type: string enum: - initial - type: string enum: - flexible min_duration_ms: type: number minimum: 1 positions: type: array items: anyOf: - type: string enum: - prominent - type: string enum: - footer - type: string enum: - audio - type: string enum: - subtitle - type: string enum: - overlay - type: string enum: - end_card - type: string enum: - pre_roll - type: string enum: - companion ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - country - regulation additionalProperties: {} required: - required additionalProperties: {} verification: type: array items: type: object properties: verified_by: type: string verified_time: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$ result: anyOf: - type: string enum: - authentic - type: string enum: - ai_generated - type: string enum: - ai_modified - type: string enum: - inconclusive confidence: type: number minimum: 0 maximum: 1 details_url: type: string required: - verified_by - result additionalProperties: {} ext: type: object properties: {} additionalProperties: {} additionalProperties: {} required: - asset_type - url - width - height additionalProperties: {} title: type: string description: type: string specifications: type: array items: type: object properties: label: type: string value: type: string required: - label - value additionalProperties: false price_label: type: string cta_label: type: string additionalProperties: false ApplyProposalResponse: description: Response from applying a proposal type: object properties: discoveryId: description: Discovery ID type: string proposal: description: The proposal that was applied allOf: - $ref: '#/components/schemas/AppliedProposalSummary' totalBudgetUsed: description: Total budget distributed across products from this proposal type: number productsApplied: description: Number of products added from the proposal type: integer minimum: -9007199254740991 maximum: 9007199254740991 productsSkipped: description: Product IDs from the proposal that could not be found in discovery results type: array items: type: string products: description: All selected products after applying the proposal 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 the discovery session is attached to an active campaign. When false, the products are saved to the session but no active campaign reflects them yet. type: boolean campaignWarning: description: 'Guidance shown only when campaignBound is false: either the session is not attached to any campaign, or the campaign it was attached to has been archived. Pass campaignId for an active campaign (or restore the archived one) so the campaign reflects the products.' type: string required: - discoveryId - proposal - totalBudgetUsed - productsApplied - productsSkipped - products - totalProducts additionalProperties: false ProductGroup: description: Group of products from a publisher type: object properties: groupId: description: Unique identifier for the product group type: string groupName: description: Name of the group (typically publisher name) type: string storefrontId: description: Storefront ID when this is a storefront-backed group type: string storefrontName: description: Storefront display name type: string description: description: Description of the product group type: string products: description: Products in this group type: array items: $ref: '#/components/schemas/Product' productCount: description: Number of products in this group type: integer minimum: 0 maximum: 9007199254740991 totalProducts: description: Total number of products available in this group type: integer minimum: 0 maximum: 9007199254740991 hasMoreProducts: description: Whether more products are available beyond those returned type: boolean required: - groupId - groupName - products - productCount - totalProducts - hasMoreProducts additionalProperties: false RemoveProductsRequest: description: Request to remove products from a discovery session type: object properties: productIds: description: Product IDs to remove from the selection. Pass storefront-qualified sf1:... IDs unchanged so colliding seller-local IDs remain unambiguous. minItems: 1 type: array items: type: string required: - productIds IncompleteDiscoveryScope: description: A get_products scope the upstream seller could not fully complete within the requested time budget. type: object properties: scope: type: string enum: - products - pricing - forecast - proposals - wholesale_feed description: description: Seller-provided explanation of what is missing or partial, capped at 500 characters. Untrusted agent-controlled content; sanitize before rendering in HTML. type: string maxLength: 500 estimatedWaitSeconds: description: Estimated additional wait in seconds if the seller provided ADCP incomplete.estimated_wait. type: integer maximum: 9007199254740991 minimum: 1 required: - scope - description additionalProperties: false PerformanceConfig: description: Configuration for performance campaign optimization type: object properties: optimizationGoals: description: Optimization goals for the campaign. Each goal targets either conversion events or seller-native metrics. minItems: 1 type: array items: $ref: '#/components/schemas/OptimizationGoal' required: - optimizationGoals ProjectedGetProductsResponse: description: Canonical get_products response, either complete or with product objects honoring the optional fields projection while retaining qualified identity and Interchange provenance. anyOf: - $ref: '#/components/schemas/GetProductsResponse' - type: object properties: context_id: type: string context: type: object properties: {} additionalProperties: {} task_id: type: string status: type: string enum: - completed message: type: string timestamp: type: string replayed: type: boolean adcp_error: type: object properties: code: type: string minLength: 1 maxLength: 64 message: type: string field: type: string suggestion: type: string retry_after: type: number minimum: 1 maximum: 3600 issues: type: array items: type: object properties: pointer: type: string message: type: string keyword: type: string schemaPath: type: string schema_id: type: string discriminator: type: array items: type: object properties: property_name: type: string value: anyOf: - type: string - type: number - type: boolean required: - property_name - value additionalProperties: {} required: - pointer - message - keyword additionalProperties: {} details: type: object properties: {} additionalProperties: {} recovery: anyOf: - type: string enum: - transient - type: string enum: - correctable - type: string enum: - terminal source: anyOf: - type: string enum: - producer - type: string enum: - sdk sdk_id: type: string required: - code - message additionalProperties: {} push_notification_config: type: object properties: url: type: string operation_id: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_.:-]{1,255}$ token: type: string minLength: 16 maxLength: 4096 authentication: type: object properties: schemes: type: array items: anyOf: - type: string enum: - Bearer - type: string enum: - HMAC-SHA256 credentials: type: string minLength: 32 required: - schemes - credentials additionalProperties: {} required: - url additionalProperties: {} governance_context: type: string payload: type: object properties: {} additionalProperties: {} adcp_version: type: string adcp_major_version: type: number products: type: array items: $ref: '#/components/schemas/ProjectedInterchangeProduct' extensions: type: object additionalProperties: type: object properties: extends: type: string fields: type: object properties: {} additionalProperties: {} version: type: string description: type: string required: - extends - fields additionalProperties: {} proposals: type: array items: $ref: '#/components/schemas/InterchangeProposal' errors: type: array items: type: object properties: code: type: string minLength: 1 maxLength: 64 message: type: string field: type: string suggestion: type: string retry_after: type: number minimum: 1 maximum: 3600 issues: type: array items: type: object properties: pointer: type: string message: type: string keyword: type: string schemaPath: type: string schema_id: type: string discriminator: type: array items: type: object properties: property_name: type: string value: anyOf: - type: string - type: number - type: boolean required: - property_name - value additionalProperties: {} required: - pointer - message - keyword additionalProperties: {} details: type: object properties: {} additionalProperties: {} recovery: anyOf: - type: string enum: - transient - type: string enum: - correctable - type: string enum: - terminal source: anyOf: - type: string enum: - producer - type: string enum: - sdk sdk_id: type: string required: - code - message additionalProperties: {} property_list_applied: type: boolean catalog_applied: type: boolean refinement_applied: type: array items: anyOf: - type: object properties: scope: type: string enum: - request status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - status additionalProperties: {} - type: object properties: scope: type: string enum: - product product_id: type: string status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - product_id - status additionalProperties: {} - type: object properties: scope: type: string enum: - proposal proposal_id: type: string status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - proposal_id - status additionalProperties: {} incomplete: type: array items: type: object properties: scope: anyOf: - type: string enum: - products - type: string enum: - pricing - type: string enum: - forecast - type: string enum: - proposals - type: string enum: - wholesale_feed description: type: string estimated_wait: 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: {} required: - scope - description additionalProperties: {} filter_diagnostics: type: object properties: semantics: anyOf: - type: string enum: - only - type: string enum: - any - type: string enum: - approximate total_candidates: type: number minimum: 0 excluded_by: type: object additionalProperties: type: object properties: count: type: number minimum: 0 values: type: array items: anyOf: - type: string - type: object properties: {} additionalProperties: {} notes: type: string required: - count additionalProperties: {} additionalProperties: {} pagination: type: object properties: has_more: type: boolean cursor: type: string total_count: type: number minimum: 0 required: - has_more additionalProperties: {} wholesale_feed_version: type: string pricing_version: type: string cache_scope: type: string enum: - account unchanged: type: boolean enum: - true sandbox: type: boolean ext: type: object properties: interchange: type: object properties: execution_id: type: string minLength: 1 revision: type: integer minimum: 0 maximum: 9007199254740991 results_complete: type: boolean provisional: type: boolean candidate_count: type: integer minimum: 0 maximum: 9007199254740991 storefront_results: type: array items: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 status: type: string enum: - pending - completed - failed - incomplete product_count: type: integer minimum: 0 maximum: 9007199254740991 response_time_ms: type: integer minimum: 0 maximum: 9007199254740991 error: type: string message: type: string minLength: 1 required: - storefront_id - storefront_name - status - product_count additionalProperties: false pending_agents: type: array items: type: object properties: agent_id: type: string minLength: 1 agent_name: type: string minLength: 1 storefronts: type: array items: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 required: - storefront_id - storefront_name additionalProperties: false required: - agent_id - agent_name additionalProperties: false evaluation: type: object properties: enabled: type: boolean status: type: string enum: - not_run - complete - degraded model_class: type: string enum: - fast evaluation_passes: type: integer minimum: 0 maximum: 9007199254740991 ranking_passes: type: integer minimum: 0 maximum: 9007199254740991 candidates_evaluated: type: integer minimum: 0 maximum: 9007199254740991 candidates_ranked: type: integer minimum: 0 maximum: 9007199254740991 accepted: type: integer minimum: 0 maximum: 9007199254740991 rejected: type: integer minimum: 0 maximum: 9007199254740991 refining: type: integer minimum: 0 maximum: 9007199254740991 refinement_limit_reached: type: integer minimum: 0 maximum: 9007199254740991 estimated_ius: type: number minimum: 0 charged_ius: type: number minimum: 0 billing_status: type: string enum: - included - calibrating - rated required: - enabled - status - evaluation_passes - ranking_passes - candidates_evaluated - candidates_ranked - accepted - rejected - refining - refinement_limit_reached - estimated_ius - charged_ius - billing_status additionalProperties: false screening: type: object properties: enabled: type: boolean status: type: string enum: - not_run - complete - degraded model_class: type: string enum: - fast screening_passes: type: integer minimum: 0 maximum: 9007199254740991 candidates_evaluated: type: integer minimum: 0 maximum: 9007199254740991 accepted: type: integer minimum: 0 maximum: 9007199254740991 rejected: type: integer minimum: 0 maximum: 9007199254740991 refining: type: integer minimum: 0 maximum: 9007199254740991 refinement_limit_reached: type: integer minimum: 0 maximum: 9007199254740991 estimated_ius: type: number minimum: 0 charged_ius: type: number minimum: 0 billing_status: type: string enum: - included - calibrating - rated required: - enabled - status - screening_passes - candidates_evaluated - accepted - rejected - refining - refinement_limit_reached - estimated_ius - charged_ius - billing_status additionalProperties: false retry_with_longer_wait_available: type: boolean poll_after_ms: type: integer maximum: 9007199254740991 minimum: 1 guidance: type: string required: - execution_id - revision - results_complete - provisional - candidate_count - storefront_results - evaluation - screening additionalProperties: false required: - interchange additionalProperties: {} required: - status - products - cache_scope - ext additionalProperties: {} ProductFormatOption: description: AdCP 3.1 format declaration for a product type: object properties: format_kind: description: AdCP format kind discriminator (e.g. video_hosted, image) example: video_hosted type: string format_option_id: description: Stable identifier buyers use to select this format via format_option_refs in create_media_buy type: string display_name: description: Human-readable name for this format option type: string params: description: Canonical params for this format option allOf: - $ref: '#/components/schemas/ProductFormatOptionParams' additionalProperties: {} Duration: description: A duration expressed as an interval and unit type: object properties: interval: type: integer maximum: 9007199254740991 minimum: 1 unit: type: string enum: - minutes - hours - days - campaign required: - interval - unit RefinementApplied: description: Seller's response to a refinement instruction, matched by position to the request's refine array type: object properties: scope: description: Echoes the scope from the corresponding refinement instruction type: string enum: - request - product - proposal id: description: Echoes the id from the corresponding refinement instruction (for product and proposal scopes) type: string status: description: '''applied'': the ask was fulfilled. ''partial'': partially fulfilled. ''unable'': could not fulfill.' type: string enum: - applied - partial - unable notes: description: Seller explanation of the result type: string required: - status additionalProperties: false CampaignUtmConfig: description: UTM configuration for a campaign. Overrides advertiser-level defaults for matching param keys. type: object properties: params: description: Array of UTM parameter mappings for this campaign maxItems: 20 type: array items: type: object properties: paramKey: description: Output query parameter key appended to landing URL (e.g., "utm_source", "bg_campaign") example: utm_campaign type: string pattern: ^[a-zA-Z0-9_-]{1,100}$ paramValue: description: Macro name (e.g., "{CAMPAIGN_ID}") or static string (e.g., "scope3") to resolve as the value example: '{CAMPAIGN_ID}' type: string minLength: 1 maxLength: 200 required: - paramKey - paramValue deleteMissing: description: If true, remove campaign-level UTM params not in this request (replace mode). If false/omitted, only add/update (additive mode). type: boolean required: - params GetProductsResponse: description: Canonical flat AdCP product page with Interchange progressive and optional buyer-intelligence metadata. type: object properties: context_id: type: string context: type: object properties: {} additionalProperties: {} task_id: type: string status: type: string enum: - completed message: type: string timestamp: type: string replayed: type: boolean adcp_error: type: object properties: code: type: string minLength: 1 maxLength: 64 message: type: string field: type: string suggestion: type: string retry_after: type: number minimum: 1 maximum: 3600 issues: type: array items: type: object properties: pointer: type: string message: type: string keyword: type: string schemaPath: type: string schema_id: type: string discriminator: type: array items: type: object properties: property_name: type: string value: anyOf: - type: string - type: number - type: boolean required: - property_name - value additionalProperties: {} required: - pointer - message - keyword additionalProperties: {} details: type: object properties: {} additionalProperties: {} recovery: anyOf: - type: string enum: - transient - type: string enum: - correctable - type: string enum: - terminal source: anyOf: - type: string enum: - producer - type: string enum: - sdk sdk_id: type: string required: - code - message additionalProperties: {} push_notification_config: type: object properties: url: type: string operation_id: type: string minLength: 1 maxLength: 255 pattern: ^[A-Za-z0-9_.:-]{1,255}$ token: type: string minLength: 16 maxLength: 4096 authentication: type: object properties: schemes: type: array items: anyOf: - type: string enum: - Bearer - type: string enum: - HMAC-SHA256 credentials: type: string minLength: 32 required: - schemes - credentials additionalProperties: {} required: - url additionalProperties: {} governance_context: type: string payload: type: object properties: {} additionalProperties: {} adcp_version: type: string adcp_major_version: type: number products: type: array items: $ref: '#/components/schemas/InterchangeProduct' extensions: type: object additionalProperties: type: object properties: extends: type: string fields: type: object properties: {} additionalProperties: {} version: type: string description: type: string required: - extends - fields additionalProperties: {} proposals: type: array items: $ref: '#/components/schemas/InterchangeProposal' errors: type: array items: type: object properties: code: type: string minLength: 1 maxLength: 64 message: type: string field: type: string suggestion: type: string retry_after: type: number minimum: 1 maximum: 3600 issues: type: array items: type: object properties: pointer: type: string message: type: string keyword: type: string schemaPath: type: string schema_id: type: string discriminator: type: array items: type: object properties: property_name: type: string value: anyOf: - type: string - type: number - type: boolean required: - property_name - value additionalProperties: {} required: - pointer - message - keyword additionalProperties: {} details: type: object properties: {} additionalProperties: {} recovery: anyOf: - type: string enum: - transient - type: string enum: - correctable - type: string enum: - terminal source: anyOf: - type: string enum: - producer - type: string enum: - sdk sdk_id: type: string required: - code - message additionalProperties: {} property_list_applied: type: boolean catalog_applied: type: boolean refinement_applied: type: array items: anyOf: - type: object properties: scope: type: string enum: - request status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - status additionalProperties: {} - type: object properties: scope: type: string enum: - product product_id: type: string status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - product_id - status additionalProperties: {} - type: object properties: scope: type: string enum: - proposal proposal_id: type: string status: anyOf: - type: string enum: - applied - type: string enum: - partial - type: string enum: - unable notes: type: string required: - scope - proposal_id - status additionalProperties: {} incomplete: type: array items: type: object properties: scope: anyOf: - type: string enum: - products - type: string enum: - pricing - type: string enum: - forecast - type: string enum: - proposals - type: string enum: - wholesale_feed description: type: string estimated_wait: 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: {} required: - scope - description additionalProperties: {} filter_diagnostics: type: object properties: semantics: anyOf: - type: string enum: - only - type: string enum: - any - type: string enum: - approximate total_candidates: type: number minimum: 0 excluded_by: type: object additionalProperties: type: object properties: count: type: number minimum: 0 values: type: array items: anyOf: - type: string - type: object properties: {} additionalProperties: {} notes: type: string required: - count additionalProperties: {} additionalProperties: {} pagination: type: object properties: has_more: type: boolean cursor: type: string total_count: type: number minimum: 0 required: - has_more additionalProperties: {} wholesale_feed_version: type: string pricing_version: type: string cache_scope: type: string enum: - account unchanged: type: boolean enum: - true sandbox: type: boolean ext: type: object properties: interchange: type: object properties: execution_id: type: string minLength: 1 revision: type: integer minimum: 0 maximum: 9007199254740991 results_complete: type: boolean provisional: type: boolean candidate_count: type: integer minimum: 0 maximum: 9007199254740991 storefront_results: type: array items: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 status: type: string enum: - pending - completed - failed - incomplete product_count: type: integer minimum: 0 maximum: 9007199254740991 response_time_ms: type: integer minimum: 0 maximum: 9007199254740991 error: type: string message: type: string minLength: 1 required: - storefront_id - storefront_name - status - product_count additionalProperties: false pending_agents: type: array items: type: object properties: agent_id: type: string minLength: 1 agent_name: type: string minLength: 1 storefronts: type: array items: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 required: - storefront_id - storefront_name additionalProperties: false required: - agent_id - agent_name additionalProperties: false evaluation: type: object properties: enabled: type: boolean status: type: string enum: - not_run - complete - degraded model_class: type: string enum: - fast evaluation_passes: type: integer minimum: 0 maximum: 9007199254740991 ranking_passes: type: integer minimum: 0 maximum: 9007199254740991 candidates_evaluated: type: integer minimum: 0 maximum: 9007199254740991 candidates_ranked: type: integer minimum: 0 maximum: 9007199254740991 accepted: type: integer minimum: 0 maximum: 9007199254740991 rejected: type: integer minimum: 0 maximum: 9007199254740991 refining: type: integer minimum: 0 maximum: 9007199254740991 refinement_limit_reached: type: integer minimum: 0 maximum: 9007199254740991 estimated_ius: type: number minimum: 0 charged_ius: type: number minimum: 0 billing_status: type: string enum: - included - calibrating - rated required: - enabled - status - evaluation_passes - ranking_passes - candidates_evaluated - candidates_ranked - accepted - rejected - refining - refinement_limit_reached - estimated_ius - charged_ius - billing_status additionalProperties: false screening: type: object properties: enabled: type: boolean status: type: string enum: - not_run - complete - degraded model_class: type: string enum: - fast screening_passes: type: integer minimum: 0 maximum: 9007199254740991 candidates_evaluated: type: integer minimum: 0 maximum: 9007199254740991 accepted: type: integer minimum: 0 maximum: 9007199254740991 rejected: type: integer minimum: 0 maximum: 9007199254740991 refining: type: integer minimum: 0 maximum: 9007199254740991 refinement_limit_reached: type: integer minimum: 0 maximum: 9007199254740991 estimated_ius: type: number minimum: 0 charged_ius: type: number minimum: 0 billing_status: type: string enum: - included - calibrating - rated required: - enabled - status - screening_passes - candidates_evaluated - accepted - rejected - refining - refinement_limit_reached - estimated_ius - charged_ius - billing_status additionalProperties: false retry_with_longer_wait_available: type: boolean poll_after_ms: type: integer maximum: 9007199254740991 minimum: 1 guidance: type: string required: - execution_id - revision - results_complete - provisional - candidate_count - storefront_results - evaluation - screening additionalProperties: false required: - interchange additionalProperties: {} required: - status - products - cache_scope - ext additionalProperties: {} AzureBlobDeliveryConfig: type: object properties: type: type: string enum: - AZURE_BLOB pathPrefix: description: Blob name prefix within the credential's Azure container. Leading slashes are not stripped. The tokens {YYYY}, {MM}, {DD}, {HH} (from the delivery period start, UTC) and {DATA_DELIVERY_TYPE} are substituted at delivery time — e.g. "lld/{YYYY}/{MM}/{DD}/{HH}/{DATA_DELIVERY_TYPE}/" → "lld/2026/06/03/14/IMPRESSIONS/". Any other text is used verbatim. default: '' type: string maxLength: 1024 format: default: JSONL type: string enum: - JSONL - PARQUET - CSV required: - type ProductAllocation: description: Budget allocation for a product within a proposal type: object properties: productId: description: Product ID — references a product in the sibling products array type: string allocationPercentage: description: Percentage of total budget allocated to this product type: number minimum: 0 maximum: 100 pricingOptionId: description: Recommended pricing option ID from the product pricing_options type: string rationale: description: Why this product and allocation are recommended type: string sequence: description: Ordering hint for multi-line-item plans (1-based) type: integer minimum: -9007199254740991 maximum: 9007199254740991 tags: description: Categorical tags (e.g., "desktop", "mobile") type: array items: type: string required: - productId - allocationPercentage additionalProperties: false ProposalScreeningRequest: description: Deprecated compatibility alias for managed proposal evaluation. It enables accept, reject, or refine without enrichment or comparative ranking. type: object properties: instructions: type: string minLength: 1 maxLength: 8000 max_refinement_rounds: default: 1 type: integer minimum: 0 maximum: 3 max_screening_passes: default: 20 type: integer maximum: 100 minimum: 1 required: - instructions additionalProperties: false DiscoveryDiagnostics: description: Advanced support diagnostics returned only to elevated/admin contexts. type: object properties: trace: description: Trace identifiers for auditing where discovery time was spent. allOf: - $ref: '#/components/schemas/DiscoveryTraceDiagnostics' additionalProperties: false ProjectedInterchangeProduct: description: Field-projected canonical product. Requested canonical fields may be present; product_id, name, and Interchange provenance are always present. type: object properties: product_id: description: Opaque storefront-qualified product ID. Pass this exact value to add_discovery_products; do not construct or strip it. example: sf1:42:d2g6c291cmNlOnByb2R1Y3Q type: string pattern: ^sf1:[1-9]\d*:[A-Za-z0-9_-]+$ name: type: string ext: type: object properties: interchange: type: object properties: storefront_id: type: string pattern: ^[1-9]\d*$ storefront_name: type: string minLength: 1 source_product_id: type: string minLength: 1 sales_agent_id: type: string evaluation: type: object properties: disposition: type: string enum: - accept evaluated: description: Whether the evaluation model actually applied your instructions to this candidate. false = fail-open pass-through (evaluation was unavailable or ran out of budget) — the disposition does NOT reflect your instructions. Always pair with the envelope evaluation.status, which reads "degraded" when any candidate passed through. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 enrichment: type: object properties: summary: type: string minLength: 1 maxLength: 1000 strengths: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 concerns: maxItems: 10 type: array items: type: string minLength: 1 maxLength: 300 labels: maxItems: 20 type: array items: type: string minLength: 1 maxLength: 100 required: - summary - strengths - concerns - labels additionalProperties: false ranking: type: object properties: rank: type: integer maximum: 9007199254740991 minimum: 1 score: type: number minimum: 0 maximum: 1 rationale: type: string minLength: 1 maxLength: 500 provisional: type: boolean required: - rank - score - rationale - provisional additionalProperties: false required: - disposition - evaluated - confidence - reasons additionalProperties: false screening: type: object properties: decision: type: string enum: - accept evaluated: description: Whether the screening model actually applied your instructions to this candidate. false = fail-open pass-through; the decision does NOT reflect your instructions. type: boolean quality_score: type: number minimum: 0 maximum: 1 confidence: type: number minimum: 0 maximum: 1 reasons: maxItems: 20 type: array items: type: string minLength: 1 required: - decision - evaluated - confidence - reasons additionalProperties: false required: - storefront_id - storefront_name - source_product_id additionalProperties: false required: - interchange additionalProperties: false required: - product_id - name - ext additionalProperties: {} DataDeliveryOutputArrayInput: description: Array of Data Delivery Outputs for one scope (advertiser or campaign). At most one Output per (dataDeliveryType, credentialName) pair — the same data type can ship to multiple credentials by listing one Output per destination. maxItems: 20 type: array items: $ref: '#/components/schemas/DataDeliveryOutputInput' DiscoverySummary: description: Summary statistics for the discovery type: object properties: totalProducts: description: Total number of products in the discovery example: 150 type: integer minimum: 0 maximum: 9007199254740991 publishersCount: description: Number of unique publishers example: 25 type: integer minimum: 0 maximum: 9007199254740991 priceRange: description: CPM price range across products type: object properties: min: type: - number - 'null' max: type: - number - 'null' avg: type: - number - 'null' currency: description: ISO currency code, present only when every priced product in this discovery shares one currency — min/max are not comparable across currencies, so this is omitted when mixed. example: USD type: string required: - min - max - avg additionalProperties: false required: - totalProducts - publishersCount 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 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 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 AppliedProposalSummary: description: Summary of the proposal that was applied type: object properties: proposalId: description: ID of the applied proposal type: string name: description: Name of the applied proposal type: string salesAgentName: description: Sales agent that generated the proposal type: string required: - proposalId - name additionalProperties: false BatchProductSelection: description: A storefront-qualified proposal-less product selection from get_products. type: object properties: productId: description: Opaque storefront-qualified product ID. Pass this exact value to add_discovery_products; do not construct or strip it. example: sf1:42:d2g6c291cmNlOnByb2R1Y3Q type: string pattern: ^sf1:[1-9]\d*:[A-Za-z0-9_-]+$ budget: description: Budget allocation for this product example: 5000 type: number 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 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 kind: type: string enum: - product required: - productId - kind additionalProperties: false S3DeliveryConfig: type: object properties: type: type: string enum: - S3 pathPrefix: description: Object key prefix within the credential's S3 bucket. Leading slashes are not stripped. The tokens {YYYY}, {MM}, {DD}, {HH} (from the delivery period start, UTC) and {DATA_DELIVERY_TYPE} are substituted at delivery time — e.g. "lld/{YYYY}/{MM}/{DD}/{HH}/{DATA_DELIVERY_TYPE}/" → "lld/2026/06/03/14/IMPRESSIONS/". Any other text is used verbatim. default: '' type: string maxLength: 1024 format: default: JSONL type: string enum: - JSONL - PARQUET - CSV required: - type securitySchemes: bearerAuth: type: http scheme: bearer description: API key or access token