Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.
"I have a brief; find it for me" — platform-managed. Optimization goals (performanceConfig) are allowed on any mode; they are hints, not a composition-ownership declaration.
The operator's fee on this campaign: at most one entry, as a decimal proportion of the gross budget (rate: 0.02 for 2%). Only a caller acting for the operator organisation, the parent of this account, may set it, and only when operator fees are enabled for that organisation, the account's media is invoiced to the operator, and the campaign has a budget. Each media buy created under the campaign afterwards locks the fee into its own terms.
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.
Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. If omitted, inherits the advertiser-level setting.
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.
Click-URL parameters for this campaign. An object with params and optional deleteMissing; campaign keys override advertiser keys with the same name. At campaign level a write is additive: it adds or updates the given keys and keeps the others, unless deleteMissing: true replaces the campaign set. Advertiser utmConfig is a plain array that always replaces the advertiser set. For one model at advertiser, campaign and creative level, and to suppress an inherited key with a null value, use V3 tracking.macroAdditions (save_advertiser, save_campaign) or macroAdditions (save_creative).
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.
Buyer-side frequency cap configs to apply to this campaign, enforced via Scope3's cross-publisher exposure tracking on TMP-connected inventory. Closed-platform integrations (e.g. TikTok, Meta, Snap, and other adapter-based publishers) cannot honor this at their own request time — to cap frequency on one of those platforms' own native ad-serving, set targetingOverlay.frequency_cap on the product instead (see add_discovery_products / create_media_buys).
Autonomy settings for this campaign. Controls who owns composition and brief updates. Set inventorySelection: "automatic" to let the platform optimizer pick inventory; the default is "manual".
Non-blocking advisories, such as a media buy that ended without delivering because its seller never started it.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Apostra","colors":{"primary":"#7513D4","light":"#ED7139","dark":"#7513D4"},"logo":{"light":"https://mintcdn.com/agentic2/A5rx0kFcKxq4RfQe/logo-apostra/apostra-black-purple-logo.svg?fit=max\u0026auto=format\u0026n=A5rx0kFcKxq4RfQe\u0026q=85\u0026s=d9788f7a39ebea19b202324e702d3178","dark":"https://mintcdn.com/agentic2/A5rx0kFcKxq4RfQe/logo-apostra/apostra-white-purple-logo.svg?fit=max\u0026auto=format\u0026n=A5rx0kFcKxq4RfQe\u0026q=85\u0026s=9a8b8881bd62ccac198ddd54caa21ba3"},"favicon":"https://mintcdn.com/agentic2/f0_a8sarwuUWvF9a/logo-apostra/apostra-icon-purple.svg?fit=max\u0026auto=format\u0026n=f0_a8sarwuUWvF9a\u0026q=85\u0026s=8e125c217964e76c49a47c64baa01a3d","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript"],"prefill":true},"mdx":{"auth":{"method":"bearer"},"server":"https://api.apostra.com/api/v2"}},"navbar":{"primary":{"type":"button","label":"Install Apostra","href":"/v3/quickstart"}},"footer":{"socials":{"twitter":"https://twitter.com/scope3data","github":"https://github.com/apostra-public/apostra","linkedin":"https://linkedin.com/company/scope3"},"links":[{"header":"Legal","items":[{"label":"Terms of Service","href":"https://apostra.com/agreements/terms-of-service"},{"label":"Privacy Policy","href":"https://apostra.com/agreements/privacy-policy"}]}]},"seo":{"metatags":{"canonical":"https://docs.apostra.com","og:type":"website","og:site_name":"Apostra API"},"indexing":"all"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"agentic2","hasAudioNarration":false,"actualSubdomain":"agentic2","customDomains":["docs.apostra.com"],"gitSource":{"type":"github","owner":"scope3data","repo":"agentic-api","deployBranch":"main","contentDirectory":"mintlify","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aef5058ec2091b7c464ea19","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Build software","count":746},{"language":"default","tag":"Buyer API reference","count":306},{"language":"default","tag":"Seller API reference","count":218},{"language":"default","tag":"Manage ads","count":190},{"language":"default","tag":"Account","count":108},{"language":"default","tag":"Sell media","count":107},{"language":"default","tag":"Task Reference","count":92},{"language":"default","tag":"Storefront","count":83},{"language":"default","tag":"Buy media","count":76},{"language":"default","tag":"Seller operations","count":60}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v2/buyer-api-reference/campaigns/create-campaign","slug":"/v2/buyer-api-reference/campaigns/create-campaign","pageMetadata":{"title":"Create campaign","description":"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The `brief` and `name` fields are screened by the content-moderation engine and rejected with 422 `CONTENT_MODERATION_BLOCKED` on policy violation.","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns","href":"/v2/buyer-api-reference/campaigns/create-campaign","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The \", _jsx(_components.code, {\n children: \"brief\"\n }), \" and \", _jsx(_components.code, {\n children: \"name\"\n }), \" fields are screened by the content-moderation engine and rejected with 422 \", _jsx(_components.code, {\n children: \"CONTENT_MODERATION_BLOCKED\"\n }), \" on policy violation.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create campaign","description":"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The `brief` and `name` fields are screened by the content-moderation engine and rejected with 422 `CONTENT_MODERATION_BLOCKED` on policy violation.","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns","href":"/v2/buyer-api-reference/campaigns/create-campaign","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"createCampaign","summary":"Create campaign","description":"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The `brief` and `name` fields are screened by the content-moderation engine and rejected with 422 `CONTENT_MODERATION_BLOCKED` on policy violation.","tags":["Campaigns"],"security":["c46e9bc5-e19a-49fb-b7c8-3f1392de071c"],"requestBody":"7b4c7ee1-f24d-4362-847a-8eb2b892b745","responses":{"201":"3a86d21f-9c95-48bb-878c-b6a481a63130","400":"11d5d7ec-e337-49ae-90f3-17cc7e5e0b5d","401":"42ee8f67-9290-4462-ad35-d9f2c8dcce61","500":"9caaa444-f8c5-41e1-9341-17a2b44add1c"},"method":"post","type":"path","servers":["79f891a6-2e76-48a5-99c9-7c181bc851d3"],"path":"/campaigns","baseUrlOptions":["https://api.apostra.com/api/v2/buyer"],"title":"Create campaign","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.oneOf.0.advertiserId":12345,"body.oneOf.0.name":"Q1 2025 Campaign","body.oneOf.0.flightDates.startDate":"2025-01-15T00:00:00Z","body.oneOf.0.flightDates.endDate":"2025-03-31T23:59:59Z","body.oneOf.0.budget.total":1,"body.oneOf.0.budget.currency":"\u003cstring>","body.oneOf.0.budget.dailyCap":1,"body.oneOf.0.mode":"discovery","body.oneOf.0.idempotencyKey":"\u003cstring>","body.oneOf.0.operatorFees.items.0.name":"\u003cstring>","body.oneOf.0.operatorFees.items.0.rate":0.245,"body.oneOf.0.operatorFees.items.0.beneficiary":"\u003cstring>","body.oneOf.0.brief":"Looking for premium video inventory targeting tech enthusiasts","body.oneOf.0.constraints.geo_countries.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_countries_exclude.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_regions.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_regions_exclude.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_metros.items.0.values.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_metros_exclude.items.0.values.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_postal_areas.items.0.oneOf.0.country":"US","body.oneOf.0.constraints.geo_postal_areas.items.0.oneOf.0.values.items.0":"\u003cstring>","body.oneOf.0.constraints.geo_postal_areas_exclude.items.0.oneOf.0.country":"US","body.oneOf.0.constraints.geo_postal_areas_exclude.items.0.oneOf.0.values.items.0":"\u003cstring>","body.oneOf.0.constraints.language.items.0":"\u003cstring>","body.oneOf.0.constraints.channels.items.0":"\u003cstring>","body.oneOf.0.constraints.countries.items.0":"\u003cstring>","body.oneOf.0.channelGroups.items.0.channelGroupId":"\u003cstring>","body.oneOf.0.channelGroups.items.0.name":"\u003cstring>","body.oneOf.0.channelGroups.items.0.source.oneOf.0.kind":"preset","body.oneOf.0.channelGroups.items.0.source.oneOf.0.presetVersion":4503599627370495,"body.oneOf.0.storefrontIds.items.0":42,"body.oneOf.0.storefrontIds.items.1":57,"body.oneOf.0.discoveryId":"abc123-def456-ghi789","body.oneOf.0.productIds.items.0":"prod_123","body.oneOf.0.productIds.items.1":"prod_456","body.oneOf.0.audienceConfig.targetAudienceIds.items.0":"aud_123","body.oneOf.0.audienceConfig.targetAudienceIds.items.1":"aud_456","body.oneOf.0.audienceConfig.suppressAudienceIds.items.0":"aud_789","body.oneOf.0.catalogId":42,"body.oneOf.0.dataDelivery.outputs.items.0.credentialName":"\u003cstring>","body.oneOf.0.dataDelivery.outputs.items.0.deliveryConfig.oneOf.0.type":"GCS","body.oneOf.0.dataDelivery.outputs.items.0.deliveryConfig.oneOf.0.pathPrefix":"","body.oneOf.0.dataDelivery.outputs.items.0.deliveryConfig.oneOf.0.format":"JSONL","body.oneOf.0.dataDelivery.outputs.items.0.syncWeeklyDay":3,"body.oneOf.0.dataDelivery.outputs.items.0.enabled":true,"body.oneOf.0.frequencyCaps.items.0.max_impressions":3,"body.oneOf.0.frequencyCaps.items.0.window.interval":4503599627370496,"body.oneOf.0.frequencyCaps.items.0.window.unit.oneOf.0":"seconds"}]},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Request body for creating a discovery-mode campaign","required":["advertiserId","name","flightDates","budget","mode"],"properties":{"advertiserId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Advertiser ID that will own this campaign","example":12345,"isRequired":true,"uniqueKey":"oneOf.0.advertiserId","typeLabel":"integer"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the campaign","example":"Q1 2025 Campaign","isRequired":true,"uniqueKey":"oneOf.0.name","typeLabel":"string"},"flightDates":{"type":"object","properties":{"startDate":{"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))$","description":"Campaign start date (ISO 8601)","example":"2025-01-15T00:00:00Z","isRequired":true,"uniqueKey":"oneOf.0.flightDates.startDate","typeLabel":"string\u003cdate-time>"},"endDate":{"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))$","description":"Campaign end date (ISO 8601)","example":"2025-03-31T23:59:59Z","isRequired":true,"uniqueKey":"oneOf.0.flightDates.endDate","typeLabel":"string\u003cdate-time>"}},"required":["startDate","endDate"],"description":"Campaign flight dates","isRequired":true,"uniqueKey":"oneOf.0.flightDates","typeLabel":"object"},"budget":{"type":"object","properties":{"total":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"oneOf.0.budget.total","typeLabel":"number"},"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,"uniqueKey":"oneOf.0.budget.currency","typeLabel":"string"},"dailyCap":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"oneOf.0.budget.dailyCap","typeLabel":"number"},"pacing":{"type":"string","enum":["EVEN","ASAP","FRONTLOADED"],"uniqueKey":"oneOf.0.budget.pacing","typeLabel":"enum\u003cstring>"}},"required":["total"],"description":"Campaign budget configuration","isRequired":true,"uniqueKey":"oneOf.0.budget","typeLabel":"object"},"mode":{"type":"string","enum":["discovery"],"description":"\"I have a brief; find it for me\" — platform-managed. Optimization goals (performanceConfig) are allowed on any mode; they are hints, not a composition-ownership declaration.","isRequired":true,"uniqueKey":"oneOf.0.mode","typeLabel":"enum\u003cstring>"},"idempotencyKey":{"description":"Optional retry key. Repeating the same create for this customer returns the first campaign.","type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.0.idempotencyKey","typeLabel":"string"},"operatorFees":{"description":"The operator's fee on this campaign: at most one entry, as a decimal proportion of the gross budget (`rate: 0.02` for 2%). Only a caller acting for the operator organisation, the parent of this account, may set it, and only when operator fees are enabled for that organisation, the account's media is invoiced to the operator, and the campaign has a budget. Each media buy created under the campaign afterwards locks the fee into its own terms.","maxItems":1,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The kind of fee. Always `operator_fee`.","isRequired":true,"uniqueKey":"oneOf.0.operatorFees.items.[INDEX].name","typeLabel":"string"},"rate":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":0.49,"description":"Decimal share of the campaign's gross budget: 0.02 for 2%.","isRequired":true,"uniqueKey":"oneOf.0.operatorFees.items.[INDEX].rate","typeLabel":"number"},"beneficiary":{"description":"Account id of the operator organisation; must be the account's parent organisation, the default.","type":"string","uniqueKey":"oneOf.0.operatorFees.items.[INDEX].beneficiary","typeLabel":"string"}},"required":["name","rate"],"additionalProperties":false,"description":"An operator fee in AdCP price-adjustment fields.","uniqueKey":"oneOf.0.operatorFees.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.operatorFees","typeLabel":"object[]"},"brief":{"description":"Natural language brief for product search context","example":"Looking for premium video inventory targeting tech enthusiasts","type":"string","maxLength":5000,"uniqueKey":"oneOf.0.brief","typeLabel":"string"},"constraints":{"description":"Campaign targeting constraints","type":"object","properties":{"geo_countries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"oneOf.0.constraints.geo_countries.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"oneOf.0.constraints.geo_countries","typeLabel":"string[]"},"geo_countries_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"oneOf.0.constraints.geo_countries_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"oneOf.0.constraints.geo_countries_exclude","typeLabel":"string[]"},"geo_regions":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"oneOf.0.constraints.geo_regions.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to exact canonical ISO 3166-2 subdivisions (states, provinces, regions, departments, or other subdivision categories). Unknown identifiers are invalid. At create or update, sellers MUST reject unsupported identifiers and MUST NOT silently widen, drop, or partially apply the list. During get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome. Exact internal translation preserves accepted identifiers in package readback.","uniqueKey":"oneOf.0.constraints.geo_regions","typeLabel":"string[]"},"geo_regions_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"oneOf.0.constraints.geo_regions_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude exact canonical ISO 3166-2 subdivisions. Support is independent from geo_regions inclusion support. Unknown identifiers and values also present in geo_regions are invalid. At create or update, sellers MUST reject unsupported identifiers and partial application; during get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome.","uniqueKey":"oneOf.0.constraints.geo_regions_exclude","typeLabel":"string[]"},"geo_metros":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_metros.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_metros.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_metros.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"description":"A targeted metro area.","uniqueKey":"oneOf.0.constraints.geo_metros.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.0.constraints.geo_metros","typeLabel":"object[]"},"geo_metros_exclude":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_metros_exclude.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_metros_exclude.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_metros_exclude.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_metros_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.0.constraints.geo_metros_exclude","typeLabel":"object[]"},"geo_postal_areas":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.0.constraints.geo_postal_areas.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific postal areas. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.0.constraints.geo_postal_areas","typeLabel":"object[]"},"geo_postal_areas_exclude":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific postal areas from delivery. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.0.constraints.geo_postal_areas_exclude","typeLabel":"object[]"},"language":{"minItems":1,"type":"array","items":{"type":"string","minLength":2,"maxLength":63,"pattern":"^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$","description":"A well-formed BCP 47 language tag used by AdCP only as language identity. Script and region may refine that identity; other valid BCP 47 subtags remain part of tag matching but do not make this a general locale-settings object. It does not determine currency, time zone, number/date formatting, market, or legal jurisdiction. The AdCP canonical wire profile requires lower-case language and variants, title-case script, and upper-case region (for example `en-US`, `zh-Hant-TW`, or `x-private`). RFC 5646 comparisons are case-insensitive and its case regularization is optional; AdCP intentionally requires this stricter single wire spelling and receivers MUST reject differently cased tags rather than silently normalizing them. The schema pattern enforces the AdCP casing profile and extension structure for commonly used tags; conforming receivers additionally validate the complete RFC 5646 grammar and registry rules. Every new AdCP field carrying BCP 47 language identity or a concrete language range MUST reference this schema instead of declaring independent string constraints.","uniqueKey":"oneOf.0.constraints.language.items.[INDEX]","typeLabel":"string"},"description":"Restrict to users with specific language preferences using canonical BCP 47 language ranges. Each buyer range is evaluated against a user's language-preference tag with RFC 4647 section 3.3.1 Basic Filtering: 'fr' matches 'fr', 'fr-CA', and 'fr-FR', while 'fr-CA' matches 'fr-CA' and more-specific descendants but not 'fr' or 'fr-FR'. Values use OR logic.","uniqueKey":"oneOf.0.constraints.language","typeLabel":"string[]"},"device_platform":{"minItems":1,"type":"array","items":{"type":"string","enum":["ios","android","windows","macos","linux","chromeos","tvos","tizen","webos","fire_os","roku_os","unknown"],"description":"Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"oneOf.0.constraints.device_platform.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"oneOf.0.constraints.device_platform","typeLabel":"enum\u003cstring>[]"},"device_type":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"oneOf.0.constraints.device_type.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific device form factors. Use for campaigns targeting hardware categories rather than operating systems (e.g., mobile-only promotions, CTV campaigns).","uniqueKey":"oneOf.0.constraints.device_type","typeLabel":"enum\u003cstring>[]"},"device_type_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"oneOf.0.constraints.device_type_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific device form factors from delivery (e.g., exclude CTV for app-install campaigns).","uniqueKey":"oneOf.0.constraints.device_type_exclude","typeLabel":"enum\u003cstring>[]"},"channels":{"description":"Channels to target (e.g., [\"ctv\", \"display\"])","type":"array","items":{"type":"string","uniqueKey":"oneOf.0.constraints.channels.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.0.constraints.channels","typeLabel":"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}$","uniqueKey":"oneOf.0.constraints.countries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.0.constraints.countries","typeLabel":"string[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.constraints.additionalProperties","typeLabel":"any"},"uniqueKey":"oneOf.0.constraints","typeLabel":"object"},"channelGroups":{"description":"Canonical buyer-declared inventory execution and reporting boundaries. REST clients send the fully expanded saved shape; /mcp/v3 save_campaign also accepts preset shorthand.","minItems":1,"maxItems":25,"type":"array","items":{"type":"object","properties":{"channelGroupId":{"type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].channelGroupId","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","required":["kind","presetId","presetVersion"],"properties":{"kind":{"type":"string","enum":["preset"],"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"presetId":{"type":"string","enum":["display","olv","mobile_web_display","mobile_web_olv","ctv"],"description":"Versioned channel group preset to expand into AdCP inventory dimensions.","isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.0.presetId","typeLabel":"enum\u003cstring>"},"presetVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.0.presetVersion","typeLabel":"integer"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.1.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].source","typeLabel":"object"},"inventory":{"type":"object","properties":{"channels":{"description":"Buyer-declared AdCP media channels. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["display","olv","social","search","ctv","linear_tv","radio","streaming_audio","podcast","dooh","ooh","print","cinema","email","gaming","retail_media","influencer","affiliate","product_placement","sponsored_intelligence"],"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.channels.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.channels","typeLabel":"enum\u003cstring>[]"},"propertyTypes":{"description":"Buyer-declared AdCP property types. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["website","mobile_app","ctv_app","desktop_app","dooh","podcast","radio","linear_tv","streaming_audio","ai_assistant"],"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.propertyTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.propertyTypes","typeLabel":"enum\u003cstring>[]"},"deviceTypes":{"description":"Buyer-declared AdCP device types. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.deviceTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.deviceTypes","typeLabel":"enum\u003cstring>[]"},"formatKinds":{"description":"Buyer-declared AdCP canonical creative format kinds. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["image","html5","display_tag","image_carousel","video_hosted","video_vast","audio_hosted","audio_vast","audio_daast","sponsored_placement","native_in_feed","responsive_creative","agent_placement","seller_rendered_stateful_display","coordinated_placements","custom"],"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.formatKinds.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory.formatKinds","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX].inventory","typeLabel":"object"}},"required":["channelGroupId","name","source","inventory"],"additionalProperties":false,"uniqueKey":"oneOf.0.channelGroups.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.channelGroups","typeLabel":"object[]"},"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","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"oneOf.0.storefrontIds.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"oneOf.0.storefrontIds","typeLabel":"integer[]"},"discoveryId":{"description":"Attach an existing discovery session to the campaign","example":"abc123-def456-ghi789","type":"string","minLength":1,"uniqueKey":"oneOf.0.discoveryId","typeLabel":"string"},"productIds":{"description":"Product IDs to pre-select from the discovery session (requires discoveryId)","example":["prod_123","prod_456"],"type":"array","items":{"type":"string","uniqueKey":"oneOf.0.productIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.0.productIds","typeLabel":"string[]"},"audienceConfig":{"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,"uniqueKey":"oneOf.0.audienceConfig.targetAudienceIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.0.audienceConfig.targetAudienceIds","typeLabel":"string[]"},"suppressAudienceIds":{"description":"Audience IDs to suppress (exclude) from this campaign","example":["aud_789"],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"oneOf.0.audienceConfig.suppressAudienceIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.0.audienceConfig.suppressAudienceIds","typeLabel":"string[]"}},"description":"Audience targeting and suppression configuration. On create, listed audiences are attached to the campaign.","uniqueKey":"oneOf.0.audienceConfig","typeLabel":"object"},"performanceConfig":{"type":"object","description":"Performance optimization configuration","required":["optimizationGoals"],"properties":{"optimizationGoals":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Optimize for advertiser-tracked conversion events via event sources.","required":["kind","eventSources"],"properties":{"kind":{"type":"string","enum":["event"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.kind","typeLabel":"enum\u003cstring>"},"eventSources":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"eventSourceId":{"type":"string","minLength":1,"description":"Event source to include (must be configured via sync_event_sources)","example":"website_pixel","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventSourceId","typeLabel":"string"},"eventType":{"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"],"description":"IAB ECAPI event type to optimize for","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventType","typeLabel":"enum\u003cstring>"},"customEventName":{"description":"Required when eventType is 'custom'. Platform-specific custom event name.","type":"string","uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].customEventName","typeLabel":"string"},"valueField":{"description":"Field on custom_data carrying the monetary value. Required when target is 'per_ad_spend'.","example":"value","type":"string","uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueField","typeLabel":"string"},"valueFactor":{"description":"Multiplier for valueField (default 1). Use -1 for refunds, 0.01 for cents.","example":1,"type":"number","uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueFactor","typeLabel":"number"}},"required":["eventSourceId","eventType"],"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX]","typeLabel":"object"},"description":"Event source and type pairs feeding this goal. Seller deduplicates by event_id across entries.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources","typeLabel":"object[]"},"target":{"oneOf":[{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["per_ad_spend"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target return ratio (e.g. 4.0 = $4 of value per $1 spent)","example":4,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"floor\".","type":"string","enum":["floor","target"],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind"],"properties":{"kind":{"type":"string","enum":["maximize_value"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Optimize for a seller-tracked delivery metric. No event source required.","required":["kind","metric"],"properties":{"kind":{"type":"string","enum":["metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.kind","typeLabel":"enum\u003cstring>"},"metric":{"type":"string","enum":["clicks","views","completed_views","viewed_seconds","viewable_rate","attention_seconds","attention_score","engagements","follows","saves","profile_visits","reach"],"description":"Metric name. Includes viewed_seconds, attention_seconds, attention_score, reach. See enum.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.metric","typeLabel":"enum\u003cstring>"},"viewDurationSeconds":{"description":"Min video seconds for completed_views metric.","type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.viewDurationSeconds","typeLabel":"number"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow","typeLabel":"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,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Optimize for a metric a measurement vendor counts, such as store visits measured by Placer. Sellers that declare the vendor metric optimize toward it; every other seller is asked to report it.","required":["kind","vendor","metricId"],"properties":{"kind":{"type":"string","enum":["vendor_metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.kind","typeLabel":"enum\u003cstring>"},"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])?)*$","description":"Domain that hosts the vendor's brand.json, for example `placer.ai`.","example":"placer.ai","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.domain","typeLabel":"string"},"brandId":{"description":"Brand within the vendor domain. Omit for a single-brand domain.","type":"string","pattern":"^[a-z0-9_]+$","uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.brandId","typeLabel":"string"}},"required":["domain"],"additionalProperties":false,"description":"The measurement vendor that counts this metric, as AdCP names it.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor","typeLabel":"object"},"metricId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","description":"The vendor's AdCP metric id, for example `store_visits`. With `vendor`, it is the key sellers and delivery reports use for the metric.","example":"store_visits","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.metricId","typeLabel":"string"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals.items.[INDEX]","typeLabel":"object"},"description":"Optimization goals for the campaign. Each goal targets conversion events, a seller-native metric, or a metric a measurement vendor counts. This field and its nested keys are camelCase (eventSources, eventSourceId, valueField) — distinct from the ADCP snake_case optimization_goals field used at the media-buy or product level (event_sources, event_source_id).","isRequired":true,"uniqueKey":"oneOf.0.performanceConfig.optimizationGoals","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.performanceConfig","typeLabel":"object"},"optimizationApplyMode":{"type":"string","description":"Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. If omitted, inherits the advertiser-level setting.","enum":["AUTO","MANUAL"],"uniqueKey":"oneOf.0.optimizationApplyMode","typeLabel":"enum\u003cstring>"},"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","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"oneOf.0.catalogId","typeLabel":"integer"},"pacingPeriods":{"type":"object","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.","required":["mode","periods"],"properties":{"mode":{"type":"string","enum":["weight","budget"],"description":"How period budgets are determined. \"weight\" uses relative weights to distribute the campaign budget proportionally. \"budget\" uses explicit dollar amounts per period.","isRequired":true,"uniqueKey":"oneOf.0.pacingPeriods.mode","typeLabel":"enum\u003cstring>"},"periods":{"minItems":1,"maxItems":52,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable label for this period (e.g. \"Memorial Day Heavy-Up\")","isRequired":true,"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX].label","typeLabel":"string"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period start date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period end date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX].end","typeLabel":"string"},"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,"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX].weight","typeLabel":"number"},"budget":{"description":"Absolute budget for this period (0 = skip this period). Required when mode is \"budget\".","type":"number","minimum":0,"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX].budget","typeLabel":"number"}},"required":["label","start","end"],"uniqueKey":"oneOf.0.pacingPeriods.periods.items.[INDEX]","typeLabel":"object"},"description":"Ordered list of pacing periods with date ranges and spend intensity","isRequired":true,"uniqueKey":"oneOf.0.pacingPeriods.periods","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.pacingPeriods","typeLabel":"object"},"utmConfig":{"type":"object","description":"Click-URL parameters for this campaign. An object with `params` and optional `deleteMissing`; campaign keys override advertiser keys with the same name. At campaign level a write is additive: it adds or updates the given keys and keeps the others, unless `deleteMissing: true` replaces the campaign set. Advertiser `utmConfig` is a plain array that always replaces the advertiser set. For one model at advertiser, campaign and creative level, and to suppress an inherited key with a `null` value, use V3 `tracking.macroAdditions` (`save_advertiser`, `save_campaign`) or `macroAdditions` (`save_creative`).","required":["params"],"properties":{"params":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"paramKey":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.~-]{0,99}$","description":"Output query parameter key appended to landing URL (e.g., \"utm_source\", \"bg_campaign\")","example":"utm_campaign","isRequired":true,"uniqueKey":"oneOf.0.utmConfig.params.items.[INDEX].paramKey","typeLabel":"string"},"paramValue":{"type":"string","minLength":1,"maxLength":500,"description":"Macro name (e.g., \"{CAMPAIGN_ID}\") or static string (e.g., \"scope3\") to resolve as the value","example":"{CAMPAIGN_ID}","isRequired":true,"uniqueKey":"oneOf.0.utmConfig.params.items.[INDEX].paramValue","typeLabel":"string"}},"required":["paramKey","paramValue"],"uniqueKey":"oneOf.0.utmConfig.params.items.[INDEX]","typeLabel":"object"},"description":"Array of UTM parameter mappings for this campaign","isRequired":true,"uniqueKey":"oneOf.0.utmConfig.params","typeLabel":"object[]"},"deleteMissing":{"description":"If true, the request replaces the campaign set and removes campaign keys it does not list. If false or omitted, the request only adds or updates the keys it lists.","type":"boolean","uniqueKey":"oneOf.0.utmConfig.deleteMissing","typeLabel":"boolean"}},"uniqueKey":"oneOf.0.utmConfig","typeLabel":"object"},"dataDelivery":{"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":{"type":"array","items":{"type":"object","properties":{"dataDeliveryType":{"type":"string","enum":["MB_DELIVERY","IMPRESSIONS","CLICKS","VAST_EVENTS","CAPI_ATTRIBUTION","MMP_POSTBACKS"],"description":"The kind of LLD shipped by this Output.","isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].dataDeliveryType","typeLabel":"enum\u003cstring>"},"cadence":{"type":"string","enum":["HOURLY","DAILY","WEEKLY"],"description":"Firing rate. HOURLY fires at minute 0 every hour, DAILY at 00:00 UTC, WEEKLY at 00:00 UTC on syncWeeklyDay.","isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].cadence","typeLabel":"enum\u003cstring>"},"credentialName":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$","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.","isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].credentialName","typeLabel":"string"},"deliveryConfig":{"oneOf":[{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["GCS"],"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["S3"],"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["AZURE_BLOB"],"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].deliveryConfig","typeLabel":"object"},"syncWeeklyDay":{"description":"Day of week for WEEKLY cadence (0=Sunday..6=Saturday). Required when cadence=WEEKLY, ignored otherwise.","type":"integer","minimum":0,"maximum":6,"uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].syncWeeklyDay","typeLabel":"integer"},"enabled":{"default":true,"description":"When false, the Temporal schedule is paused — no new runs fire, in-flight runs continue. Defaults to true.","type":"boolean","uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["dataDeliveryType","cadence","credentialName","deliveryConfig"],"description":"A single Data Delivery Output entry. Used inline on advertiser/campaign create+update.","uniqueKey":"oneOf.0.dataDelivery.outputs.items.[INDEX]","typeLabel":"object"},"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.","maxItems":20,"uniqueKey":"oneOf.0.dataDelivery.outputs","typeLabel":"object[]"}},"uniqueKey":"oneOf.0.dataDelivery","typeLabel":"object"},"frequencyCaps":{"description":"Buyer-side frequency cap configs to apply to this campaign, enforced via Scope3's cross-publisher exposure tracking on TMP-connected inventory. Closed-platform integrations (e.g. TikTok, Meta, Snap, and other adapter-based publishers) cannot honor this at their own request time — to cap frequency on one of those platforms' own native ad-serving, set `targetingOverlay.frequency_cap` on the product instead (see `add_discovery_products` / `create_media_buys`).","type":"array","items":{"type":"object","properties":{"max_impressions":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Maximum number of impressions allowed within the window","example":3,"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].max_impressions","typeLabel":"integer"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window.additionalProperties","typeLabel":"any"},"description":"Rolling time window over which max_impressions applies (AdCP Duration shape).","isRequired":true,"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].window","typeLabel":"object"}},"required":["max_impressions","window"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX].additionalProperties","typeLabel":"any"},"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.","uniqueKey":"oneOf.0.frequencyCaps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.0.frequencyCaps","typeLabel":"object[]"},"autonomy":{"description":"Autonomy settings for this campaign. Controls who owns composition and brief updates. Set inventorySelection: \"automatic\" to let the platform optimizer pick inventory; the default is \"manual\".","type":"object","properties":{"inventorySelection":{"description":"How inventory is selected: manual (buyer-driven, default), propose (agent drafts for approval), automatic (platform optimizer owns composition — manual staging is rejected).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"oneOf.0.autonomy.inventorySelection","typeLabel":"enum\u003cstring>"},"rebriefing":{"description":"How the brief is updated: manual (human), propose (agent drafts), automatic (agent applies).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"oneOf.0.autonomy.rebriefing","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.0.autonomy","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Request body for creating a performance-mode campaign","required":["advertiserId","name","flightDates","budget","performanceConfig","mode"],"properties":{"advertiserId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Advertiser ID that will own this campaign","example":12345,"isRequired":true,"uniqueKey":"oneOf.1.advertiserId","typeLabel":"integer"},"name":{"type":"string","minLength":1,"maxLength":255,"description":"Name of the campaign","example":"Q1 2025 Campaign","isRequired":true,"uniqueKey":"oneOf.1.name","typeLabel":"string"},"flightDates":{"type":"object","properties":{"startDate":{"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))$","description":"Campaign start date (ISO 8601)","example":"2025-01-15T00:00:00Z","isRequired":true,"uniqueKey":"oneOf.1.flightDates.startDate","typeLabel":"string\u003cdate-time>"},"endDate":{"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))$","description":"Campaign end date (ISO 8601)","example":"2025-03-31T23:59:59Z","isRequired":true,"uniqueKey":"oneOf.1.flightDates.endDate","typeLabel":"string\u003cdate-time>"}},"required":["startDate","endDate"],"description":"Campaign flight dates","isRequired":true,"uniqueKey":"oneOf.1.flightDates","typeLabel":"object"},"budget":{"type":"object","properties":{"total":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"oneOf.1.budget.total","typeLabel":"number"},"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,"uniqueKey":"oneOf.1.budget.currency","typeLabel":"string"},"dailyCap":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"oneOf.1.budget.dailyCap","typeLabel":"number"},"pacing":{"type":"string","enum":["EVEN","ASAP","FRONTLOADED"],"uniqueKey":"oneOf.1.budget.pacing","typeLabel":"enum\u003cstring>"}},"required":["total"],"description":"Campaign budget configuration","isRequired":true,"uniqueKey":"oneOf.1.budget","typeLabel":"object"},"performanceConfig":{"type":"object","description":"Performance optimization configuration. Required for mode: \"performance\".","required":["optimizationGoals"],"properties":{"optimizationGoals":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Optimize for advertiser-tracked conversion events via event sources.","required":["kind","eventSources"],"properties":{"kind":{"type":"string","enum":["event"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.kind","typeLabel":"enum\u003cstring>"},"eventSources":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"eventSourceId":{"type":"string","minLength":1,"description":"Event source to include (must be configured via sync_event_sources)","example":"website_pixel","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventSourceId","typeLabel":"string"},"eventType":{"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"],"description":"IAB ECAPI event type to optimize for","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventType","typeLabel":"enum\u003cstring>"},"customEventName":{"description":"Required when eventType is 'custom'. Platform-specific custom event name.","type":"string","uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].customEventName","typeLabel":"string"},"valueField":{"description":"Field on custom_data carrying the monetary value. Required when target is 'per_ad_spend'.","example":"value","type":"string","uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueField","typeLabel":"string"},"valueFactor":{"description":"Multiplier for valueField (default 1). Use -1 for refunds, 0.01 for cents.","example":1,"type":"number","uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueFactor","typeLabel":"number"}},"required":["eventSourceId","eventType"],"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX]","typeLabel":"object"},"description":"Event source and type pairs feeding this goal. Seller deduplicates by event_id across entries.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources","typeLabel":"object[]"},"target":{"oneOf":[{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["per_ad_spend"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target return ratio (e.g. 4.0 = $4 of value per $1 spent)","example":4,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"floor\".","type":"string","enum":["floor","target"],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind"],"properties":{"kind":{"type":"string","enum":["maximize_value"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Optimize for a seller-tracked delivery metric. No event source required.","required":["kind","metric"],"properties":{"kind":{"type":"string","enum":["metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.kind","typeLabel":"enum\u003cstring>"},"metric":{"type":"string","enum":["clicks","views","completed_views","viewed_seconds","viewable_rate","attention_seconds","attention_score","engagements","follows","saves","profile_visits","reach"],"description":"Metric name. Includes viewed_seconds, attention_seconds, attention_score, reach. See enum.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.metric","typeLabel":"enum\u003cstring>"},"viewDurationSeconds":{"description":"Min video seconds for completed_views metric.","type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.viewDurationSeconds","typeLabel":"number"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow","typeLabel":"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,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Optimize for a metric a measurement vendor counts, such as store visits measured by Placer. Sellers that declare the vendor metric optimize toward it; every other seller is asked to report it.","required":["kind","vendor","metricId"],"properties":{"kind":{"type":"string","enum":["vendor_metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.kind","typeLabel":"enum\u003cstring>"},"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])?)*$","description":"Domain that hosts the vendor's brand.json, for example `placer.ai`.","example":"placer.ai","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.domain","typeLabel":"string"},"brandId":{"description":"Brand within the vendor domain. Omit for a single-brand domain.","type":"string","pattern":"^[a-z0-9_]+$","uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.brandId","typeLabel":"string"}},"required":["domain"],"additionalProperties":false,"description":"The measurement vendor that counts this metric, as AdCP names it.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor","typeLabel":"object"},"metricId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","description":"The vendor's AdCP metric id, for example `store_visits`. With `vendor`, it is the key sellers and delivery reports use for the metric.","example":"store_visits","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.metricId","typeLabel":"string"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals.items.[INDEX]","typeLabel":"object"},"description":"Optimization goals for the campaign. Each goal targets conversion events, a seller-native metric, or a metric a measurement vendor counts. This field and its nested keys are camelCase (eventSources, eventSourceId, valueField) — distinct from the ADCP snake_case optimization_goals field used at the media-buy or product level (event_sources, event_source_id).","isRequired":true,"uniqueKey":"oneOf.1.performanceConfig.optimizationGoals","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"oneOf.1.performanceConfig","typeLabel":"object"},"mode":{"type":"string","enum":["performance"],"description":"\"I have an objective; I don't care what you give me\" — platform-managed.","isRequired":true,"uniqueKey":"oneOf.1.mode","typeLabel":"enum\u003cstring>"},"idempotencyKey":{"description":"Optional retry key. Repeating the same create for this customer returns the first campaign.","type":"string","minLength":1,"maxLength":200,"uniqueKey":"oneOf.1.idempotencyKey","typeLabel":"string"},"operatorFees":{"description":"The operator's fee on this campaign: at most one entry, as a decimal proportion of the gross budget (`rate: 0.02` for 2%). Only a caller acting for the operator organisation, the parent of this account, may set it, and only when operator fees are enabled for that organisation, the account's media is invoiced to the operator, and the campaign has a budget. Each media buy created under the campaign afterwards locks the fee into its own terms.","maxItems":1,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The kind of fee. Always `operator_fee`.","isRequired":true,"uniqueKey":"oneOf.1.operatorFees.items.[INDEX].name","typeLabel":"string"},"rate":{"type":"number","minimum":0,"exclusiveMinimum":true,"maximum":0.49,"description":"Decimal share of the campaign's gross budget: 0.02 for 2%.","isRequired":true,"uniqueKey":"oneOf.1.operatorFees.items.[INDEX].rate","typeLabel":"number"},"beneficiary":{"description":"Account id of the operator organisation; must be the account's parent organisation, the default.","type":"string","uniqueKey":"oneOf.1.operatorFees.items.[INDEX].beneficiary","typeLabel":"string"}},"required":["name","rate"],"additionalProperties":false,"description":"An operator fee in AdCP price-adjustment fields.","uniqueKey":"oneOf.1.operatorFees.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.operatorFees","typeLabel":"object[]"},"brief":{"description":"Natural language brief for product search context","example":"Looking for premium video inventory targeting tech enthusiasts","type":"string","maxLength":5000,"uniqueKey":"oneOf.1.brief","typeLabel":"string"},"constraints":{"description":"Campaign targeting constraints","type":"object","properties":{"geo_countries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"oneOf.1.constraints.geo_countries.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"oneOf.1.constraints.geo_countries","typeLabel":"string[]"},"geo_countries_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"oneOf.1.constraints.geo_countries_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"oneOf.1.constraints.geo_countries_exclude","typeLabel":"string[]"},"geo_regions":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"oneOf.1.constraints.geo_regions.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to exact canonical ISO 3166-2 subdivisions (states, provinces, regions, departments, or other subdivision categories). Unknown identifiers are invalid. At create or update, sellers MUST reject unsupported identifiers and MUST NOT silently widen, drop, or partially apply the list. During get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome. Exact internal translation preserves accepted identifiers in package readback.","uniqueKey":"oneOf.1.constraints.geo_regions","typeLabel":"string[]"},"geo_regions_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"oneOf.1.constraints.geo_regions_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude exact canonical ISO 3166-2 subdivisions. Support is independent from geo_regions inclusion support. Unknown identifiers and values also present in geo_regions are invalid. At create or update, sellers MUST reject unsupported identifiers and partial application; during get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome.","uniqueKey":"oneOf.1.constraints.geo_regions_exclude","typeLabel":"string[]"},"geo_metros":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_metros.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_metros.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_metros.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"description":"A targeted metro area.","uniqueKey":"oneOf.1.constraints.geo_metros.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.1.constraints.geo_metros","typeLabel":"object[]"},"geo_metros_exclude":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_metros_exclude.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_metros_exclude.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_metros_exclude.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_metros_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.1.constraints.geo_metros_exclude","typeLabel":"object[]"},"geo_postal_areas":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.1.constraints.geo_postal_areas.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific postal areas. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.1.constraints.geo_postal_areas","typeLabel":"object[]"},"geo_postal_areas_exclude":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific postal areas from delivery. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"oneOf.1.constraints.geo_postal_areas_exclude","typeLabel":"object[]"},"language":{"minItems":1,"type":"array","items":{"type":"string","minLength":2,"maxLength":63,"pattern":"^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$","description":"A well-formed BCP 47 language tag used by AdCP only as language identity. Script and region may refine that identity; other valid BCP 47 subtags remain part of tag matching but do not make this a general locale-settings object. It does not determine currency, time zone, number/date formatting, market, or legal jurisdiction. The AdCP canonical wire profile requires lower-case language and variants, title-case script, and upper-case region (for example `en-US`, `zh-Hant-TW`, or `x-private`). RFC 5646 comparisons are case-insensitive and its case regularization is optional; AdCP intentionally requires this stricter single wire spelling and receivers MUST reject differently cased tags rather than silently normalizing them. The schema pattern enforces the AdCP casing profile and extension structure for commonly used tags; conforming receivers additionally validate the complete RFC 5646 grammar and registry rules. Every new AdCP field carrying BCP 47 language identity or a concrete language range MUST reference this schema instead of declaring independent string constraints.","uniqueKey":"oneOf.1.constraints.language.items.[INDEX]","typeLabel":"string"},"description":"Restrict to users with specific language preferences using canonical BCP 47 language ranges. Each buyer range is evaluated against a user's language-preference tag with RFC 4647 section 3.3.1 Basic Filtering: 'fr' matches 'fr', 'fr-CA', and 'fr-FR', while 'fr-CA' matches 'fr-CA' and more-specific descendants but not 'fr' or 'fr-FR'. Values use OR logic.","uniqueKey":"oneOf.1.constraints.language","typeLabel":"string[]"},"device_platform":{"minItems":1,"type":"array","items":{"type":"string","enum":["ios","android","windows","macos","linux","chromeos","tvos","tizen","webos","fire_os","roku_os","unknown"],"description":"Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"oneOf.1.constraints.device_platform.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"oneOf.1.constraints.device_platform","typeLabel":"enum\u003cstring>[]"},"device_type":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"oneOf.1.constraints.device_type.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific device form factors. Use for campaigns targeting hardware categories rather than operating systems (e.g., mobile-only promotions, CTV campaigns).","uniqueKey":"oneOf.1.constraints.device_type","typeLabel":"enum\u003cstring>[]"},"device_type_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"oneOf.1.constraints.device_type_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific device form factors from delivery (e.g., exclude CTV for app-install campaigns).","uniqueKey":"oneOf.1.constraints.device_type_exclude","typeLabel":"enum\u003cstring>[]"},"channels":{"description":"Channels to target (e.g., [\"ctv\", \"display\"])","type":"array","items":{"type":"string","uniqueKey":"oneOf.1.constraints.channels.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.constraints.channels","typeLabel":"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}$","uniqueKey":"oneOf.1.constraints.countries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.constraints.countries","typeLabel":"string[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.constraints.additionalProperties","typeLabel":"any"},"uniqueKey":"oneOf.1.constraints","typeLabel":"object"},"channelGroups":{"description":"Canonical buyer-declared inventory execution and reporting boundaries. REST clients send the fully expanded saved shape; /mcp/v3 save_campaign also accepts preset shorthand.","minItems":1,"maxItems":25,"type":"array","items":{"type":"object","properties":{"channelGroupId":{"type":"string","minLength":1,"maxLength":128,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].channelGroupId","typeLabel":"string"},"name":{"type":"string","minLength":1,"maxLength":120,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].name","typeLabel":"string"},"source":{"oneOf":[{"type":"object","required":["kind","presetId","presetVersion"],"properties":{"kind":{"type":"string","enum":["preset"],"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"presetId":{"type":"string","enum":["display","olv","mobile_web_display","mobile_web_olv","ctv"],"description":"Versioned channel group preset to expand into AdCP inventory dimensions.","isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.0.presetId","typeLabel":"enum\u003cstring>"},"presetVersion":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.0.presetVersion","typeLabel":"integer"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.0","typeLabel":"object"},{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.1.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].source","typeLabel":"object"},"inventory":{"type":"object","properties":{"channels":{"description":"Buyer-declared AdCP media channels. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["display","olv","social","search","ctv","linear_tv","radio","streaming_audio","podcast","dooh","ooh","print","cinema","email","gaming","retail_media","influencer","affiliate","product_placement","sponsored_intelligence"],"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.channels.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.channels","typeLabel":"enum\u003cstring>[]"},"propertyTypes":{"description":"Buyer-declared AdCP property types. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["website","mobile_app","ctv_app","desktop_app","dooh","podcast","radio","linear_tv","streaming_audio","ai_assistant"],"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.propertyTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.propertyTypes","typeLabel":"enum\u003cstring>[]"},"deviceTypes":{"description":"Buyer-declared AdCP device types. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.deviceTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.deviceTypes","typeLabel":"enum\u003cstring>[]"},"formatKinds":{"description":"Buyer-declared AdCP canonical creative format kinds. Values are OR.","minItems":1,"type":"array","items":{"type":"string","enum":["image","html5","display_tag","image_carousel","video_hosted","video_vast","audio_hosted","audio_vast","audio_daast","sponsored_placement","native_in_feed","responsive_creative","agent_placement","seller_rendered_stateful_display","coordinated_placements","custom"],"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.formatKinds.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory.formatKinds","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX].inventory","typeLabel":"object"}},"required":["channelGroupId","name","source","inventory"],"additionalProperties":false,"uniqueKey":"oneOf.1.channelGroups.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.channelGroups","typeLabel":"object[]"},"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","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"oneOf.1.storefrontIds.items.[INDEX]","typeLabel":"integer"},"uniqueKey":"oneOf.1.storefrontIds","typeLabel":"integer[]"},"discoveryId":{"description":"Attach an existing discovery session to the campaign","example":"abc123-def456-ghi789","type":"string","minLength":1,"uniqueKey":"oneOf.1.discoveryId","typeLabel":"string"},"productIds":{"description":"Product IDs to pre-select from the discovery session (requires discoveryId)","example":["prod_123","prod_456"],"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.productIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.productIds","typeLabel":"string[]"},"audienceConfig":{"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,"uniqueKey":"oneOf.1.audienceConfig.targetAudienceIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.audienceConfig.targetAudienceIds","typeLabel":"string[]"},"suppressAudienceIds":{"description":"Audience IDs to suppress (exclude) from this campaign","example":["aud_789"],"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"oneOf.1.audienceConfig.suppressAudienceIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"oneOf.1.audienceConfig.suppressAudienceIds","typeLabel":"string[]"}},"description":"Audience targeting and suppression configuration. On create, listed audiences are attached to the campaign.","uniqueKey":"oneOf.1.audienceConfig","typeLabel":"object"},"optimizationApplyMode":{"type":"string","description":"Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. If omitted, inherits the advertiser-level setting.","enum":["AUTO","MANUAL"],"uniqueKey":"oneOf.1.optimizationApplyMode","typeLabel":"enum\u003cstring>"},"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","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"oneOf.1.catalogId","typeLabel":"integer"},"pacingPeriods":{"type":"object","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.","required":["mode","periods"],"properties":{"mode":{"type":"string","enum":["weight","budget"],"description":"How period budgets are determined. \"weight\" uses relative weights to distribute the campaign budget proportionally. \"budget\" uses explicit dollar amounts per period.","isRequired":true,"uniqueKey":"oneOf.1.pacingPeriods.mode","typeLabel":"enum\u003cstring>"},"periods":{"minItems":1,"maxItems":52,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable label for this period (e.g. \"Memorial Day Heavy-Up\")","isRequired":true,"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX].label","typeLabel":"string"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period start date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period end date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX].end","typeLabel":"string"},"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,"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX].weight","typeLabel":"number"},"budget":{"description":"Absolute budget for this period (0 = skip this period). Required when mode is \"budget\".","type":"number","minimum":0,"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX].budget","typeLabel":"number"}},"required":["label","start","end"],"uniqueKey":"oneOf.1.pacingPeriods.periods.items.[INDEX]","typeLabel":"object"},"description":"Ordered list of pacing periods with date ranges and spend intensity","isRequired":true,"uniqueKey":"oneOf.1.pacingPeriods.periods","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.pacingPeriods","typeLabel":"object"},"utmConfig":{"type":"object","description":"Click-URL parameters for this campaign. An object with `params` and optional `deleteMissing`; campaign keys override advertiser keys with the same name. At campaign level a write is additive: it adds or updates the given keys and keeps the others, unless `deleteMissing: true` replaces the campaign set. Advertiser `utmConfig` is a plain array that always replaces the advertiser set. For one model at advertiser, campaign and creative level, and to suppress an inherited key with a `null` value, use V3 `tracking.macroAdditions` (`save_advertiser`, `save_campaign`) or `macroAdditions` (`save_creative`).","required":["params"],"properties":{"params":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"paramKey":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.~-]{0,99}$","description":"Output query parameter key appended to landing URL (e.g., \"utm_source\", \"bg_campaign\")","example":"utm_campaign","isRequired":true,"uniqueKey":"oneOf.1.utmConfig.params.items.[INDEX].paramKey","typeLabel":"string"},"paramValue":{"type":"string","minLength":1,"maxLength":500,"description":"Macro name (e.g., \"{CAMPAIGN_ID}\") or static string (e.g., \"scope3\") to resolve as the value","example":"{CAMPAIGN_ID}","isRequired":true,"uniqueKey":"oneOf.1.utmConfig.params.items.[INDEX].paramValue","typeLabel":"string"}},"required":["paramKey","paramValue"],"uniqueKey":"oneOf.1.utmConfig.params.items.[INDEX]","typeLabel":"object"},"description":"Array of UTM parameter mappings for this campaign","isRequired":true,"uniqueKey":"oneOf.1.utmConfig.params","typeLabel":"object[]"},"deleteMissing":{"description":"If true, the request replaces the campaign set and removes campaign keys it does not list. If false or omitted, the request only adds or updates the keys it lists.","type":"boolean","uniqueKey":"oneOf.1.utmConfig.deleteMissing","typeLabel":"boolean"}},"uniqueKey":"oneOf.1.utmConfig","typeLabel":"object"},"dataDelivery":{"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":{"type":"array","items":{"type":"object","properties":{"dataDeliveryType":{"type":"string","enum":["MB_DELIVERY","IMPRESSIONS","CLICKS","VAST_EVENTS","CAPI_ATTRIBUTION","MMP_POSTBACKS"],"description":"The kind of LLD shipped by this Output.","isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].dataDeliveryType","typeLabel":"enum\u003cstring>"},"cadence":{"type":"string","enum":["HOURLY","DAILY","WEEKLY"],"description":"Firing rate. HOURLY fires at minute 0 every hour, DAILY at 00:00 UTC, WEEKLY at 00:00 UTC on syncWeeklyDay.","isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].cadence","typeLabel":"enum\u003cstring>"},"credentialName":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-zA-Z0-9][a-zA-Z0-9_-]*$","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.","isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].credentialName","typeLabel":"string"},"deliveryConfig":{"oneOf":[{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["GCS"],"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["S3"],"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type"],"properties":{"type":{"type":"string","enum":["AZURE_BLOB"],"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.format","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].deliveryConfig","typeLabel":"object"},"syncWeeklyDay":{"description":"Day of week for WEEKLY cadence (0=Sunday..6=Saturday). Required when cadence=WEEKLY, ignored otherwise.","type":"integer","minimum":0,"maximum":6,"uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].syncWeeklyDay","typeLabel":"integer"},"enabled":{"default":true,"description":"When false, the Temporal schedule is paused — no new runs fire, in-flight runs continue. Defaults to true.","type":"boolean","uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX].enabled","typeLabel":"boolean"}},"required":["dataDeliveryType","cadence","credentialName","deliveryConfig"],"description":"A single Data Delivery Output entry. Used inline on advertiser/campaign create+update.","uniqueKey":"oneOf.1.dataDelivery.outputs.items.[INDEX]","typeLabel":"object"},"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.","maxItems":20,"uniqueKey":"oneOf.1.dataDelivery.outputs","typeLabel":"object[]"}},"uniqueKey":"oneOf.1.dataDelivery","typeLabel":"object"},"frequencyCaps":{"description":"Buyer-side frequency cap configs to apply to this campaign, enforced via Scope3's cross-publisher exposure tracking on TMP-connected inventory. Closed-platform integrations (e.g. TikTok, Meta, Snap, and other adapter-based publishers) cannot honor this at their own request time — to cap frequency on one of those platforms' own native ad-serving, set `targetingOverlay.frequency_cap` on the product instead (see `add_discovery_products` / `create_media_buys`).","type":"array","items":{"type":"object","properties":{"max_impressions":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Maximum number of impressions allowed within the window","example":3,"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].max_impressions","typeLabel":"integer"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window.additionalProperties","typeLabel":"any"},"description":"Rolling time window over which max_impressions applies (AdCP Duration shape).","isRequired":true,"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].window","typeLabel":"object"}},"required":["max_impressions","window"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX].additionalProperties","typeLabel":"any"},"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.","uniqueKey":"oneOf.1.frequencyCaps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"oneOf.1.frequencyCaps","typeLabel":"object[]"},"autonomy":{"description":"Autonomy settings for this campaign. Controls who owns composition and brief updates. Set inventorySelection: \"automatic\" to let the platform optimizer pick inventory; the default is \"manual\".","type":"object","properties":{"inventorySelection":{"description":"How inventory is selected: manual (buyer-driven, default), propose (agent drafts for approval), automatic (platform optimizer owns composition — manual staging is rejected).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"oneOf.1.autonomy.inventorySelection","typeLabel":"enum\u003cstring>"},"rebriefing":{"description":"How the brief is updated: manual (human), propose (agent drafts), automatic (agent applies).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"oneOf.1.autonomy.rebriefing","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.1.autonomy","typeLabel":"object"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"advertiserId":12345,"name":"Q1 2025 Campaign","flightDates":{"startDate":"2025-01-15T00:00:00Z","endDate":"2025-03-31T23:59:59Z"},"budget":{"total":1,"currency":"\u003cstring>","dailyCap":1},"mode":"discovery","idempotencyKey":"\u003cstring>","operatorFees":[{"name":"\u003cstring>","rate":0.245,"beneficiary":"\u003cstring>"}],"brief":"Looking for premium video inventory targeting tech enthusiasts","constraints":{"geo_countries":["\u003cstring>"],"geo_countries_exclude":["\u003cstring>"],"geo_regions":["\u003cstring>"],"geo_regions_exclude":["\u003cstring>"],"geo_metros":[{"values":["\u003cstring>"]}],"geo_metros_exclude":[{"values":["\u003cstring>"]}],"geo_postal_areas":[{"country":"US","values":["\u003cstring>"]}],"geo_postal_areas_exclude":[{"country":"US","values":["\u003cstring>"]}],"language":["\u003cstring>"],"device_platform":[],"device_type":[],"device_type_exclude":[],"channels":["\u003cstring>"],"countries":["\u003cstring>"]},"channelGroups":[{"channelGroupId":"\u003cstring>","name":"\u003cstring>","source":{"kind":"preset","presetVersion":4503599627370495},"inventory":{"channels":[],"propertyTypes":[],"deviceTypes":[],"formatKinds":[]}}],"storefrontIds":[42,57],"discoveryId":"abc123-def456-ghi789","productIds":["prod_123","prod_456"],"audienceConfig":{"targetAudienceIds":["aud_123","aud_456"],"suppressAudienceIds":["aud_789"]},"catalogId":42,"dataDelivery":{"outputs":[{"credentialName":"\u003cstring>","deliveryConfig":{"type":"GCS","pathPrefix":"","format":"JSONL"},"syncWeeklyDay":3,"enabled":true}]},"frequencyCaps":[{"max_impressions":3,"window":{"interval":4503599627370496,"unit":"seconds"}}],"autonomy":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3a86d21f-9c95-48bb-878c-b6a481a63130":{"description":"Create campaign","content":{"application/json":{"schema":{"type":"object","properties":{"campaign":{"type":"object","properties":{"campaignId":{"type":"string","description":"Unique identifier for the campaign","example":"cmp_987654321","isRequired":true,"uniqueKey":"campaign.campaignId","typeLabel":"string"},"advertiserId":{"oneOf":[{"description":"Advertiser ID that owns this campaign. Null for a small number of campaigns that predate advertiser linking and are accessible to every advertiser on the account.","example":"12345","type":"string","isRequired":true,"uniqueKey":"campaign.advertiserId.oneOf.0","typeLabel":"string"},{"description":"Advertiser ID that owns this campaign. Null for a small number of campaigns that predate advertiser linking and are accessible to every advertiser on the account.","example":"12345","type":"null","isRequired":true,"uniqueKey":"campaign.advertiserId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.advertiserId","typeLabel":"string | null"},"name":{"type":"string","description":"Campaign name","example":"Summer 2025 Campaign","isRequired":true,"uniqueKey":"campaign.name","typeLabel":"string"},"status":{"type":"string","enum":["DRAFT","ACTIVE","PAUSED","ENDING","COMPLETED","CANCELED","ARCHIVED"],"description":"Current campaign status","isRequired":true,"uniqueKey":"campaign.status","typeLabel":"enum\u003cstring>"},"mode":{"type":"string","description":"Who is steering this campaign — discovery, performance, or directed. Backfilled by projection for existing campaigns (see deriveCampaignMode); no data movement. The \"directed\" value is deprecated: read `management` instead.","enum":["discovery","performance","directed"],"isRequired":true,"uniqueKey":"campaign.mode","typeLabel":"enum\u003cstring>"},"management":{"type":"string","description":"Whether the platform acts on this campaign: \"tracked\" (a campaign the platform did not set up, mirrored read-only from a connected provider account) or \"managed\" (authored or adopted through the platform).","enum":["tracked","managed"],"isRequired":true,"uniqueKey":"campaign.management","typeLabel":"enum\u003cstring>"},"optimizationApplyMode":{"type":"string","description":"Controls whether Scope3 AI model optimizations to media buys are applied automatically or require manual approval. Defaults to the advertiser-level setting if not explicitly set on the campaign.","enum":["AUTO","MANUAL"],"isRequired":true,"uniqueKey":"campaign.optimizationApplyMode","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"When the campaign was created (ISO 8601)","example":"2025-01-15T10:30:00Z","isRequired":true,"uniqueKey":"campaign.createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"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))$","description":"When the campaign was last updated (ISO 8601)","example":"2025-01-20T14:45:00Z","isRequired":true,"uniqueKey":"campaign.updatedAt","typeLabel":"string\u003cdate-time>"},"revision":{"default":1,"description":"Monotonically increasing revision counter. Incremented on every mutation. Pass as expectedRevision in save_campaign to enable optimistic concurrency.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.revision","typeLabel":"integer"},"delegatedBy":{"description":"Present on a buyer agent's read when another organization delegated this campaign's advertiser to the agent's organization; names that organization. The campaign stays in its owner's account and is read-only to the agent.","type":"object","properties":{"organizationName":{"type":"string","isRequired":true,"uniqueKey":"campaign.delegatedBy.organizationName","typeLabel":"string"}},"required":["organizationName"],"additionalProperties":false,"uniqueKey":"campaign.delegatedBy","typeLabel":"object"},"archivedAt":{"description":"When this campaign was archived (ISO 8601). Archiving controls visibility and preserves the campaign status.","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))$","uniqueKey":"campaign.archivedAt","typeLabel":"string\u003cdate-time>"},"directed":{"oneOf":[{"type":"object","description":"Subscription-backed directed mirror state — connection, upstream account, dual-keyed ids, and sync health. Not present on inbound single-storefront AdCP campaigns.","required":["provenance","connectionId","accountId","provider","upstreamMediaBuyId","subscribed","mirrorState"],"properties":{"provenance":{"type":"string","enum":["connected_account"],"description":"This directed campaign is mirrored from or authored through a connected provider account.","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.provenance","typeLabel":"enum\u003cstring>"},"connectionId":{"type":"string","minLength":1,"description":"The subscribed provider connection this directed campaign is mirrored from.","example":"conn_abc123","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.connectionId","typeLabel":"string"},"accountId":{"type":"string","minLength":1,"description":"The connection's upstream account id.","example":"act_998877","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.accountId","typeLabel":"string"},"provider":{"type":"string","minLength":1,"description":"Adapter/provider key the connection resolves to, e.g. \"tiktok\", \"pinterest\", \"talpa\".","example":"tiktok","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.provider","typeLabel":"string"},"upstreamMediaBuyId":{"type":"string","minLength":1,"description":"The seller's own identifier for the mirrored media buy/campaign — dual-keyed alongside our internal mediaBuyId, per the parity rule (a directed campaign IS a media buy).","example":"tt_campaign_44521","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.upstreamMediaBuyId","typeLabel":"string"},"subscribed":{"type":"boolean","description":"Whether the connected provider account is actively subscribed for periodic metadata mirroring. Alpha usage is dark-metered and not billed.","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.subscribed","typeLabel":"boolean"},"mirrorState":{"type":"string","enum":["live","stale","error"],"description":"live = mirror is current; stale = last sync failed or is overdue; error = the provider reported an error.","isRequired":true,"uniqueKey":"campaign.directed.oneOf.0.mirrorState","typeLabel":"enum\u003cstring>"},"storefrontId":{"description":"Storefront DB id backing this connection, when the provider is modeled as an AdCP storefront.","example":42,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"campaign.directed.oneOf.0.storefrontId","typeLabel":"integer"},"mediaBuyId":{"description":"Our internal media buy id correlating to the upstream object, once the mirror row exists.","type":"string","uniqueKey":"campaign.directed.oneOf.0.mediaBuyId","typeLabel":"string"},"lastSyncedAt":{"description":"When the mirror was last refreshed from the upstream platform (ISO 8601).","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))$","uniqueKey":"campaign.directed.oneOf.0.lastSyncedAt","typeLabel":"string\u003cdate-time>"}},"additionalProperties":false,"uniqueKey":"campaign.directed.oneOf.0","typeLabel":"object"},{"type":"object","description":"Subscription-backed directed mirror state — connection, upstream account, dual-keyed ids, and sync health. Not present on inbound single-storefront AdCP campaigns.","required":["provenance","storefrontId","buyerMediaBuyId"],"properties":{"provenance":{"type":"string","enum":["storefront_endpoint"],"description":"This directed campaign was created by an external AdCP buyer addressing one storefront endpoint.","isRequired":true,"uniqueKey":"campaign.directed.oneOf.1.provenance","typeLabel":"enum\u003cstring>"},"storefrontId":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Storefront DB id that owns execution for this campaign.","example":42,"isRequired":true,"uniqueKey":"campaign.directed.oneOf.1.storefrontId","typeLabel":"integer"},"buyerMediaBuyId":{"type":"string","minLength":1,"description":"The storefront media buy id: the id the storefront gave this buy, which the external buyer uses at the storefront boundary. It can differ from the buyer's own media buy id (`mediaBuyId`). The field name is unchanged for v2 compatibility.","example":"buyer_mb_44521","isRequired":true,"uniqueKey":"campaign.directed.oneOf.1.buyerMediaBuyId","typeLabel":"string"},"mediaBuyId":{"description":"Interchange media-buy id used by the campaign, contract, reporting, and ledger layers. Omitted only for legacy endpoint shells created before this projection was recorded.","example":"mb_ETBn4gJ9Wu","type":"string","minLength":1,"uniqueKey":"campaign.directed.oneOf.1.mediaBuyId","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"campaign.directed.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.directed","typeLabel":"object"},"mediaBuyRefs":{"description":"Lightweight references to every media buy on this campaign (id + status). Surfaced early in the response so LLM callers can enumerate media buy IDs even when the full nested `mediaBuys[]` tail is truncated by a small context window. Use the `mediaBuyId` query param on `get_campaign` to drill into specific buys without loading the full tree.","type":"array","items":{"type":"object","properties":{"mediaBuyId":{"type":"string","description":"Unique identifier for the media buy","example":"mb_ETBn4gJ9Wu","isRequired":true,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].mediaBuyId","typeLabel":"string"},"status":{"type":"string","description":"Current or terminal status of the media buy (DRAFT, PENDING_APPROVAL, ACTIVE, PAUSED, ENDING, COMPLETED, CANCELED, REJECTED, FAILED, ARCHIVED). Archived buys remain discoverable here as ARCHIVED even though they are omitted from the substantive mediaBuys array. A buy that is ACTIVE with a change awaiting approval reports ACTIVE here and carries `pendingChange`; a queued change never replaces this value.","example":"ACTIVE","isRequired":true,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].status","typeLabel":"string"},"channelGroup":{"description":"Campaign channel group that compiled into this media buy.","type":"object","properties":{"channelGroupId":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].channelGroup.channelGroupId","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].channelGroup.name","typeLabel":"string"}},"required":["channelGroupId","name"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].channelGroup","typeLabel":"object"},"pendingAt":{"description":"Which layer the media buy itself is parked at; only present while its own status is PENDING_APPROVAL (a buy awaiting its first approval). For a change queued behind an already-live buy, read `pendingChange.pendingAt`. 'storefront' = waiting for the storefront operator's manual approval, 'salesagent' = the inventory source is still processing the buy, 'unknown' = indeterminate.","type":"string","enum":["storefront","salesagent","unknown"],"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].pendingAt","typeLabel":"enum\u003cstring>"},"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; this reference stays lightweight by design.","type":"object","properties":{"status":{"type":"string","description":"Lifecycle status of the queued change, typically PENDING_APPROVAL.","example":"PENDING_APPROVAL","isRequired":true,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].pendingChange.status","typeLabel":"string"},"pendingAt":{"description":"Which layer the queued change is parked at.","type":"string","enum":["storefront","salesagent","unknown"],"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].pendingChange.pendingAt","typeLabel":"enum\u003cstring>"}},"required":["status"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuyRefs.items.[INDEX].pendingChange","typeLabel":"object"}},"required":["mediaBuyId","status"],"additionalProperties":false,"description":"Lightweight media buy reference (id + live status). Used in Campaign.mediaBuyRefs so callers can enumerate media buys without loading the full nested tree.","uniqueKey":"campaign.mediaBuyRefs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuyRefs","typeLabel":"object[]"},"brief":{"description":"Campaign brief","type":"string","uniqueKey":"campaign.brief","typeLabel":"string"},"flightDates":{"description":"Campaign flight dates","type":"object","properties":{"startDate":{"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))$","description":"Campaign start date (ISO 8601)","example":"2025-01-15T00:00:00Z","isRequired":true,"uniqueKey":"campaign.flightDates.startDate","typeLabel":"string\u003cdate-time>"},"endDate":{"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))$","description":"Campaign end date (ISO 8601)","example":"2025-03-31T23:59:59Z","isRequired":true,"uniqueKey":"campaign.flightDates.endDate","typeLabel":"string\u003cdate-time>"}},"required":["startDate","endDate"],"additionalProperties":false,"uniqueKey":"campaign.flightDates","typeLabel":"object"},"budget":{"description":"Campaign budget configuration","type":"object","properties":{"total":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.budget.total","typeLabel":"number"},"currency":{"default":"USD","type":"string","minLength":3,"maxLength":3,"isRequired":true,"uniqueKey":"campaign.budget.currency","typeLabel":"string"},"dailyCap":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"campaign.budget.dailyCap","typeLabel":"number"},"pacing":{"type":"string","enum":["EVEN","ASAP","FRONTLOADED"],"uniqueKey":"campaign.budget.pacing","typeLabel":"enum\u003cstring>"}},"required":["total","currency"],"additionalProperties":false,"uniqueKey":"campaign.budget","typeLabel":"object"},"operatorFees":{"description":"The operator's fee on this campaign, in AdCP price-adjustment field names. Present only when the campaign has one and the caller may see the fee breakdown: the operator organisation's own people, or its client accounts when the operator shows its clients their fees. Absent, never zero, for every other caller. Returned on the single-campaign read and on create and update responses; absent from list reads.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.operatorFees.items.[INDEX].name","typeLabel":"string"},"rate":{"type":"number","isRequired":true,"uniqueKey":"campaign.operatorFees.items.[INDEX].rate","typeLabel":"number"},"beneficiary":{"type":"string","isRequired":true,"uniqueKey":"campaign.operatorFees.items.[INDEX].beneficiary","typeLabel":"string"}},"required":["name","rate","beneficiary"],"additionalProperties":false,"description":"An operator fee on a campaign, in AdCP price-adjustment fields: `name` is `operator_fee`, `rate` is the fee as a decimal proportion of the campaign's gross budget (0.02 for 2%), and `beneficiary` is the account id of the operator organisation that keeps it.","uniqueKey":"campaign.operatorFees.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.operatorFees","typeLabel":"object[]"},"operatorFeeEditable":{"description":"`true` only when the caller may set or clear this campaign's operator fee: they act for the operator organisation, operator fees are enabled for it, and the account's media is invoiced to it. Absent otherwise. Returned on the single-campaign read and on create and update responses.","type":"boolean","enum":[true],"uniqueKey":"campaign.operatorFeeEditable","typeLabel":"enum\u003cboolean>"},"allocatedBudget":{"description":"Sum of the budgets of every media buy that still holds budget on this campaign — DRAFT, PENDING_APPROVAL, INPUT_REQUIRED, ACTIVE, PAUSED, and ENDING (including an additive reconciliation marker) — plus performance spend on media buys that have reached a terminal status (COMPLETED, CANCELED, FAILED, REJECTED, ARCHIVED) or have otherwise been archived. A DRAFT media buy holds budget exactly as a live one does and is already counted here. Only present when the campaign has a budget.total set. Expressed in the campaign budget currency.","example":7500,"type":"number","minimum":0,"uniqueKey":"campaign.allocatedBudget","typeLabel":"number"},"unallocatedBudget":{"description":"Budget remaining for allocation — a new media buy, or an increase to an existing one — computed server-side as budget.total minus allocatedBudget. For a media buy that still holds budget on this campaign, allocatedBudget already includes that buy's current budget, so use this value directly rather than adding it back in. For a terminal media buy being revived, only its delivered spend sits in allocatedBudget — the ceiling for the revived buy's new budget is unallocatedBudget + that buy's delivered spend. Only present when the campaign has a budget.total set. Expressed in the campaign budget currency. May be negative if performance spend on terminal media buys exceeds budget.total.","example":2500,"type":"number","uniqueKey":"campaign.unallocatedBudget","typeLabel":"number"},"pacingPeriods":{"type":"object","description":"Pacing schedule for the campaign, if configured. In responses, each period includes a resolved budget (computed dollar amount). In weight mode, weights are preserved alongside the resolved budget.","required":["mode","periods"],"properties":{"mode":{"type":"string","enum":["weight","budget"],"description":"How period budgets are determined. \"weight\" uses relative weights to distribute the campaign budget proportionally. \"budget\" uses explicit dollar amounts per period.","isRequired":true,"uniqueKey":"campaign.pacingPeriods.mode","typeLabel":"enum\u003cstring>"},"periods":{"minItems":1,"maxItems":52,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable label for this period (e.g. \"Memorial Day Heavy-Up\")","isRequired":true,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX].label","typeLabel":"string"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period start date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period end date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX].end","typeLabel":"string"},"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,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX].weight","typeLabel":"number"},"budget":{"description":"Absolute budget for this period (0 = skip this period). Required when mode is \"budget\".","type":"number","minimum":0,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX].budget","typeLabel":"number"}},"required":["label","start","end"],"additionalProperties":false,"uniqueKey":"campaign.pacingPeriods.periods.items.[INDEX]","typeLabel":"object"},"description":"Ordered list of pacing periods with date ranges and spend intensity","isRequired":true,"uniqueKey":"campaign.pacingPeriods.periods","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"campaign.pacingPeriods","typeLabel":"object"},"constraints":{"description":"Targeting constraints","type":"object","properties":{"geo_countries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"campaign.constraints.geo_countries.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"campaign.constraints.geo_countries","typeLabel":"string[]"},"geo_countries_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"campaign.constraints.geo_countries_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"campaign.constraints.geo_countries_exclude","typeLabel":"string[]"},"geo_regions":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"campaign.constraints.geo_regions.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to exact canonical ISO 3166-2 subdivisions (states, provinces, regions, departments, or other subdivision categories). Unknown identifiers are invalid. At create or update, sellers MUST reject unsupported identifiers and MUST NOT silently widen, drop, or partially apply the list. During get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome. Exact internal translation preserves accepted identifiers in package readback.","uniqueKey":"campaign.constraints.geo_regions","typeLabel":"string[]"},"geo_regions_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"campaign.constraints.geo_regions_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude exact canonical ISO 3166-2 subdivisions. Support is independent from geo_regions inclusion support. Unknown identifiers and values also present in geo_regions are invalid. At create or update, sellers MUST reject unsupported identifiers and partial application; during get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome.","uniqueKey":"campaign.constraints.geo_regions_exclude","typeLabel":"string[]"},"geo_metros":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"campaign.constraints.geo_metros.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_metros.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"campaign.constraints.geo_metros.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"description":"A targeted metro area.","uniqueKey":"campaign.constraints.geo_metros.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.constraints.geo_metros","typeLabel":"object[]"},"geo_metros_exclude":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"campaign.constraints.geo_metros_exclude.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_metros_exclude.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"campaign.constraints.geo_metros_exclude.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_metros_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.constraints.geo_metros_exclude","typeLabel":"object[]"},"geo_postal_areas":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"campaign.constraints.geo_postal_areas.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific postal areas. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.constraints.geo_postal_areas","typeLabel":"object[]"},"geo_postal_areas_exclude":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"campaign.constraints.geo_postal_areas_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific postal areas from delivery. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.constraints.geo_postal_areas_exclude","typeLabel":"object[]"},"language":{"minItems":1,"type":"array","items":{"type":"string","minLength":2,"maxLength":63,"pattern":"^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$","description":"A well-formed BCP 47 language tag used by AdCP only as language identity. Script and region may refine that identity; other valid BCP 47 subtags remain part of tag matching but do not make this a general locale-settings object. It does not determine currency, time zone, number/date formatting, market, or legal jurisdiction. The AdCP canonical wire profile requires lower-case language and variants, title-case script, and upper-case region (for example `en-US`, `zh-Hant-TW`, or `x-private`). RFC 5646 comparisons are case-insensitive and its case regularization is optional; AdCP intentionally requires this stricter single wire spelling and receivers MUST reject differently cased tags rather than silently normalizing them. The schema pattern enforces the AdCP casing profile and extension structure for commonly used tags; conforming receivers additionally validate the complete RFC 5646 grammar and registry rules. Every new AdCP field carrying BCP 47 language identity or a concrete language range MUST reference this schema instead of declaring independent string constraints.","uniqueKey":"campaign.constraints.language.items.[INDEX]","typeLabel":"string"},"description":"Restrict to users with specific language preferences using canonical BCP 47 language ranges. Each buyer range is evaluated against a user's language-preference tag with RFC 4647 section 3.3.1 Basic Filtering: 'fr' matches 'fr', 'fr-CA', and 'fr-FR', while 'fr-CA' matches 'fr-CA' and more-specific descendants but not 'fr' or 'fr-FR'. Values use OR logic.","uniqueKey":"campaign.constraints.language","typeLabel":"string[]"},"device_platform":{"minItems":1,"type":"array","items":{"type":"string","enum":["ios","android","windows","macos","linux","chromeos","tvos","tizen","webos","fire_os","roku_os","unknown"],"description":"Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"campaign.constraints.device_platform.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"campaign.constraints.device_platform","typeLabel":"enum\u003cstring>[]"},"device_type":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"campaign.constraints.device_type.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific device form factors. Use for campaigns targeting hardware categories rather than operating systems (e.g., mobile-only promotions, CTV campaigns).","uniqueKey":"campaign.constraints.device_type","typeLabel":"enum\u003cstring>[]"},"device_type_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"campaign.constraints.device_type_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific device form factors from delivery (e.g., exclude CTV for app-install campaigns).","uniqueKey":"campaign.constraints.device_type_exclude","typeLabel":"enum\u003cstring>[]"},"channels":{"description":"Channels to target (e.g., [\"ctv\", \"display\"])","type":"array","items":{"type":"string","uniqueKey":"campaign.constraints.channels.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.constraints.channels","typeLabel":"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}$","uniqueKey":"campaign.constraints.countries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.constraints.countries","typeLabel":"string[]"},"geo_metro_names":{"type":"array","items":{"type":"object","properties":{"system":{"type":"string","minLength":1,"description":"Metro targeting system these display labels belong to, e.g. nielsen_dma.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX].system","typeLabel":"string"},"values":{"maxItems":250,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Metro code from the corresponding metro targeting field.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX].values.items.[INDEX].code","typeLabel":"string"},"name":{"type":"string","minLength":1,"description":"Human-readable display label for the metro code.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX].values.items.[INDEX].name","typeLabel":"string"}},"required":["code","name"],"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX].values.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX].values","typeLabel":"object[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_metro_names.items.[INDEX]","typeLabel":"object"},"description":"Display labels for included geo_metros codes. Only present when requested with fields=geo_metro_names.","uniqueKey":"campaign.constraints.geo_metro_names","typeLabel":"object[]"},"geo_metro_names_exclude":{"type":"array","items":{"type":"object","properties":{"system":{"type":"string","minLength":1,"description":"Metro targeting system these display labels belong to, e.g. nielsen_dma.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX].system","typeLabel":"string"},"values":{"maxItems":250,"type":"array","items":{"type":"object","properties":{"code":{"type":"string","minLength":1,"description":"Metro code from the corresponding metro targeting field.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX].values.items.[INDEX].code","typeLabel":"string"},"name":{"type":"string","minLength":1,"description":"Human-readable display label for the metro code.","isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX].values.items.[INDEX].name","typeLabel":"string"}},"required":["code","name"],"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX].values.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX].values","typeLabel":"object[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"campaign.constraints.geo_metro_names_exclude.items.[INDEX]","typeLabel":"object"},"description":"Display labels for excluded geo_metros_exclude codes. Only present when requested with fields=geo_metro_names.","uniqueKey":"campaign.constraints.geo_metro_names_exclude","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"campaign.constraints","typeLabel":"object"},"storefronts":{"description":"Storefronts the campaign is pinned to. When set, every product discovery run for this campaign auto-applies the corresponding storefront filter. Each entry includes both the storefront DB `id` and the public `platformId` + `name` so the response is renderable without a follow-up lookup. Absent or empty means the campaign is not pinned to any specific storefronts.","type":"array","items":{"type":"object","properties":{"id":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Storefront DB ID","example":42,"isRequired":true,"uniqueKey":"campaign.storefronts.items.[INDEX].id","typeLabel":"integer"},"platformId":{"type":"string","description":"Public-facing storefront slug (the platform identifier returned by `list_storefronts`)","example":"acme-media","isRequired":true,"uniqueKey":"campaign.storefronts.items.[INDEX].platformId","typeLabel":"string"},"name":{"type":"string","description":"Storefront display name","example":"Acme Media","isRequired":true,"uniqueKey":"campaign.storefronts.items.[INDEX].name","typeLabel":"string"}},"required":["id","platformId","name"],"additionalProperties":false,"description":"A storefront the campaign is pinned to, hydrated from the storefront IDs the buyer set on create/update.","uniqueKey":"campaign.storefronts.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.storefronts","typeLabel":"object[]"},"performanceConfig":{"type":"object","description":"Performance configuration (present for performance campaigns)","required":["optimizationGoals"],"properties":{"optimizationGoals":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Optimize for advertiser-tracked conversion events via event sources.","required":["kind","eventSources"],"properties":{"kind":{"type":"string","enum":["event"],"description":"Goal kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.kind","typeLabel":"enum\u003cstring>"},"eventSources":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"eventSourceId":{"type":"string","minLength":1,"description":"Event source to include (must be configured via sync_event_sources)","example":"website_pixel","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventSourceId","typeLabel":"string"},"eventType":{"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"],"description":"IAB ECAPI event type to optimize for","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].eventType","typeLabel":"enum\u003cstring>"},"customEventName":{"description":"Required when eventType is 'custom'. Platform-specific custom event name.","type":"string","uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].customEventName","typeLabel":"string"},"valueField":{"description":"Field on custom_data carrying the monetary value. Required when target is 'per_ad_spend'.","example":"value","type":"string","uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueField","typeLabel":"string"},"valueFactor":{"description":"Multiplier for valueField (default 1). Use -1 for refunds, 0.01 for cents.","example":1,"type":"number","uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX].valueFactor","typeLabel":"number"}},"required":["eventSourceId","eventType"],"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources.items.[INDEX]","typeLabel":"object"},"description":"Event source and type pairs feeding this goal. Seller deduplicates by event_id across entries.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.eventSources","typeLabel":"object[]"},"target":{"oneOf":[{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["per_ad_spend"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target return ratio (e.g. 4.0 = $4 of value per $1 spent)","example":4,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"floor\".","type":"string","enum":["floor","target"],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1","typeLabel":"object"},{"type":"object","description":"Target cost or return. When omitted, the seller maximizes conversions within budget.","required":["kind"],"properties":{"kind":{"type":"string","enum":["maximize_value"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.2","typeLabel":"object"}],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.attributionWindow","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Optimize for a seller-tracked delivery metric. No event source required.","required":["kind","metric"],"properties":{"kind":{"type":"string","enum":["metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.kind","typeLabel":"enum\u003cstring>"},"metric":{"type":"string","enum":["clicks","views","completed_views","viewed_seconds","viewable_rate","attention_seconds","attention_score","engagements","follows","saves","profile_visits","reach"],"description":"Metric name. Includes viewed_seconds, attention_seconds, attention_score, reach. See enum.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.metric","typeLabel":"enum\u003cstring>"},"viewDurationSeconds":{"description":"Min video seconds for completed_views metric.","type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.viewDurationSeconds","typeLabel":"number"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the seller maximizes metric volume within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.target","typeLabel":"object"},"attributionWindow":{"type":"object","description":"Attribution window for this goal. When omitted, the seller uses their default.","required":["postClick"],"properties":{"postClick":{"type":"object","description":"Click-through attribution window","required":["interval","unit"],"example":{"interval":7,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postClick","typeLabel":"object"},"postView":{"type":"object","description":"View-through attribution window","required":["interval","unit"],"example":{"interval":1,"unit":"days"},"properties":{"interval":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Interval count.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["minutes","hours","days","campaign"],"description":"Interval unit.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow.postView","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.attributionWindow","typeLabel":"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,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Optimize for a metric a measurement vendor counts, such as store visits measured by Placer. Sellers that declare the vendor metric optimize toward it; every other seller is asked to report it.","required":["kind","vendor","metricId"],"properties":{"kind":{"type":"string","enum":["vendor_metric"],"description":"Goal kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.kind","typeLabel":"enum\u003cstring>"},"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])?)*$","description":"Domain that hosts the vendor's brand.json, for example `placer.ai`.","example":"placer.ai","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.domain","typeLabel":"string"},"brandId":{"description":"Brand within the vendor domain. Omit for a single-brand domain.","type":"string","pattern":"^[a-z0-9_]+$","uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor.brandId","typeLabel":"string"}},"required":["domain"],"additionalProperties":false,"description":"The measurement vendor that counts this metric, as AdCP names it.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.vendor","typeLabel":"object"},"metricId":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","description":"The vendor's AdCP metric id, for example `store_visits`. With `vendor`, it is the key sellers and delivery reports use for the metric.","example":"store_visits","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.metricId","typeLabel":"string"},"target":{"oneOf":[{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Target cost per unit in buy currency","example":25,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.value","typeLabel":"number"},"strength":{"description":"Defaults to \"target\"; some sellers (e.g. Meta) require \"cap\".","type":"string","enum":["cap","target"],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.strength","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0","typeLabel":"object"},{"type":"object","description":"Target for this metric. When omitted, the goal asks for the most of the metric within budget.","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"description":"Target kind.","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Min per-impression threshold. Proportion, seconds, or score depending on metric.","example":0.001,"isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.target","typeLabel":"object"},"priority":{"description":"Priority among goals on this package. 1 = highest. When omitted, sellers use array position.","example":1,"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"campaign.performanceConfig.optimizationGoals.items.[INDEX]","typeLabel":"object"},"description":"Optimization goals for the campaign. Each goal targets conversion events, a seller-native metric, or a metric a measurement vendor counts. This field and its nested keys are camelCase (eventSources, eventSourceId, valueField) — distinct from the ADCP snake_case optimization_goals field used at the media-buy or product level (event_sources, event_source_id).","isRequired":true,"uniqueKey":"campaign.performanceConfig.optimizationGoals","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"campaign.performanceConfig","typeLabel":"object"},"autonomy":{"description":"Buyer autonomy preferences for this campaign. Controls whether the agent acts automatically or requires human approval per dimension.","type":"object","properties":{"inventorySelection":{"description":"How the agent selects inventory: manual (human-driven), propose (agent drafts, human approves), automatic (agent acts).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"campaign.autonomy.inventorySelection","typeLabel":"enum\u003cstring>"},"rebriefing":{"description":"How the brief is updated: manual (human), propose (agent drafts), automatic (agent applies).","type":"string","enum":["manual","propose","automatic"],"uniqueKey":"campaign.autonomy.rebriefing","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"campaign.autonomy","typeLabel":"object"},"catalogId":{"description":"Attached catalog ID","example":42,"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"uniqueKey":"campaign.catalogId","typeLabel":"integer"},"discoveryId":{"description":"ID of the discovery session used to select products for this campaign. Only present for DRAFT campaigns; after execution, product data is represented through media buys.","example":"session_abc123","type":"string","uniqueKey":"campaign.discoveryId","typeLabel":"string"},"productCount":{"description":"Number of products selected for this campaign. Only present for DRAFT campaigns; after execution, product data is represented through media buys.","example":15,"type":"integer","minimum":0,"maximum":9007199254740991,"uniqueKey":"campaign.productCount","typeLabel":"integer"},"products":{"description":"Products selected for this campaign. Only present for DRAFT campaigns; after execution, product data is represented through media buys.","type":"array","items":{"type":"object","properties":{"productId":{"type":"string","description":"Unique identifier for the product","example":"prod_123","isRequired":true,"uniqueKey":"campaign.products.items.[INDEX].productId","typeLabel":"string"}},"required":["productId"],"additionalProperties":false,"uniqueKey":"campaign.products.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.products","typeLabel":"object[]"},"audiences":{"description":"Audiences associated with this campaign (both targeted and suppressed)","type":"array","items":{"type":"object","properties":{"audienceId":{"type":"string","description":"Unique identifier for the audience","example":"aud_123","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].audienceId","typeLabel":"string"},"name":{"oneOf":[{"description":"Display name of the audience","example":"Tech Enthusiasts 25-34","type":"string","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"description":"Display name of the audience","example":"Tech Enthusiasts 25-34","type":"null","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].name","typeLabel":"string | null"},"status":{"type":"string","enum":["PROCESSING","ERROR","READY","TOO_SMALL"],"description":"Processing status of the audience (e.g. READY, PROCESSING, TOO_SMALL)","example":"READY","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"type":{"type":"string","enum":["TARGET","SUPPRESS"],"description":"Whether this audience is targeted or suppressed (excluded)","example":"TARGET","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"enabledAt":{"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))$","description":"When the audience was enabled for this campaign (ISO 8601)","example":"2025-03-01T12:00:00Z","isRequired":true,"uniqueKey":"campaign.audiences.items.[INDEX].enabledAt","typeLabel":"string\u003cdate-time>"}},"required":["audienceId","name","status","type","enabledAt"],"additionalProperties":false,"uniqueKey":"campaign.audiences.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.audiences","typeLabel":"object[]"},"creativeFormats":{"description":"Canonical creative format coverage for this campaign — URL-free format kinds required by selected products, covered by uploaded creatives, and still missing. Surface `missing` to prompt the user to upload the remaining creatives.","type":"object","properties":{"required":{"type":"array","items":{"type":"object","properties":{"format_kind":{"type":"string","isRequired":true,"uniqueKey":"campaign.creativeFormats.required.items.[INDEX].format_kind","typeLabel":"string"}},"required":["format_kind"],"additionalProperties":false,"uniqueKey":"campaign.creativeFormats.required.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.creativeFormats.required","typeLabel":"object[]"},"covered":{"type":"array","items":{"type":"object","properties":{"format_kind":{"type":"string","isRequired":true,"uniqueKey":"campaign.creativeFormats.covered.items.[INDEX].format_kind","typeLabel":"string"}},"required":["format_kind"],"additionalProperties":false,"uniqueKey":"campaign.creativeFormats.covered.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.creativeFormats.covered","typeLabel":"object[]"},"missing":{"type":"array","items":{"type":"object","properties":{"format_kind":{"type":"string","isRequired":true,"uniqueKey":"campaign.creativeFormats.missing.items.[INDEX].format_kind","typeLabel":"string"}},"required":["format_kind"],"additionalProperties":false,"uniqueKey":"campaign.creativeFormats.missing.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.creativeFormats.missing","typeLabel":"object[]"}},"required":["required","covered","missing"],"additionalProperties":false,"uniqueKey":"campaign.creativeFormats","typeLabel":"object"},"propertyLists":{"description":"Include/exclude property lists actually applied to this campaign via its media-buy packages. Only present when `includePropertyLists=true` is passed. An empty `propertyLists` array is the authoritative answer that no lists are applied; do not infer presence from the campaign brief or constraints.","type":"object","properties":{"propertyLists":{"type":"array","items":{"type":"object","properties":{"listId":{"type":"string","isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].listId","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].name","typeLabel":"string"},"purpose":{"type":"string","enum":["include","exclude"],"isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].purpose","typeLabel":"enum\u003cstring>"},"propertyCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].propertyCount","typeLabel":"integer"},"createdAt":{"type":"string","isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].createdAt","typeLabel":"string"},"updatedAt":{"type":"string","isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].updatedAt","typeLabel":"string"},"viaMediaBuys":{"type":"array","items":{"type":"object","properties":{"mediaBuyId":{"type":"string","isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].viaMediaBuys.items.[INDEX].mediaBuyId","typeLabel":"string"},"packageIds":{"type":"array","items":{"type":"string","uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].viaMediaBuys.items.[INDEX].packageIds.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].viaMediaBuys.items.[INDEX].packageIds","typeLabel":"string[]"}},"required":["mediaBuyId","packageIds"],"additionalProperties":false,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].viaMediaBuys.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX].viaMediaBuys","typeLabel":"object[]"}},"required":["listId","name","purpose","propertyCount","createdAt","updatedAt","viaMediaBuys"],"additionalProperties":false,"uniqueKey":"campaign.propertyLists.propertyLists.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.propertyLists.propertyLists","typeLabel":"object[]"},"summary":{"type":"object","properties":{"totalLists":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.propertyLists.summary.totalLists","typeLabel":"integer"},"includeCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.propertyLists.summary.includeCount","typeLabel":"integer"},"excludeCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.propertyLists.summary.excludeCount","typeLabel":"integer"}},"required":["totalLists","includeCount","excludeCount"],"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.propertyLists.summary","typeLabel":"object"}},"required":["propertyLists","summary"],"additionalProperties":false,"uniqueKey":"campaign.propertyLists","typeLabel":"object"},"mediaBuys":{"description":"Media buys associated with this campaign. Present after execution; contains the product allocations, packages, and delivery data for each sales agent.","type":"array","items":{"type":"object","properties":{"mediaBuyId":{"type":"string","description":"Unique identifier for the media buy","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].mediaBuyId","typeLabel":"string"},"name":{"type":"string","description":"Media buy name","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].name","typeLabel":"string"},"status":{"type":"string","description":"Current media buy status (e.g. DRAFT, ACTIVE, PAUSED, COMPLETED)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].status","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"When the media buy was created (ISO 8601)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"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))$","description":"When the media buy was last updated (ISO 8601)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].updatedAt","typeLabel":"string\u003cdate-time>"},"channelGroup":{"description":"Campaign channel group that compiled into this media buy. Absent for legacy and ungrouped buys.","type":"object","properties":{"channelGroupId":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].channelGroup.channelGroupId","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].channelGroup.name","typeLabel":"string"}},"required":["channelGroupId","name"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].channelGroup","typeLabel":"object"},"sourceStatus":{"description":"Lifecycle status last reported by the seller or its source, such as pending_start. Use this when it is more specific than the broad Apostra status.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].sourceStatus","typeLabel":"string"},"revision":{"description":"Last authoritative provider revision observed for this media buy.","type":"integer","minimum":0,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].revision","typeLabel":"integer"},"validActions":{"description":"Provider-reported AdCP actions that are currently valid for this media buy. Empty when the media buy status is COMPLETED, CANCELED, FAILED, REJECTED or ARCHIVED.","type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].validActions.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].validActions","typeLabel":"string[]"},"pendingAt":{"description":"Which layer the media buy is parked at; only present while status is PENDING_APPROVAL. 'storefront' = waiting for the storefront operator's manual approval, 'salesagent' = the inventory source is still processing the buy, 'unknown' = the pending layer is indeterminate.","type":"string","enum":["storefront","salesagent","unknown"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].pendingAt","typeLabel":"enum\u003cstring>"},"pendingReason":{"type":"string","description":"Why the buy is not delivering yet, rolled up to the most-blocking wait across its legs. An annotation derived from persisted forwarding state — never a status. Absent when the buy is delivering, terminal, or not storefront-routed.","enum":["forward_failed_needs_correction","forward_failed_retrying","awaiting_cancellation_approval","awaiting_storefront_approval","awaiting_ad_server_approval_permission","awaiting_source_moderation","no_creatives_attached","source_rejected_creatives","creatives_not_delivered","creative_processing_at_source","awaiting_creative_approval","accepted_awaiting_trafficking","scheduled_not_started"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].pendingReason","typeLabel":"enum\u003cstring>"},"pendingSince":{"description":"When the current wait began (ISO 8601). Present when pendingReason is set and the start of the wait is known.","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))$","uniqueKey":"campaign.mediaBuys.items.[INDEX].pendingSince","typeLabel":"string\u003cdate-time>"},"errorCode":{"type":"string","description":"Buyer-safe structured error code when forwarding failed or the buy was rejected. Internal platform codes are mapped to this set and never emitted raw.","enum":["product_no_longer_available","source_rejected","storefront_rejected","source_unavailable","source_configuration_error","product_configuration_error","invalid_request","quote_expired","platform_error"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].errorCode","typeLabel":"enum\u003cstring>"},"errorOwner":{"type":"string","description":"Which party owns fixing the error. Present whenever errorCode is present.","enum":["buyer_input","platform","seller"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].errorOwner","typeLabel":"enum\u003cstring>"},"sourceMessage":{"description":"Buyer-safe detail from the source, reviewer, or storefront forwarder, when available. The value is whitespace-collapsed, truncated, and stripped of known upstream identifiers.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].sourceMessage","typeLabel":"string"},"forwardedAt":{"description":"When the buy was forwarded to its inventory source(s) (ISO 8601). Absent when it has not been forwarded.","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))$","uniqueKey":"campaign.mediaBuys.items.[INDEX].forwardedAt","typeLabel":"string\u003cdate-time>"},"buyerReference":{"description":"Support reference for this buy (`sf:\u003cstorefrontId>:\u003cmediaBuyId>`). Quote it with the request timestamp when contacting the seller or Apostra Support.","example":"sf:42:sf_mb_1783031864469_8pbc8mmr","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].buyerReference","typeLabel":"string"},"startTime":{"description":"When this media buy starts. Either \"asap\" (start immediately on activation) or an ISO 8601 date-time. Falls within the parent campaign's flightDates.","example":"2025-04-14T00:00:00Z","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].startTime","typeLabel":"string"},"endTime":{"description":"When this media buy ends, as an ISO 8601 date-time. Falls within the parent campaign's flightDates.","example":"2025-04-30T23:59:59Z","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].endTime","typeLabel":"string"},"budget_denomination":{"description":"Denomination marker: every budget on this media buy is GROSS (fee-inclusive) in the buyer currency. Present only for buys with locked fee terms (it travels with budget_breakdown); absent for legacy buys created before fee terms were locked, whose budgets pass through as stored.","type":"string","enum":["gross"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_denomination","typeLabel":"enum\u003cstring>"},"budget_breakdown":{"description":"Read-only gross/media/fee split of the buy's total budget at the fee terms locked when the media buy was created. Omitted for legacy buys created before fee terms were locked. Buyer surfaces only.","type":"object","properties":{"media_budget":{"type":"number","description":"Media portion of the gross budget (gross minus the Scope3 fee and any operator fee) at the fee terms locked when the media buy was created, in major units.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.media_budget","typeLabel":"number"},"fee_amount":{"type":"number","description":"Buyer fee carved from the gross budget at the locked fee rate, in major units.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.fee_amount","typeLabel":"number"},"fee_rate_percent":{"type":"number","description":"The Scope3 fee as a percentage of the media budget (fee ÷ media × 100). For example, a 5% fee on media produces a value of 5 here regardless of how the fee was stored internally.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.fee_rate_percent","typeLabel":"number"},"effective_gross_cpm":{"oneOf":[{"description":"Gross budget ÷ impression goal × 1000 — the CPM that makes \"budget ÷ CPM = impressions\" hold for the gross numbers the buyer operates on. Null when the buy has no positive impression goal.","type":"number","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.effective_gross_cpm.oneOf.0","typeLabel":"number"},{"description":"Gross budget ÷ impression goal × 1000 — the CPM that makes \"budget ÷ CPM = impressions\" hold for the gross numbers the buyer operates on. Null when the buy has no positive impression goal.","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.effective_gross_cpm.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.effective_gross_cpm","typeLabel":"number | null"},"operator_fees":{"description":"One line per operator fee carved from the gross budget beside the Scope3 fee: the fee an operator organisation charges its client on this media buy. Uses AdCP price-adjustment field names. Present only when the buy carries an operator fee and the caller may see the fee breakdown.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.operator_fees.items.[INDEX].name","typeLabel":"string"},"amount":{"type":"number","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.operator_fees.items.[INDEX].amount","typeLabel":"number"},"beneficiary":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.operator_fees.items.[INDEX].beneficiary","typeLabel":"string"}},"required":["name","amount","beneficiary"],"additionalProperties":false,"description":"One operator fee carved from the gross budget, in AdCP price-adjustment fields: `name` is `operator_fee`, `amount` is the fee in major units, and `beneficiary` is the account id of the operator organisation that charges it.","uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.operator_fees.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown.operator_fees","typeLabel":"object[]"}},"required":["media_budget","fee_amount","fee_rate_percent","effective_gross_cpm"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].budget_breakdown","typeLabel":"object"},"products":{"description":"Products configured for this media buy","type":"array","items":{"type":"object","properties":{"productId":{"type":"string","description":"Product identifier","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].productId","typeLabel":"string"},"productName":{"description":"Human-readable product name. May be absent for products whose `products` cache row has not yet been populated.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].productName","typeLabel":"string"},"publisherName":{"description":"Publisher name for this product. May be absent for products whose `products` cache row has not yet been populated.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].publisherName","typeLabel":"string"},"salesAgentName":{"description":"Name of the sales agent for this product","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].salesAgentName","typeLabel":"string"},"buyerRef":{"description":"Stable per-line-item handle, distinct even when the same product appears more than once on the buy. Pass as products[].buyerRef on update to target this specific line item.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].buyerRef","typeLabel":"string"},"budget":{"description":"Budget allocated to this product","type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].budget","typeLabel":"number"},"budgetCurrency":{"description":"Currency for the budget","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].budgetCurrency","typeLabel":"string"},"formatOptions":{"description":"Publisher-declared format requirements for this product. Each entry has a stable format_option_id selector when supplied by the seller, a format_kind (e.g. \"video_vast\", \"video_hosted\", \"image\", \"html5\"), and a params object. For video products, check entries with format_kind \"video_vast\" or \"video_hosted\" for params.duration_ms_exact (required duration in ms), params.width and params.height (required pixel dimensions).","type":"array","items":{"type":"object","properties":{"format_kind":{"type":"string","enum":["image","html5","display_tag","image_carousel","video_hosted","video_vast","audio_hosted","audio_vast","audio_daast","sponsored_placement","native_in_feed","responsive_creative","agent_placement","seller_rendered_stateful_display","coordinated_placements","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].format_kind","typeLabel":"enum\u003cstring>"},"params":{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.height","typeLabel":"integer"},"sizes":{"minItems":1,"type":"array","items":{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.sizes.items.[INDEX].width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.sizes.items.[INDEX].height","typeLabel":"integer"}},"required":["width","height"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.sizes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.sizes","typeLabel":"object[]"},"min_width":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.min_width","typeLabel":"integer"},"max_width":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.max_width","typeLabel":"integer"},"min_height":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.min_height","typeLabel":"integer"},"max_height":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.max_height","typeLabel":"integer"},"duration_ms_exact":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.duration_ms_exact","typeLabel":"integer"},"duration_ms_range":{"type":"array","items":{"oneOf":[{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.duration_ms_range.items.[INDEX].oneOf.0","typeLabel":"number"},{"type":"null","uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.duration_ms_range.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.duration_ms_range.items.[INDEX]","typeLabel":"number | null"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.duration_ms_range","typeLabel":"(number | null)[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].params","typeLabel":"object"},"format_option_id":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX].format_option_id","typeLabel":"string"}},"required":["format_kind","params"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX].formatOptions","typeLabel":"object[]"}},"required":["productId"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].products.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].products","typeLabel":"object[]"},"pacingPeriods":{"type":"object","description":"Per-media-buy pacing schedule. When set, this buy is shaped by its own schedule rather than the campaign-level pacingPeriods. Each period includes a resolved budget; in weight mode, weights are preserved alongside the resolved budget.","required":["mode","periods"],"properties":{"mode":{"type":"string","enum":["weight","budget"],"description":"How period budgets are determined. \"weight\" uses relative weights to distribute the campaign budget proportionally. \"budget\" uses explicit dollar amounts per period.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.mode","typeLabel":"enum\u003cstring>"},"periods":{"minItems":1,"maxItems":52,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable label for this period (e.g. \"Memorial Day Heavy-Up\")","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX].label","typeLabel":"string"},"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period start date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Period end date (YYYY-MM-DD, inclusive)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX].end","typeLabel":"string"},"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,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX].weight","typeLabel":"number"},"budget":{"description":"Absolute budget for this period (0 = skip this period). Required when mode is \"budget\".","type":"number","minimum":0,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX].budget","typeLabel":"number"}},"required":["label","start","end"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods.items.[INDEX]","typeLabel":"object"},"description":"Ordered list of pacing periods with date ranges and spend intensity","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods.periods","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].pacingPeriods","typeLabel":"object"},"packages":{"description":"Packages created after media buy execution","type":"array","items":{"type":"object","properties":{"packageId":{"type":"string","description":"Package identifier","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].packageId","typeLabel":"string"},"status":{"type":"string","description":"Package status: active, paused, canceled, or completed. completed means the media buy has finished, so a package that was not canceled no longer buys.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].status","typeLabel":"string"},"productIds":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].productIds.items.[INDEX]","typeLabel":"string"},"description":"Product IDs in this package","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].productIds","typeLabel":"string[]"},"budget":{"description":"Package budget amount","type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].budget","typeLabel":"number"},"budgetCurrency":{"description":"Budget currency code (e.g. USD)","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].budgetCurrency","typeLabel":"string"},"pacing":{"description":"Pacing strategy (even, asap, front_loaded)","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].pacing","typeLabel":"string"},"bidPrice":{"description":"Bid price for this package","type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].bidPrice","typeLabel":"number"},"startTime":{"description":"Flight start date/time for this package (ISO 8601), if set.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].startTime","typeLabel":"string"},"endTime":{"description":"Flight end date/time for this package (ISO 8601), if set.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].endTime","typeLabel":"string"},"targetingOverlay":{"type":"object","description":"Targeting carried on a campaign package; directed adapters populate provider-normalized readback when supported.","properties":{"geo_countries":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_countries.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_countries","typeLabel":"string[]"},"geo_countries_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_countries_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude specific countries from delivery. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE').","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_countries_exclude","typeLabel":"string[]"},"geo_regions":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_regions.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to exact canonical ISO 3166-2 subdivisions (states, provinces, regions, departments, or other subdivision categories). Unknown identifiers are invalid. At create or update, sellers MUST reject unsupported identifiers and MUST NOT silently widen, drop, or partially apply the list. During get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome. Exact internal translation preserves accepted identifiers in package readback.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_regions","typeLabel":"string[]"},"geo_regions_exclude":{"minItems":1,"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}-[A-Z0-9]{1,3}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_regions_exclude.items.[INDEX]","typeLabel":"string"},"description":"Exclude exact canonical ISO 3166-2 subdivisions. Support is independent from geo_regions inclusion support. Unknown identifiers and values also present in geo_regions are invalid. At create or update, sellers MUST reject unsupported identifiers and partial application; during get_products, a seller may instead return a sparse, buyer-reviewable targeting_resolution modification for a valid but unsupported requested outcome.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_regions_exclude","typeLabel":"string[]"},"geo_metros":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"description":"A targeted metro area.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros","typeLabel":"object[]"},"geo_metros_exclude":{"minItems":1,"type":"array","items":{"type":"object","properties":{"system":{"type":"string","enum":["nielsen_dma","uk_itl1","uk_itl2","eurostat_nuts2","custom"],"description":"Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros_exclude.items.[INDEX].system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros_exclude.items.[INDEX].values.items.[INDEX]","typeLabel":"string"},"description":"Metro codes to exclude within the system (e.g., ['501', '602'] for Nielsen DMAs)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros_exclude.items.[INDEX].values","typeLabel":"string[]"}},"required":["system","values"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific metro areas from delivery. Each entry specifies the classification system and excluded values. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_metros_exclude","typeLabel":"object[]"},"geo_postal_areas":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific postal areas. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas","typeLabel":"object[]"},"geo_postal_areas_exclude":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["US"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.0.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["zip","zip_plus_four"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.0.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.0.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["GB"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.1.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["outward","full"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.1.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.1.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["CA"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.2.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["fsa","full"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.2.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.2.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["DE","CH","AT"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.3.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["plz"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.3.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.3.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["FR"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.4.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["code_postal"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.4.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.4.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["AU"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.5.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postcode"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.5.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.5.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["BR"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.6.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["cep"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.6.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.6.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["IN"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.7.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["pin"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.7.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.7.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","enum":["ZA"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.8.country","typeLabel":"enum\u003cstring>"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.8.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.8.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["country","system","values"],"properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.9.country","typeLabel":"string"},"system":{"type":"string","description":"Country-local postal code system.","enum":["postal_code","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.9.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the country and system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.9.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"Postal area values. Prefer the native country + postal system form. Deprecated legacy country-fused postal-system tokens remain accepted for compatibility.","required":["system","values"],"properties":{"system":{"type":"string","enum":["us_zip","us_zip_plus_four","gb_outward","gb_full","ca_fsa","ca_full","de_plz","fr_code_postal","au_postcode","ch_plz","at_plz"],"description":"Deprecated country-fused postal code system (e.g., 'us_zip', 'gb_outward'). Prefer country + postal-system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.10.system","typeLabel":"enum\u003cstring>"},"values":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values.items.[INDEX]","typeLabel":"string"},"description":"Postal codes within the legacy system.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.10.values","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX].oneOf.10","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude.items.[INDEX]","typeLabel":"object"},"description":"Exclude specific postal areas from delivery. Prefer the native country + postal system form. The deprecated legacy country-fused postal-system tokens remain accepted for compatibility. Seller must declare supported systems in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_postal_areas_exclude","typeLabel":"object[]"},"daypart_targets":{"minItems":1,"type":"array","items":{"type":"object","description":"A time window for daypart targeting. Specifies days of week, a time-of-day range, and the civil-time clock used to evaluate it. The range is either whole hours (start_hour inclusive, end_hour exclusive; e.g., 6-10 = 6:00am to 10:00am) or, experimentally, minute-resolution clock times (start_time inclusive, end_time exclusive; e.g., 19:30-23:00); an entry carries exactly one form. Follows the Google Ads AdScheduleInfo / DV360 DayPartTargeting pattern.","required":["days","timezone"],"properties":{"days":{"minItems":1,"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"],"description":"Days of the week for daypart targeting","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].days.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Days of week this window applies to. Use multiple days for compact targeting (e.g., monday-friday in one object). For an overnight start_time/end_time window, each day names the day the window starts on.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].days","typeLabel":"enum\u003cstring>[]"},"timezone":{"oneOf":[{"type":"string","description":"Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.","default":"inventory_local","enum":["inventory_local"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].timezone.oneOf.0","typeLabel":"enum\u003cstring>"},{"description":"Civil-time clock used to evaluate this window. 'inventory_local' evaluates the hours in the seller-assigned local timezone of each inventory unit that can deliver the impression, such as a screen, venue, station, or publisher property; it never means the buyer, account, or server timezone. A concrete IANA timezone identifier (for example, 'America/New_York', 'CET', or 'UTC') evaluates one shared civil-time clock across the targeted inventory. Omission defaults to 'inventory_local'. Buyers that begin with a user or account preference MUST resolve it to a concrete IANA identifier before sending the daypart; 'user_timezone' and 'account_timezone' are not wire values. For each candidate delivery instant, convert the instant into this clock and compare its resulting local day and time of day with the half-open window: a skipped DST hour or interval has no matching instants, while both occurrences of a repeated hour or interval match. For an overnight start_time/end_time window, an instant matches when its local day is a listed day and its local time is at or after start_time, or when the local day before it is a listed day and its local time is before end_time. This delivery clock is independent of reporting_capabilities.timezone.","default":"inventory_local","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].timezone.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].timezone","typeLabel":"enum\u003cstring> | any"},"start_hour":{"type":"integer","minimum":0,"maximum":23,"description":"Start hour (inclusive), 0-23 in 24-hour format. 0 = midnight, 6 = 6:00am, 18 = 6:00pm. Whole-hour form: pair with end_hour; mutually exclusive with start_time and end_time.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].start_hour","typeLabel":"integer"},"end_hour":{"type":"integer","minimum":1,"maximum":24,"description":"End hour (exclusive), 1-24 in 24-hour format. 10 = 10:00am, 24 = midnight. Must be greater than start_hour; whole-hour windows never cross midnight. Whole-hour form: pair with start_hour; mutually exclusive with start_time and end_time.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].end_hour","typeLabel":"integer"},"start_time":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":"Experimental in AdCP 3.3. Start of the window (inclusive) as a 24-hour HH:MM civil clock time on the entry's timezone clock, such as '19:30'. Use for windows that do not fall on whole hours (linear TV programme junctions, quarter-hour schedules). Pair with end_time; mutually exclusive with start_hour and end_hour. A window whose end_time is earlier than its start_time crosses midnight and belongs to the day it starts on. A product accepts only the finest time granularity it declares in overlay_support.daypart_targets.time_granularity; sellers MUST reject, never round, a clock time the product does not honor.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].start_time","typeLabel":"string"},"end_time":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","description":"Experimental in AdCP 3.3. End of the window (exclusive) as a 24-hour HH:MM civil clock time, such as '23:00'. Pair with start_time; mutually exclusive with start_hour and end_hour. end_time earlier than start_time means the window crosses midnight and ends at end_time on the following civil day (for example, 22:00 to 02:00 runs from 22:00 on a listed day until 02:00 the next morning); '00:00' therefore ends the window at the midnight closing the start day. end_time MUST NOT equal start_time: a zero-length or full-day window is invalid, and a full day uses start_hour 0 with end_hour 24. Sellers MUST reject an equal pair with INVALID_REQUEST.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].end_time","typeLabel":"string"},"label":{"type":"string","description":"Optional human-readable name for this time window (e.g., 'Morning Drive', 'Prime Time')","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX].label","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets.items.[INDEX]","typeLabel":"object"},"description":"Restrict delivery to specific time windows. Each entry specifies days of week, an hour range, and an optional timezone that defaults to inventory_local. A concrete IANA zone uses one shared civil-time clock, while inventory_local evaluates each inventory unit in its seller-assigned local timezone. Entries are independent and MAY use different clocks.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.daypart_targets","typeLabel":"object[]"},"axe_include_segment":{"type":"string","description":"Deprecated: Use TMP provider fields instead. AXE segment ID to include for targeting.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.axe_include_segment","typeLabel":"string"},"axe_exclude_segment":{"type":"string","description":"Deprecated: Use TMP provider fields instead. AXE segment ID to exclude from targeting.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.axe_exclude_segment","typeLabel":"string"},"audience_include":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.audience_include.items.[INDEX]","typeLabel":"string"},"description":"Restrict delivery to members of these first-party CRM audiences. Only users present in the uploaded lists are eligible. References audience_id values from sync_audiences on the same seller account — audience IDs are not portable across sellers. Not for lookalike expansion — express that intent in the campaign brief. Seller must declare support in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.audience_include","typeLabel":"string[]"},"audience_exclude":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.audience_exclude.items.[INDEX]","typeLabel":"string"},"description":"Suppress delivery to members of these first-party CRM audiences. Matched users are excluded regardless of other targeting. References audience_id values from sync_audiences on the same seller account — audience IDs are not portable across sellers. Seller must declare support in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.audience_exclude","typeLabel":"string[]"},"signal_targeting_groups":{"type":"object","properties":{"operator":{"type":"string","enum":["all"],"description":"Groups-level operator. Required even though v1 only supports 'all': every child group must be satisfied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.operator","typeLabel":"enum\u003cstring>"},"groups":{"minItems":1,"type":"array","items":{"type":"object","properties":{"operator":{"type":"string","enum":["any","none"],"description":"How to evaluate the signals in this group. 'any' is an OR include group. 'none' is an exclusion group equivalent to NOT (A OR B OR C).","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].operator","typeLabel":"enum\u003cstring>"},"signals":{"minItems":1,"type":"array","items":{"type":"object","description":"Buy-time selection of one seller-offered signal inside a package signal targeting group. The signal_ref uses scope 'product' for a product-local signal option, scope 'data_provider' for a signal defined in a data provider's published adagents.json signals[], or scope 'signal_source' for a source-native signal that is not published in adagents.json signals[]. The selected product's inline Product.signal_targeting_options, get_signals feed when inline options are omitted, and signal_targeting_rules define buy-time eligibility. Inclusion and exclusion are controlled by the parent group operator: use operator 'any' to include users matching the signal expression and operator 'none' to exclude users matching the signal expression. For binary signals, value MUST be true; do not use value=false for exclusion inside signal_targeting_groups. Use audience_include/audience_exclude only for buyer-managed first-party audiences registered through sync_audiences.","properties":{"pricing_option_id":{"type":"string","description":"Pricing option selected for this signal. Use the pricing_option_id from the product's signal_targeting_options entry when product-scoped pricing is present; otherwise use the seller get_signals pricing only when the product option does not override it. Required when the selected signal has pricing_options; omit only when the signal is bundled into the product price or has no incremental cost.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX].pricing_option_id","typeLabel":"string"},"signal_agent_segment_id":{"type":"string","description":"Optional opaque resolved-segment or seller execution handle for this signal. Omit when signal_ref plus the value expression is sufficient for the seller to resolve the signal. Include when the product option exposes a separate runtime or activation handle, and pass it verbatim. Buyers SHOULD prefer an exposed segment handle over reconstructing condition identity from categorical values because the handle can carry provider namespace and methodology distinctions.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX].signal_agent_segment_id","typeLabel":"string"},"activation_key":{"type":"object","description":"Destination-specific activation key returned by get_signals or activate_signal. Usually omitted for seller-offered signals selected directly through the same seller; include only when the selected signal was separately activated and the seller requires the activation key to correlate the package selection.","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX].activation_key.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX].activation_key","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals.items.[INDEX]","typeLabel":"object"},"description":"Signal targeting entries evaluated by this group. Each entry uses the package signal targeting shape, including signal_ref, value expression, and optional pricing, execution-handle, or activation fields.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].signals","typeLabel":"object[]"}},"required":["operator","signals"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"A basic Boolean group of package-level signal targeting entries. 'any' means the user must match at least one signal in the group. 'none' means the user must match none of the signals in the group. Use groups for portable include/exclude composition such as (A OR B) AND NOT (C OR D).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups.items.[INDEX]","typeLabel":"object"},"description":"Signal targeting groups to evaluate. Use operator 'any' for include groups and 'none' for exclusion groups.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.groups","typeLabel":"object[]"}},"required":["operator","groups"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups.additionalProperties","typeLabel":"any"},"description":"Basic Boolean grouping for seller-offered signals. v1 supports a required top-level operator 'all' and child groups with operator 'any' for include groups or 'none' for exclusion groups. Example semantics: group 1 any(A, B) plus group 2 none(C, D) means (A OR B) AND NOT (C OR D). Signal entries reference named signal definitions with signal_ref scope 'product' for product-local signal options or scope 'data_provider' for external signals published in adagents.json signals[]. For simple include-only targeting, send one child group with operator 'any'. Sellers SHOULD reject entries that are not available for the product through inline signal_targeting_options or get_signals, are not active for the account, or exceed the product's signal_targeting_allowed/signal_targeting_rules/product terms. Signal targeting limits are product-scoped, not declared in get_adcp_capabilities, because products may be backed by different ad servers. Sellers MUST echo applied signal_targeting_groups on the resulting package state, including fixed/default selections. Sellers MAY return REQUOTE_REQUIRED when a targeting mutation changes commercial terms.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting_groups","typeLabel":"object"},"signal_targeting":{"minItems":1,"type":"array","items":{"description":"Targeting constraint for a specific signal. Uses value_type as discriminator to determine the targeting expression format.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting.items.[INDEX]","typeLabel":"any"},"description":"DEPRECATED. Use signal_targeting_groups for package-level signal targeting. Legacy flat signal_targeting remains accepted during the SignalRef migration window but cannot express grouped include/exclude composition or product-scoped pricing.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.signal_targeting","typeLabel":"any[]"},"demographics":{"oneOf":[{"type":"object","description":"Canonical age and gender audience targeting, distinct from age_restriction legal eligibility. Named dimensions compose with AND and have independent explicit unknown handling. Age determination constraints remain age-specific. Fresh create/update requests MUST compile exactly or be rejected; get_products may offer a configured alternative only with sparse targeting_resolution modifications and a distinguishable product_id. A non-null request-side demographics value replaces the entire demographics dimension, including both age and gender; retain age when changing only gender. Sellers MUST NOT silently drop, broaden, narrow, or substitute a predicate.","required":["age"],"properties":{"age":{"oneOf":[{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["min","include_unknown"],"properties":{"min":{"type":"integer","description":"Inclusive minimum age in completed years. Omit for an open lower bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.min","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.include_unknown","typeLabel":"boolean"},"max":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive maximum age in completed years. Omit for an open upper bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.max","typeLabel":"integer"},"accepted_bases":{"minItems":1,"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.0","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["accepted_verification_methods","accepted_bases","min","include_unknown"],"properties":{"min":{"type":"integer","description":"Inclusive minimum age in completed years. Omit for an open lower bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.min","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.include_unknown","typeLabel":"boolean"},"accepted_bases":{"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"},"max":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive maximum age in completed years. Omit for an open upper bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.max","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.1","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["max","include_unknown"],"properties":{"max":{"type":"integer","description":"Inclusive maximum age in completed years. Omit for an open upper bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.max","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.include_unknown","typeLabel":"boolean"},"min":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive minimum age in completed years. Omit for an open lower bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.min","typeLabel":"integer"},"accepted_bases":{"minItems":1,"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.2","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["accepted_verification_methods","accepted_bases","max","include_unknown"],"properties":{"max":{"type":"integer","description":"Inclusive maximum age in completed years. Omit for an open upper bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.max","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.include_unknown","typeLabel":"boolean"},"accepted_bases":{"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"},"min":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive minimum age in completed years. Omit for an open lower bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.min","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.age","typeLabel":"object"},"gender":{"type":"object","properties":{"values":{"minItems":1,"type":"array","items":{"type":"string","enum":["female","male","non_binary"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.gender.values.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Nonempty set of selected gender categories. Sellers MUST execute every selected category exactly or reject the request.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.gender.values","typeLabel":"enum\u003cstring>[]"},"include_unknown":{"type":"boolean","description":"Include unstated/unknown gender: unavailable or explicitly withheld (prefer not to say). Required; no default. Independent of unknown age; known categories outside values are excluded.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.gender.include_unknown","typeLabel":"boolean"}},"required":["values","include_unknown"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.gender.additionalProperties","typeLabel":"any"},"description":"Experimental in AdCP 3.3 (media_buy.gender_targeting). AdCP 3.2 core remains age-only.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.gender","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.0","typeLabel":"object"},{"type":"object","description":"Canonical age and gender audience targeting, distinct from age_restriction legal eligibility. Named dimensions compose with AND and have independent explicit unknown handling. Age determination constraints remain age-specific. Fresh create/update requests MUST compile exactly or be rejected; get_products may offer a configured alternative only with sparse targeting_resolution modifications and a distinguishable product_id. A non-null request-side demographics value replaces the entire demographics dimension, including both age and gender; retain age when changing only gender. Sellers MUST NOT silently drop, broaden, narrow, or substitute a predicate.","required":["gender"],"properties":{"gender":{"type":"object","description":"Experimental in AdCP 3.3 (media_buy.gender_targeting). AdCP 3.2 core remains age-only.","required":["values","include_unknown"],"properties":{"values":{"minItems":1,"type":"array","items":{"type":"string","enum":["female","male","non_binary"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.gender.values.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Nonempty set of selected gender categories. Sellers MUST execute every selected category exactly or reject the request.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.gender.values","typeLabel":"enum\u003cstring>[]"},"include_unknown":{"type":"boolean","description":"Include unstated/unknown gender: unavailable or explicitly withheld (prefer not to say). Required; no default. Independent of unknown age; known categories outside values are excluded.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.gender.include_unknown","typeLabel":"boolean"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.gender.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.gender","typeLabel":"object"},"age":{"oneOf":[{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["min","include_unknown"],"properties":{"min":{"type":"integer","description":"Inclusive minimum age in completed years. Omit for an open lower bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.min","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.include_unknown","typeLabel":"boolean"},"max":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive maximum age in completed years. Omit for an open upper bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.max","typeLabel":"integer"},"accepted_bases":{"minItems":1,"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.0","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["accepted_verification_methods","accepted_bases","min","include_unknown"],"properties":{"min":{"type":"integer","description":"Inclusive minimum age in completed years. Omit for an open lower bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.min","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.include_unknown","typeLabel":"boolean"},"accepted_bases":{"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"},"max":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive maximum age in completed years. Omit for an open upper bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.max","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.1","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["max","include_unknown"],"properties":{"max":{"type":"integer","description":"Inclusive maximum age in completed years. Omit for an open upper bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.max","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.include_unknown","typeLabel":"boolean"},"min":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive minimum age in completed years. Omit for an open lower bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.min","typeLabel":"integer"},"accepted_bases":{"minItems":1,"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.2","typeLabel":"object"},{"type":"object","description":"Must also satisfy at least one of these alternatives.","required":["accepted_verification_methods","accepted_bases","max","include_unknown"],"properties":{"max":{"type":"integer","description":"Inclusive maximum age in completed years. Omit for an open upper bound.","maximum":150,"minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.max","typeLabel":"integer"},"include_unknown":{"type":"boolean","description":"Whether delivery to people whose age is unavailable is part of this predicate. This field has no default and MUST be supplied.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.include_unknown","typeLabel":"boolean"},"accepted_bases":{"type":"array","items":{"type":"string","enum":["verified","declared","inferred"],"description":"User-level bases that may resolve age for demographic targeting execution. Population estimates are deliberately absent because aggregate composition cannot establish an individual impression's age.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.accepted_bases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"User-level age determination bases the buyer permits for this predicate. Sellers MUST use only these bases or reject the request; they MUST NOT silently fall back to another basis. When omitted, the buyer imposes no determination-basis constraint beyond product capability and any age_restriction. population_estimate is structurally unavailable because aggregate evidence cannot identify an eligible user.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.accepted_bases","typeLabel":"enum\u003cstring>[]"},"accepted_verification_methods":{"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.accepted_verification_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Verification methods acceptable when verified is an accepted basis. This field narrows verified demographic execution; age_restriction.accepted_methods independently governs legal eligibility and the two sets are intersected when both are present.","minItems":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.accepted_verification_methods","typeLabel":"enum\u003cstring>[]"},"min":{"type":"integer","minimum":0,"maximum":150,"description":"Inclusive minimum age in completed years. Omit for an open lower bound.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.min","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age.oneOf.3","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.age","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.demographics","typeLabel":"object"},"frequency_cap":{"oneOf":[{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.max_impressions","typeLabel":"integer"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.0","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.max_impressions","typeLabel":"integer"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.suppress_minutes","typeLabel":"number"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.per","typeLabel":"enum\u003cstring>"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.1","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.per","typeLabel":"enum\u003cstring>"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.suppress_minutes","typeLabel":"number"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.2","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.3","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["max_impressions","per","window","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.4","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.5","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions","window","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.6","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress"],"properties":{"suppress":{"type":"object","description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.suppress.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.window","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.7","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.suppress_minutes","typeLabel":"number"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.suppress","typeLabel":"object"},"max_impressions":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.max_impressions","typeLabel":"integer"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.8","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.max_impressions","typeLabel":"integer"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.suppress","typeLabel":"object"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.per","typeLabel":"enum\u003cstring>"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.9","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.per","typeLabel":"enum\u003cstring>"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.suppress","typeLabel":"object"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.10","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.suppress","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.11","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["max_impressions","per","window","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.suppress","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.12","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.suppress","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.13","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions","window","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.suppress","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.14","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per","suppress_minutes"],"properties":{"suppress_minutes":{"type":"number","description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","minimum":0,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.suppress_minutes","typeLabel":"number"},"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.suppress","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.15","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["max_impressions"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.max_impressions","typeLabel":"integer"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.suppress_minutes","typeLabel":"number"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.16","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.max_impressions","typeLabel":"integer"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.suppress_minutes","typeLabel":"number"},"per":{"type":"string","enum":["individuals","households","devices","accounts","cookies","custom"],"description":"Entity granularity for impression counting. Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.per","typeLabel":"enum\u003cstring>"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.17","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.per","typeLabel":"enum\u003cstring>"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.suppress_minutes","typeLabel":"number"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.window","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.18","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.19","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["max_impressions","per","window"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.20","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.21","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["per","max_impressions","window"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.22","typeLabel":"object"},{"type":"object","description":"Frequency capping settings for package-level application. Two types of frequency control can be used independently or together: suppress enforces a cooldown between consecutive exposures; max_impressions + per + window caps total exposures per entity in a time window. When both suppress and max_impressions are set, an impression is delivered only if both constraints permit it (AND semantics). At least one of suppress, suppress_minutes, or max_impressions must be set. Field location determines scope; this value has no scope discriminator. The MediaBuy root uses the narrower media-buy-frequency-cap schema, which permits maximum impressions only in 3.2.","required":["window","max_impressions","per"],"properties":{"max_impressions":{"type":"integer","description":"Maximum number of impressions per entity per window. For duration windows, implementations typically use a rolling window. campaign applies across the owning field's full flight: the package flight for a targeting overlay, or the MediaBuy flight for a root cap.","maximum":9007199254740991,"minimum":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.max_impressions","typeLabel":"integer"},"per":{"type":"string","description":"Entity granularity for impression counting. Required when max_impressions is set.","enum":["individuals","households","devices","accounts","cookies","custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.per","typeLabel":"enum\u003cstring>"},"window":{"type":"object","description":"Time window for the max_impressions cap (e.g. {\"interval\": 7, \"unit\": \"days\"} or {\"interval\": 1, \"unit\": \"campaign\"} for the full flight). Required when max_impressions is set.","required":["interval","unit"],"properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.window.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.window.unit","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.window","typeLabel":"object"},"suppress":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"description":"Number of time units. Must be 1 when unit is 'campaign'.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.suppress.interval","typeLabel":"integer"},"unit":{"type":"string","enum":["seconds","minutes","hours","days","campaign"],"description":"Time unit. 'seconds' for sub-minute precision. 'campaign' spans the full campaign flight.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.suppress.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":false,"description":"Cooldown period between consecutive exposures to the same entity. Prevents back-to-back ad delivery (e.g. {\"interval\": 60, \"unit\": \"minutes\"} for a 1-hour cooldown). Preferred over suppress_minutes.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.suppress","typeLabel":"object"},"suppress_minutes":{"type":"number","minimum":0,"description":"Deprecated — use suppress instead. Cooldown period in minutes between consecutive exposures to the same entity (e.g. 60 for a 1-hour cooldown).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.suppress_minutes","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap.oneOf.23","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.frequency_cap","typeLabel":"object"},"property_list":{"type":"object","properties":{"agent_url":{"type":"string","description":"AdCP task endpoint of the agent exposing get_property_list. Receivers MUST support resolution over MCP; another advertised AdCP task transport MAY be used by agreement. This is not a base URL for an inferred /lists/{list_id} HTTP path.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list.agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the property list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list.list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"Bearer credential authorizing read-only get_property_list access to this list_id, including every pagination request. When supplied, the managing agent MUST accept it instead of its normal credentials, without requiring the recipient to have an account. It MUST NOT grant access to other lists or mutations. Omit for a public list or independently authorized receiver. Deliver this credential to the intended receiver inside the reference, including in seller task arguments. When authenticating get_property_list requests to the managing agent, send it only in the Authorization header, never in those task arguments or a URL.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list.auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to a property list for targeting specific properties within this product. The package runs on the intersection of the product's publisher_properties and this list. Sellers SHOULD return a validation error if the product has property_targeting_allowed: false. On an undisclosed roster (empty publisher_properties) a seller MAY accept it and runs only on the properties it matches.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list","typeLabel":"object"},"property_list_exclude":{"type":"object","properties":{"agent_url":{"type":"string","description":"AdCP task endpoint of the agent exposing get_property_list. Receivers MUST support resolution over MCP; another advertised AdCP task transport MAY be used by agreement. This is not a base URL for an inferred /lists/{list_id} HTTP path.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list_exclude.agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the property list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list_exclude.list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"Bearer credential authorizing read-only get_property_list access to this list_id, including every pagination request. When supplied, the managing agent MUST accept it instead of its normal credentials, without requiring the recipient to have an account. It MUST NOT grant access to other lists or mutations. Omit for a public list or independently authorized receiver. Deliver this credential to the intended receiver inside the reference, including in seller task arguments. When authenticating get_property_list requests to the managing agent, send it only in the Authorization header, never in those task arguments or a URL.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list_exclude.auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to a property list whose properties must not carry the buyer's ads. Matched properties are removed from delivery. Use for brand-safety do-not-run lists (apps, sites). Exclude wins on overlap with property_list, and applies regardless of the product's property_targeting_allowed flag. Seller must declare support in get_adcp_capabilities. On an undisclosed roster (empty publisher_properties) a seller MAY accept it and MUST then apply it against its full internal roster; a seller that cannot rejects it with UNSUPPORTED_FEATURE.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.property_list_exclude","typeLabel":"object"},"collection_list":{"type":"object","properties":{"agent_url":{"type":"string","description":"URL of the agent managing the collection list","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list.agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the collection list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list.list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list.auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to a collection list for including specific collections (programs, publications, channels) within this product. The package runs on the intersection of matched collections and this list. Use for inclusion-based collection targeting. Seller must declare support in get_adcp_capabilities. On an undisclosed roster (empty collections) a seller MAY accept it and runs only on the collections it matches.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list","typeLabel":"object"},"collection_list_exclude":{"type":"object","properties":{"agent_url":{"type":"string","description":"URL of the agent managing the collection list","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list_exclude.agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the collection list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list_exclude.list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list_exclude.auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to a collection list for excluding specific collections (programs, publications, channels) from this product. Matched collections must not carry the buyer's ads. Use for brand safety do-not-air lists. Seller must declare support in get_adcp_capabilities. On an undisclosed roster (empty collections) a seller MAY accept it and MUST then apply it against its full internal roster; a seller that cannot rejects it with UNSUPPORTED_FEATURE.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_list_exclude","typeLabel":"object"},"collection_lists":{"minItems":1,"type":"array","items":{"type":"object","properties":{"agent_url":{"type":"string","description":"URL of the agent managing the collection list","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists.items.[INDEX].agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the collection list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists.items.[INDEX].list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists.items.[INDEX].auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to an externally managed collection list. Enables passing large collection exclusion/inclusion sets without embedding them in requests. The receiving agent fetches and caches the list independently.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists.items.[INDEX]","typeLabel":"object"},"description":"Experimental. Several collection_list refs: intersection. Not with collection_list. Over max_references is rejected, never truncated. On an undisclosed roster a seller MAY accept them.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists","typeLabel":"object[]"},"collection_lists_exclude":{"minItems":1,"type":"array","items":{"type":"object","properties":{"agent_url":{"type":"string","description":"URL of the agent managing the collection list","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists_exclude.items.[INDEX].agent_url","typeLabel":"string"},"list_id":{"type":"string","minLength":1,"description":"Identifier for the collection list within the agent","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists_exclude.items.[INDEX].list_id","typeLabel":"string"},"auth_token":{"type":"string","description":"JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists_exclude.items.[INDEX].auth_token","typeLabel":"string"}},"required":["agent_url","list_id"],"additionalProperties":false,"description":"Reference to an externally managed collection list. Enables passing large collection exclusion/inclusion sets without embedding them in requests. The receiving agent fetches and caches the list independently.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists_exclude.items.[INDEX]","typeLabel":"object"},"description":"Experimental. Several collection_list_exclude refs: union. Not with collection_list_exclude. Over max_references is rejected, never truncated. On an undisclosed roster the same rule as collection_list_exclude applies.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_lists_exclude","typeLabel":"object[]"},"placement_selection":{"type":"object","description":"Purchased placement selection within the product. This constrains package inventory; it is distinct from creative_assignments[].placement_refs, which only route individual creatives within the purchased set. On create, mode selected supplies the complete selected set and mode default uses the product default. In request-side Targeting Input, a non-null value replaces this dimension, omission preserves or inherits it, and null clears it when the product permits that broader inventory set.","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.placement_selection.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.placement_selection","typeLabel":"object"},"collection_selection":{"type":"object","description":"Purchased collection selection within the product. On create, mode selected supplies the complete selected set and mode default uses the product's full bundle. On package readback this is the committed selection sellers MUST echo as concrete selectors, materializing any collection_list composition; collection_list fields remain the buyer-managed list mechanism. In request-side Targeting Input, a non-null value replaces this dimension, omission preserves or inherits it, and null clears it when the product permits that broader inventory set.","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_selection.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.collection_selection","typeLabel":"object"},"age_restriction":{"type":"object","properties":{"min":{"type":"integer","minimum":13,"maximum":99,"description":"Minimum age required","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.age_restriction.min","typeLabel":"integer"},"verification_required":{"default":false,"description":"Whether verified age (not inferred) is required for compliance","type":"boolean","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.age_restriction.verification_required","typeLabel":"boolean"},"accepted_methods":{"minItems":1,"type":"array","items":{"type":"string","enum":["facial_age_estimation","id_document","digital_id","credit_card","world_id"],"description":"Methods for verifying user age for compliance. Does not include 'inferred' as it is not accepted for regulatory compliance.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.age_restriction.accepted_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Accepted verification methods. If omitted, any method the platform supports is acceptable.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.age_restriction.accepted_methods","typeLabel":"enum\u003cstring>[]"}},"required":["min","verification_required"],"additionalProperties":false,"description":"Age restriction for compliance. Use for legal requirements (alcohol, gambling), not audience targeting.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.age_restriction","typeLabel":"object"},"device_platform":{"minItems":1,"type":"array","items":{"type":"string","enum":["ios","android","windows","macos","linux","chromeos","tvos","tizen","webos","fire_os","roku_os","unknown"],"description":"Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_platform.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific platforms. Use for technical compatibility (app only works on iOS). Values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_platform","typeLabel":"enum\u003cstring>[]"},"device_platform_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["ios","android","windows","macos","linux","chromeos","tvos","tizen","webos","fire_os","roku_os","unknown"],"description":"Operating system platforms for device targeting. Browser values from Sec-CH-UA-Platform standard, extended for CTV.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_platform_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific operating-system platforms from delivery. When a platform appears in both device_platform and device_platform_exclude, exclusion wins. Sellers MUST reject a request they cannot enforce rather than silently dropping the exclusion.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_platform_exclude","typeLabel":"enum\u003cstring>[]"},"device_type":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_type.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict to specific device form factors. Use for campaigns targeting hardware categories rather than operating systems (e.g., mobile-only promotions, CTV campaigns).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_type","typeLabel":"enum\u003cstring>[]"},"device_type_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","ctv","dooh","unknown"],"description":"Device form factor categories for targeting and reporting. Complements device-platform (operating system) with hardware classification. OpenRTB mapping: 1 (Mobile/Tablet General) → mobile, 2 (PC) → desktop, 4 (Phone) → mobile, 5 (Tablet) → tablet, 6 (Connected Device) → ctv, 7 (Set Top Box) → ctv. DOOH inventory uses dooh.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_type_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific device form factors from delivery (e.g., exclude CTV for app-install campaigns).","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.device_type_exclude","typeLabel":"enum\u003cstring>[]"},"browser":{"minItems":1,"type":"array","items":{"type":"string","enum":["chrome","safari","firefox","edge","opera","samsung_internet","android_webview","other","unknown"],"description":"Portable browser families for targeting the impression delivery and rendering environment, not a post-click landing-page browser. Values identify browser families, not versions or seller-native browser IDs, and MUST NOT be inferred solely from operating system, device, web/mobile-web inventory, or placement. android_webview means an impression reliably classified as rendering in Android WebView. other means a seller-recognized browser family that is not explicitly enumerated; unknown means the seller cannot classify the browser into a recognized family.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.browser.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Restrict delivery to specific canonical browser families in the impression delivery and rendering environment, not the post-click landing-page browser. Values MUST NOT be inferred solely from operating system, device, web/mobile-web inventory, or placement. Values in this array use OR semantics. When browser is supplied, families not listed are ineligible: other includes a seller-recognized family that is not explicitly enumerated, while unknown includes a browser the seller cannot classify into a recognized family. When the same family appears in browser and browser_exclude, exclusion wins. Browser and device constraints intersect; a seller that cannot enforce the exact combination MUST exclude or explicitly reconfigure the product during discovery and MUST reject it at create or update rather than silently widening delivery. Browser versions and seller-native IDs are intentionally unsupported.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.browser","typeLabel":"enum\u003cstring>[]"},"browser_exclude":{"minItems":1,"type":"array","items":{"type":"string","enum":["chrome","safari","firefox","edge","opera","samsung_internet","android_webview","other","unknown"],"description":"Portable browser families for targeting the impression delivery and rendering environment, not a post-click landing-page browser. Values identify browser families, not versions or seller-native browser IDs, and MUST NOT be inferred solely from operating system, device, web/mobile-web inventory, or placement. android_webview means an impression reliably classified as rendering in Android WebView. other means a seller-recognized browser family that is not explicitly enumerated; unknown means the seller cannot classify the browser into a recognized family.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.browser_exclude.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude specific canonical browser families from delivery. other excludes seller-recognized families that are not explicitly enumerated; unknown excludes browsers the seller cannot classify into a recognized family. When the same family appears in browser and browser_exclude, exclusion wins. Sellers MUST reject a request they cannot enforce rather than silently dropping the exclusion.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.browser_exclude","typeLabel":"enum\u003cstring>[]"},"store_catchments":{"minItems":1,"type":"array","items":{"type":"object","properties":{"catalog_id":{"type":"string","description":"Synced store-type catalog ID from sync_catalogs.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].catalog_id","typeLabel":"string"},"store_ids":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].store_ids.items.[INDEX]","typeLabel":"string"},"description":"Filter to specific stores within the catalog. Omit to target all stores.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].store_ids","typeLabel":"string[]"},"catchment_ids":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].catchment_ids.items.[INDEX]","typeLabel":"string"},"description":"Catchment zone IDs to target (e.g., 'walk', 'drive'). Omit to target all catchment zones.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].catchment_ids","typeLabel":"string[]"}},"required":["catalog_id"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments.items.[INDEX]","typeLabel":"object"},"description":"Target users within store catchment areas from a synced store catalog. Each entry references a store-type catalog and optionally narrows to specific stores or catchment zones.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.store_catchments","typeLabel":"object[]"},"geo_proximity":{"minItems":1,"type":"array","items":{"type":"object","properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude in decimal degrees (WGS 84). Required for travel_time and radius methods.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].lat","typeLabel":"number"},"lng":{"type":"number","minimum":-180,"maximum":180,"description":"Longitude in decimal degrees (WGS 84). Required for travel_time and radius methods.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].lng","typeLabel":"number"},"label":{"type":"string","description":"Human-readable label for this entry (e.g., 'Düsseldorf', 'Heathrow Airport', 'Primary trade area').","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].label","typeLabel":"string"},"travel_time":{"type":"object","properties":{"value":{"type":"number","minimum":1,"description":"Travel time limit.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].travel_time.value","typeLabel":"number"},"unit":{"type":"string","enum":["min","hr"],"description":"Time unit for isochrone (travel-time catchment) calculations.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].travel_time.unit","typeLabel":"enum\u003cstring>"}},"required":["value","unit"],"additionalProperties":false,"description":"Travel time limit for isochrone calculation. The platform resolves this to a geographic boundary based on actual transportation networks.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].travel_time","typeLabel":"object"},"transport_mode":{"type":"string","enum":["walking","cycling","driving","public_transport"],"description":"Transportation mode for isochrone calculation. Required when travel_time is provided.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].transport_mode","typeLabel":"enum\u003cstring>"},"radius":{"type":"object","properties":{"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Radius distance.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].radius.value","typeLabel":"number"},"unit":{"type":"string","enum":["km","mi","m"],"description":"Distance unit.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].radius.unit","typeLabel":"enum\u003cstring>"}},"required":["value","unit"],"additionalProperties":false,"description":"Simple radius from the point. The platform draws a circle of this distance around the coordinates.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].radius","typeLabel":"object"},"geometry":{"type":"object","properties":{"type":{"type":"string","enum":["Polygon","MultiPolygon"],"description":"GeoJSON geometry type.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].geometry.type","typeLabel":"enum\u003cstring>"},"coordinates":{"type":"array","items":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].geometry.coordinates.items.[INDEX]","typeLabel":"any"},"description":"GeoJSON coordinates array. For Polygon: array of linear rings. For MultiPolygon: array of polygons.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].geometry.coordinates","typeLabel":"any[]"}},"required":["type","coordinates"],"additionalProperties":false,"description":"Pre-computed GeoJSON geometry defining the proximity boundary. Use when the buyer has already calculated isochrones (via TravelTime, Mapbox, etc.) or has custom boundaries. When geometry is provided, lat/lng are not required.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].geometry","typeLabel":"object"},"ext":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].ext.additionalProperties","typeLabel":"any"},"description":"Extension object for optional parameters under an owner-controlled namespace (e.g., ext.gam, ext.roku). The reserved ext.adcp namespace is maintained by the AdCP Working Group and is limited to its documented bindings. Used for custom capabilities, partner-specific configuration, and features being proposed for standardization. Namespace support does not imply support for undocumented future bindings.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].ext","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity.items.[INDEX]","typeLabel":"object"},"description":"Target users within travel time, distance, or a custom boundary around arbitrary geographic points. Multiple entries use OR semantics — a user within range of any listed point is eligible. For campaigns targeting 10+ locations, consider using store_catchments with a location catalog instead. Seller must declare support in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.geo_proximity","typeLabel":"object[]"},"language":{"minItems":1,"type":"array","items":{"type":"string","minLength":2,"maxLength":63,"pattern":"^(?:[a-z]{2,8}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?(?:-(?:[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(?:-[0-9a-wy-z](?:-[a-z0-9]{2,8})+)*(?:-x(?:-[a-z0-9]{1,8})+)?|x(?:-[a-z0-9]{1,8})+)$","description":"A well-formed BCP 47 language tag used by AdCP only as language identity. Script and region may refine that identity; other valid BCP 47 subtags remain part of tag matching but do not make this a general locale-settings object. It does not determine currency, time zone, number/date formatting, market, or legal jurisdiction. The AdCP canonical wire profile requires lower-case language and variants, title-case script, and upper-case region (for example `en-US`, `zh-Hant-TW`, or `x-private`). RFC 5646 comparisons are case-insensitive and its case regularization is optional; AdCP intentionally requires this stricter single wire spelling and receivers MUST reject differently cased tags rather than silently normalizing them. The schema pattern enforces the AdCP casing profile and extension structure for commonly used tags; conforming receivers additionally validate the complete RFC 5646 grammar and registry rules. Every new AdCP field carrying BCP 47 language identity or a concrete language range MUST reference this schema instead of declaring independent string constraints.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.language.items.[INDEX]","typeLabel":"string"},"description":"Restrict to users with specific language preferences using canonical BCP 47 language ranges. Each buyer range is evaluated against a user's language-preference tag with RFC 4647 section 3.3.1 Basic Filtering: 'fr' matches 'fr', 'fr-CA', and 'fr-FR', while 'fr-CA' matches 'fr-CA' and more-specific descendants but not 'fr' or 'fr-FR'. Values use OR logic.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.language","typeLabel":"string[]"},"keyword_targets":{"minItems":1,"type":"array","items":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"description":"The keyword to target","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.keyword_targets.items.[INDEX].keyword","typeLabel":"string"},"match_type":{"type":"string","enum":["broad","phrase","exact"],"description":"Keyword targeting match type. broad: ads may serve on queries semantically related to the keyword. phrase: ads serve when the query contains the keyword phrase. exact: ads serve only when the query matches the keyword exactly.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.keyword_targets.items.[INDEX].match_type","typeLabel":"enum\u003cstring>"},"bid_price":{"type":"number","minimum":0,"description":"Per-keyword bid price, denominated in the same currency as the package's pricing option. Overrides the package-level bid_price for this keyword. Inherits the max_bid interpretation from the pricing option: when max_bid is true, this is the keyword's bid ceiling; when false, this is the exact bid. If omitted, the package bid_price applies.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.keyword_targets.items.[INDEX].bid_price","typeLabel":"number"}},"required":["keyword","match_type"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.keyword_targets.items.[INDEX]","typeLabel":"object"},"description":"Keyword targeting for search and retail media platforms. Restricts delivery to queries matching the specified keywords. Each keyword is identified by the tuple (keyword, match_type) — the same keyword string with different match types are distinct targets. Sellers SHOULD reject duplicate (keyword, match_type) pairs within a single request. Seller must declare support in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.keyword_targets","typeLabel":"object[]"},"negative_keywords":{"minItems":1,"type":"array","items":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"description":"The keyword to exclude","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.negative_keywords.items.[INDEX].keyword","typeLabel":"string"},"match_type":{"type":"string","enum":["broad","phrase","exact"],"description":"Keyword targeting match type. broad: ads may serve on queries semantically related to the keyword. phrase: ads serve when the query contains the keyword phrase. exact: ads serve only when the query matches the keyword exactly.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.negative_keywords.items.[INDEX].match_type","typeLabel":"enum\u003cstring>"}},"required":["keyword","match_type"],"additionalProperties":false,"description":"An excluded keyword.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.negative_keywords.items.[INDEX]","typeLabel":"object"},"description":"Keywords to exclude from delivery. Queries matching these keywords will not trigger the ad. Each negative keyword is identified by the tuple (keyword, match_type). Seller must declare support in get_adcp_capabilities.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.negative_keywords","typeLabel":"object[]"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingOverlay","typeLabel":"object"},"targetingSource":{"description":"Whether V3 selected this package targeting from the campaign default or an explicit buy overlay.","type":"string","enum":["campaign","buy"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingSource","typeLabel":"enum\u003cstring>"},"performanceStandards":{"description":"Buyer-proposed performance standards for this package.","minItems":1,"type":"array","items":{"type":"object","properties":{"metric":{"type":"string","enum":["viewability","ivt","completion_rate","brand_safety","attention_score"],"description":"Quality metric to commit.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].metric","typeLabel":"enum\u003cstring>"},"threshold":{"type":"number","minimum":0,"maximum":1,"description":"Value from 0 to 1.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].threshold","typeLabel":"number"},"standard":{"description":"Required for viewability only.","type":"string","enum":["MRC","GroupM"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].standard","typeLabel":"enum\u003cstring>"},"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])?)*$","description":"Vendor brand domain.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].vendor.domain","typeLabel":"string"},"brand_id":{"description":"Optional vendor brand ID.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].vendor.brand_id","typeLabel":"string"}},"required":["domain"],"additionalProperties":false,"description":"Optional measurement vendor.","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX].vendor","typeLabel":"object"}},"required":["metric","threshold"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].performanceStandards","typeLabel":"object[]"},"providerTargeting":{"type":"object","description":"Provider-normalized geographic, demographic, and audience targeting readback. Audience fields contain canonical buyer IDs, never native provider IDs. Only canonical allowlisted fields are exposed; raw provider extensions are never returned.","required":["countries","regions","cities","zips"],"properties":{"countries":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.countries.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.countries","typeLabel":"string[]"},"regions":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.regions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.regions","typeLabel":"string[]"},"cities":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.cities.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.cities","typeLabel":"string[]"},"zips":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.zips.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.zips","typeLabel":"string[]"},"age_min":{"description":"Provider-normalized minimum age. Readback can include provider-authored 13–17 targeting even though Scope3 controlled brief writes currently start at 18.","type":"integer","minimum":13,"maximum":65,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.age_min","typeLabel":"integer"},"age_max":{"description":"Provider-normalized maximum age; 65 represents the provider 65+ upper bucket.","type":"integer","minimum":13,"maximum":65,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.age_max","typeLabel":"integer"},"genders":{"description":"Provider-normalized gender restrictions. An empty array means unrestricted/all genders.","type":"array","items":{"type":"string","enum":["FEMALE","MALE"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.genders.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.genders","typeLabel":"enum\u003cstring>[]"},"audience_include":{"description":"Canonical buyer audience IDs confirmed as positively targeted. Native provider audience IDs are never exposed.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.audience_include.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.audience_include","typeLabel":"string[]"},"audience_exclude":{"description":"Canonical buyer audience IDs confirmed as excluded. Native provider audience IDs are never exposed.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.audience_exclude.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.audience_exclude","typeLabel":"string[]"},"audience_expansion_enabled":{"description":"Whether the provider confirmed audience expansion is enabled for this package.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.audience_expansion_enabled","typeLabel":"boolean"},"publisher_platforms":{"type":"array","items":{"type":"string","enum":["facebook","instagram"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.publisher_platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.publisher_platforms","typeLabel":"enum\u003cstring>[]"},"facebook_positions":{"type":"array","items":{"type":"string","enum":["facebook_reels","feed","story"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.facebook_positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.facebook_positions","typeLabel":"enum\u003cstring>[]"},"instagram_positions":{"type":"array","items":{"type":"string","enum":["reels","story","stream"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.instagram_positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.instagram_positions","typeLabel":"enum\u003cstring>[]"},"messenger_positions":{"type":"array","items":{"oneOf":[{"not":{}}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.messenger_positions.items.[INDEX]","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.messenger_positions","typeLabel":"any[]"},"threads_positions":{"type":"array","items":{"oneOf":[{"not":{}}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.threads_positions.items.[INDEX]","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.threads_positions","typeLabel":"any[]"},"device_platforms":{"type":"array","items":{"type":"string","enum":["mobile","desktop"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.device_platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.device_platforms","typeLabel":"enum\u003cstring>[]"},"instream_video_skippable_excluded":{"type":"boolean","enum":[false],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting.instream_video_skippable_excluded","typeLabel":"enum\u003cboolean>"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerTargeting","typeLabel":"object"},"providerPlacementControls":{"type":"object","properties":{"placement_soft_opt_out":{"type":"object","properties":{},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerPlacementControls.placement_soft_opt_out","typeLabel":"object"}},"required":["placement_soft_opt_out"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].providerPlacementControls","typeLabel":"object"},"unrepresented":{"description":"Settings the platform holds on this package that Apostra cannot represent. When present, this package is a partial copy: its targeting and other fields leave these settings out. Absent when there are none.","type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"The setting on this package that Apostra cannot represent, for example packages[\u003cad set id>].targeting.locales.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].unrepresented.items.[INDEX].path","typeLabel":"string"},"reason":{"type":"string","enum":["unsupported_dimension","unknown_dimension","region_without_iso_mapping","placement_controls","targeting_not_projectable"],"description":"Why Apostra cannot represent it: unsupported_dimension, unknown_dimension, region_without_iso_mapping, placement_controls, or targeting_not_projectable.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].unrepresented.items.[INDEX].reason","typeLabel":"enum\u003cstring>"}},"required":["path","reason"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].unrepresented.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].unrepresented","typeLabel":"object[]"},"requestedTargeting":{"type":"object","description":"Canonical targeting requested when Scope3 created this adapter package.","required":["countries","regions","cities","zips"],"properties":{"countries":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.countries.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.countries","typeLabel":"string[]"},"regions":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.regions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.regions","typeLabel":"string[]"},"cities":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.cities.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.cities","typeLabel":"string[]"},"zips":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.zips.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.zips","typeLabel":"string[]"},"age_min":{"description":"Provider-normalized minimum age. Readback can include provider-authored 13–17 targeting even though Scope3 controlled brief writes currently start at 18.","type":"integer","minimum":13,"maximum":65,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.age_min","typeLabel":"integer"},"age_max":{"description":"Provider-normalized maximum age; 65 represents the provider 65+ upper bucket.","type":"integer","minimum":13,"maximum":65,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.age_max","typeLabel":"integer"},"genders":{"description":"Provider-normalized gender restrictions. An empty array means unrestricted/all genders.","type":"array","items":{"type":"string","enum":["FEMALE","MALE"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.genders.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.genders","typeLabel":"enum\u003cstring>[]"},"audience_include":{"description":"Canonical buyer audience IDs confirmed as positively targeted. Native provider audience IDs are never exposed.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.audience_include.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.audience_include","typeLabel":"string[]"},"audience_exclude":{"description":"Canonical buyer audience IDs confirmed as excluded. Native provider audience IDs are never exposed.","type":"array","items":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.audience_exclude.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.audience_exclude","typeLabel":"string[]"},"audience_expansion_enabled":{"description":"Whether the provider confirmed audience expansion is enabled for this package.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.audience_expansion_enabled","typeLabel":"boolean"},"publisher_platforms":{"type":"array","items":{"type":"string","enum":["facebook","instagram"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.publisher_platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.publisher_platforms","typeLabel":"enum\u003cstring>[]"},"facebook_positions":{"type":"array","items":{"type":"string","enum":["facebook_reels","feed","story"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.facebook_positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.facebook_positions","typeLabel":"enum\u003cstring>[]"},"instagram_positions":{"type":"array","items":{"type":"string","enum":["reels","story","stream"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.instagram_positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.instagram_positions","typeLabel":"enum\u003cstring>[]"},"messenger_positions":{"type":"array","items":{"oneOf":[{"not":{}}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.messenger_positions.items.[INDEX]","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.messenger_positions","typeLabel":"any[]"},"threads_positions":{"type":"array","items":{"oneOf":[{"not":{}}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.threads_positions.items.[INDEX]","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.threads_positions","typeLabel":"any[]"},"device_platforms":{"type":"array","items":{"type":"string","enum":["mobile","desktop"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.device_platforms.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.device_platforms","typeLabel":"enum\u003cstring>[]"},"instream_video_skippable_excluded":{"type":"boolean","enum":[false],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting.instream_video_skippable_excluded","typeLabel":"enum\u003cboolean>"}},"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].requestedTargeting","typeLabel":"object"},"targetingMatchesRequest":{"description":"Whether the current provider-normalized targeting still equals the canonical request.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].targetingMatchesRequest","typeLabel":"boolean"},"geoRegionMappings":{"description":"ISO subdivision to provider-region identity evidence.","type":"array","items":{"type":"object","properties":{"iso_code":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoRegionMappings.items.[INDEX].iso_code","typeLabel":"string"},"provider_key":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoRegionMappings.items.[INDEX].provider_key","typeLabel":"string"}},"required":["iso_code","provider_key"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoRegionMappings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoRegionMappings","typeLabel":"object[]"},"geoCityMappings":{"description":"Canonical city to provider-city identity evidence.","type":"array","items":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{2}$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].country","typeLabel":"string"},"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].name","typeLabel":"string"},"provider_key":{"type":"string","pattern":"^\\d+$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].provider_key","typeLabel":"string"},"canonical_id":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].canonical_id","typeLabel":"string"},"system":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].system","typeLabel":"string"},"system_version":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].system_version","typeLabel":"string"},"provider_country":{"type":"string","pattern":"^[A-Z]{2}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].provider_country","typeLabel":"string"},"provider_name":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].provider_name","typeLabel":"string"},"provider_canonical_id":{"type":"string","minLength":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX].provider_canonical_id","typeLabel":"string"}},"required":["country","name","provider_key"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].geoCityMappings","typeLabel":"object[]"},"delivery":{"description":"Delivery metrics for this package","type":"object","properties":{"impressions":{"type":"number","description":"Delivered impressions","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery.impressions","typeLabel":"number"},"spend":{"type":"number","description":"Delivered spend in the buyer's GROSS (fee-inclusive) denomination, grossed up at the buy's pinned pricing terms. Net-as-reported for legacy buys with no pinned terms.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery.spend","typeLabel":"number"},"clicks":{"oneOf":[{"description":"Click count","type":"number","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery.clicks.oneOf.0","typeLabel":"number"},{"description":"Click count","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery.clicks.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery.clicks","typeLabel":"number | null"}},"required":["impressions","spend","clicks"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].delivery","typeLabel":"object"},"creatives":{"description":"Creatives assigned to this package","type":"array","items":{"type":"object","properties":{"creativeId":{"type":"string","description":"Creative manifest ID","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].creativeId","typeLabel":"string"},"name":{"type":"string","description":"Creative display name","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].name","typeLabel":"string"},"formatId":{"type":"object","properties":{"id":{"type":"string","description":"Format identifier (e.g. display_300x250)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].formatId.id","typeLabel":"string"},"agent_url":{"type":"string","description":"ADCP agent URL this format belongs to","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].formatId.agent_url","typeLabel":"string"}},"required":["id","agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].formatId.additionalProperties","typeLabel":"any"},"description":"Format ID for this creative","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].formatId","typeLabel":"object"},"status":{"type":"string","description":"Creative status","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].status","typeLabel":"string"},"sourceSyncStatus":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Legacy internal ADCP agent database ID, preserved for compatibility","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].agentId","typeLabel":"string"},"sourceId":{"oneOf":[{"description":"Public ADCP agent or inventory source ID captured for this creative sync route. A legacy-agent value is the protocol-level agent ID, never the numeric database ID; null means retained history predates a captured public source identity","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId.oneOf.0","typeLabel":"string"},{"description":"Public ADCP agent or inventory source ID captured for this creative sync route. A legacy-agent value is the protocol-level agent ID, never the numeric database ID; null means retained history predates a captured public source identity","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId","typeLabel":"string | null"},"approvalStatus":{"oneOf":[{"description":"Approval status returned by the source for this creative","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus.oneOf.0","typeLabel":"string"},{"description":"Approval status returned by the source for this creative","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus","typeLabel":"string | null"},"rejectionReason":{"oneOf":[{"description":"Rejection reason returned by the source, if any","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason.oneOf.0","typeLabel":"string"},{"description":"Rejection reason returned by the source, if any","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason","typeLabel":"string | null"},"status":{"oneOf":[{"description":"Creative sync transport status. A failed sync with a rejection reason is a seller rejection even when approval is pending.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status.oneOf.0","typeLabel":"string"},{"description":"Creative sync transport status. A failed sync with a rejection reason is a seller rejection even when approval is pending.","type":"null","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status","typeLabel":"string | null"},"syncReason":{"oneOf":[{"type":"string","description":"Closed, buyer-safe reason for why this creative is still pending or failed at the source.","enum":["account_not_linked","client_setup_failed","format_unresolved","request_invalid","destination_profile_refused","destination_profile_rejected","click_through_unverified","send_failed","awaiting_seller_review","seller_requested_changes","click_through_required","landing_page_invalid","creative_refused","booked_products_not_readable","seller_adcp_release_cannot_represent_asset","seller_rejected_content","seller_rejected_request","seller_error"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason","typeLabel":"enum\u003cstring> | null"}},"required":["agentId","sourceId","approvalStatus","rejectionReason"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX]","typeLabel":"object"},"description":"Per-source creative sync verdicts. Empty array when the creative has not yet been synced to any source.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus","typeLabel":"object[]"},"storefrontReviewStatus":{"oneOf":[{"type":"string","description":"Storefront operator review status for this creative. Null when the storefront uses automatic approval or the creative has not been submitted for review.","enum":["pending","approved","rejected","revoked"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus","typeLabel":"enum\u003cstring> | null"},"held":{"description":"Present when the media buy booked without this creative because the seller has not accepted it. The creative is not attached to the booked buy. This says who the assignment waits on and why; once the seller has accepted the creative, assign it to the buy yourself.","type":"object","properties":{"owner":{"type":"string","enum":["seller","buyer"],"description":"Who has to act: the seller while its review is pending, the buyer when the creative was rejected or superseded.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].held.owner","typeLabel":"enum\u003cstring>"},"state":{"type":"string","enum":["pending_review","seller_rejected","superseded"],"description":"Why the creative is held: pending_review (the seller is still reviewing it), seller_rejected (the seller rejected it) or superseded (a newer revision replaced the one under review).","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].held.state","typeLabel":"enum\u003cstring>"}},"required":["owner","state"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].held","typeLabel":"object"},"requiresClickUrl":{"description":"Whether the selected delivery destination requires a click-through URL for this creative.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].requiresClickUrl","typeLabel":"boolean"},"hasClickUrl":{"description":"Whether the creative has a click-through URL.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].hasClickUrl","typeLabel":"boolean"},"clickUrl":{"description":"Effective click-through URL selected from the creative assets, when present.","type":"string","format":"uri","uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX].clickUrl","typeLabel":"string\u003curi>"}},"required":["creativeId","name","formatId","status","sourceSyncStatus","storefrontReviewStatus"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX].creatives","typeLabel":"object[]"}},"required":["packageId","status","productIds"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].packages","typeLabel":"object[]"},"optimizationGoals":{"description":"Optimization goals applied to every package at execution time. Each goal is either `{ kind: \"event\", event_sources: [{ event_source_id, event_type }], target? }` or `{ kind: \"metric\", metric, target? }`. Event target kinds: `cost_per` (CPA), `per_ad_spend` (ROAS), `maximize_value`. Metric target kinds: `cost_per`, `threshold_rate`.","type":"array","items":{"oneOf":[{"type":"object","required":["kind","metric"],"properties":{"kind":{"type":"string","enum":["metric"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.kind","typeLabel":"enum\u003cstring>"},"metric":{"oneOf":[{"type":"string","enum":["clicks"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["views"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["completed_views"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["viewed_seconds"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["viewable_rate"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["attention_seconds"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["attention_score"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["engagements"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.7","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["follows"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.8","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["saves"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.9","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["profile_visits"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.10","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["reach"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric.oneOf.11","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.metric","typeLabel":"enum\u003cstring>"},"standard":{"oneOf":[{"type":"string","enum":["mrc"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.standard.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["groupm"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.standard.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.standard","typeLabel":"enum\u003cstring>"},"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])?)*$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.domain","typeLabel":"string"},"brand_id":{"type":"string","pattern":"^[a-z0-9_]+$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_id","typeLabel":"string"},"countries":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.countries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.countries","typeLabel":"string[]"},"industries":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.industries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.industries","typeLabel":"string[]"},"data_subject_contestation":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.data_subject_contestation.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.data_subject_contestation","typeLabel":"object"},"brand_kit_override":{"type":"object","properties":{"logo":{"type":"object","properties":{"asset_type":{"type":"string","enum":["image"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.asset_type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.url","typeLabel":"string"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.height","typeLabel":"integer"},"file_size_bytes":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.file_size_bytes","typeLabel":"integer"},"pixel_ratio":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.pixel_ratio","typeLabel":"number"},"state_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.state_id","typeLabel":"string"},"breakpoint_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.breakpoint_id","typeLabel":"string"},"focal_point":{"type":"array","items":{"oneOf":[{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.focal_point.items.[INDEX].oneOf.0","typeLabel":"number"},{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.focal_point.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.focal_point.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.focal_point","typeLabel":"number[]"},"format":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.format","typeLabel":"string"},"alt_text":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.alt_text","typeLabel":"string"},"provenance":{"type":"object","properties":{"digital_source_type":{"oneOf":[{"type":"string","enum":["digital_capture"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["digital_creation"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["trained_algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_with_trained_algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_capture"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_synthetic"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["human_edits"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.7","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["data_driven_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.8","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.digital_source_type","typeLabel":"enum\u003cstring>"},"synthetic_depiction":{"type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.synthetic_depiction","typeLabel":"boolean"},"ai_tool":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ai_tool.name","typeLabel":"string"},"version":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ai_tool.version","typeLabel":"string"},"provider":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ai_tool.provider","typeLabel":"string"}},"required":["name"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ai_tool.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ai_tool","typeLabel":"object"},"human_oversight":{"oneOf":[{"type":"string","enum":["none"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["prompt_only"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["selected"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["edited"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["directed"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.4","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.human_oversight","typeLabel":"enum\u003cstring>"},"declared_by":{"type":"object","properties":{"role":{"oneOf":[{"type":"string","enum":["creator"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["advertiser"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["agency"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["platform"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.role","typeLabel":"enum\u003cstring>"},"agent_url":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.agent_url","typeLabel":"string"}},"required":["role"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_by","typeLabel":"object"},"declared_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.declared_at","typeLabel":"string"},"created_time":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.created_time","typeLabel":"string"},"c2pa":{"type":"object","properties":{"manifest_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.c2pa.manifest_url","typeLabel":"string"}},"required":["manifest_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.c2pa.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.c2pa","typeLabel":"object"},"embedded_provenance":{"minItems":1,"type":"array","items":{"type":"object","properties":{"method":{"oneOf":[{"type":"string","enum":["manifest_wrapper"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["provenance_markers"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].provider","typeLabel":"string"},"standard":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].standard","typeLabel":"string"},"verify_agent":{"type":"object","properties":{"agent_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.agent_url","typeLabel":"string"},"feature_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.feature_id","typeLabel":"string"}},"required":["agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent","typeLabel":"object"},"embedded_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].embedded_at","typeLabel":"string"}},"required":["method","provider"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.embedded_provenance","typeLabel":"object[]"},"watermarks":{"minItems":1,"type":"array","items":{"type":"object","properties":{"media_type":{"oneOf":[{"type":"string","enum":["audio"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["image"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["video"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["text"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.3","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].provider","typeLabel":"string"},"verify_agent":{"type":"object","properties":{"agent_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.agent_url","typeLabel":"string"},"feature_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.feature_id","typeLabel":"string"}},"required":["agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent","typeLabel":"object"},"c2pa_action":{"oneOf":[{"type":"string","enum":["c2pa.watermarked.bound"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["c2pa.watermarked.unbound"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action","typeLabel":"enum\u003cstring>"},"embedded_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].embedded_at","typeLabel":"string"}},"required":["media_type","provider"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.watermarks","typeLabel":"object[]"},"disclosure":{"type":"object","properties":{"required":{"type":"boolean","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.required","typeLabel":"boolean"},"jurisdictions":{"minItems":1,"type":"array","items":{"type":"object","properties":{"country":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].country","typeLabel":"string"},"regulation":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].regulation","typeLabel":"string"},"region":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].region","typeLabel":"string"},"label_text":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].label_text","typeLabel":"string"},"render_guidance":{"type":"object","properties":{"persistence":{"oneOf":[{"type":"string","enum":["continuous"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["initial"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["flexible"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.2","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence","typeLabel":"enum\u003cstring>"},"min_duration_ms":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.min_duration_ms","typeLabel":"integer"},"positions":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"string","enum":["prominent"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["footer"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["audio"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["subtitle"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["overlay"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["end_card"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["pre_roll"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["companion"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.7","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions","typeLabel":"enum\u003cstring>[]"},"ext":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.ext.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.ext","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance","typeLabel":"object"}},"required":["country","regulation"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions","typeLabel":"object[]"}},"required":["required"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.disclosure","typeLabel":"object"},"verification":{"minItems":1,"type":"array","items":{"type":"object","properties":{"verified_by":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].verified_by","typeLabel":"string"},"result":{"oneOf":[{"type":"string","enum":["authentic"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["ai_generated"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["ai_modified"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["inconclusive"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.3","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result","typeLabel":"enum\u003cstring>"},"verified_time":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].verified_time","typeLabel":"string"},"confidence":{"type":"number","minimum":0,"maximum":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].confidence","typeLabel":"number"},"details_url":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].details_url","typeLabel":"string"}},"required":["verified_by","result"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.verification","typeLabel":"object[]"},"ext":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ext.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.ext","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.provenance","typeLabel":"object"}},"required":["asset_type","url","width","height"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.logo","typeLabel":"object"},"colors":{"type":"object","properties":{"primary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.colors.primary","typeLabel":"string"},"secondary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.colors.secondary","typeLabel":"string"},"accent":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.colors.accent","typeLabel":"string"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.colors.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.colors","typeLabel":"object"},"voice":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.voice","typeLabel":"string"},"tagline":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.tagline","typeLabel":"string"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.brand_kit_override","typeLabel":"object"}},"required":["domain"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.vendor","typeLabel":"object"},"reach_unit":{"oneOf":[{"type":"string","enum":["individuals"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["households"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["devices"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["accounts"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["cookies"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["custom"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit.oneOf.5","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.reach_unit","typeLabel":"enum\u003cstring>"},"target_frequency":{"type":"object","properties":{"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.window","typeLabel":"object"},"min":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.min","typeLabel":"integer"},"max":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.max","typeLabel":"integer"}},"required":["window"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target_frequency","typeLabel":"object"},"view_duration_seconds":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.view_duration_seconds","typeLabel":"number"},"target":{"oneOf":[{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.0","typeLabel":"object"},{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.target","typeLabel":"object"},"priority":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.priority","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["kind","event_sources"],"properties":{"kind":{"type":"string","enum":["event"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.kind","typeLabel":"enum\u003cstring>"},"event_sources":{"type":"array","items":{"type":"object","properties":{"event_source_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_source_id","typeLabel":"string"},"event_type":{"oneOf":[{"type":"string","enum":["page_view"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["view_content"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["select_content"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["select_item"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["search"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["share"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["add_to_cart"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["remove_from_cart"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.7","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["viewed_cart"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.8","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["add_to_wishlist"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.9","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["initiate_checkout"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.10","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["add_payment_info"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.11","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["purchase"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.12","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["refund"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.13","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["lead"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.14","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["qualify_lead"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.15","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["close_convert_lead"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.16","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["disqualify_lead"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.17","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["complete_registration"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.18","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["subscribe"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.19","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["follow"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.20","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["content_view"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.21","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["watch_milestone"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.22","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["start_trial"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.23","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["app_install"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.24","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["app_launch"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.25","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["contact"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.26","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["schedule"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.27","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["donate"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.28","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["submit_application"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.29","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["custom"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type.oneOf.30","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].event_type","typeLabel":"enum\u003cstring>"},"custom_event_name":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].custom_event_name","typeLabel":"string"},"value_field":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].value_field","typeLabel":"string"},"value_factor":{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].value_factor","typeLabel":"number"}},"required":["event_source_id","event_type"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.event_sources","typeLabel":"object[]"},"target":{"oneOf":[{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.0","typeLabel":"object"},{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["per_ad_spend"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.1","typeLabel":"object"},{"type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["maximize_value"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.2.kind","typeLabel":"enum\u003cstring>"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.2.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target.oneOf.2","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.target","typeLabel":"object"},"attribution_window":{"type":"object","properties":{"post_click":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_click","typeLabel":"object"},"post_view":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.post_view","typeLabel":"object"},"model":{"oneOf":[{"type":"string","enum":["last_touch"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["first_touch"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["linear"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["time_decay"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["data_driven"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model.oneOf.4","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.model","typeLabel":"enum\u003cstring>"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.attribution_window","typeLabel":"object"},"priority":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.priority","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","required":["kind","vendor","metric_id"],"properties":{"kind":{"type":"string","enum":["vendor_metric"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.kind","typeLabel":"enum\u003cstring>"},"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])?)*$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.domain","typeLabel":"string"},"brand_id":{"type":"string","pattern":"^[a-z0-9_]+$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_id","typeLabel":"string"},"countries":{"minItems":1,"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.countries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.countries","typeLabel":"string[]"},"industries":{"type":"array","items":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.industries.items.[INDEX]","typeLabel":"string"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.industries","typeLabel":"string[]"},"data_subject_contestation":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.data_subject_contestation.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.data_subject_contestation","typeLabel":"object"},"brand_kit_override":{"type":"object","properties":{"logo":{"type":"object","properties":{"asset_type":{"type":"string","enum":["image"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.asset_type","typeLabel":"enum\u003cstring>"},"url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.url","typeLabel":"string"},"width":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.width","typeLabel":"integer"},"height":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.height","typeLabel":"integer"},"file_size_bytes":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.file_size_bytes","typeLabel":"integer"},"pixel_ratio":{"type":"number","minimum":0,"exclusiveMinimum":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.pixel_ratio","typeLabel":"number"},"state_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.state_id","typeLabel":"string"},"breakpoint_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.breakpoint_id","typeLabel":"string"},"focal_point":{"type":"array","items":{"oneOf":[{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.focal_point.items.[INDEX].oneOf.0","typeLabel":"number"},{"type":"number","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.focal_point.items.[INDEX].oneOf.1","typeLabel":"number"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.focal_point.items.[INDEX]","typeLabel":"number"},"minItems":2,"maxItems":2,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.focal_point","typeLabel":"number[]"},"format":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.format","typeLabel":"string"},"alt_text":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.alt_text","typeLabel":"string"},"provenance":{"type":"object","properties":{"digital_source_type":{"oneOf":[{"type":"string","enum":["digital_capture"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["digital_creation"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["trained_algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_with_trained_algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["algorithmic_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_capture"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["composite_synthetic"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["human_edits"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.7","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["data_driven_media"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type.oneOf.8","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.digital_source_type","typeLabel":"enum\u003cstring>"},"synthetic_depiction":{"type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.synthetic_depiction","typeLabel":"boolean"},"ai_tool":{"type":"object","properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ai_tool.name","typeLabel":"string"},"version":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ai_tool.version","typeLabel":"string"},"provider":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ai_tool.provider","typeLabel":"string"}},"required":["name"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ai_tool.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ai_tool","typeLabel":"object"},"human_oversight":{"oneOf":[{"type":"string","enum":["none"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["prompt_only"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["selected"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["edited"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["directed"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight.oneOf.4","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.human_oversight","typeLabel":"enum\u003cstring>"},"declared_by":{"type":"object","properties":{"role":{"oneOf":[{"type":"string","enum":["creator"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["advertiser"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["agency"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["platform"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["tool"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.role","typeLabel":"enum\u003cstring>"},"agent_url":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.agent_url","typeLabel":"string"}},"required":["role"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_by","typeLabel":"object"},"declared_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.declared_at","typeLabel":"string"},"created_time":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.created_time","typeLabel":"string"},"c2pa":{"type":"object","properties":{"manifest_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.c2pa.manifest_url","typeLabel":"string"}},"required":["manifest_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.c2pa.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.c2pa","typeLabel":"object"},"embedded_provenance":{"minItems":1,"type":"array","items":{"type":"object","properties":{"method":{"oneOf":[{"type":"string","enum":["manifest_wrapper"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["provenance_markers"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method.oneOf.1","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].provider","typeLabel":"string"},"standard":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].standard","typeLabel":"string"},"verify_agent":{"type":"object","properties":{"agent_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.agent_url","typeLabel":"string"},"feature_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.feature_id","typeLabel":"string"}},"required":["agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].verify_agent","typeLabel":"object"},"embedded_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].embedded_at","typeLabel":"string"}},"required":["method","provider"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.embedded_provenance","typeLabel":"object[]"},"watermarks":{"minItems":1,"type":"array","items":{"type":"object","properties":{"media_type":{"oneOf":[{"type":"string","enum":["audio"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["image"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["video"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["text"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type.oneOf.3","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].media_type","typeLabel":"enum\u003cstring>"},"provider":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].provider","typeLabel":"string"},"verify_agent":{"type":"object","properties":{"agent_url":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.agent_url","typeLabel":"string"},"feature_id":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.feature_id","typeLabel":"string"}},"required":["agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].verify_agent","typeLabel":"object"},"c2pa_action":{"oneOf":[{"type":"string","enum":["c2pa.watermarked.bound"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["c2pa.watermarked.unbound"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action.oneOf.1","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].c2pa_action","typeLabel":"enum\u003cstring>"},"embedded_at":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].embedded_at","typeLabel":"string"}},"required":["media_type","provider"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.watermarks","typeLabel":"object[]"},"disclosure":{"type":"object","properties":{"required":{"type":"boolean","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.required","typeLabel":"boolean"},"jurisdictions":{"minItems":1,"type":"array","items":{"type":"object","properties":{"country":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].country","typeLabel":"string"},"regulation":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].regulation","typeLabel":"string"},"region":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].region","typeLabel":"string"},"label_text":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].label_text","typeLabel":"string"},"render_guidance":{"type":"object","properties":{"persistence":{"oneOf":[{"type":"string","enum":["continuous"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["initial"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["flexible"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence.oneOf.2","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.persistence","typeLabel":"enum\u003cstring>"},"min_duration_ms":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.min_duration_ms","typeLabel":"integer"},"positions":{"minItems":1,"type":"array","items":{"oneOf":[{"type":"string","enum":["prominent"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["footer"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["audio"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["subtitle"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["overlay"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.4","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["end_card"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.5","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["pre_roll"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.6","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["companion"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX].oneOf.7","typeLabel":"enum\u003cstring>"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.positions","typeLabel":"enum\u003cstring>[]"},"ext":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.ext.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.ext","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].render_guidance","typeLabel":"object"}},"required":["country","regulation"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.jurisdictions","typeLabel":"object[]"}},"required":["required"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.disclosure","typeLabel":"object"},"verification":{"minItems":1,"type":"array","items":{"type":"object","properties":{"verified_by":{"type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].verified_by","typeLabel":"string"},"result":{"oneOf":[{"type":"string","enum":["authentic"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["ai_generated"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["ai_modified"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["inconclusive"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result.oneOf.3","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].result","typeLabel":"enum\u003cstring>"},"verified_time":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].verified_time","typeLabel":"string"},"confidence":{"type":"number","minimum":0,"maximum":1,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].confidence","typeLabel":"number"},"details_url":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].details_url","typeLabel":"string"}},"required":["verified_by","result"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX].additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.verification","typeLabel":"object[]"},"ext":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ext.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.ext","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.provenance","typeLabel":"object"}},"required":["asset_type","url","width","height"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.logo","typeLabel":"object"},"colors":{"type":"object","properties":{"primary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.colors.primary","typeLabel":"string"},"secondary":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.colors.secondary","typeLabel":"string"},"accent":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.colors.accent","typeLabel":"string"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.colors.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.colors","typeLabel":"object"},"voice":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.voice","typeLabel":"string"},"tagline":{"type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.tagline","typeLabel":"string"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.brand_kit_override","typeLabel":"object"}},"required":["domain"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.vendor","typeLabel":"object"},"metric_id":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.metric_id","typeLabel":"string"},"target":{"oneOf":[{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["cost_per"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.0","typeLabel":"object"},{"type":"object","required":["kind","value"],"properties":{"kind":{"type":"string","enum":["threshold_rate"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.kind","typeLabel":"enum\u003cstring>"},"value":{"type":"number","minimum":0,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.value","typeLabel":"number"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target.oneOf.1","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.target","typeLabel":"object"},"priority":{"type":"integer","minimum":1,"maximum":9007199254740991,"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.priority","typeLabel":"integer"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2.additionalProperties","typeLabel":"any"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX].oneOf.2","typeLabel":"object"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].optimizationGoals","typeLabel":"object[]"},"performance":{"description":"Latest aggregate delivery snapshot for this media buy. windowStart/windowEnd identify the exact inclusive reporting period represented by the totals.","type":"object","properties":{"impressions":{"type":"number","description":"Total impressions delivered","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.impressions","typeLabel":"number"},"spend":{"type":"number","description":"Total delivered spend in the buyer's GROSS (fee-inclusive) denomination, grossed up at the buy's pinned pricing terms. Net-as-reported for legacy buys with no pinned terms.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.spend","typeLabel":"number"},"clicks":{"type":"number","description":"Total clicks","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.clicks","typeLabel":"number"},"views":{"type":"number","description":"Total views (engagement-qualified)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.views","typeLabel":"number"},"completedViews":{"type":"number","description":"Total completed views (video / audio completions)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.completedViews","typeLabel":"number"},"conversions":{"type":"number","description":"Total attributed conversions","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.conversions","typeLabel":"number"},"leads":{"type":"number","description":"Total leads","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.leads","typeLabel":"number"},"lastUpdated":{"description":"When this snapshot was last refreshed (ISO 8601)","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))$","uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.lastUpdated","typeLabel":"string\u003cdate-time>"},"windowStart":{"description":"Inclusive start date represented by this aggregate snapshot.","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])))$","uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.windowStart","typeLabel":"string\u003cdate>"},"windowEnd":{"description":"Inclusive end date represented by this aggregate snapshot.","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])))$","uniqueKey":"campaign.mediaBuys.items.[INDEX].performance.windowEnd","typeLabel":"string\u003cdate>"}},"required":["impressions","spend","clicks","views","completedViews","conversions","leads"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].performance","typeLabel":"object"},"creatives":{"description":"Creatives assigned to this media buy. Each entry includes source sync status across all sales agents.","type":"array","items":{"type":"object","properties":{"creativeId":{"type":"string","description":"Creative manifest ID","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].creativeId","typeLabel":"string"},"name":{"type":"string","description":"Creative display name","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].name","typeLabel":"string"},"formatId":{"type":"object","properties":{"id":{"type":"string","description":"Format identifier (e.g. display_300x250)","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].formatId.id","typeLabel":"string"},"agent_url":{"type":"string","description":"ADCP agent URL this format belongs to","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].formatId.agent_url","typeLabel":"string"}},"required":["id","agent_url"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].formatId.additionalProperties","typeLabel":"any"},"description":"Format ID for this creative","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].formatId","typeLabel":"object"},"status":{"type":"string","description":"Creative status","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].status","typeLabel":"string"},"sourceSyncStatus":{"type":"array","items":{"type":"object","properties":{"agentId":{"type":"string","description":"Legacy internal ADCP agent database ID, preserved for compatibility","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].agentId","typeLabel":"string"},"sourceId":{"oneOf":[{"description":"Public ADCP agent or inventory source ID captured for this creative sync route. A legacy-agent value is the protocol-level agent ID, never the numeric database ID; null means retained history predates a captured public source identity","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId.oneOf.0","typeLabel":"string"},{"description":"Public ADCP agent or inventory source ID captured for this creative sync route. A legacy-agent value is the protocol-level agent ID, never the numeric database ID; null means retained history predates a captured public source identity","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].sourceId","typeLabel":"string | null"},"approvalStatus":{"oneOf":[{"description":"Approval status returned by the source for this creative","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus.oneOf.0","typeLabel":"string"},{"description":"Approval status returned by the source for this creative","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].approvalStatus","typeLabel":"string | null"},"rejectionReason":{"oneOf":[{"description":"Rejection reason returned by the source, if any","type":"string","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason.oneOf.0","typeLabel":"string"},{"description":"Rejection reason returned by the source, if any","type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].rejectionReason","typeLabel":"string | null"},"status":{"oneOf":[{"description":"Creative sync transport status. A failed sync with a rejection reason is a seller rejection even when approval is pending.","type":"string","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status.oneOf.0","typeLabel":"string"},{"description":"Creative sync transport status. A failed sync with a rejection reason is a seller rejection even when approval is pending.","type":"null","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status.oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].status","typeLabel":"string | null"},"syncReason":{"oneOf":[{"type":"string","description":"Closed, buyer-safe reason for why this creative is still pending or failed at the source.","enum":["account_not_linked","client_setup_failed","format_unresolved","request_invalid","destination_profile_refused","destination_profile_rejected","click_through_unverified","send_failed","awaiting_seller_review","seller_requested_changes","click_through_required","landing_page_invalid","creative_refused","booked_products_not_readable","seller_adcp_release_cannot_represent_asset","seller_rejected_content","seller_rejected_request","seller_error"],"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX].syncReason","typeLabel":"enum\u003cstring> | null"}},"required":["agentId","sourceId","approvalStatus","rejectionReason"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus.items.[INDEX]","typeLabel":"object"},"description":"Per-source creative sync verdicts. Empty array when the creative has not yet been synced to any source.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].sourceSyncStatus","typeLabel":"object[]"},"storefrontReviewStatus":{"oneOf":[{"type":"string","description":"Storefront operator review status for this creative. Null when the storefront uses automatic approval or the creative has not been submitted for review.","enum":["pending","approved","rejected","revoked"],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].storefrontReviewStatus","typeLabel":"enum\u003cstring> | null"},"held":{"description":"Present when the media buy booked without this creative because the seller has not accepted it. The creative is not attached to the booked buy. This says who the assignment waits on and why; once the seller has accepted the creative, assign it to the buy yourself.","type":"object","properties":{"owner":{"type":"string","enum":["seller","buyer"],"description":"Who has to act: the seller while its review is pending, the buyer when the creative was rejected or superseded.","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].held.owner","typeLabel":"enum\u003cstring>"},"state":{"type":"string","enum":["pending_review","seller_rejected","superseded"],"description":"Why the creative is held: pending_review (the seller is still reviewing it), seller_rejected (the seller rejected it) or superseded (a newer revision replaced the one under review).","isRequired":true,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].held.state","typeLabel":"enum\u003cstring>"}},"required":["owner","state"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].held","typeLabel":"object"},"requiresClickUrl":{"description":"Whether the selected delivery destination requires a click-through URL for this creative.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].requiresClickUrl","typeLabel":"boolean"},"hasClickUrl":{"description":"Whether the creative has a click-through URL.","type":"boolean","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].hasClickUrl","typeLabel":"boolean"},"clickUrl":{"description":"Effective click-through URL selected from the creative assets, when present.","type":"string","format":"uri","uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX].clickUrl","typeLabel":"string\u003curi>"}},"required":["creativeId","name","formatId","status","sourceSyncStatus","storefrontReviewStatus"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys.items.[INDEX].creatives","typeLabel":"object[]"}},"required":["mediaBuyId","name","status","createdAt","updatedAt"],"additionalProperties":false,"uniqueKey":"campaign.mediaBuys.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.mediaBuys","typeLabel":"object[]"},"dataDelivery":{"description":"Resolved data-delivery configuration for this campaign. Groups standing Data Delivery Outputs (with advertiser/campaign-scoped overrides applied). Distinct from media-buy reporting fields elsewhere in the API.","type":"object","properties":{"outputs":{"description":"Resolved Data Delivery Outputs for this campaign. Campaign-scoped Outputs override advertiser-scoped Outputs by `dataDeliveryType`. Each entry is tagged with `source` (\"advertiser\" or \"campaign\").","type":"array","items":{"type":"object","properties":{"outputConfigId":{"type":"string","description":"Database identifier for the underlying output config row.","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].outputConfigId","typeLabel":"string"},"dataDeliveryType":{"type":"string","enum":["MB_DELIVERY","IMPRESSIONS","CLICKS","VAST_EVENTS","CAPI_ATTRIBUTION","MMP_POSTBACKS"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].dataDeliveryType","typeLabel":"enum\u003cstring>"},"cadence":{"type":"string","enum":["HOURLY","DAILY","WEEKLY"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].cadence","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].enabled","typeLabel":"boolean"},"credentialId":{"type":"string","description":"Database identifier of the Data Delivery Credential authenticating this Output.","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].credentialId","typeLabel":"string"},"credentialName":{"type":"string","description":"Name of the Data Delivery Credential authenticating this Output (advertiser-scoped, unique among live credentials).","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].credentialName","typeLabel":"string"},"deliveryConfig":{"oneOf":[{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type","pathPrefix","format"],"properties":{"type":{"type":"string","enum":["GCS"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0.format","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.0","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type","pathPrefix","format"],"properties":{"type":{"type":"string","enum":["S3"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1.format","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.1","typeLabel":"object"},{"type":"object","description":"Per-Output destination shape (non-secret). Additional destination types are added as new variants in this discriminated union.","required":["type","pathPrefix","format"],"properties":{"type":{"type":"string","enum":["AZURE_BLOB"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.type","typeLabel":"enum\u003cstring>"},"pathPrefix":{"default":"","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.","type":"string","maxLength":1024,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.pathPrefix","typeLabel":"string"},"format":{"default":"JSONL","type":"string","enum":["JSONL","PARQUET","CSV"],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2.format","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].deliveryConfig","typeLabel":"object"},"source":{"type":"string","enum":["advertiser","campaign"],"description":"Where this Output was configured — \"advertiser\" for default, \"campaign\" for an override.","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].source","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].createdAt","typeLabel":"string"},"updatedAt":{"type":"string","isRequired":true,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].updatedAt","typeLabel":"string"},"syncWeeklyDay":{"type":"integer","minimum":0,"maximum":6,"uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX].syncWeeklyDay","typeLabel":"integer"}},"required":["outputConfigId","dataDeliveryType","cadence","enabled","credentialId","credentialName","deliveryConfig","source","createdAt","updatedAt"],"additionalProperties":false,"description":"Resolved Data Delivery Output as returned by the API.","uniqueKey":"campaign.dataDelivery.outputs.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.dataDelivery.outputs","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"campaign.dataDelivery","typeLabel":"object"},"frequencyCaps":{"description":"Buyer-side frequency cap configs for this campaign. Returned by `get_campaign`; not present on `list_campaigns` summary.","type":"array","items":{"type":"object","properties":{"max_impressions":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Maximum number of impressions allowed within the window","example":3,"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].max_impressions","typeLabel":"integer"},"window":{"type":"object","properties":{"interval":{"type":"integer","minimum":1,"maximum":9007199254740991,"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.interval","typeLabel":"integer"},"unit":{"oneOf":[{"type":"string","enum":["seconds"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["minutes"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["hours"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["days"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"string","enum":["campaign"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit.oneOf.4","typeLabel":"enum\u003cstring>"}],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.unit","typeLabel":"enum\u003cstring>"}},"required":["interval","unit"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window.additionalProperties","typeLabel":"any"},"description":"Rolling time window over which max_impressions applies (AdCP Duration shape).","isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].window","typeLabel":"object"},"id":{"type":"string","description":"Unique identifier for the frequency cap config","example":"12345","isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].id","typeLabel":"string"},"targetLevel":{"type":"string","description":"Level of the entity the cap applies to","enum":["ADVERTISER","CAMPAIGN","CREATIVE"],"isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].targetLevel","typeLabel":"enum\u003cstring>"},"targetId":{"type":"string","description":"Identifier of the entity at the chosen target level: advertiser_id when targetLevel is ADVERTISER, campaign_id when CAMPAIGN, creative_id when CREATIVE.","example":"camp_abc123","isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].targetId","typeLabel":"string"},"createdAt":{"type":"string","description":"ISO 8601 creation timestamp","isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].createdAt","typeLabel":"string"},"updatedAt":{"type":"string","description":"ISO 8601 last-updated timestamp","isRequired":true,"uniqueKey":"campaign.frequencyCaps.items.[INDEX].updatedAt","typeLabel":"string"},"archivedAt":{"oneOf":[{"description":"ISO 8601 archive timestamp; null for active configs","type":"string","uniqueKey":"campaign.frequencyCaps.items.[INDEX].archivedAt.oneOf.0","typeLabel":"string"},{"description":"ISO 8601 archive timestamp; null for active configs","type":"null","uniqueKey":"campaign.frequencyCaps.items.[INDEX].archivedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"campaign.frequencyCaps.items.[INDEX].archivedAt","typeLabel":"string | null"}},"required":["max_impressions","window","id","targetLevel","targetId","createdAt","updatedAt"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"campaign.frequencyCaps.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Buyer-side frequency cap configuration","uniqueKey":"campaign.frequencyCaps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.frequencyCaps","typeLabel":"object[]"},"utmConfig":{"description":"Resolved click-URL parameters for this campaign: campaign entries over advertiser entries, each with its `source`. Present only when at least one parameter resolves.","type":"array","items":{"type":"object","properties":{"paramKey":{"type":"string","description":"Output query parameter key","example":"utm_campaign","isRequired":true,"uniqueKey":"campaign.utmConfig.items.[INDEX].paramKey","typeLabel":"string"},"paramValue":{"type":"string","description":"Macro or static value","example":"{CAMPAIGN_ID}","isRequired":true,"uniqueKey":"campaign.utmConfig.items.[INDEX].paramValue","typeLabel":"string"},"source":{"type":"string","enum":["advertiser","campaign"],"description":"Where this param was configured — \"advertiser\" for advertiser default, \"campaign\" for campaign override","isRequired":true,"uniqueKey":"campaign.utmConfig.items.[INDEX].source","typeLabel":"enum\u003cstring>"}},"required":["paramKey","paramValue","source"],"additionalProperties":false,"uniqueKey":"campaign.utmConfig.items.[INDEX]","typeLabel":"object"},"uniqueKey":"campaign.utmConfig","typeLabel":"object[]"},"creativeResync":{"type":"object","description":"Present when this write changed the click-URL parameters of creatives that sellers already hold on live media buys. Apostra queued a re-sync of each such creative to each seller that holds it, sent about a minute later with the parameters current at that time (or, if the seller is still reviewing an earlier copy, once that review finishes); edits in that minute join the same re-sync. Each seller decides whether the change needs re-review, and its decision appears on the creative the same way it does after a creative edit. Absent when no seller copy changes.","required":["creativeCount","sellerCount"],"properties":{"creativeCount":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Distinct creatives queued for re-sync.","example":3,"isRequired":true,"uniqueKey":"campaign.creativeResync.creativeCount","typeLabel":"integer"},"sellerCount":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":9007199254740991,"description":"Distinct sellers that will receive at least one of them.","example":2,"isRequired":true,"uniqueKey":"campaign.creativeResync.sellerCount","typeLabel":"integer"}},"additionalProperties":false,"uniqueKey":"campaign.creativeResync","typeLabel":"object"}},"required":["campaignId","advertiserId","name","status","mode","management","optimizationApplyMode","createdAt","updatedAt","revision"],"additionalProperties":false,"description":"Campaign resource representation","isRequired":true,"uniqueKey":"campaign","typeLabel":"object"},"warnings":{"description":"Non-blocking advisories, such as a media buy that ended without delivering because its seller never started it.","type":"array","items":{"type":"string","uniqueKey":"warnings.items.[INDEX]","typeLabel":"string"},"uniqueKey":"warnings","typeLabel":"string[]"}},"required":["campaign"],"additionalProperties":false,"description":"Response containing a single campaign","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"campaign":{"campaignId":"cmp_987654321","advertiserId":"12345","name":"Summer 2025 Campaign","status":"DRAFT","mode":"discovery","management":"tracked","optimizationApplyMode":"AUTO","createdAt":"2025-01-15T10:30:00Z","updatedAt":"2025-01-20T14:45:00Z","revision":1,"delegatedBy":{"organizationName":"\u003cstring>"},"archivedAt":"2023-11-07T05:31:56Z","directed":{"provenance":"connected_account","connectionId":"conn_abc123","accountId":"act_998877","provider":"tiktok","upstreamMediaBuyId":"tt_campaign_44521","subscribed":true,"mirrorState":"live","storefrontId":42,"mediaBuyId":"\u003cstring>","lastSyncedAt":"2023-11-07T05:31:56Z"},"mediaBuyRefs":[{"mediaBuyId":"mb_ETBn4gJ9Wu","status":"ACTIVE","channelGroup":{"channelGroupId":"\u003cstring>","name":"\u003cstring>"},"pendingAt":"storefront","pendingChange":{"status":"PENDING_APPROVAL","pendingAt":"storefront"}}],"brief":"\u003cstring>","flightDates":{"startDate":"2025-01-15T00:00:00Z","endDate":"2025-03-31T23:59:59Z"},"budget":{"total":1,"currency":"USD","dailyCap":1,"pacing":"EVEN"},"operatorFees":[{"name":"\u003cstring>","rate":123,"beneficiary":"\u003cstring>"}],"operatorFeeEditable":true,"allocatedBudget":7500,"unallocatedBudget":2500,"pacingPeriods":{"mode":"weight","periods":[{"label":"\u003cstring>","start":"\u003cstring>","end":"\u003cstring>","weight":5,"budget":1}]},"constraints":{"geo_countries":["\u003cstring>"],"geo_countries_exclude":["\u003cstring>"],"geo_regions":["\u003cstring>"],"geo_regions_exclude":["\u003cstring>"],"geo_metros":[{"system":"nielsen_dma","values":["\u003cstring>"]}],"geo_metros_exclude":[{"system":"nielsen_dma","values":["\u003cstring>"]}],"geo_postal_areas":[{"country":"US","system":"zip","values":["\u003cstring>"]}],"geo_postal_areas_exclude":[{"country":"US","system":"zip","values":["\u003cstring>"]}],"language":["\u003cstring>"],"device_platform":["ios"],"device_type":["desktop"],"device_type_exclude":["desktop"],"channels":["\u003cstring>"],"countries":["\u003cstring>"],"geo_metro_names":[{"system":"\u003cstring>","values":[{"code":"\u003cstring>","name":"\u003cstring>"}]}],"geo_metro_names_exclude":[{"system":"\u003cstring>","values":[{"code":"\u003cstring>","name":"\u003cstring>"}]}]},"storefronts":[{"id":42,"platformId":"acme-media","name":"Acme Media"}],"performanceConfig":{"optimizationGoals":[{"kind":"event","eventSources":[{"eventSourceId":"website_pixel","eventType":"page_view","customEventName":"\u003cstring>","valueField":"value","valueFactor":1}],"target":{"kind":"cost_per","value":25,"strength":"cap"},"attributionWindow":{"postClick":{"interval":7,"unit":"days"},"postView":{"interval":1,"unit":"days"}},"priority":1}]},"autonomy":{"inventorySelection":"manual","rebriefing":"manual"},"catalogId":42,"discoveryId":"session_abc123","productCount":15,"products":[{"productId":"prod_123"}],"audiences":[{"audienceId":"aud_123","name":"Tech Enthusiasts 25-34","status":"READY","type":"TARGET","enabledAt":"2025-03-01T12:00:00Z"}],"creativeFormats":{"required":[{"format_kind":"\u003cstring>"}],"covered":[{"format_kind":"\u003cstring>"}],"missing":[{"format_kind":"\u003cstring>"}]},"propertyLists":{"propertyLists":[{"listId":"\u003cstring>","name":"\u003cstring>","purpose":"include","propertyCount":4503599627370495,"createdAt":"\u003cstring>","updatedAt":"\u003cstring>","viaMediaBuys":[{"mediaBuyId":"\u003cstring>","packageIds":["\u003cstring>"]}]}],"summary":{"totalLists":4503599627370495,"includeCount":4503599627370495,"excludeCount":4503599627370495}},"mediaBuys":[{"mediaBuyId":"\u003cstring>","name":"\u003cstring>","status":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","channelGroup":{"channelGroupId":"\u003cstring>","name":"\u003cstring>"},"sourceStatus":"\u003cstring>","revision":4503599627370495,"validActions":["\u003cstring>"],"pendingAt":"storefront","pendingReason":"forward_failed_needs_correction","pendingSince":"2023-11-07T05:31:56Z","errorCode":"product_no_longer_available","errorOwner":"buyer_input","sourceMessage":"\u003cstring>","forwardedAt":"2023-11-07T05:31:56Z","buyerReference":"sf:42:sf_mb_1783031864469_8pbc8mmr","startTime":"2025-04-14T00:00:00Z","endTime":"2025-04-30T23:59:59Z","budget_denomination":"gross","budget_breakdown":{"media_budget":123,"fee_amount":123,"fee_rate_percent":123,"effective_gross_cpm":123,"operator_fees":[{"name":"\u003cstring>","amount":123,"beneficiary":"\u003cstring>"}]},"products":[{"productId":"\u003cstring>","productName":"\u003cstring>","publisherName":"\u003cstring>","salesAgentName":"\u003cstring>","buyerRef":"\u003cstring>","budget":123,"budgetCurrency":"\u003cstring>","formatOptions":[{"format_kind":"image","params":{"width":4503599627370496,"height":4503599627370496,"sizes":[{"width":4503599627370496,"height":4503599627370496}],"min_width":4503599627370496,"max_width":4503599627370496,"min_height":4503599627370496,"max_height":4503599627370496,"duration_ms_exact":4503599627370496,"duration_ms_range":[123]},"format_option_id":"\u003cstring>"}]}],"pacingPeriods":{"mode":"weight","periods":[{"label":"\u003cstring>","start":"\u003cstring>","end":"\u003cstring>","weight":5,"budget":1}]},"packages":[{"packageId":"\u003cstring>","status":"\u003cstring>","productIds":["\u003cstring>"],"budget":123,"budgetCurrency":"\u003cstring>","pacing":"\u003cstring>","bidPrice":123,"startTime":"\u003cstring>","endTime":"\u003cstring>","targetingOverlay":{"geo_countries":["\u003cstring>"],"geo_countries_exclude":["\u003cstring>"],"geo_regions":["\u003cstring>"],"geo_regions_exclude":["\u003cstring>"],"geo_metros":[{"system":"nielsen_dma","values":["\u003cstring>"]}],"geo_metros_exclude":[{"system":"nielsen_dma","values":["\u003cstring>"]}],"geo_postal_areas":[{"country":"US","system":"zip","values":["\u003cstring>"]}],"geo_postal_areas_exclude":[{"country":"US","system":"zip","values":["\u003cstring>"]}],"daypart_targets":[{"days":["monday"],"timezone":"inventory_local","start_hour":11,"end_hour":12,"start_time":"\u003cstring>","end_time":"\u003cstring>","label":"\u003cstring>"}],"axe_include_segment":"\u003cstring>","axe_exclude_segment":"\u003cstring>","audience_include":["\u003cstring>"],"audience_exclude":["\u003cstring>"],"signal_targeting_groups":{"operator":"all","groups":[{"operator":"any","signals":[{"pricing_option_id":"\u003cstring>","signal_agent_segment_id":"\u003cstring>","activation_key":{}}]}]},"signal_targeting":["\u003cunknown>"],"demographics":{"age":{"min":75,"include_unknown":true,"max":75,"accepted_bases":["verified"],"accepted_verification_methods":["facial_age_estimation"]},"gender":{"values":["female"],"include_unknown":true}},"frequency_cap":{"suppress":{"interval":4503599627370496,"unit":"seconds"},"suppress_minutes":1,"max_impressions":4503599627370496,"per":"individuals","window":{"interval":4503599627370496,"unit":"seconds"}},"property_list":{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"},"property_list_exclude":{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"},"collection_list":{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"},"collection_list_exclude":{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"},"collection_lists":[{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"}],"collection_lists_exclude":[{"agent_url":"\u003cstring>","list_id":"\u003cstring>","auth_token":"\u003cstring>"}],"placement_selection":{},"collection_selection":{},"age_restriction":{"min":56,"verification_required":false,"accepted_methods":["facial_age_estimation"]},"device_platform":["ios"],"device_platform_exclude":["ios"],"device_type":["desktop"],"device_type_exclude":["desktop"],"browser":["chrome"],"browser_exclude":["chrome"],"store_catchments":[{"catalog_id":"\u003cstring>","store_ids":["\u003cstring>"],"catchment_ids":["\u003cstring>"]}],"geo_proximity":[{"lat":0,"lng":0,"label":"\u003cstring>","travel_time":{"value":2,"unit":"min"},"transport_mode":"walking","radius":{"value":1,"unit":"km"},"geometry":{"type":"Polygon","coordinates":["\u003cunknown>"]},"ext":{}}],"language":["\u003cstring>"],"keyword_targets":[{"keyword":"\u003cstring>","match_type":"broad","bid_price":1}],"negative_keywords":[{"keyword":"\u003cstring>","match_type":"broad"}]},"targetingSource":"campaign","performanceStandards":[{"metric":"viewability","threshold":0.5,"standard":"MRC","vendor":{"domain":"\u003cstring>","brand_id":"\u003cstring>"}}],"providerTargeting":{"countries":["\u003cstring>"],"regions":["\u003cstring>"],"cities":["\u003cstring>"],"zips":["\u003cstring>"],"age_min":39,"age_max":39,"genders":["FEMALE"],"audience_include":["\u003cstring>"],"audience_exclude":["\u003cstring>"],"audience_expansion_enabled":true,"publisher_platforms":["facebook"],"facebook_positions":["facebook_reels"],"instagram_positions":["reels"],"messenger_positions":["\u003cunknown>"],"threads_positions":["\u003cunknown>"],"device_platforms":["mobile"],"instream_video_skippable_excluded":false},"providerPlacementControls":{"placement_soft_opt_out":{}},"unrepresented":[{"path":"\u003cstring>","reason":"unsupported_dimension"}],"requestedTargeting":{"countries":["\u003cstring>"],"regions":["\u003cstring>"],"cities":["\u003cstring>"],"zips":["\u003cstring>"],"age_min":39,"age_max":39,"genders":["FEMALE"],"audience_include":["\u003cstring>"],"audience_exclude":["\u003cstring>"],"audience_expansion_enabled":true,"publisher_platforms":["facebook"],"facebook_positions":["facebook_reels"],"instagram_positions":["reels"],"messenger_positions":["\u003cunknown>"],"threads_positions":["\u003cunknown>"],"device_platforms":["mobile"],"instream_video_skippable_excluded":false},"targetingMatchesRequest":true,"geoRegionMappings":[{"iso_code":"\u003cstring>","provider_key":"\u003cstring>"}],"geoCityMappings":[{"country":"\u003cstring>","name":"\u003cstring>","provider_key":"\u003cstring>","canonical_id":"\u003cstring>","system":"\u003cstring>","system_version":"\u003cstring>","provider_country":"\u003cstring>","provider_name":"\u003cstring>","provider_canonical_id":"\u003cstring>"}],"delivery":{"impressions":123,"spend":123,"clicks":123},"creatives":[{"creativeId":"\u003cstring>","name":"\u003cstring>","formatId":{"id":"\u003cstring>","agent_url":"\u003cstring>"},"status":"\u003cstring>","sourceSyncStatus":[{"agentId":"\u003cstring>","sourceId":"\u003cstring>","approvalStatus":"\u003cstring>","rejectionReason":"\u003cstring>","status":"\u003cstring>","syncReason":"account_not_linked"}],"storefrontReviewStatus":"pending","held":{"owner":"seller","state":"pending_review"},"requiresClickUrl":true,"hasClickUrl":true,"clickUrl":"\u003cstring>"}]}],"optimizationGoals":[{"kind":"metric","metric":"clicks","standard":"mrc","vendor":{"domain":"\u003cstring>","brand_id":"\u003cstring>","countries":["\u003cstring>"],"industries":["\u003cstring>"],"data_subject_contestation":{},"brand_kit_override":{"logo":{"asset_type":"image","url":"\u003cstring>","width":4503599627370496,"height":4503599627370496,"file_size_bytes":4503599627370496,"pixel_ratio":1,"state_id":"\u003cstring>","breakpoint_id":"\u003cstring>","focal_point":[123],"format":"\u003cstring>","alt_text":"\u003cstring>","provenance":{"digital_source_type":"digital_capture","synthetic_depiction":true,"ai_tool":{"name":"\u003cstring>","version":"\u003cstring>","provider":"\u003cstring>"},"human_oversight":"none","declared_by":{"role":"creator","agent_url":"\u003cstring>"},"declared_at":"\u003cstring>","created_time":"\u003cstring>","c2pa":{"manifest_url":"\u003cstring>"},"embedded_provenance":[{"method":"manifest_wrapper","provider":"\u003cstring>","standard":"\u003cstring>","verify_agent":{"agent_url":"\u003cstring>","feature_id":"\u003cstring>"},"embedded_at":"\u003cstring>"}],"watermarks":[{"media_type":"audio","provider":"\u003cstring>","verify_agent":{"agent_url":"\u003cstring>","feature_id":"\u003cstring>"},"c2pa_action":"c2pa.watermarked.bound","embedded_at":"\u003cstring>"}],"disclosure":{"required":true,"jurisdictions":[{"country":"\u003cstring>","regulation":"\u003cstring>","region":"\u003cstring>","label_text":"\u003cstring>","render_guidance":{"persistence":"continuous","min_duration_ms":4503599627370496,"positions":["prominent"],"ext":{}}}]},"verification":[{"verified_by":"\u003cstring>","result":"authentic","verified_time":"\u003cstring>","confidence":0.5,"details_url":"\u003cstring>"}],"ext":{}}},"colors":{"primary":"\u003cstring>","secondary":"\u003cstring>","accent":"\u003cstring>"},"voice":"\u003cstring>","tagline":"\u003cstring>"}},"reach_unit":"individuals","target_frequency":{"window":{"interval":4503599627370496,"unit":"seconds"},"min":4503599627370496,"max":4503599627370496},"view_duration_seconds":1,"target":{"kind":"cost_per","value":1},"priority":4503599627370496}],"performance":{"impressions":123,"spend":123,"clicks":123,"views":123,"completedViews":123,"conversions":123,"leads":123,"lastUpdated":"2023-11-07T05:31:56Z","windowStart":"2023-12-25","windowEnd":"2023-12-25"},"creatives":[{"creativeId":"\u003cstring>","name":"\u003cstring>","formatId":{"id":"\u003cstring>","agent_url":"\u003cstring>"},"status":"\u003cstring>","sourceSyncStatus":[{"agentId":"\u003cstring>","sourceId":"\u003cstring>","approvalStatus":"\u003cstring>","rejectionReason":"\u003cstring>","status":"\u003cstring>","syncReason":"account_not_linked"}],"storefrontReviewStatus":"pending","held":{"owner":"seller","state":"pending_review"},"requiresClickUrl":true,"hasClickUrl":true,"clickUrl":"\u003cstring>"}]}],"dataDelivery":{"outputs":[{"outputConfigId":"\u003cstring>","dataDeliveryType":"MB_DELIVERY","cadence":"HOURLY","enabled":true,"credentialId":"\u003cstring>","credentialName":"\u003cstring>","deliveryConfig":{"type":"GCS","pathPrefix":"","format":"JSONL"},"source":"advertiser","createdAt":"\u003cstring>","updatedAt":"\u003cstring>","syncWeeklyDay":3}]},"frequencyCaps":[{"max_impressions":3,"window":{"interval":4503599627370496,"unit":"seconds"},"id":"12345","targetLevel":"ADVERTISER","targetId":"camp_abc123","createdAt":"\u003cstring>","updatedAt":"\u003cstring>","archivedAt":"\u003cstring>"}],"utmConfig":[{"paramKey":"utm_campaign","paramValue":"{CAMPAIGN_ID}","source":"advertiser"}],"creativeResync":{"creativeCount":3,"sellerCount":2}},"warnings":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"11d5d7ec-e337-49ae-90f3-17cc7e5e0b5d":{"description":"Content rejected by moderation policy. The `brief` or `name` matched a prompt-injection / jailbreak / hate-speech / CSAM / violence / misinformation pattern, or failed the business-context gate.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"string","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data","typeLabel":"enum\u003cstring> | null"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"field":{"description":"Field path associated with the error","type":"string","uniqueKey":"error.field","typeLabel":"string"},"details":{"description":"Additional error context","type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"additionalProperties":false,"description":"Structured error object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["data","error"],"additionalProperties":false,"description":"Standard error response","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"42ee8f67-9290-4462-ad35-d9f2c8dcce61":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"string","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data","typeLabel":"enum\u003cstring> | null"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"field":{"description":"Field path associated with the error","type":"string","uniqueKey":"error.field","typeLabel":"string"},"details":{"description":"Additional error context","type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"additionalProperties":false,"description":"Structured error object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["data","error"],"additionalProperties":false,"description":"Standard error response","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"},"9caaa444-f8c5-41e1-9341-17a2b44add1c":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"oneOf":[{"type":"string","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":[null],"isRequired":true,"uniqueKey":"data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data","typeLabel":"enum\u003cstring> | null"},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"field":{"description":"Field path associated with the error","type":"string","uniqueKey":"error.field","typeLabel":"string"},"details":{"description":"Additional error context","type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"error.details.additionalProperties","typeLabel":"any"},"uniqueKey":"error.details","typeLabel":"object"}},"required":["code","message"],"additionalProperties":false,"description":"Structured error object","isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["data","error"],"additionalProperties":false,"description":"Standard error response","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"\u003cstring>","message":"\u003cstring>","field":"\u003cstring>","details":{}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c46e9bc5-e19a-49fb-b7c8-3f1392de071c":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key or access token","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"79f891a6-2e76-48a5-99c9-7c181bc851d3":{"url":"https://api.apostra.com/api/v2/buyer","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key or access token","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key or access token","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"v2/buyer-api-v2.yaml"},"subdomain":"agentic2","siteName":"Apostra","title":"Create campaign - Apostra","navMaps":{"firstHrefInVersion":{"v2":{"href":"/v2/buyer-api-reference/campaigns/create-campaign","matchLevel":0},"v3":{"href":"/v3/overview","matchLevel":3}},"firstHrefInLanguage":{}},"lastModified":"2026-11-07T03:53:35.884Z","originalFileLocation":"v2/buyer-api-reference/campaigns/create-campaign.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Apostra\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create campaign - Apostra\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Apostra API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://agentic2.mintlify.site/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+campaign\u0026amp;description=Create+a+new+campaign.+Optional+fields+like+discoveryId+and+performanceConfig+can+be+provided+at+creation+or+set+later+via+update.+The+%60brief%60+and+%60name%60+fields\u0026amp;theme=c49c13ac1fe5edf0b8126688\u0026amp;signature=0e18eb94ea7f90d5c6c33df0c301d7f244ba1d6539bc9f8a03519ad943b14ffd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create campaign - Apostra\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://agentic2.mintlify.site/_mintlify/api/og/v2?division=Campaigns\u0026amp;title=Create+campaign\u0026amp;description=Create+a+new+campaign.+Optional+fields+like+discoveryId+and+performanceConfig+can+be+provided+at+creation+or+set+later+via+update.+The+%60brief%60+and+%60name%60+fields\u0026amp;theme=c49c13ac1fe5edf0b8126688\u0026amp;signature=0e18eb94ea7f90d5c6c33df0c301d7f244ba1d6539bc9f8a03519ad943b14ffd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/agentic2/sAZk5VwCxBRsiHGz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Apostra\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7513D4\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/buyer-api-reference/campaigns/create-campaign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.apostra.com/#organization\",\"name\":\"Apostra\",\"url\":\"https://docs.apostra.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/agentic2/A5rx0kFcKxq4RfQe/logo-apostra/apostra-black-purple-logo.svg?fit=max\u0026auto=format\u0026n=A5rx0kFcKxq4RfQe\u0026q=85\u0026s=d9788f7a39ebea19b202324e702d3178\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.apostra.com#website\",\"name\":\"Apostra\",\"url\":\"https://docs.apostra.com\",\"publisher\":{\"@id\":\"https://docs.apostra.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign#webpage\",\"url\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign\",\"name\":\"Create campaign\",\"description\":\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.\",\"dateModified\":\"2026-11-07T03:53:35.884Z\",\"isPartOf\":{\"@id\":\"https://docs.apostra.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Buyer API reference\",\"item\":\"https://docs.apostra.com/v2/buyer-api-reference\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Campaigns\",\"item\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/list-campaigns\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create campaign\",\"item\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign#apireference\",\"headline\":\"Create campaign\",\"name\":\"Create campaign\",\"description\":\"Create a new campaign. Optional fields like discoveryId and performanceConfig can be provided at creation or set later via update. The brief and name fields are screened by the content-moderation engine and rejected with 422 CONTENT_MODERATION_BLOCKED on policy violation.\",\"url\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign\",\"mainEntityOfPage\":{\"@id\":\"https://docs.apostra.com/v2/buyer-api-reference/campaigns/create-campaign#webpage\"},\"dateModified\":\"2026-11-07T03:53:35.884Z\",\"publisher\":{\"@id\":\"https://docs.apostra.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.apostra.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Apostra\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Apostra","nav":{"global":null,"tabs":[{"tab":"Manage ads","icon":"compass","pages":[{"title":"Manage ads","href":"/v3/manage-ads"}]},{"tab":"Build software","icon":"code","versions":[{"version":"v2","tag":"Compatibility","groups":[{"group":"Start building","icon":"rocket","pages":[{"title":"Build with Apostra","icon":"code","href":"/v2/build-with-apostra"},{"title":"Quick Start","icon":"rocket","href":"/v2/quickstart"},{"title":"Authentication","icon":"key","href":"/v2/authentication"},{"title":"Account Access \u0026 Signup","icon":"user-plus","href":"/v2/setup/account-access"},{"title":"Built for Agents","icon":"robot","href":"/v2/setup/built-for-agents"},{"title":"Manage buyer agents","icon":"robot","href":"/v2/setup/buyer-agent-credentials"},{"title":"Listing, Playbook, and AI Business Rules","sidebarTitle":"Seller pages","icon":"layer-group","href":"/v2/setup/seller-pages"},{"title":"Create a white-label ChatGPT app","sidebarTitle":"ChatGPT app setup","icon":"message-bot","href":"/v2/setup/chatgpt-app-setup"},{"title":"AI Agent Skills","icon":"robot","href":"/v2/skill"},{"title":"Single Sign-On (SSO)","icon":"lock","href":"/v2/setup/sso-setup"},{"title":"Move an assistant integration from Murph to Apostra","icon":"arrows-left-right","href":"/v2/setup/murph-to-apostra"},{"title":"Migrating from v1 to v2","icon":"arrow-up-right-from-square","href":"/v2/setup/migration-guide"}]},{"group":"Core Concepts","icon":"lightbulb","pages":[{"title":"Philosophy","icon":"compass","href":"/v2/concepts/philosophy"},{"title":"The storefront agent","sidebarTitle":"Storefront agent","icon":"user-tie","href":"/v2/concepts/storefront-agent"},{"title":"Agents","icon":"robot","href":"/v2/concepts/agents"},{"title":"Merchandising","sidebarTitle":"Merchandising","icon":"store","href":"/v2/concepts/merchandising"},{"title":"AI Business Rules","sidebarTitle":"AI Business Rules","icon":"scale-balanced","href":"/v2/concepts/ai-business-rules"},{"title":"Object Model","icon":"sitemap","href":"/v2/concepts/object-model"},{"title":"Asks","icon":"hand","href":"/v2/concepts/asks"},{"title":"Approving agent requests","icon":"shield-check","href":"/v2/concepts/web-approvals"},{"title":"Developer Glossary","sidebarTitle":"Glossary","icon":"book-open","href":"/v2/developer-reference/glossary"},{"title":"Which domain is which","icon":"signs-post","href":"/v2/concepts/domains"},{"title":"Inbound email addresses","icon":"inbox","href":"/v2/concepts/inbound-email-addresses"},{"title":"Identity documents","icon":"id-card","href":"/v2/concepts/identity-documents"},{"title":"Platform Accounts and Advertiser Mapping","icon":"sitemap","href":"/v2/concepts/ad-platform-accounts"},{"title":"Media buy lifecycle","icon":"diagram-project","href":"/v2/concepts/media-buy-lifecycle"},{"title":"Campaign readiness","icon":"circle-check","href":"/v2/concepts/campaign-readiness"},{"title":"Goal-seeking campaigns","icon":"bullseye","href":"/v2/concepts/goal-seeking-campaigns"},{"title":"The seller-history co-op","icon":"people-group","href":"/v2/concepts/seller-history-co-op"},{"title":"Cross-currency buying","sidebarTitle":"Cross-currency buying","icon":"money-bill-transfer","href":"/v2/concepts/cross-currency"},{"title":"How Apostra uses AdCP (buy side)","icon":"cart-shopping","href":"/v2/concepts/adcp-on-the-buy-side"},{"title":"AdCP versioning \u0026 negotiation","icon":"code-branch","href":"/v2/concepts/adcp-versioning"},{"title":"How AdCP thinks about video","icon":"film","href":"/v2/concepts/video-creatives"}]},{"group":"Buyer operations","icon":"user","pages":[{"group":"Advertisers","icon":"building","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Advertiser tasks","icon":"list-check","href":"/v2/buyer/advertisers/tasks/index"},{"title":"Create advertiser","icon":"plus","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/create-advertiser"},{"title":"Delete advertiser","icon":"trash","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/delete-advertiser"},{"title":"Execute catalog activation","icon":"play","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/execute-catalog-activation"},{"title":"Get advertiser","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/get-advertiser"},{"title":"List advertisers","icon":"list","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/list-advertisers"},{"title":"Open Advertisers","icon":"building","href":"/v2/buyer/advertisers/tasks/open-advertisers-page"},{"title":"List organization advertisers","icon":"building-user","href":"/v2/buyer/advertisers/tasks/list-organization-advertisers"},{"title":"Manage organization advertiser grants","icon":"user-shield","href":"/v2/buyer/advertisers/tasks/manage-organization-advertiser-grants"},{"title":"Read client access for an advertiser","icon":"user-group","href":"/v2/buyer/advertisers/tasks/read-advertiser-client-access"},{"title":"Invite and manage a client's access","icon":"user-plus","href":"/v2/buyer/advertisers/tasks/save-advertiser-client-access"},{"title":"List audiences","icon":"users","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/list-audiences"},{"title":"List available accounts","icon":"link","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/list-available-accounts"},{"title":"Manage provider accounts on an advertiser","icon":"plug","href":"/v2/buyer/advertisers/tasks/manage-provider-accounts"},{"title":"List catalogs","icon":"list-ul","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/list-catalogs"},{"title":"Preview catalog activation","icon":"eye","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/preview-catalog-activation"},{"title":"Refresh catalog","icon":"arrow-rotate-right","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/refresh-catalog"},{"title":"Revalidate data delivery credential","icon":"rotate","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/revalidate-data-delivery-credential"},{"title":"Save catalog transform","icon":"shuffle","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/save-catalog-transform"},{"title":"Sync audiences","icon":"users-gear","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/sync-audiences"},{"title":"Sync catalogs","icon":"arrows-rotate","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/sync-catalogs"},{"title":"Update account reporting bucket","icon":"bucket","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/update-account-reporting-bucket"},{"title":"Update advertiser","icon":"pen","tag":"Deprecated","href":"/v2/buyer/advertisers/tasks/update-advertiser"}]}]},{"group":"Campaigns","icon":"bullhorn","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Campaign tasks","icon":"list-check","href":"/v2/buyer/campaigns/tasks/index"},{"title":"Auto-select products","icon":"wand-magic-sparkles","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/auto-select-products"},{"title":"Create campaign","icon":"plus","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/create-campaign"},{"title":"Delete campaign","icon":"trash","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/delete-campaign"},{"title":"Execute campaign","icon":"rocket","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/execute-campaign"},{"title":"Get campaign products","icon":"boxes-stacked","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-campaign-products"},{"title":"Get media buy packages","icon":"boxes-stacked","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-media-buy-packages"},{"title":"List targeting dimensions","icon":"list","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/list-targeting-dimensions"},{"title":"List targeting dimension values","icon":"table-list","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/list-targeting-dimension-values"},{"title":"Resolve targeting dimension text","icon":"wand-magic-sparkles","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/resolve-targeting-dimension"},{"title":"List geo metros","icon":"map","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/list-geo-metros"},{"title":"Get campaign","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-campaign"},{"title":"Get campaign delivery","api":"GET /api/v2/buyer/campaigns/{campaignId}/delivery","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-campaign-delivery"},{"title":"Get campaign workspace","icon":"table-columns","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-campaign-workspace"},{"title":"Get tracked-campaign subscription","api":"GET /api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-directed-campaign-subscription"},{"title":"Get media buy status","icon":"signal-stream","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-media-buy-status"},{"title":"List campaigns","icon":"list","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/list-campaigns"},{"title":"Open Campaigns","icon":"bullhorn","href":"/v2/buyer/campaigns/tasks/open-campaigns-page"},{"title":"Open Review \u0026 go live","icon":"clipboard-check","href":"/v2/buyer/campaigns/tasks/open-campaign-receipt"},{"title":"List campaign suggestion sets","icon":"list-check","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/list-campaign-suggestion-sets"},{"title":"Get campaign suggestion set","icon":"magnifying-glass-dollar","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/get-campaign-suggestion-set"},{"title":"Approve campaign suggestion set","icon":"circle-check","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/approve-campaign-suggestion-set"},{"title":"Reject campaign suggestion set","icon":"circle-xmark","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/reject-campaign-suggestion-set"},{"title":"Pause campaign","icon":"pause","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/pause-campaign"},{"title":"Reactivate campaign","icon":"play","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/reactivate-campaign"},{"title":"Pause media buy","icon":"circle-pause","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/pause-media-buy"},{"title":"Reactivate media buy","icon":"circle-play","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/reactivate-media-buy"},{"title":"Subscribe tracked campaigns","api":"POST /api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscribe","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/subscribe-directed-campaigns"},{"title":"Unsubscribe tracked campaigns","api":"DELETE /api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/unsubscribe-directed-campaigns"},{"title":"Update campaign","icon":"pen","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/update-campaign"},{"title":"Update media buy","icon":"pen-to-square","tag":"Deprecated","href":"/v2/buyer/campaigns/tasks/update-media-buy"}]}]},{"group":"Product Discovery","icon":"magnifying-glass","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Product discovery tasks","icon":"list-check","href":"/v2/buyer/discovery/tasks/index"},{"title":"Add products","icon":"plus","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/add-products"},{"title":"Apply proposal","icon":"wand-magic-sparkles","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/apply-proposal"},{"title":"Create media buys from a product query","icon":"cart-shopping","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/create-media-buys"},{"title":"Browse products","icon":"layer-group","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/browse-products"},{"title":"Discover products","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/discover-products"},{"title":"Stream discovery events","icon":"tower-broadcast","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/events"},{"title":"Get products","icon":"list","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/get-products"},{"title":"Remove products","icon":"trash","tag":"Deprecated","href":"/v2/buyer/discovery/tasks/remove-products"}]}]},{"group":"Webhooks","icon":"webhook","pages":[{"title":"Webhooks","icon":"webhook","tag":"Deprecated","href":"/v2/buyer/webhooks/index"}]},{"group":"Creatives","icon":"image","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Creative tasks","icon":"list-check","href":"/v2/buyer/creatives/tasks/index"},{"title":"Start creative session","icon":"sparkles","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/start-creative-session"},{"title":"Manage advertiser creative collections","icon":"folder-tree","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/manage-advertiser-creative-collections"},{"title":"Adopt a managed audio source","icon":"waveform","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/adopt-managed-audio-source"},{"title":"Create advertiser creative master","icon":"layer-group","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/create-advertiser-creative-manifest"},{"title":"Create creative manifest","icon":"plus","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/create-creative-manifest"},{"title":"Detach creative from campaign","icon":"trash","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/delete-creative-manifest"},{"title":"Get creative manifest","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/get-creative-manifest"},{"title":"List creative manifests","icon":"list","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/list-creative-manifests"},{"title":"Update creative manifest","icon":"pen","tag":"Deprecated","href":"/v2/buyer/creatives/tasks/update-creative-manifest"}]}]},{"group":"Audiences \u0026 Inventory","icon":"users","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Property list tasks","icon":"list-check","href":"/v2/buyer/property-lists/tasks/index"},{"title":"Check property list","icon":"circle-check","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/check-property-list"},{"title":"Create property list","icon":"plus","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/create-property-list"},{"title":"Delete property list","icon":"trash","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/delete-property-list"},{"title":"Get check report","icon":"file-lines","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/get-check-report"},{"title":"Get property list","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/get-property-list"},{"title":"List property lists","icon":"list","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/list-property-lists"},{"title":"Update property list","icon":"pen","tag":"Deprecated","href":"/v2/buyer/property-lists/tasks/update-property-list"}]}]},{"group":"Measurement \u0026 Conversions","icon":"ruler","pages":[{"group":"Measurement Tasks","icon":"list-check","pages":[{"title":"Measurement tasks","icon":"list-check","href":"/v2/buyer/measurement/tasks/index"},{"title":"Create measurement source","icon":"plus","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/create-measurement-source"},{"title":"Create test cohort","icon":"plus","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/create-test-cohort"},{"title":"Delete test cohort","icon":"trash","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/delete-test-cohort"},{"title":"Get measurement config","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/get-measurement-config"},{"title":"Get measurement freshness","icon":"clock","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/get-measurement-freshness"},{"title":"Get measurement source","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/get-measurement-source"},{"title":"Get test cohort","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/get-test-cohort"},{"title":"List measurement records","icon":"list","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/list-measurement-records"},{"title":"List measurement sources","icon":"list","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/list-measurement-sources"},{"title":"List test cohorts","icon":"list","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/list-test-cohorts"},{"title":"Sync measurement data","icon":"arrows-rotate","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/sync-measurement-data"},{"title":"Update measurement config","icon":"pen","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/update-measurement-config"},{"title":"Update measurement source","icon":"pen","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/update-measurement-source"},{"title":"Update test cohort","icon":"pen","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/update-test-cohort"},{"title":"Upload context records","icon":"cloud","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/upload-context-records"},{"title":"Upload measurement records","icon":"upload","tag":"Deprecated","href":"/v2/buyer/measurement/tasks/upload-measurement-records"}]},{"group":"Conversions","icon":"bullseye","pages":[{"title":"Conversion API","icon":"chart-line-up","href":"/v2/integrations/conversion-api"},{"group":"Event Source Tasks","icon":"list-check","pages":[{"title":"Event source tasks","icon":"list-check","href":"/v2/buyer/event-sources/tasks/index"},{"title":"List event sources","icon":"list","tag":"Deprecated","href":"/v2/buyer/event-sources/tasks/list-event-sources"},{"title":"Log event","icon":"circle-dot","href":"/v2/buyer/event-sources/tasks/log-event"},{"title":"Sync event sources","icon":"arrows-rotate","tag":"Deprecated","href":"/v2/buyer/event-sources/tasks/sync-event-sources"}]}]}]},{"group":"Reporting \u0026 Activity","icon":"chart-bar","pages":[{"group":"Reporting Tasks","icon":"list-check","pages":[{"title":"Reporting tasks","icon":"list-check","href":"/v2/buyer/reporting/tasks/index"},{"title":"Get event summary","icon":"clock","tag":"Deprecated","href":"/v2/buyer/reporting/tasks/get-event-summary"},{"title":"Get reporting metrics","icon":"chart-line","tag":"Deprecated","href":"/v2/buyer/reporting/tasks/get-reporting-metrics"},{"title":"Get campaign seller scorecard","icon":"ranking-star","tag":"Deprecated","href":"/v2/buyer/reporting/tasks/get-campaign-seller-scorecard"}]}]},{"group":"Planning \u0026 Governance","icon":"clipboard-check","pages":[{"group":"Syndication","icon":"share-nodes","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Syndication tasks","icon":"list-check","href":"/v2/buyer/syndication/tasks/index"},{"title":"Get syndication status","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/syndication/tasks/get-syndication-status"},{"title":"Toggle syndication","icon":"toggle-on","tag":"Deprecated","href":"/v2/buyer/syndication/tasks/syndicate"}]}]},{"group":"Update Proposals","icon":"code-pull-request","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Update proposal tasks","icon":"list-check","href":"/v2/buyer/update-proposals/tasks/index"},{"title":"Cancel update proposal","icon":"ban","tag":"Deprecated","href":"/v2/buyer/update-proposals/tasks/cancel-update-proposal"},{"title":"Get update proposal","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/update-proposals/tasks/get-update-proposal"}]}]},{"group":"Moderation","icon":"shield-halved","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Moderation tasks","icon":"list-check","href":"/v2/buyer/moderation/tasks/index"},{"title":"Check moderation","icon":"shield-check","href":"/v2/buyer/moderation/tasks/check-moderation"}]}]}]},{"group":"Connections","icon":"store","pages":[{"group":"Storefronts (Buyer)","icon":"store","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Storefront tasks","icon":"list-check","href":"/v2/buyer/storefronts/tasks/index"},{"title":"Get storefront","icon":"magnifying-glass","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/get-storefront"},{"title":"Get storefront capabilities","icon":"signal","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/get-storefront-capabilities"},{"title":"Update selection override","icon":"toggle-on","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/update-selection-override"},{"title":"Update advertiser Seller preference","icon":"sliders","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/update-advertiser-activation-preference"},{"title":"Update billing policy","icon":"file-invoice-dollar","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/update-billing-policy"},{"title":"Approve direct billing","icon":"file-signature","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/accept-direct-billing"},{"title":"Set Enhanced Reporting","icon":"chart-line","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/set-enhanced-reporting"},{"title":"Connect an AdCP source","api":"POST /api/v2/buyer/storefronts/{storefrontId}/sources/{sourceId}/adcp-connection","icon":"link","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/connect-adcp-storefront"},{"title":"Open Media Partners","icon":"plug","href":"/v2/buyer/storefronts/tasks/open-connections-page"},{"title":"List account presences","api":"GET /api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/presences","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/list-account-presences"},{"title":"List credentials","icon":"key","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/list-credentials"},{"title":"Refresh provider accounts","icon":"arrows-rotate","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/refresh-provider-accounts"},{"title":"List storefronts","icon":"list","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/list-storefronts"},{"title":"Register source credentials","icon":"user-lock","tag":"Deprecated","href":"/v2/buyer/storefronts/tasks/register-source-credentials"}]}]}]},{"group":"Account \u0026 Billing","icon":"gear","pages":[{"group":"Account","icon":"id-card","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Account tasks","icon":"list-check","href":"/v2/buyer/account/tasks/index"},{"title":"Get current account","icon":"circle-user","href":"/v2/buyer/account/tasks/get-current-account"},{"title":"Get membership settings","icon":"users","href":"/v2/buyer/account/tasks/get-membership"},{"title":"Get notification preferences","icon":"bell","href":"/v2/buyer/account/tasks/get-notification-preferences"},{"title":"List accounts","icon":"list","href":"/v2/buyer/account/tasks/list-customer-accounts"},{"title":"Preview account archive","icon":"magnifying-glass","href":"/v2/buyer/account/tasks/preview-account-archive"},{"title":"Archive account","icon":"box-archive","href":"/v2/buyer/account/tasks/archive-account"},{"title":"Restore account","icon":"rotate-left","href":"/v2/buyer/account/tasks/unarchive-account"},{"title":"Update account domain","icon":"globe","href":"/v2/buyer/account/tasks/update-customer-domain"},{"title":"Verify operator domain","icon":"circle-check","tag":"Deprecated","href":"/v2/buyer/account/tasks/verify-operator-domain"},{"title":"Your organization's domain","icon":"globe","href":"/v2/buyer/account/tasks/organization-domains"},{"title":"Update membership settings","icon":"user-gear","href":"/v2/buyer/account/tasks/update-membership"},{"title":"Update notification preferences","icon":"bell-concierge","href":"/v2/buyer/account/tasks/update-notification-preferences"}]}]},{"group":"Billing","icon":"file-invoice-dollar","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Billing tasks","icon":"list-check","href":"/v2/buyer/billing/tasks/index"},{"title":"Get billing info","icon":"address-card","href":"/v2/buyer/billing/tasks/get-billing-info"},{"title":"Update billing info","icon":"pen-to-square","href":"/v2/buyer/billing/tasks/update-billing-info"},{"title":"Get billing account","icon":"file-invoice-dollar","href":"/v2/buyer/billing/tasks/get-billing-account"},{"title":"Get inherited billing stub","icon":"building-shield","href":"/v2/buyer/billing/tasks/get-inherited-billing-stub"},{"title":"Get invoice activity","icon":"receipt","href":"/v2/buyer/billing/tasks/get-invoice-activity"}]}]}]}]},{"group":"Seller operations","icon":"store","pages":[{"group":"Getting Started","icon":"rocket","pages":[{"group":"Core Tasks","icon":"list-check","pages":[{"title":"Storefront tasks","icon":"list-check","href":"/v2/storefront/tasks/index"},{"title":"Confirm Media Company identity","icon":"id-card","href":"/v2/storefront/tasks/confirm-media-company-identity"},{"title":"Discover agents","icon":"magnifying-glass","href":"/v2/storefront/tasks/discover-agents"},{"title":"Get readiness","icon":"circle-check","href":"/v2/storefront/tasks/get-readiness"},{"title":"Resolve brand","icon":"building","href":"/v2/storefront/tasks/resolve-brand"}]}]},{"group":"Operating Your Storefront","icon":"wand-magic-sparkles","pages":[{"group":"Playbook API","icon":"list-ol","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Operating instructions tasks","icon":"list-check","href":"/v2/storefront/operating-instructions/tasks/index"},{"title":"Activate version","icon":"toggle-on","href":"/v2/storefront/operating-instructions/tasks/activate-version"},{"title":"Create version","icon":"plus","href":"/v2/storefront/operating-instructions/tasks/create-version"},{"title":"Get active version","icon":"circle-check","href":"/v2/storefront/operating-instructions/tasks/get-active"}]}]}]},{"group":"Inventory Sources","icon":"server","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Inventory source tasks","icon":"list-check","href":"/v2/storefront/inventory-sources/tasks/index"},{"title":"Create inventory source","icon":"plus","href":"/v2/storefront/inventory-sources/tasks/create-inventory-source"},{"title":"Submit certification test setup (retired)","icon":"flask","href":"/v2/storefront/inventory-sources/tasks/submit-certification-fixture-setup"},{"title":"Create a modular source from a feed","icon":"table","href":"/v2/storefront/inventory-sources/tasks/create-feed-modular-source"},{"title":"Delete inventory source","icon":"trash","href":"/v2/storefront/inventory-sources/tasks/delete-inventory-source"},{"title":"Get inventory source","icon":"magnifying-glass","href":"/v2/storefront/inventory-sources/tasks/get-inventory-source"},{"title":"Get modular readiness","icon":"diagram-project","href":"/v2/storefront/inventory-sources/tasks/get-modular-readiness"},{"title":"List inventory sources","icon":"list","href":"/v2/storefront/inventory-sources/tasks/list-inventory-sources"},{"title":"Author property and tag mappings","icon":"diagram-project","href":"/v2/storefront/inventory-sources/tasks/import-mapping"},{"title":"Set FreeWheel execution currency","icon":"coins","href":"/v2/storefront/inventory-sources/tasks/set-execution-currency"},{"title":"Update inventory source","icon":"pen","href":"/v2/storefront/inventory-sources/tasks/update-inventory-source"},{"title":"Update module config","icon":"sliders","href":"/v2/storefront/inventory-sources/tasks/update-modular-module-config"}]}]},{"group":"Demand \u0026 Signals","icon":"signal","pages":[{"group":"Signals","icon":"satellite-dish","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Signal tasks","icon":"list-check","href":"/v2/storefront/signals/tasks/index"},{"title":"Create signal","icon":"plus","href":"/v2/storefront/signals/tasks/create-signal"},{"title":"Delete signal","icon":"trash","href":"/v2/storefront/signals/tasks/delete-signal"},{"title":"Get signal","icon":"magnifying-glass","href":"/v2/storefront/signals/tasks/get-signal"},{"title":"List signals","icon":"list","href":"/v2/storefront/signals/tasks/list-signals"},{"title":"Update signal","icon":"pen","href":"/v2/storefront/signals/tasks/update-signal"}]}]}]},{"group":"Proposals \u0026 Agents","icon":"handshake","pages":[{"group":"Agents","icon":"robot","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Agent tasks","icon":"list-check","href":"/v2/storefront/agents/tasks/index"},{"title":"Create an Agent","href":"/v2/storefront/agents/tasks/create-agent"},{"title":"List agents","icon":"list","href":"/v2/storefront/agents/tasks/list-agents"},{"title":"Run creative conformance","icon":"list-check","href":"/v2/storefront/agents/tasks/run-creative-conformance"}]}]}]},{"group":"Buyer Routing","icon":"route","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Buyer routing tasks","icon":"list-check","href":"/v2/storefront/buyer-routing/tasks/index"},{"title":"Ensure GAM advertiser","icon":"plus","href":"/v2/storefront/buyer-routing/tasks/ensure-gam-advertiser"},{"title":"List buyer mappings","icon":"table-list","href":"/v2/storefront/buyer-routing/tasks/list-buyer-mappings"},{"title":"List GAM advertisers","icon":"list","href":"/v2/storefront/buyer-routing/tasks/list-gam-advertisers"},{"title":"Set default advertiser","icon":"star","href":"/v2/storefront/buyer-routing/tasks/set-default-advertiser"}]}]},{"group":"Analytics \u0026 Activity","icon":"chart-line","pages":[{"group":"Intelligence Runs","icon":"brain","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Get seller decision record","icon":"clipboard-check","href":"/v2/storefront/intelligence-runs/tasks/get-seller-decision-record"}]}]},{"group":"Activity \u0026 Reporting","icon":"chart-simple","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Activity \u0026 reporting tasks","icon":"list-check","href":"/v2/storefront/activity/tasks/index"},{"title":"Check moderation","icon":"shield-check","href":"/v2/storefront/activity/tasks/check-moderation"},{"title":"Get reporting metrics","icon":"chart-column","href":"/v2/storefront/activity/tasks/get-reporting-metrics"},{"title":"List activity","icon":"clock-rotate-left","href":"/v2/storefront/activity/tasks/list-activity"}]}]}]},{"group":"Billing","icon":"file-invoice-dollar","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Billing tasks","icon":"list-check","href":"/v2/storefront/billing/tasks/index"},{"title":"Get billing config","icon":"gear","href":"/v2/storefront/billing/tasks/get-billing-config"},{"title":"Get payout activity","icon":"money-bill-transfer","href":"/v2/storefront/billing/tasks/get-payout-activity"},{"title":"List billing accounts","icon":"sitemap","href":"/v2/storefront/billing/tasks/list-billing-accounts"},{"title":"List payout payees","icon":"list","href":"/v2/storefront/billing/tasks/list-payout-payees"},{"title":"Set payout details","icon":"building-columns","href":"/v2/storefront/billing/tasks/set-payout-details"},{"title":"Set payout payee","icon":"building","href":"/v2/storefront/billing/tasks/set-payout-payee"},{"title":"Update billing config","icon":"sliders","href":"/v2/storefront/billing/tasks/update-billing-config"}]}]},{"group":"Account","icon":"id-card","pages":[{"group":"Task Reference","icon":"list-check","pages":[{"title":"Account tasks","icon":"list-check","href":"/v2/storefront/account/tasks/index"},{"title":"Get current account","icon":"id-card","href":"/v2/storefront/account/tasks/get-current-account"},{"title":"Get membership","icon":"users","href":"/v2/storefront/account/tasks/get-membership"},{"title":"Get notification preferences","icon":"bell","href":"/v2/storefront/account/tasks/get-notification-preferences"},{"title":"List accounts","icon":"list","href":"/v2/storefront/account/tasks/list-customer-accounts"},{"title":"Preview account archive","icon":"magnifying-glass","href":"/v2/storefront/account/tasks/preview-account-archive"},{"title":"Archive account","icon":"box-archive","href":"/v2/storefront/account/tasks/archive-account"},{"title":"Restore account","icon":"rotate-left","href":"/v2/storefront/account/tasks/unarchive-account"},{"title":"Update account domain","icon":"globe","href":"/v2/storefront/account/tasks/update-customer-domain"},{"title":"Update membership","icon":"user-gear","href":"/v2/storefront/account/tasks/update-membership"},{"title":"Update notification preferences","icon":"bell-on","href":"/v2/storefront/account/tasks/update-notification-preferences"}]}]}]},{"group":"Cross-Cutting Reference","icon":"book-bookmark","pages":[{"title":"Errors","icon":"circle-exclamation","href":"/v2/reference/errors"},{"title":"Rate Limits","icon":"gauge-high","href":"/v2/reference/rate-limits"},{"title":"Agent fax lines","icon":"fax","href":"/v2/reference/agent-fax"},{"title":"Agent SMS lines","icon":"message","href":"/v2/reference/agent-sms"},{"title":"Agent RCS messages","icon":"message","href":"/v2/reference/agent-rcs"},{"title":"Agent voice lines","icon":"phone","href":"/v2/reference/agent-voice"},{"title":"Public callback URL requirements","icon":"webhook","href":"/v2/reference/public-callback-url-requirements"},{"title":"MCP App HTML","icon":"window","href":"/v2/reference/mcp-apps"},{"title":"Create a white-label ChatGPT app","sidebarTitle":"White-label ChatGPT app","icon":"comments","href":"/v2/reference/white-label-chatgpt-app"},{"title":"Connect Apostra to Microsoft Copilot Studio","sidebarTitle":"Copilot Studio","icon":"microsoft","href":"/v2/reference/connect-copilot-studio"},{"title":"Connect Apostra to Gemini Enterprise","sidebarTitle":"Gemini Enterprise","icon":"sparkles","href":"/v2/reference/connect-gemini-enterprise"},{"title":"Pagination","icon":"list-ol","href":"/v2/reference/pagination"},{"title":"Tasks","icon":"list-check","href":"/v2/guides/tasks"},{"title":"Diagnose Stuck Media Buys","sidebarTitle":"Diagnose stuck media buys","icon":"stethoscope","href":"/v2/developer-reference/diagnosing-stuck-media-buys"}]},{"group":"Buyer API reference","pages":[{"title":"Buyer API Reference","icon":"code","tag":"Deprecated","href":"/v2/buyer-api-reference"},{"group":"Signup","pages":[{"title":"Request buyer access","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /auth/buyer-signup-intake","href":"/v2/buyer-api-reference/signup/request-buyer-access"}]},{"group":"Advertisers","pages":[{"title":"List advertisers","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers","href":"/v2/buyer-api-reference/advertisers/list-advertisers"},{"title":"Create advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers","href":"/v2/buyer-api-reference/advertisers/create-advertiser"},{"title":"List organization advertisers","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /organization/advertisers","href":"/v2/buyer-api-reference/advertisers/list-organization-advertisers"},{"title":"Create an organization advertiser lifecycle","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /organization/advertisers","href":"/v2/buyer-api-reference/advertisers/create-an-organization-advertiser-lifecycle"},{"title":"Claim an exact-recipient advertiser invitation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertiser-invitations/claim","href":"/v2/buyer-api-reference/advertisers/claim-an-exact-recipient-advertiser-invitation"},{"title":"List organization advertiser grants","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /organization/advertiser-grants","href":"/v2/buyer-api-reference/advertisers/list-organization-advertiser-grants"},{"title":"Invite an organization to advertiser access","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /organization/advertiser-grants","href":"/v2/buyer-api-reference/advertisers/invite-an-organization-to-advertiser-access"},{"title":"Get an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /organization/advertiser-grants/{grantRef}","href":"/v2/buyer-api-reference/advertisers/get-an-organization-advertiser-grant"},{"title":"Accept an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /organization/advertiser-grants/{grantRef}/accept","href":"/v2/buyer-api-reference/advertisers/accept-an-organization-advertiser-grant"},{"title":"Reject an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /organization/advertiser-grants/{grantRef}/reject","href":"/v2/buyer-api-reference/advertisers/reject-an-organization-advertiser-grant"},{"title":"Revoke an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /organization/advertiser-grants/{grantRef}/revoke","href":"/v2/buyer-api-reference/advertisers/revoke-an-organization-advertiser-grant"},{"title":"List all advertisers home","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /all-advertisers-home","href":"/v2/buyer-api-reference/advertisers/list-all-advertisers-home"},{"title":"Get advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}","href":"/v2/buyer-api-reference/advertisers/get-advertiser"},{"title":"Update advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}","href":"/v2/buyer-api-reference/advertisers/update-advertiser"},{"title":"Delete advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}","href":"/v2/buyer-api-reference/advertisers/delete-advertiser"},{"title":"Restore advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/restore","href":"/v2/buyer-api-reference/advertisers/restore-advertiser"},{"title":"Get advertiser tracking configuration","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/tracking-config","href":"/v2/buyer-api-reference/advertisers/get-advertiser-tracking-configuration"},{"title":"Update advertiser tracking configuration","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/tracking-config","href":"/v2/buyer-api-reference/advertisers/update-advertiser-tracking-configuration"},{"title":"Revalidate data delivery credential","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/data-delivery-credentials/{name}/validate","href":"/v2/buyer-api-reference/advertisers/revalidate-data-delivery-credential"},{"title":"List advertiser accounts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/accounts","href":"/v2/buyer-api-reference/advertisers/list-advertiser-accounts"},{"title":"Assign account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/accounts","href":"/v2/buyer-api-reference/advertisers/assign-account"},{"title":"Get advertiser account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/accounts/{accountId}","href":"/v2/buyer-api-reference/advertisers/get-advertiser-account"},{"title":"List available accounts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/accounts/available","href":"/v2/buyer-api-reference/advertisers/list-available-accounts"},{"title":"Unmap a partner account from an advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/accounts/{linkId}","href":"/v2/buyer-api-reference/advertisers/unmap-a-partner-account-from-an-advertiser"},{"title":"Update account reporting bucket","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/accounts/{linkId}/reporting-bucket","href":"/v2/buyer-api-reference/advertisers/update-account-reporting-bucket"},{"title":"List catalogs","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/catalogs","href":"/v2/buyer-api-reference/advertisers/list-catalogs"},{"title":"Sync catalogs","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/catalogs/sync","href":"/v2/buyer-api-reference/advertisers/sync-catalogs"},{"title":"Save catalog transform","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/catalogs/{catalogId}/transform","href":"/v2/buyer-api-reference/advertisers/save-catalog-transform"},{"title":"Preview catalog activation plan","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/catalogs/{catalogId}/activation-plan/preview","href":"/v2/buyer-api-reference/advertisers/preview-catalog-activation-plan"},{"title":"Refresh catalog","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/catalogs/{catalogId}/refresh","href":"/v2/buyer-api-reference/advertisers/refresh-catalog"},{"title":"Execute catalog activation plan","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/catalogs/{catalogId}/activation-plan/execute","href":"/v2/buyer-api-reference/advertisers/execute-catalog-activation-plan"},{"title":"Sync audiences","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{accountId}/audiences/sync","href":"/v2/buyer-api-reference/advertisers/sync-audiences"},{"title":"List audiences","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{accountId}/audiences","href":"/v2/buyer-api-reference/advertisers/list-audiences"}]},{"group":"Brands","pages":[{"title":"Resolve a brand profile","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /brands/resolve","href":"/v2/buyer-api-reference/brands/resolve-a-brand-profile"}]},{"group":"Buyer Storefront Accounts","pages":[{"title":"Declare sandbox buyer account linkages on a MANAGED storefront","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefront-accounts/sync","href":"/v2/buyer-api-reference/buyer-storefront-accounts/declare-sandbox-buyer-account-linkages-on-a-managed-storefront"},{"title":"List the caller's storefront-account grants","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-accounts","href":"/v2/buyer-api-reference/buyer-storefront-accounts/list-the-callers-storefront-account-grants"}]},{"group":"Buyer Agent Principals","pages":[{"title":"List the organization's Interchange principals","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /buyer-agent-principals","href":"/v2/buyer-api-reference/buyer-agent-principals/list-the-organizations-interchange-principals"},{"title":"Register an existing credential as a buyer agent","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals","href":"/v2/buyer-api-reference/buyer-agent-principals/register-an-existing-credential-as-a-buyer-agent"},{"title":"Replace exact advertiser access for a buyer agent","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /buyer-agent-principals/{principalId}/access","href":"/v2/buyer-api-reference/buyer-agent-principals/replace-exact-advertiser-access-for-a-buyer-agent"},{"title":"List a buyer agent’s active channel bindings","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /buyer-agent-principals/{principalId}/channel-bindings","href":"/v2/buyer-api-reference/buyer-agent-principals/list-a-buyer-agent’s-active-channel-bindings"},{"title":"Bind a Slack channel to a buyer agent","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/channel-bindings","href":"/v2/buyer-api-reference/buyer-agent-principals/bind-a-slack-channel-to-a-buyer-agent"},{"title":"Revoke a buyer agent channel binding","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /buyer-agent-principals/{principalId}/channel-bindings/{bindingId}","href":"/v2/buyer-api-reference/buyer-agent-principals/revoke-a-buyer-agent-channel-binding"},{"title":"List named seller-account connections for a buyer agent","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /buyer-agent-principals/{principalId}/administration-contexts","href":"/v2/buyer-api-reference/buyer-agent-principals/list-named-seller-account-connections-for-a-buyer-agent"},{"title":"Inspect buyer-agent configuration and readiness","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /buyer-agent-principals/{principalId}/administration","href":"/v2/buyer-api-reference/buyer-agent-principals/inspect-buyer-agent-configuration-and-readiness"},{"title":"Apply a confirmed buyer-agent configuration control","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/controls","href":"/v2/buyer-api-reference/buyer-agent-principals/apply-a-confirmed-buyer-agent-configuration-control"},{"title":"Test one buyer-agent webhook endpoint","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/notification-subscriptions/{subscriberId}/test","href":"/v2/buyer-api-reference/buyer-agent-principals/test-one-buyer-agent-webhook-endpoint"},{"title":"Pause or retire a buyer agent","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/lifecycle-controls","href":"/v2/buyer-api-reference/buyer-agent-principals/pause-or-retire-a-buyer-agent"},{"title":"Provision a hosted buyer-agent runtime-token binding","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/runtime-token/binding","href":"/v2/buyer-api-reference/buyer-agent-principals/provision-a-hosted-buyer-agent-runtime-token-binding"},{"title":"Mint a short-lived hosted buyer-agent runtime token","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/runtime-token","href":"/v2/buyer-api-reference/buyer-agent-principals/mint-a-short-lived-hosted-buyer-agent-runtime-token"},{"title":"Refresh a hosted buyer-agent runtime token","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/{principalId}/runtime-token/refresh","href":"/v2/buyer-api-reference/buyer-agent-principals/refresh-a-hosted-buyer-agent-runtime-token"},{"title":"Issue an identity-only buyer-agent credential","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/issue","href":"/v2/buyer-api-reference/buyer-agent-principals/issue-an-identity-only-buyer-agent-credential"},{"title":"Rotate a buyer-agent API-key credential","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/rotate","href":"/v2/buyer-api-reference/buyer-agent-principals/rotate-a-buyer-agent-api-key-credential"},{"title":"Revoke a buyer-agent credential","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /buyer-agent-principals/revoke","href":"/v2/buyer-api-reference/buyer-agent-principals/revoke-a-buyer-agent-credential"}]},{"group":"Creatives","pages":[{"title":"Get creative dashboard URL","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /creative-dashboard-url","href":"/v2/buyer-api-reference/creatives/get-creative-dashboard-url"},{"title":"Adopt a managed video source into a creative","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /creatives/adopt-managed-video-source","href":"/v2/buyer-api-reference/creatives/adopt-a-managed-video-source-into-a-creative"},{"title":"Adopt a managed audio source into a creative","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /creatives/adopt-managed-audio-source","href":"/v2/buyer-api-reference/creatives/adopt-a-managed-audio-source-into-a-creative"},{"title":"Create creative manifest","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/create","href":"/v2/buyer-api-reference/creatives/create-creative-manifest"},{"title":"List creative templates","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creatives/templates","href":"/v2/buyer-api-reference/creatives/list-creative-templates"},{"title":"List creative manifests","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creativeManifest","href":"/v2/buyer-api-reference/creatives/list-creative-manifests"},{"title":"List creatives","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creatives","href":"/v2/buyer-api-reference/creatives/list-creatives"},{"title":"Bulk update creatives","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/bulk-update","href":"/v2/buyer-api-reference/creatives/bulk-update-creatives"},{"title":"Sync campaign creatives","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/sync","href":"/v2/buyer-api-reference/creatives/sync-campaign-creatives"},{"title":"Create advertiser creative master","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creatives/create","href":"/v2/buyer-api-reference/creatives/create-advertiser-creative-master"},{"title":"List advertiser creative library","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/creatives","href":"/v2/buyer-api-reference/creatives/list-advertiser-creative-library"},{"title":"Promote advertiser creatives into the library shelf","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creatives/save-to-library","href":"/v2/buyer-api-reference/creatives/promote-advertiser-creatives-into-the-library-shelf"},{"title":"Stash brought creatives before an advertiser is chosen","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /creatives/stash","href":"/v2/buyer-api-reference/creatives/stash-brought-creatives-before-an-advertiser-is-chosen"},{"title":"Preview a creative tag sheet","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /creatives/tag-sheet-preview","href":"/v2/buyer-api-reference/creatives/preview-a-creative-tag-sheet"},{"title":"Open the creative-intent picker for an advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creative-intent","href":"/v2/buyer-api-reference/creatives/open-the-creative-intent-picker-for-an-advertiser"},{"title":"Get creative-confirmation card for a campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creative-confirmation","href":"/v2/buyer-api-reference/creatives/get-creative-confirmation-card-for-a-campaign"},{"title":"Attach brought creatives to a campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-confirmation","href":"/v2/buyer-api-reference/creatives/attach-brought-creatives-to-a-campaign"},{"title":"Reassign a brought creative to a different placement","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/{creativeId}/placement","href":"/v2/buyer-api-reference/creatives/reassign-a-brought-creative-to-a-different-placement"},{"title":"Batch-reassign brought creatives to placements","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/placements","href":"/v2/buyer-api-reference/creatives/batch-reassign-brought-creatives-to-placements"},{"title":"Assign creative to campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creatives/{creativeId}/campaigns","href":"/v2/buyer-api-reference/creatives/assign-creative-to-campaign"},{"title":"Unassign creative from campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/creatives/{creativeId}/campaigns/{campaignId}","href":"/v2/buyer-api-reference/creatives/unassign-creative-from-campaign"},{"title":"Archive creative globally","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/creatives/{creativeId}","href":"/v2/buyer-api-reference/creatives/archive-creative-globally"},{"title":"List creative collections","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creative-collections","href":"/v2/buyer-api-reference/creatives/list-creative-collections"},{"title":"Create creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-collections","href":"/v2/buyer-api-reference/creatives/create-creative-collection"},{"title":"Get creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creative-collections/{collectionId}","href":"/v2/buyer-api-reference/creatives/get-creative-collection"},{"title":"Update creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /campaigns/{campaignId}/creative-collections/{collectionId}","href":"/v2/buyer-api-reference/creatives/update-creative-collection"},{"title":"Add creative collection members","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-collections/{collectionId}/members","href":"/v2/buyer-api-reference/creatives/add-creative-collection-members"},{"title":"Remove creative collection members","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /campaigns/{campaignId}/creative-collections/{collectionId}/members","href":"/v2/buyer-api-reference/creatives/remove-creative-collection-members"},{"title":"Attach creative collection to campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-collections/{collectionId}/attach","href":"/v2/buyer-api-reference/creatives/attach-creative-collection-to-campaign"},{"title":"List advertiser creative collections","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/creative-collections","href":"/v2/buyer-api-reference/creatives/list-advertiser-creative-collections"},{"title":"Create advertiser creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creative-collections","href":"/v2/buyer-api-reference/creatives/create-advertiser-creative-collection"},{"title":"Get advertiser creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/creative-collections/{collectionId}","href":"/v2/buyer-api-reference/creatives/get-advertiser-creative-collection"},{"title":"Update advertiser creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/creative-collections/{collectionId}","href":"/v2/buyer-api-reference/creatives/update-advertiser-creative-collection"},{"title":"Archive advertiser creative collection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/creative-collections/{collectionId}","href":"/v2/buyer-api-reference/creatives/archive-advertiser-creative-collection"},{"title":"Add advertiser creative collection members","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/creative-collections/{collectionId}/members","href":"/v2/buyer-api-reference/creatives/add-advertiser-creative-collection-members"},{"title":"Remove advertiser creative collection members","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/creative-collections/{collectionId}/members","href":"/v2/buyer-api-reference/creatives/remove-advertiser-creative-collection-members"},{"title":"Get creative manifest","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creatives/{creativeId}","href":"/v2/buyer-api-reference/creatives/get-creative-manifest"},{"title":"Update creative manifest","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /campaigns/{campaignId}/creatives/{creativeId}","href":"/v2/buyer-api-reference/creatives/update-creative-manifest"},{"title":"Delete creative manifest","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /campaigns/{campaignId}/creatives/{creativeId}","href":"/v2/buyer-api-reference/creatives/delete-creative-manifest"},{"title":"Preview creative","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/{creativeId}/preview","href":"/v2/buyer-api-reference/creatives/preview-creative"},{"title":"Duplicate creative","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creatives/{creativeId}/duplicate","href":"/v2/buyer-api-reference/creatives/duplicate-creative"},{"title":"Start creative session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-sessions","href":"/v2/buyer-api-reference/creatives/start-creative-session"},{"title":"Get creative session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creative-sessions/{sessionId}","href":"/v2/buyer-api-reference/creatives/get-creative-session"},{"title":"Evaluate creative session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-sessions/{sessionId}/evaluate","href":"/v2/buyer-api-reference/creatives/evaluate-creative-session"},{"title":"Finalize creative session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/creative-sessions/{sessionId}/finalize","href":"/v2/buyer-api-reference/creatives/finalize-creative-session"},{"title":"Get creative references","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/creative-references","href":"/v2/buyer-api-reference/creatives/get-creative-references"},{"title":"Publish a rendition as VAST","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/video-renditions/{jobUid}/vast-publications","href":"/v2/buyer-api-reference/creatives/publish-a-rendition-as-vast"},{"title":"Revoke a rendition VAST publication","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/rendition-vast-publications/{publicationUid}/revoke","href":"/v2/buyer-api-reference/creatives/revoke-a-rendition-vast-publication"}]},{"group":"Product Discovery","pages":[{"title":"Get products across storefronts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /products/query","href":"/v2/buyer-api-reference/product-discovery/get-products-across-storefronts"},{"title":"Stage or execute products across storefronts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /media-buys/batch","href":"/v2/buyer-api-reference/product-discovery/stage-or-execute-products-across-storefronts"},{"title":"Discover products","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /discovery/discover-products","href":"/v2/buyer-api-reference/product-discovery/discover-products"},{"title":"Browse products for discovery session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /discovery/{discoveryId}/discover-products","href":"/v2/buyer-api-reference/product-discovery/browse-products-for-discovery-session"},{"title":"Get product details","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /discovery/{discoveryId}/products/{productId}/details","href":"/v2/buyer-api-reference/product-discovery/get-product-details"},{"title":"Get selected products","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /discovery/{discoveryId}/products","href":"/v2/buyer-api-reference/product-discovery/get-selected-products"},{"title":"Add products to selection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /discovery/{discoveryId}/products","href":"/v2/buyer-api-reference/product-discovery/add-products-to-selection"},{"title":"Remove products from selection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /discovery/{discoveryId}/products","href":"/v2/buyer-api-reference/product-discovery/remove-products-from-selection"},{"title":"Apply a proposal","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /discovery/{discoveryId}/apply-proposal","href":"/v2/buyer-api-reference/product-discovery/apply-a-proposal"}]},{"group":"Webhook Subscriptions","pages":[{"title":"List webhook subscriptions","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /webhook-subscriptions","href":"/v2/buyer-api-reference/webhook-subscriptions/list-webhook-subscriptions"},{"title":"Register a webhook subscription","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /webhook-subscriptions","href":"/v2/buyer-api-reference/webhook-subscriptions/register-a-webhook-subscription"},{"title":"Delete a webhook subscription","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /webhook-subscriptions/{id}","href":"/v2/buyer-api-reference/webhook-subscriptions/delete-a-webhook-subscription"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","description":"List campaigns with optional filtering by advertiser and status.","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns","href":"/v2/buyer-api-reference/campaigns/list-campaigns"},{"title":"Create campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns","href":"/v2/buyer-api-reference/campaigns/create-campaign"},{"title":"Get campaign","description":"Get detailed information about a specific campaign.","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}","href":"/v2/buyer-api-reference/campaigns/get-campaign"},{"title":"Update campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /campaigns/{campaignId}","href":"/v2/buyer-api-reference/campaigns/update-campaign"},{"title":"Delete campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /campaigns/{campaignId}","href":"/v2/buyer-api-reference/campaigns/delete-campaign"},{"title":"Get campaign workspace","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/workspace","href":"/v2/buyer-api-reference/campaigns/get-campaign-workspace"},{"title":"Get effective campaign tracking configuration","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/tracking-config","href":"/v2/buyer-api-reference/campaigns/get-effective-campaign-tracking-configuration"},{"title":"Update campaign tracker additions and overrides","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /campaigns/{campaignId}/tracking-config","href":"/v2/buyer-api-reference/campaigns/update-campaign-tracker-additions-and-overrides"},{"title":"Get campaign delivery","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/delivery","href":"/v2/buyer-api-reference/campaigns/get-campaign-delivery"},{"title":"Execute campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/execute","href":"/v2/buyer-api-reference/campaigns/execute-campaign"},{"title":"Pause campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/pause","href":"/v2/buyer-api-reference/campaigns/pause-campaign"},{"title":"Reactivate campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/reactivate","href":"/v2/buyer-api-reference/campaigns/reactivate-campaign"},{"title":"Auto-select products","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/auto-select-products","href":"/v2/buyer-api-reference/campaigns/auto-select-products"},{"title":"Get media buy ADCP status","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/media-buy-status","href":"/v2/buyer-api-reference/campaigns/get-media-buy-adcp-status"},{"title":"Get campaign seller scorecard","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/seller-scorecard","href":"/v2/buyer-api-reference/campaigns/get-campaign-seller-scorecard"},{"title":"Get media buy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /media-buys/{mediaBuyId}","href":"/v2/buyer-api-reference/campaigns/get-media-buy"},{"title":"Update media buy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /media-buys/{mediaBuyId}","href":"/v2/buyer-api-reference/campaigns/update-media-buy"},{"title":"List media buy packages","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /media-buys/{mediaBuyId}/packages","href":"/v2/buyer-api-reference/campaigns/list-media-buy-packages"},{"title":"Pause media buy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /media-buys/{mediaBuyId}/pause","href":"/v2/buyer-api-reference/campaigns/pause-media-buy"},{"title":"Reactivate media buy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /media-buys/{mediaBuyId}/reactivate","href":"/v2/buyer-api-reference/campaigns/reactivate-media-buy"},{"title":"Get campaign products","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/products","href":"/v2/buyer-api-reference/campaigns/get-campaign-products"},{"title":"List targeting dimensions","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /targeting/dimensions","href":"/v2/buyer-api-reference/campaigns/list-targeting-dimensions"},{"title":"List targeting dimension values","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /targeting/dimensions/{system}","href":"/v2/buyer-api-reference/campaigns/list-targeting-dimension-values"},{"title":"Resolve targeting dimension text","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /targeting/dimensions/{system}/resolve","href":"/v2/buyer-api-reference/campaigns/resolve-targeting-dimension-text"},{"title":"List geo metros","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /targeting/geo-metros","href":"/v2/buyer-api-reference/campaigns/list-geo-metros"}]},{"group":"Audit Logs","pages":[{"title":"List buyer audit logs","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /audit-logs","href":"/v2/buyer-api-reference/audit-logs/list-buyer-audit-logs"}]},{"group":"Activity","pages":[{"title":"List API calls","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /activity/calls","href":"/v2/buyer-api-reference/activity/list-api-calls"},{"title":"Get API call detail","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /activity/calls/{activityUid}","href":"/v2/buyer-api-reference/activity/get-api-call-detail"}]},{"group":"Event Sources","pages":[{"title":"List event sources","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/event-sources","href":"/v2/buyer-api-reference/event-sources/list-event-sources"},{"title":"Sync event sources","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/event-sources/sync","href":"/v2/buyer-api-reference/event-sources/sync-event-sources"},{"title":"Log conversion events","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/log-event","href":"/v2/buyer-api-reference/event-sources/log-conversion-events"}]},{"group":"Reporting","pages":[{"title":"Get event summary","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/events/summary","href":"/v2/buyer-api-reference/reporting/get-event-summary"},{"title":"Get reporting","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /reporting/metrics","href":"/v2/buyer-api-reference/reporting/get-reporting"}]},{"group":"Measurement","pages":[{"title":"Sync measurement data","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/measurement-data/sync","href":"/v2/buyer-api-reference/measurement/sync-measurement-data"},{"title":"List test cohorts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/test-cohorts","href":"/v2/buyer-api-reference/measurement/list-test-cohorts"},{"title":"Create test cohort","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/test-cohorts","href":"/v2/buyer-api-reference/measurement/create-test-cohort"},{"title":"Get test cohort","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/test-cohorts/{cohortId}","href":"/v2/buyer-api-reference/measurement/get-test-cohort"},{"title":"Update test cohort","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/test-cohorts/{cohortId}","href":"/v2/buyer-api-reference/measurement/update-test-cohort"},{"title":"Delete test cohort","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/test-cohorts/{cohortId}","href":"/v2/buyer-api-reference/measurement/delete-test-cohort"},{"title":"Get measurement configuration","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/measurement-config","href":"/v2/buyer-api-reference/measurement/get-measurement-configuration"},{"title":"Update measurement configuration","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/measurement-config","href":"/v2/buyer-api-reference/measurement/update-measurement-configuration"},{"title":"List measurement sources","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/measurement-sources","href":"/v2/buyer-api-reference/measurement/list-measurement-sources"},{"title":"Create measurement source","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/measurement-sources","href":"/v2/buyer-api-reference/measurement/create-measurement-source"},{"title":"Get measurement source","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/measurement-sources/{sourceId}","href":"/v2/buyer-api-reference/measurement/get-measurement-source"},{"title":"Update measurement source","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /advertisers/{advertiserId}/measurement-sources/{sourceId}","href":"/v2/buyer-api-reference/measurement/update-measurement-source"},{"title":"List measurement records","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/measurement-records","href":"/v2/buyer-api-reference/measurement/list-measurement-records"},{"title":"Upload measurement records","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/measurement-records","href":"/v2/buyer-api-reference/measurement/upload-measurement-records"},{"title":"Upload context records","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/context-records","href":"/v2/buyer-api-reference/measurement/upload-context-records"},{"title":"Check measurement freshness","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/measurement-freshness","href":"/v2/buyer-api-reference/measurement/check-measurement-freshness"}]},{"group":"Optimization Suggestions","pages":[{"title":"List optimization suggestions","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /optimization-suggestions","href":"/v2/buyer-api-reference/optimization-suggestions/list-optimization-suggestions"},{"title":"Get optimization suggestion","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /optimization-suggestions/{suggestionId}","href":"/v2/buyer-api-reference/optimization-suggestions/get-optimization-suggestion"},{"title":"Approve optimization suggestion","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /optimization-suggestions/{suggestionId}/approve","href":"/v2/buyer-api-reference/optimization-suggestions/approve-optimization-suggestion"},{"title":"Reject optimization suggestion","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /optimization-suggestions/{suggestionId}/reject","href":"/v2/buyer-api-reference/optimization-suggestions/reject-optimization-suggestion"},{"title":"List campaign suggestion sets","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaign-suggestion-sets","href":"/v2/buyer-api-reference/optimization-suggestions/list-campaign-suggestion-sets"},{"title":"Get campaign suggestion set","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaign-suggestion-sets/{campaignSuggestionSetId}","href":"/v2/buyer-api-reference/optimization-suggestions/get-campaign-suggestion-set"},{"title":"Approve campaign suggestion set","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaign-suggestion-sets/{campaignSuggestionSetId}/approve","href":"/v2/buyer-api-reference/optimization-suggestions/approve-campaign-suggestion-set"},{"title":"Reject campaign suggestion set","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaign-suggestion-sets/{campaignSuggestionSetId}/reject","href":"/v2/buyer-api-reference/optimization-suggestions/reject-campaign-suggestion-set"}]},{"group":"Identity Match","pages":[{"title":"List identity-match targeting configs","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /identity-match/targeting","href":"/v2/buyer-api-reference/identity-match/list-identity-match-targeting-configs"}]},{"group":"Asks","pages":[{"title":"List my asks","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /asks","href":"/v2/buyer-api-reference/asks/list-my-asks"}]},{"group":"Supply Requests","pages":[{"title":"Suggest requested supply","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /supply-requests/suggestions","href":"/v2/buyer-api-reference/supply-requests/suggest-requested-supply"},{"title":"List requested supply","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /supply-requests","href":"/v2/buyer-api-reference/supply-requests/list-requested-supply"},{"title":"Request supply","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /supply-requests","href":"/v2/buyer-api-reference/supply-requests/request-supply"},{"title":"Remove requested supply","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /supply-requests/remove","href":"/v2/buyer-api-reference/supply-requests/remove-requested-supply"}]},{"group":"Account","pages":[{"title":"Get current account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /accounts/current","href":"/v2/buyer-api-reference/account/get-current-account"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /accounts","href":"/v2/buyer-api-reference/account/list-customer-accounts"},{"title":"Create account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /accounts/create-child","href":"/v2/buyer-api-reference/account/create-account"},{"title":"Convert account into an organization","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /accounts/convert-to-organization","href":"/v2/buyer-api-reference/account/convert-account-into-an-organization"},{"title":"Get organization posture","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /accounts/organization-posture","href":"/v2/buyer-api-reference/account/get-organization-posture"},{"title":"Update account domain","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /accounts/{customerId}/domain","href":"/v2/buyer-api-reference/account/update-account-domain"},{"title":"Preview account archive","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /accounts/{customerId}/archive-preview","href":"/v2/buyer-api-reference/account/preview-account-archive"},{"title":"Archive child account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /accounts/{customerId}/archive","href":"/v2/buyer-api-reference/account/archive-child-account"},{"title":"Restore child account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /accounts/{customerId}/unarchive","href":"/v2/buyer-api-reference/account/restore-child-account"},{"title":"Delete child account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /accounts/{customerId}","href":"/v2/buyer-api-reference/account/delete-child-account"},{"title":"Get membership settings","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /accounts/{customerId}/membership","href":"/v2/buyer-api-reference/account/get-membership-settings"},{"title":"Update membership settings","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /accounts/{customerId}/membership","href":"/v2/buyer-api-reference/account/update-membership-settings"},{"title":"List inbound email addresses","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /inbound-email-addresses","href":"/v2/buyer-api-reference/account/list-inbound-email-addresses"},{"title":"Create inbound email address","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /inbound-email-addresses","href":"/v2/buyer-api-reference/account/create-inbound-email-address"},{"title":"Rotate inbound email address","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /inbound-email-addresses/{id}/rotate","href":"/v2/buyer-api-reference/account/rotate-inbound-email-address"},{"title":"Revoke inbound email address","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /inbound-email-addresses/{id}/revoke","href":"/v2/buyer-api-reference/account/revoke-inbound-email-address"},{"title":"Get notification preferences","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /notification-preferences","href":"/v2/buyer-api-reference/account/get-notification-preferences"},{"title":"Update notification preferences","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /notification-preferences","href":"/v2/buyer-api-reference/account/update-notification-preferences"},{"title":"Get Slack notification settings","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /notification-delivery-preferences","href":"/v2/buyer-api-reference/account/get-slack-notification-settings"},{"title":"Update a Slack notification setting","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /notification-delivery-preferences","href":"/v2/buyer-api-reference/account/update-a-slack-notification-setting"},{"title":"Check shared Slack availability","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /messaging-apps/slack","href":"/v2/buyer-api-reference/account/check-shared-slack-availability"},{"title":"Inspect Discord messaging apps","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /messaging-apps/discord","href":"/v2/buyer-api-reference/account/inspect-discord-messaging-apps"},{"title":"Create a Discord messaging app","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/discord","href":"/v2/buyer-api-reference/account/create-a-discord-messaging-app"},{"title":"Inspect Microsoft Teams messaging apps","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /messaging-apps/teams","href":"/v2/buyer-api-reference/account/inspect-microsoft-teams-messaging-apps"},{"title":"Create a Microsoft Teams messaging app","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/teams","href":"/v2/buyer-api-reference/account/create-a-microsoft-teams-messaging-app"},{"title":"Register a Discord app installation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/{definitionId}/discord-installations","href":"/v2/buyer-api-reference/account/register-a-discord-app-installation"},{"title":"Register a Microsoft Teams app installation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/{definitionId}/teams-installations","href":"/v2/buyer-api-reference/account/register-a-microsoft-teams-app-installation"},{"title":"Inspect WhatsApp messaging apps","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /messaging-apps/whatsapp","href":"/v2/buyer-api-reference/account/inspect-whatsapp-messaging-apps"},{"title":"Create a reply-only WhatsApp messaging app","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/whatsapp","href":"/v2/buyer-api-reference/account/create-a-reply-only-whatsapp-messaging-app"},{"title":"Register a WhatsApp business-phone installation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /messaging-apps/{definitionId}/whatsapp-installations","href":"/v2/buyer-api-reference/account/register-a-whatsapp-business-phone-installation"},{"title":"Link a messaging app identity","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /messaging-apps/{definitionId}/installations/{installationId}/identity","href":"/v2/buyer-api-reference/account/link-a-messaging-app-identity"},{"title":"Revoke a messaging app identity","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /messaging-apps/{definitionId}/installations/{installationId}/identity","href":"/v2/buyer-api-reference/account/revoke-a-messaging-app-identity"},{"title":"Rotate messaging app credentials","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /messaging-apps/{definitionId}/credentials","href":"/v2/buyer-api-reference/account/rotate-messaging-app-credentials"},{"title":"Suspend or uninstall a messaging app installation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /messaging-apps/{definitionId}/installations/{installationId}","href":"/v2/buyer-api-reference/account/suspend-or-uninstall-a-messaging-app-installation"},{"title":"Retire a messaging app","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /messaging-apps/{definitionId}","href":"/v2/buyer-api-reference/account/retire-a-messaging-app"},{"title":"Get buyer agent activation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /activation","href":"/v2/buyer-api-reference/account/get-buyer-agent-activation"},{"title":"Retain the first free provider account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /activation/provider-binding","href":"/v2/buyer-api-reference/account/retain-the-first-free-provider-account"},{"title":"Preview market readiness","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /market-readiness","href":"/v2/buyer-api-reference/account/preview-market-readiness"},{"title":"Get buyer readiness","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /readiness","href":"/v2/buyer-api-reference/account/get-buyer-readiness"},{"title":"Update buyer operator domain","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /readiness/operator","href":"/v2/buyer-api-reference/account/update-buyer-operator-domain"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /notifications","href":"/v2/buyer-api-reference/notifications/list-notifications"},{"title":"Mark all notifications as read","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /notifications/read-all","href":"/v2/buyer-api-reference/notifications/mark-all-notifications-as-read"},{"title":"Mark notification as read","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /notifications/{notificationId}/read","href":"/v2/buyer-api-reference/notifications/mark-notification-as-read"},{"title":"Acknowledge notification","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /notifications/{notificationId}/acknowledge","href":"/v2/buyer-api-reference/notifications/acknowledge-notification"}]},{"group":"Release Updates","pages":[{"title":"List personalized release updates","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /release-updates","href":"/v2/buyer-api-reference/release-updates/list-personalized-release-updates"},{"title":"List the release board","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /release-board","href":"/v2/buyer-api-reference/release-updates/list-the-release-board"},{"title":"Mark release updates as seen","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /release-updates/seen","href":"/v2/buyer-api-reference/release-updates/mark-release-updates-as-seen"}]},{"group":"Moderation","pages":[{"title":"Pre-check content against moderation policy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /moderation/check","href":"/v2/buyer-api-reference/moderation/pre-check-content-against-moderation-policy"}]},{"group":"Storefronts","pages":[{"title":"List storefronts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefronts","href":"/v2/buyer-api-reference/storefronts/list-storefronts"},{"title":"Get storefront","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefronts/{storefrontId}","href":"/v2/buyer-api-reference/storefronts/get-storefront"},{"title":"Update Storefront selection override","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /storefronts/{storefrontId}/selection-override","href":"/v2/buyer-api-reference/storefronts/update-storefront-selection-override"},{"title":"Update advertiser Seller activation preference","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /storefronts/{storefrontId}/advertisers/{advertiserId}/activation-preference","href":"/v2/buyer-api-reference/storefronts/update-advertiser-seller-activation-preference"},{"title":"Update Storefront billing policy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /storefronts/{storefrontId}/billing-policy","href":"/v2/buyer-api-reference/storefronts/update-storefront-billing-policy"},{"title":"Accept direct Storefront billing","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefronts/{storefrontId}/direct-billing-acceptance","href":"/v2/buyer-api-reference/storefronts/accept-direct-storefront-billing"},{"title":"Get storefront capabilities","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefronts/{storefrontId}/capabilities","href":"/v2/buyer-api-reference/storefronts/get-storefront-capabilities"},{"title":"List storefront connections","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections","href":"/v2/buyer-api-reference/storefronts/list-storefront-connections"},{"title":"List external account mappings","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connection-account-mappings","href":"/v2/buyer-api-reference/storefronts/list-external-account-mappings"},{"title":"List integration external accounts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts","href":"/v2/buyer-api-reference/storefronts/list-integration-external-accounts"},{"title":"Refresh integration external accounts","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefront-connections/{connectionId}/accounts/refresh","href":"/v2/buyer-api-reference/storefronts/refresh-integration-external-accounts"},{"title":"Remove storefront connection","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /storefront-connections/{connectionId}","href":"/v2/buyer-api-reference/storefronts/remove-storefront-connection"},{"title":"Select integration external account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /storefront-connections/{connectionId}/accounts/{accountId}/select","href":"/v2/buyer-api-reference/storefronts/select-integration-external-account"},{"title":"Map external account to advertiser","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefront-connections/{connectionId}/accounts/{accountId}/advertiser","href":"/v2/buyer-api-reference/storefronts/map-external-account-to-advertiser"},{"title":"Set account-level Enhanced Reporting","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /storefront-connections/{connectionId}/accounts/{accountId}/enhanced-reporting","href":"/v2/buyer-api-reference/storefronts/set-account-level-enhanced-reporting"},{"title":"List linkable TikTok identities","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts/{accountId}/identities","href":"/v2/buyer-api-reference/storefronts/list-linkable-tiktok-identities"},{"title":"Set or clear the TikTok ad identity","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /storefront-connections/{connectionId}/accounts/{accountId}/identity","href":"/v2/buyer-api-reference/storefronts/set-or-clear-the-tiktok-ad-identity"},{"title":"Subscribe a directed-campaign account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscribe","href":"/v2/buyer-api-reference/storefronts/subscribe-a-directed-campaign-account"},{"title":"Get directed-campaign subscription health","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription","href":"/v2/buyer-api-reference/storefronts/get-directed-campaign-subscription-health"},{"title":"Unsubscribe a directed-campaign account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /storefront-connections/{connectionId}/accounts/{accountId}/directed-campaigns/subscription","href":"/v2/buyer-api-reference/storefronts/unsubscribe-a-directed-campaign-account"},{"title":"List account presences","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts/{accountId}/presences","href":"/v2/buyer-api-reference/storefronts/list-account-presences"},{"title":"List reporting-only Meta campaign identities","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns","href":"/v2/buyer-api-reference/storefronts/list-reporting-only-meta-campaign-identities"},{"title":"Get reporting-only Meta campaign delivery","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefront-connections/{connectionId}/accounts/{accountId}/reporting-campaigns/{upstreamCampaignId}/delivery","href":"/v2/buyer-api-reference/storefronts/get-reporting-only-meta-campaign-delivery"},{"title":"Update storefront connection policy","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml patch /storefronts/{storefrontId}/connection-policy","href":"/v2/buyer-api-reference/storefronts/update-storefront-connection-policy"},{"title":"Connect storefront","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefronts/{storefrontId}/connection","href":"/v2/buyer-api-reference/storefronts/connect-storefront"},{"title":"List credentials","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefronts/credentials","href":"/v2/buyer-api-reference/storefronts/list-credentials"},{"title":"Register source credentials","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefronts/{storefrontId}/sources/{sourceId}/credentials","href":"/v2/buyer-api-reference/storefronts/register-source-credentials"},{"title":"Connect a registered AdCP source","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /storefronts/{storefrontId}/sources/{sourceId}/adcp-connection","href":"/v2/buyer-api-reference/storefronts/connect-a-registered-adcp-source"},{"title":"List publisher domains for a storefront","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /storefronts/{storefrontId}/publishers","href":"/v2/buyer-api-reference/storefronts/list-publisher-domains-for-a-storefront"}]},{"group":"Syndication","pages":[{"title":"Toggle syndication for a resource","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/syndicate","href":"/v2/buyer-api-reference/syndication/toggle-syndication-for-a-resource"},{"title":"Query syndication status","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/syndication-status","href":"/v2/buyer-api-reference/syndication/query-syndication-status"}]},{"group":"Tasks","pages":[{"title":"Get task status","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /tasks/{taskId}","href":"/v2/buyer-api-reference/tasks/get-task-status"}]},{"group":"Property Lists","pages":[{"title":"List property lists","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/property-lists","href":"/v2/buyer-api-reference/property-lists/list-property-lists"},{"title":"Create property list","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /advertisers/{advertiserId}/property-lists","href":"/v2/buyer-api-reference/property-lists/create-property-list"},{"title":"Get property list","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /advertisers/{advertiserId}/property-lists/{listId}","href":"/v2/buyer-api-reference/property-lists/get-property-list"},{"title":"Update property list","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /advertisers/{advertiserId}/property-lists/{listId}","href":"/v2/buyer-api-reference/property-lists/update-property-list"},{"title":"Delete property list","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /advertisers/{advertiserId}/property-lists/{listId}","href":"/v2/buyer-api-reference/property-lists/delete-property-list"},{"title":"Get campaign property lists","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /campaigns/{campaignId}/property-lists","href":"/v2/buyer-api-reference/property-lists/get-campaign-property-lists"},{"title":"Attach property list to campaign","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /campaigns/{campaignId}/property-lists","href":"/v2/buyer-api-reference/property-lists/attach-property-list-to-campaign"},{"title":"Check property list","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /property-lists/check","href":"/v2/buyer-api-reference/property-lists/check-property-list"},{"title":"Get property list check report","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /property-lists/reports/{reportId}","href":"/v2/buyer-api-reference/property-lists/get-property-list-check-report"}]},{"group":"Buyer Billing","pages":[{"title":"Retired: credit applications","deprecated":true,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /credit-applications/v2","href":"/v2/buyer-api-reference/buyer-billing/retired:-credit-applications"},{"title":"Retired: credit applications","deprecated":true,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /credit-applications/v2","href":"/v2/buyer-api-reference/buyer-billing/retired:-credit-applications-1"},{"title":"Retired: credit applications","deprecated":true,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /credit-applications/v2/{applicationId}","href":"/v2/buyer-api-reference/buyer-billing/retired:-credit-applications-2"},{"title":"Retired: credit applications","deprecated":true,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /credit-applications/v2/{applicationId}/accept-counteroffer","href":"/v2/buyer-api-reference/buyer-billing/retired:-credit-applications-3"},{"title":"Retired: credit applications","deprecated":true,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /credit-applications/v2/{applicationId}/withdraw","href":"/v2/buyer-api-reference/buyer-billing/retired:-credit-applications-4"},{"title":"Get billing information","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/info","href":"/v2/buyer-api-reference/buyer-billing/get-billing-information"},{"title":"Update billing information (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /billing/info","href":"/v2/buyer-api-reference/buyer-billing/update-billing-information-admin"},{"title":"Get billing account","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/account","href":"/v2/buyer-api-reference/buyer-billing/get-billing-account"},{"title":"Get inherited billing stub","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/account/inherited-stub","href":"/v2/buyer-api-reference/buyer-billing/get-inherited-billing-stub"},{"title":"Get the app-root Rate Card review decision","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card/login-prompt","href":"/v2/buyer-api-reference/buyer-billing/get-the-app-root-rate-card-review-decision"},{"title":"Get the organization IU Rate Card offer and acceptance state","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card","href":"/v2/buyer-api-reference/buyer-billing/get-the-organization-iu-rate-card-offer-and-acceptance-state"},{"title":"Get the versioned organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card/v2","href":"/v2/buyer-api-reference/buyer-billing/get-the-versioned-organization-iu-commercial-document"},{"title":"Get the catalog-v3 organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card/v3","href":"/v2/buyer-api-reference/buyer-billing/get-the-catalog-v3-organization-iu-commercial-document"},{"title":"Get the catalog-v4 organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card/v4","href":"/v2/buyer-api-reference/buyer-billing/get-the-catalog-v4-organization-iu-commercial-document"},{"title":"Request human help choosing an IU plan","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/iu-rate-card/mcp-app/help","href":"/v2/buyer-api-reference/buyer-billing/request-human-help-choosing-an-iu-plan"},{"title":"Download the current Commercial Offer proposal","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/iu-rate-card/document.pdf","href":"/v2/buyer-api-reference/buyer-billing/download-the-current-commercial-offer-proposal"},{"title":"Accept an exact organization IU Rate Card offer","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/iu-rate-card/accept","href":"/v2/buyer-api-reference/buyer-billing/accept-an-exact-organization-iu-rate-card-offer"},{"title":"Start adding a card (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/payment-methods/setup","href":"/v2/buyer-api-reference/buyer-billing/start-adding-a-card-admin"},{"title":"Get the latest submitted card confirmation","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/payment-methods/setup-attempt","href":"/v2/buyer-api-reference/buyer-billing/get-the-latest-submitted-card-confirmation"},{"title":"Record a submitted card confirmation (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/payment-methods/setup/{id}/submitted","href":"/v2/buyer-api-reference/buyer-billing/record-a-submitted-card-confirmation-admin"},{"title":"List payment methods","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/payment-methods","href":"/v2/buyer-api-reference/buyer-billing/list-payment-methods"},{"title":"Remove a payment method (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /billing/payment-methods/{id}","href":"/v2/buyer-api-reference/buyer-billing/remove-a-payment-method-admin"},{"title":"Open a payment capture link","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /capture-links/{token}","href":"/v2/buyer-api-reference/buyer-billing/open-a-payment-capture-link"},{"title":"Manually retry the outstanding failed charge (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/payment-methods/pay-now","href":"/v2/buyer-api-reference/buyer-billing/manually-retry-the-outstanding-failed-charge-admin"},{"title":"Get invoice activity","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/invoice-activity","href":"/v2/buyer-api-reference/buyer-billing/get-invoice-activity"},{"title":"List fee invoices","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/fee-invoices","href":"/v2/buyer-api-reference/buyer-billing/list-fee-invoices"},{"title":"Get fee invoice","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/fee-invoices/{invoiceNumber}","href":"/v2/buyer-api-reference/buyer-billing/get-fee-invoice"}]},{"group":"Media Billing","pages":[{"title":"List media billing entities","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/media-entities","href":"/v2/buyer-api-reference/media-billing/list-media-billing-entities"},{"title":"Create media billing entity (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/media-entities","href":"/v2/buyer-api-reference/media-billing/create-media-billing-entity-admin"},{"title":"Update media billing entity (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml put /billing/media-entities/{entityId}","href":"/v2/buyer-api-reference/media-billing/update-media-billing-entity-admin"},{"title":"Delete media billing entity (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /billing/media-entities/{entityId}","href":"/v2/buyer-api-reference/media-billing/delete-media-billing-entity-admin"},{"title":"List media billing attachments","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/media-entities/attachments","href":"/v2/buyer-api-reference/media-billing/list-media-billing-attachments"},{"title":"Attach media billing entity (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /billing/media-entities/attachments","href":"/v2/buyer-api-reference/media-billing/attach-media-billing-entity-admin"},{"title":"Delete media billing attachment (admin)","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /billing/media-entities/attachments/{attachmentId}","href":"/v2/buyer-api-reference/media-billing/delete-media-billing-attachment-admin"},{"title":"Resolve media billing entity","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /billing/media-entities/resolve","href":"/v2/buyer-api-reference/media-billing/resolve-media-billing-entity"}]},{"group":"Update Proposals","pages":[{"title":"Get update proposal status","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml get /update-proposals/{id}","href":"/v2/buyer-api-reference/update-proposals/get-update-proposal-status"},{"title":"Cancel a pending update proposal","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml delete /update-proposals/{id}","href":"/v2/buyer-api-reference/update-proposals/cancel-a-pending-update-proposal"}]},{"group":"MCP","pages":[{"title":"Initialize MCP session","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /","href":"/v2/buyer-api-reference/mcp/initialize-mcp-session"},{"title":"Make API call via MCP","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /api-call","href":"/v2/buyer-api-reference/mcp/make-api-call-via-mcp"},{"title":"Ask about API capabilities","deprecated":null,"version":null,"openapi":"/v2/buyer-api-v2.yaml post /ask-about-capability","href":"/v2/buyer-api-reference/mcp/ask-about-api-capabilities"}]}]},{"group":"Seller API reference","pages":[{"title":"Storefront API reference (legacy v2)","icon":"handshake-angle","href":"/v2/storefront-api-reference"},{"group":"Advertisers","pages":[{"title":"List organization advertisers","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /organization/advertisers","href":"/v2/storefront-api-reference/advertisers/list-organization-advertisers"},{"title":"Create an organization advertiser lifecycle","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /organization/advertisers","href":"/v2/storefront-api-reference/advertisers/create-an-organization-advertiser-lifecycle"},{"title":"List organization advertisers with account setup","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /organization/advertisers/account-setup","href":"/v2/storefront-api-reference/advertisers/list-organization-advertisers-with-account-setup"},{"title":"Claim an exact-recipient advertiser invitation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /advertiser-invitations/claim","href":"/v2/storefront-api-reference/advertisers/claim-an-exact-recipient-advertiser-invitation"},{"title":"List organization advertiser grants","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /organization/advertiser-grants","href":"/v2/storefront-api-reference/advertisers/list-organization-advertiser-grants"},{"title":"Invite an organization to advertiser access","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /organization/advertiser-grants","href":"/v2/storefront-api-reference/advertisers/invite-an-organization-to-advertiser-access"},{"title":"Get an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /organization/advertiser-grants/{grantRef}","href":"/v2/storefront-api-reference/advertisers/get-an-organization-advertiser-grant"},{"title":"Accept an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /organization/advertiser-grants/{grantRef}/accept","href":"/v2/storefront-api-reference/advertisers/accept-an-organization-advertiser-grant"},{"title":"Reject an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /organization/advertiser-grants/{grantRef}/reject","href":"/v2/storefront-api-reference/advertisers/reject-an-organization-advertiser-grant"},{"title":"Revoke an organization advertiser grant","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /organization/advertiser-grants/{grantRef}/revoke","href":"/v2/storefront-api-reference/advertisers/revoke-an-organization-advertiser-grant"}]},{"group":"Activity","pages":[{"title":"List API calls","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /activity/calls","href":"/v2/storefront-api-reference/activity/list-api-calls"},{"title":"Get API call detail","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /activity/calls/{activityUid}","href":"/v2/storefront-api-reference/activity/get-api-call-detail"}]},{"group":"Communications","pages":[{"title":"Queue an agent text message","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /communications/messages","href":"/v2/storefront-api-reference/communications/queue-an-agent-text-message"},{"title":"Queue an agent RCS text message","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /communications/rcs/messages","href":"/v2/storefront-api-reference/communications/queue-an-agent-rcs-text-message"},{"title":"Request a text-message line for an Agent","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /communications/phone-lines","href":"/v2/storefront-api-reference/communications/request-a-text-message-line-for-an-agent"},{"title":"Get a text-message line request","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /communications/phone-lines/{requestId}","href":"/v2/storefront-api-reference/communications/get-a-text-message-line-request"}]},{"group":"Reporting","pages":[{"title":"Get storefront reporting","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /reporting/metrics","href":"/v2/storefront-api-reference/reporting/get-storefront-reporting"},{"title":"Get exact client Source reporting","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /provider/account/connections/{bindingUid}/reporting","href":"/v2/storefront-api-reference/reporting/get-exact-client-source-reporting"}]},{"group":"Storefront","pages":[{"title":"Get Partner Program access","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /provider/partner-access","href":"/v2/storefront-api-reference/storefront/get-partner-program-access"},{"title":"Get Partner client fleet","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /provider/account","href":"/v2/storefront-api-reference/storefront/get-partner-client-fleet"},{"title":"List client onboarding referrals","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /provider/account/client-referrals","href":"/v2/storefront-api-reference/storefront/list-client-onboarding-referrals"},{"title":"Invite a publisher client","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/account/client-referrals","href":"/v2/storefront-api-reference/storefront/invite-a-publisher-client"},{"title":"Preview a publisher invitation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/client-referrals/preview","href":"/v2/storefront-api-reference/storefront/preview-a-publisher-invitation"},{"title":"Accept a publisher invitation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/client-referrals/accept","href":"/v2/storefront-api-reference/storefront/accept-a-publisher-invitation"},{"title":"List eligible publisher Sources","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/client-referrals/setup","href":"/v2/storefront-api-reference/storefront/list-eligible-publisher-sources"},{"title":"Create a publisher-owned Agent Source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/client-referrals/source","href":"/v2/storefront-api-reference/storefront/create-a-publisher-owned-agent-source"},{"title":"Authorize one exact publisher Source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/client-referrals/complete","href":"/v2/storefront-api-reference/storefront/authorize-one-exact-publisher-source"},{"title":"Accept a publisher-authorized connection","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/account/connections/{bindingUid}/accept","href":"/v2/storefront-api-reference/storefront/accept-a-publisher-authorized-connection"},{"title":"Run exact connection validation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/account/connections/{bindingUid}/validate","href":"/v2/storefront-api-reference/storefront/run-exact-connection-validation"},{"title":"Activate an exact validated connection","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /provider/account/connections/{bindingUid}/activate","href":"/v2/storefront-api-reference/storefront/activate-an-exact-validated-connection"},{"title":"Get a client Source's health as its agent operator","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /provider/account/connections/{bindingUid}/source-health","href":"/v2/storefront-api-reference/storefront/get-a-client-sources-health-as-its-agent-operator"},{"title":"Get storefront","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /storefront","href":"/v2/storefront-api-reference/storefront/get-storefront"},{"title":"Update storefront","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /storefront","href":"/v2/storefront-api-reference/storefront/update-storefront"},{"title":"Create storefront","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /storefront","href":"/v2/storefront-api-reference/storefront/create-storefront"},{"title":"Get storefront readiness","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /readiness","href":"/v2/storefront-api-reference/storefront/get-storefront-readiness"},{"title":"Resolve brand profile","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /resolve-brand","href":"/v2/storefront-api-reference/storefront/resolve-brand-profile"},{"title":"Discover agents for a domain","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /discover-agents","href":"/v2/storefront-api-reference/storefront/discover-agents-for-a-domain"},{"title":"List inventory sources","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources","href":"/v2/storefront-api-reference/storefront/list-inventory-sources"},{"title":"Create inventory source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources","href":"/v2/storefront-api-reference/storefront/create-inventory-source"},{"title":"Get inventory source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}","href":"/v2/storefront-api-reference/storefront/get-inventory-source"},{"title":"Update inventory source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /inventory-sources/{sourceId}","href":"/v2/storefront-api-reference/storefront/update-inventory-source"},{"title":"Delete inventory source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /inventory-sources/{sourceId}","href":"/v2/storefront-api-reference/storefront/delete-inventory-source"},{"title":"Retired: certification sandbox account","deprecated":true,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/certification-sandbox-account","href":"/v2/storefront-api-reference/storefront/retired:-certification-sandbox-account"},{"title":"Retired: certification sandbox account","deprecated":true,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/certification-sandbox-account","href":"/v2/storefront-api-reference/storefront/retired:-certification-sandbox-account-1"},{"title":"Retired: certification sandbox account","deprecated":true,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /inventory-sources/{sourceId}/certification-sandbox-account","href":"/v2/storefront-api-reference/storefront/retired:-certification-sandbox-account-2"},{"title":"Get inventory source diagnostics","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/diagnostics","href":"/v2/storefront-api-reference/storefront/get-inventory-source-diagnostics"},{"title":"Get an inventory source mapping workspace","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/mapping-workspace","href":"/v2/storefront-api-reference/storefront/get-an-inventory-source-mapping-workspace"},{"title":"Get inventory source connection profile","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/connection-profile","href":"/v2/storefront-api-reference/storefront/get-inventory-source-connection-profile"},{"title":"Run an inventory source discovery test","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/tests/discovery","href":"/v2/storefront-api-reference/storefront/run-an-inventory-source-discovery-test"},{"title":"Download wholesale pricing template","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/wholesale-pricing/template","href":"/v2/storefront-api-reference/storefront/download-wholesale-pricing-template"},{"title":"List inventory property mappings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/property-mappings","href":"/v2/storefront-api-reference/storefront/list-inventory-property-mappings"},{"title":"Replace inventory property mappings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /inventory-sources/{sourceId}/property-mappings","href":"/v2/storefront-api-reference/storefront/replace-inventory-property-mappings"},{"title":"Create a modular source with an avails-feed module","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/modular/feed","href":"/v2/storefront-api-reference/storefront/create-a-modular-source-with-an-avails-feed-module"},{"title":"Create Cadent demo modular source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/modular/cadent-demo","href":"/v2/storefront-api-reference/storefront/create-cadent-demo-modular-source"},{"title":"Create FreeWheel sandbox modular source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/modular/freewheel-sandbox","href":"/v2/storefront-api-reference/storefront/create-freewheel-sandbox-modular-source"},{"title":"Get modular inventory source readiness","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular","href":"/v2/storefront-api-reference/storefront/get-modular-inventory-source-readiness"},{"title":"Ingest modular avails feed","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/modular/avails-feed","href":"/v2/storefront-api-reference/storefront/ingest-modular-avails-feed"},{"title":"List modular inventory products","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular/products","href":"/v2/storefront-api-reference/storefront/list-modular-inventory-products"},{"title":"List modular source work items","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular/work-items","href":"/v2/storefront-api-reference/storefront/list-modular-source-work-items"},{"title":"Get modular source work item","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular/work-items/{workItemId}","href":"/v2/storefront-api-reference/storefront/get-modular-source-work-item"},{"title":"Update modular source work item","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /inventory-sources/{sourceId}/modular/work-items/{workItemId}","href":"/v2/storefront-api-reference/storefront/update-modular-source-work-item"},{"title":"Complete modular source work item","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/modular/work-items/{workItemId}/complete","href":"/v2/storefront-api-reference/storefront/complete-modular-source-work-item"},{"title":"Get modular inventory capabilities","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular/inventory/capabilities","href":"/v2/storefront-api-reference/storefront/get-modular-inventory-capabilities"},{"title":"Search modular inventory selectors","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inventory-sources/{sourceId}/modular/inventory/selectors","href":"/v2/storefront-api-reference/storefront/search-modular-inventory-selectors"},{"title":"Reserve modular inventory product","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/modular/reservations","href":"/v2/storefront-api-reference/storefront/reserve-modular-inventory-product"},{"title":"Prepare modular booking handoff","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/modular/bookings/finalize","href":"/v2/storefront-api-reference/storefront/prepare-modular-booking-handoff"},{"title":"Release modular inventory booking","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/modular/bookings/release","href":"/v2/storefront-api-reference/storefront/release-modular-inventory-booking"},{"title":"Update modular source module config","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /inventory-sources/{sourceId}/modular/modules/{moduleInstanceId}/config","href":"/v2/storefront-api-reference/storefront/update-modular-source-module-config"},{"title":"Preview a feed revision (HITL)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/feed/preview","href":"/v2/storefront-api-reference/storefront/preview-a-feed-revision-hitl"},{"title":"Upload a feed file (HITL, multipart)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/feed/upload","href":"/v2/storefront-api-reference/storefront/upload-a-feed-file-hitl-multipart"},{"title":"Commit a previewed feed revision (HITL)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/feed/commit","href":"/v2/storefront-api-reference/storefront/commit-a-previewed-feed-revision-hitl"},{"title":"Push a feed revision (API_PUSH, no preview step)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inventory-sources/{sourceId}/feed/push","href":"/v2/storefront-api-reference/storefront/push-a-feed-revision-api_push-no-preview-step"},{"title":"List ad server sources","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa","href":"/v2/storefront-api-reference/storefront/list-ad-server-sources"},{"title":"Get an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}","href":"/v2/storefront-api-reference/storefront/get-an-ad-server-source"},{"title":"Set a FreeWheel execution currency","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /esa/{esaId}/execution-currency","href":"/v2/storefront-api-reference/storefront/set-a-freewheel-execution-currency"},{"title":"Test an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/test-connection","href":"/v2/storefront-api-reference/storefront/test-an-ad-server-source"},{"title":"Refresh an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/refresh","href":"/v2/storefront-api-reference/storefront/refresh-an-ad-server-source"},{"title":"Re-check an ad server capability","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/capabilities/{capability}/recheck","href":"/v2/storefront-api-reference/storefront/re-check-an-ad-server-capability"},{"title":"Deactivate an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/deactivate","href":"/v2/storefront-api-reference/storefront/deactivate-an-ad-server-source"},{"title":"Reactivate an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/reactivate","href":"/v2/storefront-api-reference/storefront/reactivate-an-ad-server-source"},{"title":"Get ad server source status","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/status","href":"/v2/storefront-api-reference/storefront/get-ad-server-source-status"},{"title":"List ad server source sync history","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/sync-history","href":"/v2/storefront-api-reference/storefront/list-ad-server-source-sync-history"},{"title":"Mint an ad server source launch URL","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/launch","href":"/v2/storefront-api-reference/storefront/mint-an-ad-server-source-launch-url"},{"title":"Get the active operating-instructions version","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /operating-instructions/active","href":"/v2/storefront-api-reference/storefront/get-the-active-operating-instructions-version"},{"title":"Create a new operating-instructions version","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /operating-instructions","href":"/v2/storefront-api-reference/storefront/create-a-new-operating-instructions-version"},{"title":"Activate an operating-instructions version","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /operating-instructions/{version}/activate","href":"/v2/storefront-api-reference/storefront/activate-an-operating-instructions-version"},{"title":"Create a new acceptance-policy version","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /acceptance-policy","href":"/v2/storefront-api-reference/storefront/create-a-new-acceptance-policy-version"},{"title":"Pin or clear the learned default posture","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /learned-default-posture","href":"/v2/storefront-api-reference/storefront/pin-or-clear-the-learned-default-posture"},{"title":"Create a merchandising simulation scenario","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /simulator/scenarios","href":"/v2/storefront-api-reference/storefront/create-a-merchandising-simulation-scenario"},{"title":"Execute a pinned merchandising simulation variant","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /simulator/scenarios/{scenarioId}/revisions/{revisionId}/variants/{variantId}/executions","href":"/v2/storefront-api-reference/storefront/execute-a-pinned-merchandising-simulation-variant"},{"title":"Get the canonical seller decision record for an intelligence run","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /intelligence-runs/{id}/decision-record","href":"/v2/storefront-api-reference/storefront/get-the-canonical-seller-decision-record-for-an-intelligence-run"},{"title":"Get the seller-analytics posture-conversion rollup","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /seller-analytics","href":"/v2/storefront-api-reference/storefront/get-the-seller-analytics-posture-conversion-rollup"},{"title":"List every media buy on the storefront","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /media-buys","href":"/v2/storefront-api-reference/storefront/list-every-media-buy-on-the-storefront"},{"title":"Get one buy's exchange timeline","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /media-buys/{mediaBuyId}/timeline","href":"/v2/storefront-api-reference/storefront/get-one-buys-exchange-timeline"},{"title":"Get the observed creative thumbnail","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /creative-reviews/{creativeId}/thumbnail","href":"/v2/storefront-api-reference/storefront/get-the-observed-creative-thumbnail"},{"title":"List publisher domains","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /publishers","href":"/v2/storefront-api-reference/storefront/list-publisher-domains"},{"title":"Replace publisher list","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /publishers","href":"/v2/storefront-api-reference/storefront/replace-publisher-list"},{"title":"Add a publisher domain","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /publishers","href":"/v2/storefront-api-reference/storefront/add-a-publisher-domain"},{"title":"Declare a property","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /property-roster/properties","href":"/v2/storefront-api-reference/storefront/declare-a-property"},{"title":"Remove a declared property","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /property-roster/properties/{domain}/{propertyKey}","href":"/v2/storefront-api-reference/storefront/remove-a-declared-property"},{"title":"Remove a publisher domain","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /publishers/{domain}","href":"/v2/storefront-api-reference/storefront/remove-a-publisher-domain"}]},{"group":"Identity Match","pages":[{"title":"List identity-match targeting configs","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /identity-match/targeting","href":"/v2/storefront-api-reference/identity-match/list-identity-match-targeting-configs"}]},{"group":"Asks","pages":[{"title":"List my asks","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /asks","href":"/v2/storefront-api-reference/asks/list-my-asks"}]},{"group":"Supply Requests","pages":[{"title":"Suggest requested supply","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /supply-requests/suggestions","href":"/v2/storefront-api-reference/supply-requests/suggest-requested-supply"},{"title":"List requested supply","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /supply-requests","href":"/v2/storefront-api-reference/supply-requests/list-requested-supply"},{"title":"Request supply","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /supply-requests","href":"/v2/storefront-api-reference/supply-requests/request-supply"},{"title":"Remove requested supply","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /supply-requests/remove","href":"/v2/storefront-api-reference/supply-requests/remove-requested-supply"}]},{"group":"Account","pages":[{"title":"Get current account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts/current","href":"/v2/storefront-api-reference/account/get-current-account"},{"title":"List customer accounts","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts","href":"/v2/storefront-api-reference/account/list-customer-accounts"},{"title":"Get storefront liveness for accounts","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts/liveness","href":"/v2/storefront-api-reference/account/get-storefront-liveness-for-accounts"},{"title":"Create account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /accounts/create-child","href":"/v2/storefront-api-reference/account/create-account"},{"title":"Convert account into an organization","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /accounts/convert-to-organization","href":"/v2/storefront-api-reference/account/convert-account-into-an-organization"},{"title":"Get organization posture","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts/organization-posture","href":"/v2/storefront-api-reference/account/get-organization-posture"},{"title":"Update account domain","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /accounts/{customerId}/domain","href":"/v2/storefront-api-reference/account/update-account-domain"},{"title":"Preview account archive","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts/{customerId}/archive-preview","href":"/v2/storefront-api-reference/account/preview-account-archive"},{"title":"Archive child account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /accounts/{customerId}/archive","href":"/v2/storefront-api-reference/account/archive-child-account"},{"title":"Restore child account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /accounts/{customerId}/unarchive","href":"/v2/storefront-api-reference/account/restore-child-account"},{"title":"Delete child account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /accounts/{customerId}","href":"/v2/storefront-api-reference/account/delete-child-account"},{"title":"Get membership settings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /accounts/{customerId}/membership","href":"/v2/storefront-api-reference/account/get-membership-settings"},{"title":"Update membership settings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /accounts/{customerId}/membership","href":"/v2/storefront-api-reference/account/update-membership-settings"},{"title":"List inbound email addresses","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /inbound-email-addresses","href":"/v2/storefront-api-reference/account/list-inbound-email-addresses"},{"title":"Create inbound email address","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inbound-email-addresses","href":"/v2/storefront-api-reference/account/create-inbound-email-address"},{"title":"Rotate inbound email address","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inbound-email-addresses/{id}/rotate","href":"/v2/storefront-api-reference/account/rotate-inbound-email-address"},{"title":"Revoke inbound email address","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /inbound-email-addresses/{id}/revoke","href":"/v2/storefront-api-reference/account/revoke-inbound-email-address"},{"title":"Get notification preferences","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /notification-preferences","href":"/v2/storefront-api-reference/account/get-notification-preferences"},{"title":"Update notification preferences","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /notification-preferences","href":"/v2/storefront-api-reference/account/update-notification-preferences"},{"title":"Get Slack notification settings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /notification-delivery-preferences","href":"/v2/storefront-api-reference/account/get-slack-notification-settings"},{"title":"Update a Slack notification setting","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /notification-delivery-preferences","href":"/v2/storefront-api-reference/account/update-a-slack-notification-setting"},{"title":"Check shared Slack availability","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /messaging-apps/slack","href":"/v2/storefront-api-reference/account/check-shared-slack-availability"},{"title":"Inspect Discord messaging apps","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /messaging-apps/discord","href":"/v2/storefront-api-reference/account/inspect-discord-messaging-apps"},{"title":"Create a Discord messaging app","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/discord","href":"/v2/storefront-api-reference/account/create-a-discord-messaging-app"},{"title":"Inspect Microsoft Teams messaging apps","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /messaging-apps/teams","href":"/v2/storefront-api-reference/account/inspect-microsoft-teams-messaging-apps"},{"title":"Create a Microsoft Teams messaging app","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/teams","href":"/v2/storefront-api-reference/account/create-a-microsoft-teams-messaging-app"},{"title":"Register a Discord app installation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/{definitionId}/discord-installations","href":"/v2/storefront-api-reference/account/register-a-discord-app-installation"},{"title":"Register a Microsoft Teams app installation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/{definitionId}/teams-installations","href":"/v2/storefront-api-reference/account/register-a-microsoft-teams-app-installation"},{"title":"Inspect WhatsApp messaging apps","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /messaging-apps/whatsapp","href":"/v2/storefront-api-reference/account/inspect-whatsapp-messaging-apps"},{"title":"Create a reply-only WhatsApp messaging app","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/whatsapp","href":"/v2/storefront-api-reference/account/create-a-reply-only-whatsapp-messaging-app"},{"title":"Register a WhatsApp business-phone installation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /messaging-apps/{definitionId}/whatsapp-installations","href":"/v2/storefront-api-reference/account/register-a-whatsapp-business-phone-installation"},{"title":"Link a messaging app identity","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /messaging-apps/{definitionId}/installations/{installationId}/identity","href":"/v2/storefront-api-reference/account/link-a-messaging-app-identity"},{"title":"Revoke a messaging app identity","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /messaging-apps/{definitionId}/installations/{installationId}/identity","href":"/v2/storefront-api-reference/account/revoke-a-messaging-app-identity"},{"title":"Rotate messaging app credentials","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /messaging-apps/{definitionId}/credentials","href":"/v2/storefront-api-reference/account/rotate-messaging-app-credentials"},{"title":"Suspend or uninstall a messaging app installation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /messaging-apps/{definitionId}/installations/{installationId}","href":"/v2/storefront-api-reference/account/suspend-or-uninstall-a-messaging-app-installation"},{"title":"Retire a messaging app","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /messaging-apps/{definitionId}","href":"/v2/storefront-api-reference/account/retire-a-messaging-app"},{"title":"Get Media Company intake status","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /media-company-intake","href":"/v2/storefront-api-reference/account/get-media-company-intake-status"},{"title":"Start or resume Media Company intake","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /media-company-intake","href":"/v2/storefront-api-reference/account/start-or-resume-media-company-intake"},{"title":"Confirm Media Company identity and billing country","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /media-company-intake/confirm","href":"/v2/storefront-api-reference/account/confirm-media-company-identity-and-billing-country"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /notifications","href":"/v2/storefront-api-reference/notifications/list-notifications"},{"title":"Mark all notifications as read","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /notifications/read-all","href":"/v2/storefront-api-reference/notifications/mark-all-notifications-as-read"},{"title":"Mark notification as read","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /notifications/{notificationId}/read","href":"/v2/storefront-api-reference/notifications/mark-notification-as-read"},{"title":"Acknowledge notification","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /notifications/{notificationId}/acknowledge","href":"/v2/storefront-api-reference/notifications/acknowledge-notification"}]},{"group":"Release Updates","pages":[{"title":"List personalized release updates","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /release-updates","href":"/v2/storefront-api-reference/release-updates/list-personalized-release-updates"},{"title":"List the release board","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /release-board","href":"/v2/storefront-api-reference/release-updates/list-the-release-board"},{"title":"Mark release updates as seen","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /release-updates/seen","href":"/v2/storefront-api-reference/release-updates/mark-release-updates-as-seen"}]},{"group":"Moderation","pages":[{"title":"Pre-check content against moderation policy","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /moderation/check","href":"/v2/storefront-api-reference/moderation/pre-check-content-against-moderation-policy"}]},{"group":"Buyer Billing","pages":[{"title":"Get billing account","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/account","href":"/v2/storefront-api-reference/buyer-billing/get-billing-account"},{"title":"Get inherited billing stub","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/account/inherited-stub","href":"/v2/storefront-api-reference/buyer-billing/get-inherited-billing-stub"},{"title":"Get the app-root Rate Card review decision","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card/login-prompt","href":"/v2/storefront-api-reference/buyer-billing/get-the-app-root-rate-card-review-decision"},{"title":"Get the organization IU Rate Card offer and acceptance state","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card","href":"/v2/storefront-api-reference/buyer-billing/get-the-organization-iu-rate-card-offer-and-acceptance-state"},{"title":"Get the versioned organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card/v2","href":"/v2/storefront-api-reference/buyer-billing/get-the-versioned-organization-iu-commercial-document"},{"title":"Get the catalog-v3 organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card/v3","href":"/v2/storefront-api-reference/buyer-billing/get-the-catalog-v3-organization-iu-commercial-document"},{"title":"Get the catalog-v4 organization IU commercial document","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card/v4","href":"/v2/storefront-api-reference/buyer-billing/get-the-catalog-v4-organization-iu-commercial-document"},{"title":"Request human help choosing an IU plan","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/iu-rate-card/mcp-app/help","href":"/v2/storefront-api-reference/buyer-billing/request-human-help-choosing-an-iu-plan"},{"title":"Download the current Commercial Offer proposal","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/iu-rate-card/document.pdf","href":"/v2/storefront-api-reference/buyer-billing/download-the-current-commercial-offer-proposal"},{"title":"Accept an exact organization IU Rate Card offer","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/iu-rate-card/accept","href":"/v2/storefront-api-reference/buyer-billing/accept-an-exact-organization-iu-rate-card-offer"},{"title":"Start adding a card (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/payment-methods/setup","href":"/v2/storefront-api-reference/buyer-billing/start-adding-a-card-admin"},{"title":"Get the latest submitted card confirmation","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/payment-methods/setup-attempt","href":"/v2/storefront-api-reference/buyer-billing/get-the-latest-submitted-card-confirmation"},{"title":"Record a submitted card confirmation (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/payment-methods/setup/{id}/submitted","href":"/v2/storefront-api-reference/buyer-billing/record-a-submitted-card-confirmation-admin"},{"title":"List payment methods","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/payment-methods","href":"/v2/storefront-api-reference/buyer-billing/list-payment-methods"},{"title":"Remove a payment method (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /billing/payment-methods/{id}","href":"/v2/storefront-api-reference/buyer-billing/remove-a-payment-method-admin"},{"title":"Open a payment capture link","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /capture-links/{token}","href":"/v2/storefront-api-reference/buyer-billing/open-a-payment-capture-link"},{"title":"Manually retry the outstanding failed charge (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/payment-methods/pay-now","href":"/v2/storefront-api-reference/buyer-billing/manually-retry-the-outstanding-failed-charge-admin"},{"title":"Get invoice activity","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/invoice-activity","href":"/v2/storefront-api-reference/buyer-billing/get-invoice-activity"},{"title":"List fee invoices","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/fee-invoices","href":"/v2/storefront-api-reference/buyer-billing/list-fee-invoices"},{"title":"Get fee invoice","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/fee-invoices/{invoiceNumber}","href":"/v2/storefront-api-reference/buyer-billing/get-fee-invoice"}]},{"group":"Storefront Billing","pages":[{"title":"Get the organization IU Rate Card offer and acceptance state (legacy v2 Seller Account route)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/storefront-rate-card","href":"/v2/storefront-api-reference/storefront-billing/get-the-organization-iu-rate-card-offer-and-acceptance-state-legacy-v2-seller-account-route"},{"title":"Accept an exact organization IU Rate Card offer (legacy v2 Seller Account route)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /billing/storefront-rate-card/accept","href":"/v2/storefront-api-reference/storefront-billing/accept-an-exact-organization-iu-rate-card-offer-legacy-v2-seller-account-route"},{"title":"Get payout activity","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/payout-activity","href":"/v2/storefront-api-reference/storefront-billing/get-payout-activity"},{"title":"Get billing config","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing","href":"/v2/storefront-api-reference/storefront-billing/get-billing-config"},{"title":"Update billing configuration (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /billing","href":"/v2/storefront-api-reference/storefront-billing/update-billing-configuration-admin"},{"title":"Set payout details (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /billing/payout-details","href":"/v2/storefront-api-reference/storefront-billing/set-payout-details-admin"},{"title":"List payout payees","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/payees","href":"/v2/storefront-api-reference/storefront-billing/list-payout-payees"},{"title":"Set payout payee (admin)","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /billing/payees","href":"/v2/storefront-api-reference/storefront-billing/set-payout-payee-admin"},{"title":"List billing accounts","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /billing/accounts","href":"/v2/storefront-api-reference/storefront-billing/list-billing-accounts"}]},{"group":"Storefront Ad Server Buyer Routing","pages":[{"title":"Get ad server source sandbox-account readiness","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/sandbox-account","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/get-ad-server-source-sandbox-account-readiness"},{"title":"Ensure ad server source sandbox account exists","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/sandbox-account/ensure","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/ensure-ad-server-source-sandbox-account-exists"},{"title":"List adapter advertisers","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/advertisers","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/list-adapter-advertisers"},{"title":"List cached GAM advertisers","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/gam/advertisers","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/list-cached-gam-advertisers"},{"title":"Ensure a GAM advertiser exists","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/gam/advertisers/ensure","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/ensure-a-gam-advertiser-exists"},{"title":"Set default advertiser","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /esa/{esaId}/default-advertiser","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/set-default-advertiser"},{"title":"Set default GAM advertiser","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /esa/{esaId}/gam/default-advertiser","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/set-default-gam-advertiser"},{"title":"List buyer advertiser mappings","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/buyer-advertiser-mappings","href":"/v2/storefront-api-reference/storefront-ad-server-buyer-routing/list-buyer-advertiser-mappings"}]},{"group":"Storefront Ad Server Catalog","pages":[{"title":"List products for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/products","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/list-products-for-an-ad-server-source"},{"title":"Create a product for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/products","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/create-a-product-for-an-ad-server-source"},{"title":"Validate a product draft for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/products:validate","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/validate-a-product-draft-for-an-ad-server-source"},{"title":"Get a product for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/products/{productId}","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/get-a-product-for-an-ad-server-source"},{"title":"Update a product for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /esa/{esaId}/products/{productId}","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/update-a-product-for-an-ad-server-source"},{"title":"Delete a product for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /esa/{esaId}/products/{productId}","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/delete-a-product-for-an-ad-server-source"},{"title":"Change only the named fields of a product for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml patch /esa/{esaId}/products/{productId}","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/change-only-the-named-fields-of-a-product-for-an-ad-server-source"},{"title":"List signals for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/signals","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/list-signals-for-an-ad-server-source"},{"title":"Create or dry-run a signal for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /esa/{esaId}/signals","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/create-or-dry-run-a-signal-for-an-ad-server-source"},{"title":"Get signal capabilities for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/signals/adapter-capabilities","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/get-signal-capabilities-for-an-ad-server-source"},{"title":"List ad-server targeting for signal authoring","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/signals/candidates","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/list-ad-server-targeting-for-signal-authoring"},{"title":"Get inventory capabilities for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/inventory/capabilities","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/get-inventory-capabilities-for-an-ad-server-source"},{"title":"List publisher properties for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/inventory/publisher-properties","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/list-publisher-properties-for-an-ad-server-source"},{"title":"Search inventory selectors for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/inventory/selectors","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/search-inventory-selectors-for-an-ad-server-source"},{"title":"List creative formats for an ad server source","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /esa/{esaId}/creative-formats","href":"/v2/storefront-api-reference/storefront-ad-server-catalog/list-creative-formats-for-an-ad-server-source"}]},{"group":"Signals","pages":[{"title":"List signals","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /signals","href":"/v2/storefront-api-reference/signals/list-signals"},{"title":"Create signal","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /signals","href":"/v2/storefront-api-reference/signals/create-signal"},{"title":"Get signal","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /signals/{signalId}","href":"/v2/storefront-api-reference/signals/get-signal"},{"title":"Update signal","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml put /signals/{signalId}","href":"/v2/storefront-api-reference/signals/update-signal"},{"title":"Delete signal","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml delete /signals/{signalId}","href":"/v2/storefront-api-reference/signals/delete-signal"}]},{"group":"Storefront Agents","pages":[{"title":"List registered agents","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /agents","href":"/v2/storefront-api-reference/storefront-agents/list-registered-agents"}]},{"group":"Storefront Activity","pages":[{"title":"List storefront activity","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /audit-logs","href":"/v2/storefront-api-reference/storefront-activity/list-storefront-activity"}]},{"group":"Products","pages":[{"title":"List eligible products for media buys","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml get /products","href":"/v2/storefront-api-reference/products/list-eligible-products-for-media-buys"}]},{"group":"MCP","pages":[{"title":"Initialize MCP session","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /","href":"/v2/storefront-api-reference/mcp/initialize-mcp-session"},{"title":"Make API call via MCP","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /api-call","href":"/v2/storefront-api-reference/mcp/make-api-call-via-mcp"},{"title":"Ask about API capabilities","deprecated":null,"version":null,"openapi":"/v2/storefront-api-v2.yaml post /ask-about-capability","href":"/v2/storefront-api-reference/mcp/ask-about-api-capabilities"}]}]},{"group":"Release Notes","icon":"clock-rotate-left","pages":[{"title":"Developer Release Notes","sidebarTitle":"Release notes","icon":"clock-rotate-left","href":"/v2/developer-reference/changelog"}]}]},{"version":"v3","default":true,"pages":[{"title":"v3","href":"/v3/overview"}]}]}]},"basePath":"","title":"Create campaign - Apostra","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}