From c453bc5f3e9e1cb96dada4c72a873b0a1319d329 Mon Sep 17 00:00:00 2001 From: BaiyuScope3 Date: Tue, 13 Jan 2026 18:32:58 -0500 Subject: [PATCH] build: rebuild dist/schemas/2.6.0 with impressions and paused fields Includes: - impressions field in package-request.json and update-media-buy-request.json - paused field in package-request.json - Other pending schema updates from 2.6.x source --- dist/schemas/2.6.0/adagents.json | 92 ++++++++++ .../media-buy/build-creative-request.json | 2 +- .../media-buy/build-creative-response.json | 2 +- .../media-buy/create-media-buy-request.json | 12 +- .../media-buy/create-media-buy-response.json | 2 +- .../get-media-buy-delivery-request.json | 2 +- .../get-media-buy-delivery-response.json | 2 +- .../media-buy/get-products-request.json | 28 ++- .../media-buy/get-products-response.json | 6 +- .../list-authorized-properties-request.json | 2 +- .../list-authorized-properties-response.json | 2 +- .../list-creative-formats-request.json | 2 +- .../list-creative-formats-response.json | 2 +- .../media-buy/list-creatives-request.json | 2 +- .../media-buy/list-creatives-response.json | 2 +- .../bundled/media-buy/package-request.json | 12 +- .../provide-performance-feedback-request.json | 2 +- ...provide-performance-feedback-response.json | 2 +- .../media-buy/sync-creatives-request.json | 2 +- .../media-buy/sync-creatives-response.json | 2 +- .../media-buy/update-media-buy-request.json | 7 +- .../media-buy/update-media-buy-response.json | 2 +- .../signals/activate-signal-request.json | 2 +- .../signals/activate-signal-response.json | 2 +- .../bundled/signals/get-signals-request.json | 2 +- .../bundled/signals/get-signals-response.json | 2 +- dist/schemas/2.6.0/core/identifier.json | 19 ++ .../schemas/2.6.0/core/property-list-ref.json | 25 +++ .../2.6.0/creative/asset-types/index.json | 2 +- dist/schemas/2.6.0/enums/adcp-domain.json | 11 +- dist/schemas/2.6.0/enums/task-type.json | 18 +- .../2.6.0/extensions/extension-meta.json | 59 +++++++ dist/schemas/2.6.0/extensions/index.json | 9 + dist/schemas/2.6.0/index.json | 127 ++++++++++++- .../2.6.0/media-buy/get-products-request.json | 4 + .../media-buy/get-products-response.json | 4 + .../2.6.0/media-buy/package-request.json | 10 ++ .../media-buy/update-media-buy-request.json | 5 + .../2.6.0/property/authorization-result.json | 41 +++++ .../2.6.0/property/base-property-source.json | 87 +++++++++ .../create-property-list-request.json | 40 +++++ .../create-property-list-response.json | 22 +++ .../delete-property-list-request.json | 21 +++ .../delete-property-list-response.json | 22 +++ .../2.6.0/property/delivery-record.json | 32 ++++ .../2.6.0/property/feature-requirement.json | 34 ++++ .../get-property-features-request.json | 68 +++++++ .../get-property-features-response.json | 28 +++ .../property/get-property-list-request.json | 35 ++++ .../property/get-property-list-response.json | 68 +++++++ .../list-property-features-request.json | 27 +++ .../list-property-features-response.json | 21 +++ .../property/list-property-lists-request.json | 34 ++++ .../list-property-lists-response.json | 44 +++++ .../2.6.0/property/property-error.json | 31 ++++ .../property/property-feature-definition.json | 84 +++++++++ .../property/property-feature-result.json | 43 +++++ .../property/property-feature-value.json | 51 ++++++ .../2.6.0/property/property-feature.json | 23 +++ .../property-list-changed-webhook.json | 60 +++++++ .../2.6.0/property/property-list-filters.json | 47 +++++ .../schemas/2.6.0/property/property-list.json | 67 +++++++ .../update-property-list-request.json | 49 +++++ .../update-property-list-response.json | 18 ++ .../validate-property-delivery-request.json | 32 ++++ .../validate-property-delivery-response.json | 167 ++++++++++++++++++ .../2.6.0/property/validation-result.json | 79 +++++++++ .../2.6.0/protocols/adcp-extension.json | 16 +- 68 files changed, 1841 insertions(+), 40 deletions(-) create mode 100644 dist/schemas/2.6.0/core/identifier.json create mode 100644 dist/schemas/2.6.0/core/property-list-ref.json create mode 100644 dist/schemas/2.6.0/extensions/extension-meta.json create mode 100644 dist/schemas/2.6.0/extensions/index.json create mode 100644 dist/schemas/2.6.0/property/authorization-result.json create mode 100644 dist/schemas/2.6.0/property/base-property-source.json create mode 100644 dist/schemas/2.6.0/property/create-property-list-request.json create mode 100644 dist/schemas/2.6.0/property/create-property-list-response.json create mode 100644 dist/schemas/2.6.0/property/delete-property-list-request.json create mode 100644 dist/schemas/2.6.0/property/delete-property-list-response.json create mode 100644 dist/schemas/2.6.0/property/delivery-record.json create mode 100644 dist/schemas/2.6.0/property/feature-requirement.json create mode 100644 dist/schemas/2.6.0/property/get-property-features-request.json create mode 100644 dist/schemas/2.6.0/property/get-property-features-response.json create mode 100644 dist/schemas/2.6.0/property/get-property-list-request.json create mode 100644 dist/schemas/2.6.0/property/get-property-list-response.json create mode 100644 dist/schemas/2.6.0/property/list-property-features-request.json create mode 100644 dist/schemas/2.6.0/property/list-property-features-response.json create mode 100644 dist/schemas/2.6.0/property/list-property-lists-request.json create mode 100644 dist/schemas/2.6.0/property/list-property-lists-response.json create mode 100644 dist/schemas/2.6.0/property/property-error.json create mode 100644 dist/schemas/2.6.0/property/property-feature-definition.json create mode 100644 dist/schemas/2.6.0/property/property-feature-result.json create mode 100644 dist/schemas/2.6.0/property/property-feature-value.json create mode 100644 dist/schemas/2.6.0/property/property-feature.json create mode 100644 dist/schemas/2.6.0/property/property-list-changed-webhook.json create mode 100644 dist/schemas/2.6.0/property/property-list-filters.json create mode 100644 dist/schemas/2.6.0/property/property-list.json create mode 100644 dist/schemas/2.6.0/property/update-property-list-request.json create mode 100644 dist/schemas/2.6.0/property/update-property-list-response.json create mode 100644 dist/schemas/2.6.0/property/validate-property-delivery-request.json create mode 100644 dist/schemas/2.6.0/property/validate-property-delivery-response.json create mode 100644 dist/schemas/2.6.0/property/validation-result.json diff --git a/dist/schemas/2.6.0/adagents.json b/dist/schemas/2.6.0/adagents.json index 4fafdaa844..f8f88a7be8 100644 --- a/dist/schemas/2.6.0/adagents.json +++ b/dist/schemas/2.6.0/adagents.json @@ -264,6 +264,38 @@ "type": "string", "format": "date-time", "description": "ISO 8601 timestamp indicating when this file was last updated" + }, + "property_features": { + "type": "array", + "description": "[AdCP 3.0] Optional list of agents that provide property feature data (certifications, scores, compliance status). Used for discovery - actual data comes from querying the agent's get_property_features task.", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The agent's API endpoint URL (must implement get_property_features)" + }, + "name": { + "type": "string", + "description": "Human-readable name of the vendor/agent (e.g., 'Scope3', 'TAG', 'OneTrust')" + }, + "features": { + "type": "array", + "description": "Feature IDs this agent provides (e.g., 'carbon_score', 'tag_certified_against_fraud'). Use list_property_features on the agent for full definitions.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "publisher_id": { + "type": "string", + "description": "Optional publisher identifier at this agent (for lookup)" + } + }, + "required": ["url", "name", "features"], + "additionalProperties": true + } } }, "required": [ @@ -489,6 +521,66 @@ } ], "last_updated": "2025-01-10T17:00:00Z" + }, + { + "$schema": "/schemas/2.6.0/adagents.json", + "contact": { + "name": "Premium News Publisher", + "email": "adops@news.example.com", + "domain": "news.example.com" + }, + "properties": [ + { + "property_type": "website", + "name": "News Example", + "identifiers": [ + { + "type": "domain", + "value": "news.example.com" + } + ], + "tags": ["premium", "news"], + "publisher_domain": "news.example.com" + } + ], + "tags": { + "premium": { + "name": "Premium Properties", + "description": "High-quality, brand-safe properties" + }, + "news": { + "name": "News Properties", + "description": "News and journalism content" + } + }, + "authorized_agents": [ + { + "url": "https://sales.news.example.com", + "authorized_for": "All news properties", + "authorization_type": "property_tags", + "property_tags": ["news"] + } + ], + "property_features": [ + { + "url": "https://api.scope3.com", + "name": "Scope3", + "features": ["carbon_score", "sustainability_grade"], + "publisher_id": "pub_news_12345" + }, + { + "url": "https://api.tagtoday.net", + "name": "TAG", + "features": ["tag_certified_against_fraud", "tag_brand_safety_certified"] + }, + { + "url": "https://api.onetrust.com", + "name": "OneTrust", + "features": ["gdpr_compliant", "tcf_registered", "ccpa_compliant"], + "publisher_id": "ot_news_67890" + } + ], + "last_updated": "2025-01-10T18:00:00Z" } ] } diff --git a/dist/schemas/2.6.0/bundled/media-buy/build-creative-request.json b/dist/schemas/2.6.0/bundled/media-buy/build-creative-request.json index add3c1ba85..47860690c1 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/build-creative-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/build-creative-request.json @@ -1343,7 +1343,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.823Z", + "generatedAt": "2026-01-13T23:32:36.212Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/build-creative-response.json b/dist/schemas/2.6.0/bundled/media-buy/build-creative-response.json index d3b8342b62..ea6e61cedb 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/build-creative-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/build-creative-response.json @@ -1377,7 +1377,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.825Z", + "generatedAt": "2026-01-13T23:32:36.213Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-request.json b/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-request.json index 9b5f26e79c..4b8eeb36e8 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-request.json @@ -104,6 +104,16 @@ "description": "Bid price for auction-based CPM pricing (required if using cpm-auction-option)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Impression goal for this package", + "minimum": 0 + }, + "paused": { + "type": "boolean", + "description": "Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.", + "default": false + }, "targeting_overlay": { "title": "Targeting Overlay", "description": "Optional geographic refinements for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are primarily for geographic restrictions (RCT testing, regulatory compliance).", @@ -2009,7 +2019,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.826Z", + "generatedAt": "2026-01-13T23:32:36.215Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-response.json b/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-response.json index 8d99b96e93..e88aeb9d3b 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/create-media-buy-response.json @@ -350,7 +350,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.827Z", + "generatedAt": "2026-01-13T23:32:36.216Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-request.json b/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-request.json index 26de332bc0..d06ada53f5 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-request.json @@ -86,7 +86,7 @@ }, "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.827Z", + "generatedAt": "2026-01-13T23:32:36.216Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-response.json b/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-response.json index e0053adb76..a5d1a44f9e 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/get-media-buy-delivery-response.json @@ -694,7 +694,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.828Z", + "generatedAt": "2026-01-13T23:32:36.216Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/get-products-request.json b/dist/schemas/2.6.0/bundled/media-buy/get-products-request.json index 63d7d0ab1f..1d9a99867c 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/get-products-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/get-products-request.json @@ -635,6 +635,32 @@ }, "additionalProperties": true }, + "property_list": { + "title": "Property List Reference", + "description": "[AdCP 3.0] Reference to an externally managed property list. When provided, the sales agent should filter products to only those available on properties in the list.", + "type": "object", + "properties": { + "agent_url": { + "type": "string", + "format": "uri", + "description": "URL of the agent managing the property list" + }, + "list_id": { + "type": "string", + "description": "Identifier for the property list within the agent", + "minLength": 1 + }, + "auth_token": { + "type": "string", + "description": "JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access." + } + }, + "required": [ + "agent_url", + "list_id" + ], + "additionalProperties": false + }, "context": { "title": "Context Object", "description": "Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.", @@ -651,7 +677,7 @@ "required": [], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.829Z", + "generatedAt": "2026-01-13T23:32:36.217Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/get-products-response.json b/dist/schemas/2.6.0/bundled/media-buy/get-products-response.json index b0599f53d8..9b5ca4db25 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/get-products-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/get-products-response.json @@ -1289,6 +1289,10 @@ "additionalProperties": true } }, + "property_list_applied": { + "type": "boolean", + "description": "[AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent." + }, "context": { "title": "Context Object", "description": "Opaque correlation data that is echoed unchanged in responses. Used for internal tracking, UI session IDs, trace IDs, and other caller-specific identifiers that don't affect protocol behavior. Context data is never parsed by AdCP agents - it's simply preserved and returned.", @@ -1307,7 +1311,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.830Z", + "generatedAt": "2026-01-13T23:32:36.218Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-request.json b/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-request.json index 7e4e17f7cf..d73f077c31 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-request.json @@ -30,7 +30,7 @@ }, "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.830Z", + "generatedAt": "2026-01-13T23:32:36.219Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-response.json b/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-response.json index 6ae624ec4f..58f94bfd58 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-authorized-properties-response.json @@ -122,7 +122,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.831Z", + "generatedAt": "2026-01-13T23:32:36.219Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-request.json b/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-request.json index d02fc863f7..6ab40d589b 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-request.json @@ -131,7 +131,7 @@ }, "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.831Z", + "generatedAt": "2026-01-13T23:32:36.219Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-response.json b/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-response.json index ed691f6fa6..536e1ab3b5 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-creative-formats-response.json @@ -792,7 +792,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.832Z", + "generatedAt": "2026-01-13T23:32:36.219Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-creatives-request.json b/dist/schemas/2.6.0/bundled/media-buy/list-creatives-request.json index 319341183d..b0b34dbd74 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-creatives-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-creatives-request.json @@ -288,7 +288,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.834Z", + "generatedAt": "2026-01-13T23:32:36.220Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/list-creatives-response.json b/dist/schemas/2.6.0/bundled/media-buy/list-creatives-response.json index ab7c867de7..8adabb227a 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/list-creatives-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/list-creatives-response.json @@ -1648,7 +1648,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.835Z", + "generatedAt": "2026-01-13T23:32:36.221Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/package-request.json b/dist/schemas/2.6.0/bundled/media-buy/package-request.json index 7bc4ce1b75..a6cd805bcf 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/package-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/package-request.json @@ -92,6 +92,16 @@ "description": "Bid price for auction-based CPM pricing (required if using cpm-auction-option)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Impression goal for this package", + "minimum": 0 + }, + "paused": { + "type": "boolean", + "description": "Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.", + "default": false + }, "targeting_overlay": { "title": "Targeting Overlay", "description": "Optional geographic refinements for media buys. Most targeting should be expressed in the brief and handled by the publisher. These fields are primarily for geographic restrictions (RCT testing, regulatory compliance).", @@ -1417,7 +1427,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.836Z", + "generatedAt": "2026-01-13T23:32:36.222Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-request.json b/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-request.json index 6a8d687c7f..1f528b1e8a 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-request.json @@ -110,7 +110,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.837Z", + "generatedAt": "2026-01-13T23:32:36.222Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-response.json b/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-response.json index 6b4878652f..a9865aef05 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/provide-performance-feedback-response.json @@ -111,7 +111,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.837Z", + "generatedAt": "2026-01-13T23:32:36.223Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-request.json b/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-request.json index 0b56121358..da02739601 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-request.json @@ -1469,7 +1469,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.839Z", + "generatedAt": "2026-01-13T23:32:36.224Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-response.json b/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-response.json index cab162ded4..3bb14a7129 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/sync-creatives-response.json @@ -202,7 +202,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.839Z", + "generatedAt": "2026-01-13T23:32:36.224Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-request.json b/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-request.json index c8d8fa805e..ce16186f4d 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-request.json +++ b/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-request.json @@ -77,6 +77,11 @@ "description": "Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Updated impression goal for this package", + "minimum": 0 + }, "paused": { "type": "boolean", "description": "Pause/resume specific package (true = paused, false = active)" @@ -1519,7 +1524,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.840Z", + "generatedAt": "2026-01-13T23:32:36.225Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-response.json b/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-response.json index 23ebd57c19..7828c98760 100644 --- a/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-response.json +++ b/dist/schemas/2.6.0/bundled/media-buy/update-media-buy-response.json @@ -352,7 +352,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.841Z", + "generatedAt": "2026-01-13T23:32:36.226Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/signals/activate-signal-request.json b/dist/schemas/2.6.0/bundled/signals/activate-signal-request.json index 24de122d6e..a2c0e35d27 100644 --- a/dist/schemas/2.6.0/bundled/signals/activate-signal-request.json +++ b/dist/schemas/2.6.0/bundled/signals/activate-signal-request.json @@ -84,7 +84,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.841Z", + "generatedAt": "2026-01-13T23:32:36.226Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/signals/activate-signal-response.json b/dist/schemas/2.6.0/bundled/signals/activate-signal-response.json index 6e532f84b2..15b22110fa 100644 --- a/dist/schemas/2.6.0/bundled/signals/activate-signal-response.json +++ b/dist/schemas/2.6.0/bundled/signals/activate-signal-response.json @@ -289,7 +289,7 @@ } ], "_bundled": { - "generatedAt": "2026-01-07T19:56:54.842Z", + "generatedAt": "2026-01-13T23:32:36.226Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/signals/get-signals-request.json b/dist/schemas/2.6.0/bundled/signals/get-signals-request.json index 85d7c3eb36..91146046e7 100644 --- a/dist/schemas/2.6.0/bundled/signals/get-signals-request.json +++ b/dist/schemas/2.6.0/bundled/signals/get-signals-request.json @@ -148,7 +148,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.842Z", + "generatedAt": "2026-01-13T23:32:36.227Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/bundled/signals/get-signals-response.json b/dist/schemas/2.6.0/bundled/signals/get-signals-response.json index d7acb6f13f..cbb4e048fe 100644 --- a/dist/schemas/2.6.0/bundled/signals/get-signals-response.json +++ b/dist/schemas/2.6.0/bundled/signals/get-signals-response.json @@ -321,7 +321,7 @@ ], "additionalProperties": true, "_bundled": { - "generatedAt": "2026-01-07T19:56:54.842Z", + "generatedAt": "2026-01-13T23:32:36.227Z", "note": "This is a bundled schema with all $ref resolved inline. For the modular version with references, use the parent directory." } } \ No newline at end of file diff --git a/dist/schemas/2.6.0/core/identifier.json b/dist/schemas/2.6.0/core/identifier.json new file mode 100644 index 0000000000..46ef4de592 --- /dev/null +++ b/dist/schemas/2.6.0/core/identifier.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/core/identifier.json", + "title": "Identifier", + "description": "A property identifier with type and value. Used to identify properties across platforms (domains, app store IDs, etc.).", + "type": "object", + "properties": { + "type": { + "$ref": "/schemas/2.6.0/enums/identifier-types.json", + "description": "Type of identifier" + }, + "value": { + "type": "string", + "description": "The identifier value. For domain type: 'example.com' matches base domain plus www and m subdomains; 'edition.example.com' matches that specific subdomain; '*.example.com' matches ALL subdomains but NOT base domain" + } + }, + "required": ["type", "value"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/core/property-list-ref.json b/dist/schemas/2.6.0/core/property-list-ref.json new file mode 100644 index 0000000000..0d2ea81e99 --- /dev/null +++ b/dist/schemas/2.6.0/core/property-list-ref.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/core/property-list-ref.json", + "title": "Property List Reference", + "description": "Reference to an externally managed property list. Enables passing large property sets (50,000+) without embedding them in requests. The receiving agent fetches and caches the list independently.", + "type": "object", + "properties": { + "agent_url": { + "type": "string", + "format": "uri", + "description": "URL of the agent managing the property list" + }, + "list_id": { + "type": "string", + "description": "Identifier for the property list within the agent", + "minLength": 1 + }, + "auth_token": { + "type": "string", + "description": "JWT or other authorization token for accessing the list. Optional if the list is public or caller has implicit access." + } + }, + "required": ["agent_url", "list_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/creative/asset-types/index.json b/dist/schemas/2.6.0/creative/asset-types/index.json index 14a3531866..188def9e1c 100644 --- a/dist/schemas/2.6.0/creative/asset-types/index.json +++ b/dist/schemas/2.6.0/creative/asset-types/index.json @@ -4,7 +4,7 @@ "title": "AdCP Asset Type Registry", "description": "Registry of asset types used in AdCP creative manifests. Each asset type defines the structure of actual content payloads (what you send), not requirements or constraints (which belong in format specifications).", "version": "1.0.0", - "lastUpdated": "2026-01-07", + "lastUpdated": "2026-01-13", "asset_types": { "image": { "description": "Static image asset (JPG, PNG, GIF, WebP, SVG)", diff --git a/dist/schemas/2.6.0/enums/adcp-domain.json b/dist/schemas/2.6.0/enums/adcp-domain.json index 2d48f76e84..375666ca42 100644 --- a/dist/schemas/2.6.0/enums/adcp-domain.json +++ b/dist/schemas/2.6.0/enums/adcp-domain.json @@ -4,8 +4,11 @@ "title": "AdCP Domain", "description": "AdCP protocol domains for task categorization", "type": "string", - "enum": [ - "media-buy", - "signals" - ] + "enum": ["media-buy", "signals", "governance", "creative"], + "enumDescriptions": { + "media-buy": "Campaign creation, package management, and delivery optimization", + "signals": "Audience signal discovery and activation", + "governance": "Property governance (identity, authorization, data, selection), brand standards, and compliance", + "creative": "Creative asset management, format discovery, and rendering" + } } diff --git a/dist/schemas/2.6.0/enums/task-type.json b/dist/schemas/2.6.0/enums/task-type.json index 9dcf5a33b0..2690a3400a 100644 --- a/dist/schemas/2.6.0/enums/task-type.json +++ b/dist/schemas/2.6.0/enums/task-type.json @@ -9,18 +9,30 @@ "update_media_buy", "sync_creatives", "activate_signal", - "get_signals" + "get_signals", + "list_property_features", + "create_property_list", + "update_property_list", + "get_property_list", + "list_property_lists", + "delete_property_list" ], "enumDescriptions": { "create_media_buy": "Media-buy domain: Create a new advertising campaign with one or more packages", "update_media_buy": "Media-buy domain: Update campaign settings, package configuration, or delivery parameters", "sync_creatives": "Media-buy domain: Sync creative assets to publisher's library with upsert semantics", "activate_signal": "Signals domain: Activate an audience signal on a specific platform or account", - "get_signals": "Signals domain: Discover available audience signals based on natural language description" + "get_signals": "Signals domain: Discover available audience signals based on natural language description", + "list_property_features": "Property domain: Discover what features a governance agent can evaluate", + "create_property_list": "Property domain: Create a new property list with filters and brand manifest", + "update_property_list": "Property domain: Update an existing property list", + "get_property_list": "Property domain: Retrieve a property list with resolved properties", + "list_property_lists": "Property domain: List all accessible property lists", + "delete_property_list": "Property domain: Delete a property list" }, "notes": [ "Task types map to specific AdCP task operations", - "Each task type belongs to either the 'media-buy' or 'signals' domain", + "Each task type belongs to the 'media-buy', 'signals', 'property', or 'creative' domain", "This enum is used in task management APIs (tasks/list, tasks/get) and webhook payloads", "New task types require a minor version bump per semantic versioning" ] diff --git a/dist/schemas/2.6.0/extensions/extension-meta.json b/dist/schemas/2.6.0/extensions/extension-meta.json new file mode 100644 index 0000000000..3d86f6b51d --- /dev/null +++ b/dist/schemas/2.6.0/extensions/extension-meta.json @@ -0,0 +1,59 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/extensions/extension-meta.json", + "title": "AdCP Extension File Schema", + "description": "Schema that all extension files must follow. Combines metadata (valid_from, docs_url) with the actual extension data schema. Extensions are auto-discovered from /schemas/extensions/*.json and included in versioned builds based on valid_from/valid_until.", + "type": "object", + "properties": { + "$schema": { + "type": "string", + "const": "http://json-schema.org/draft-07/schema#" + }, + "$id": { + "type": "string", + "pattern": "^/schemas/extensions/[a-z][a-z0-9_]*\\.json$", + "description": "Extension ID following pattern /schemas/extensions/{namespace}.json" + }, + "title": { + "type": "string", + "description": "Human-readable title for the extension" + }, + "description": { + "type": "string", + "description": "Description of what this extension provides" + }, + "valid_from": { + "type": "string", + "pattern": "^\\d+\\.\\d+$", + "description": "Minimum AdCP version this extension is compatible with (e.g., '2.5'). Extension will be included in all versioned schema builds >= this version." + }, + "valid_until": { + "type": "string", + "pattern": "^\\d+\\.\\d+$", + "description": "Last AdCP version this extension is compatible with (e.g., '3.0'). Omit if extension is still valid for current and future versions." + }, + "docs_url": { + "type": "string", + "format": "uri", + "description": "URL to documentation for implementors of this extension" + }, + "type": { + "const": "object", + "description": "Extensions must be objects (data within ext.{namespace})" + }, + "properties": { + "type": "object", + "description": "Schema properties defining the structure of ext.{namespace} data", + "additionalProperties": true + }, + "required": { + "type": "array", + "items": { "type": "string" }, + "description": "Required properties within the extension data" + }, + "additionalProperties": { + "description": "Whether additional properties are allowed in the extension data" + } + }, + "required": ["$schema", "$id", "title", "description", "valid_from", "type", "properties"] +} diff --git a/dist/schemas/2.6.0/extensions/index.json b/dist/schemas/2.6.0/extensions/index.json new file mode 100644 index 0000000000..eae3746a98 --- /dev/null +++ b/dist/schemas/2.6.0/extensions/index.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/extensions/index.json", + "title": "AdCP Extension Registry", + "description": "Auto-generated registry of formal AdCP extensions. Extensions provide typed schemas for vendor-specific or domain-specific data within the ext field. Agents declare which extensions they support in their agent card.", + "_generated": true, + "_generatedAt": "2026-01-13T23:32:36.210Z", + "extensions": {} +} \ No newline at end of file diff --git a/dist/schemas/2.6.0/index.json b/dist/schemas/2.6.0/index.json index ecb888befd..ac15127520 100644 --- a/dist/schemas/2.6.0/index.json +++ b/dist/schemas/2.6.0/index.json @@ -31,7 +31,7 @@ ] } }, - "lastUpdated": "2026-01-07", + "lastUpdated": "2026-01-13", "baseUrl": "/schemas/2.6.0", "schemas": { "core": { @@ -168,6 +168,14 @@ "property-tag": { "$ref": "/schemas/2.6.0/core/property-tag.json", "description": "Tag for categorizing publisher properties - lowercase alphanumeric with underscores only" + }, + "property-list-ref": { + "$ref": "/schemas/2.6.0/core/property-list-ref.json", + "description": "Reference to an externally managed property list for passing large property sets" + }, + "identifier": { + "$ref": "/schemas/2.6.0/core/identifier.json", + "description": "A property identifier with type and value" } } }, @@ -220,7 +228,7 @@ }, "task-type": { "$ref": "/schemas/2.6.0/enums/task-type.json", - "description": "Valid AdCP task types across all domains (create_media_buy, update_media_buy, sync_creatives, activate_signal, get_signals)" + "description": "Valid AdCP task types across all domains (create_media_buy, update_media_buy, sync_creatives, activate_signal, get_signals, list_property_features, create_property_list, get_property_list, update_property_list, delete_property_list)" }, "asset-content-type": { "$ref": "/schemas/2.6.0/enums/asset-content-type.json", @@ -280,7 +288,7 @@ }, "adcp-domain": { "$ref": "/schemas/2.6.0/enums/adcp-domain.json", - "description": "AdCP protocol domains (media-buy, signals)" + "description": "AdCP protocol domains (media-buy, signals, governance)" }, "http-method": { "$ref": "/schemas/2.6.0/enums/http-method.json", @@ -562,6 +570,105 @@ } } }, + "governance": { + "description": "Governance protocol for property governance, brand standards, and compliance", + "supporting-schemas": { + "property-feature-definition": { + "$ref": "/schemas/2.6.0/property/property-feature-definition.json", + "description": "Definition of a feature that a governance agent can evaluate" + }, + "property-feature": { + "$ref": "/schemas/2.6.0/property/property-feature.json", + "description": "A discrete feature assessment for a property" + }, + "feature-requirement": { + "$ref": "/schemas/2.6.0/property/feature-requirement.json", + "description": "A feature-based requirement for property filtering" + }, + "property-error": { + "$ref": "/schemas/2.6.0/property/property-error.json", + "description": "Error information for a property that could not be evaluated" + }, + "property-list": { + "$ref": "/schemas/2.6.0/property/property-list.json", + "description": "A managed property list with optional filters for dynamic evaluation" + }, + "property-list-filters": { + "$ref": "/schemas/2.6.0/property/property-list-filters.json", + "description": "Filters that dynamically modify a property list when resolved" + }, + "property-list-changed-webhook": { + "$ref": "/schemas/2.6.0/property/property-list-changed-webhook.json", + "description": "Webhook payload when a property list changes" + }, + "base-property-source": { + "$ref": "/schemas/2.6.0/property/base-property-source.json", + "description": "A source of properties for a property list - supports publisher+tags, publisher+property_ids, or direct identifiers" + } + }, + "tasks": { + "list-property-features": { + "request": { + "$ref": "/schemas/2.6.0/property/list-property-features-request.json", + "description": "Request parameters for discovering governance agent capabilities" + }, + "response": { + "$ref": "/schemas/2.6.0/property/list-property-features-response.json", + "description": "Response payload for list_property_features task" + } + }, + "create-property-list": { + "request": { + "$ref": "/schemas/2.6.0/property/create-property-list-request.json", + "description": "Request parameters for creating a new property list" + }, + "response": { + "$ref": "/schemas/2.6.0/property/create-property-list-response.json", + "description": "Response payload for create_property_list task" + } + }, + "update-property-list": { + "request": { + "$ref": "/schemas/2.6.0/property/update-property-list-request.json", + "description": "Request parameters for updating an existing property list" + }, + "response": { + "$ref": "/schemas/2.6.0/property/update-property-list-response.json", + "description": "Response payload for update_property_list task" + } + }, + "get-property-list": { + "request": { + "$ref": "/schemas/2.6.0/property/get-property-list-request.json", + "description": "Request parameters for retrieving a property list with resolved properties" + }, + "response": { + "$ref": "/schemas/2.6.0/property/get-property-list-response.json", + "description": "Response payload for get_property_list task" + } + }, + "list-property-lists": { + "request": { + "$ref": "/schemas/2.6.0/property/list-property-lists-request.json", + "description": "Request parameters for listing property lists" + }, + "response": { + "$ref": "/schemas/2.6.0/property/list-property-lists-response.json", + "description": "Response payload for list_property_lists task" + } + }, + "delete-property-list": { + "request": { + "$ref": "/schemas/2.6.0/property/delete-property-list-request.json", + "description": "Request parameters for deleting a property list" + }, + "response": { + "$ref": "/schemas/2.6.0/property/delete-property-list-response.json", + "description": "Response payload for delete_property_list task" + } + } + } + }, "adagents": { "description": "Authorized sales agents file format specification", "$ref": "/schemas/2.6.0/adagents.json", @@ -573,9 +680,21 @@ "schemas": { "adcp-extension": { "$ref": "/schemas/2.6.0/protocols/adcp-extension.json", - "description": "AdCP extension for agent cards (MCP and A2A). Declares AdCP version and supported protocol domains." + "description": "AdCP extension for agent cards (MCP and A2A). Declares AdCP version, supported protocol domains, and typed extensions." } } + }, + "extensions": { + "description": "Typed extension schemas for vendor-specific or domain-specific data. Extensions define the structure of data within the ext.{namespace} field. Agents declare which extensions they support in their agent card.", + "registry": { + "$ref": "/schemas/2.6.0/extensions/index.json", + "description": "Auto-generated registry of all available extensions with metadata" + }, + "meta": { + "$ref": "/schemas/2.6.0/extensions/extension-meta.json", + "description": "Schema that all extension files must follow. Defines valid_from, valid_until, and extension data structure." + }, + "schemas": {} } }, "usage": { diff --git a/dist/schemas/2.6.0/media-buy/get-products-request.json b/dist/schemas/2.6.0/media-buy/get-products-request.json index b44dfabdbe..deab15d64c 100644 --- a/dist/schemas/2.6.0/media-buy/get-products-request.json +++ b/dist/schemas/2.6.0/media-buy/get-products-request.json @@ -16,6 +16,10 @@ "filters": { "$ref": "/schemas/2.6.0/core/product-filters.json" }, + "property_list": { + "$ref": "/schemas/2.6.0/core/property-list-ref.json", + "description": "[AdCP 3.0] Reference to an externally managed property list. When provided, the sales agent should filter products to only those available on properties in the list." + }, "context": { "$ref": "/schemas/2.6.0/core/context.json" }, diff --git a/dist/schemas/2.6.0/media-buy/get-products-response.json b/dist/schemas/2.6.0/media-buy/get-products-response.json index 7212c9b4db..ae3c07fcaf 100644 --- a/dist/schemas/2.6.0/media-buy/get-products-response.json +++ b/dist/schemas/2.6.0/media-buy/get-products-response.json @@ -19,6 +19,10 @@ "$ref": "/schemas/2.6.0/core/error.json" } }, + "property_list_applied": { + "type": "boolean", + "description": "[AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent." + }, "context": { "$ref": "/schemas/2.6.0/core/context.json" }, diff --git a/dist/schemas/2.6.0/media-buy/package-request.json b/dist/schemas/2.6.0/media-buy/package-request.json index 785ccc02f9..fc2fb88841 100644 --- a/dist/schemas/2.6.0/media-buy/package-request.json +++ b/dist/schemas/2.6.0/media-buy/package-request.json @@ -38,6 +38,16 @@ "description": "Bid price for auction-based CPM pricing (required if using cpm-auction-option)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Impression goal for this package", + "minimum": 0 + }, + "paused": { + "type": "boolean", + "description": "Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false.", + "default": false + }, "targeting_overlay": { "$ref": "/schemas/2.6.0/core/targeting.json" }, diff --git a/dist/schemas/2.6.0/media-buy/update-media-buy-request.json b/dist/schemas/2.6.0/media-buy/update-media-buy-request.json index 40033c5589..f1d9d3e6db 100644 --- a/dist/schemas/2.6.0/media-buy/update-media-buy-request.json +++ b/dist/schemas/2.6.0/media-buy/update-media-buy-request.json @@ -52,6 +52,11 @@ "description": "Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)", "minimum": 0 }, + "impressions": { + "type": "number", + "description": "Updated impression goal for this package", + "minimum": 0 + }, "paused": { "type": "boolean", "description": "Pause/resume specific package (true = paused, false = active)" diff --git a/dist/schemas/2.6.0/property/authorization-result.json b/dist/schemas/2.6.0/property/authorization-result.json new file mode 100644 index 0000000000..e43b55cee8 --- /dev/null +++ b/dist/schemas/2.6.0/property/authorization-result.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/authorization-result.json", + "title": "Authorization Result", + "description": "Result of validating sales agent authorization for a property. Checks if the sales agent is listed in the property's adagents.json.", + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": ["authorized", "unauthorized", "unknown"], + "description": "Authorization status: authorized (agent in adagents.json), unauthorized (agent not in adagents.json), unknown (could not fetch or parse adagents.json)" + }, + "publisher_domain": { + "type": "string", + "description": "The publisher domain where adagents.json was checked" + }, + "sales_agent_url": { + "type": "string", + "format": "uri", + "description": "The sales agent URL that was validated" + }, + "violation": { + "type": "object", + "description": "Details about the authorization failure (only present for unauthorized status)", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable violation code" + }, + "message": { + "type": "string", + "description": "Human-readable violation description" + } + }, + "required": ["code", "message"], + "additionalProperties": false + } + }, + "required": ["status"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/base-property-source.json b/dist/schemas/2.6.0/property/base-property-source.json new file mode 100644 index 0000000000..107ab2048e --- /dev/null +++ b/dist/schemas/2.6.0/property/base-property-source.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/base-property-source.json", + "title": "Base Property Source", + "description": "A source of properties for a property list. Supports three selection patterns: publisher with tags, publisher with property IDs, or direct identifiers.", + "discriminator": { + "propertyName": "selection_type" + }, + "oneOf": [ + { + "type": "object", + "title": "Publisher Tags Source", + "description": "Select properties from a publisher by tag membership", + "properties": { + "selection_type": { + "type": "string", + "const": "publisher_tags", + "description": "Discriminator indicating selection by property tags within a publisher" + }, + "publisher_domain": { + "type": "string", + "description": "Domain where publisher's adagents.json is hosted (e.g., 'raptive.com')", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" + }, + "tags": { + "type": "array", + "description": "Property tags from the publisher's adagents.json. Selects all properties with these tags.", + "items": { + "$ref": "/schemas/2.6.0/core/property-tag.json" + }, + "minItems": 1 + } + }, + "required": ["selection_type", "publisher_domain", "tags"], + "additionalProperties": false + }, + { + "type": "object", + "title": "Publisher Property IDs Source", + "description": "Select specific properties from a publisher by ID", + "properties": { + "selection_type": { + "type": "string", + "const": "publisher_ids", + "description": "Discriminator indicating selection by specific property IDs within a publisher" + }, + "publisher_domain": { + "type": "string", + "description": "Domain where publisher's adagents.json is hosted (e.g., 'raptive.com')", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" + }, + "property_ids": { + "type": "array", + "description": "Specific property IDs from the publisher's adagents.json", + "items": { + "$ref": "/schemas/2.6.0/core/property-id.json" + }, + "minItems": 1 + } + }, + "required": ["selection_type", "publisher_domain", "property_ids"], + "additionalProperties": false + }, + { + "type": "object", + "title": "Direct Identifiers Source", + "description": "Select properties by direct identifiers (domains, app IDs, etc.) without publisher context", + "properties": { + "selection_type": { + "type": "string", + "const": "identifiers", + "description": "Discriminator indicating selection by direct identifiers" + }, + "identifiers": { + "type": "array", + "description": "Direct property identifiers (domains, app IDs, etc.)", + "items": { + "$ref": "/schemas/2.6.0/core/identifier.json" + }, + "minItems": 1 + } + }, + "required": ["selection_type", "identifiers"], + "additionalProperties": false + } + ] +} diff --git a/dist/schemas/2.6.0/property/create-property-list-request.json b/dist/schemas/2.6.0/property/create-property-list-request.json new file mode 100644 index 0000000000..1391c41730 --- /dev/null +++ b/dist/schemas/2.6.0/property/create-property-list-request.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/create-property-list-request.json", + "title": "Create Property List Request", + "description": "Request parameters for creating a new property list", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for the list" + }, + "description": { + "type": "string", + "description": "Description of the list's purpose" + }, + "base_properties": { + "type": "array", + "description": "Array of property sources to evaluate. Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers). If omitted, queries the agent's entire property database.", + "items": { + "$ref": "/schemas/2.6.0/property/base-property-source.json" + } + }, + "filters": { + "$ref": "/schemas/2.6.0/property/property-list-filters.json", + "description": "Dynamic filters to apply when resolving the list" + }, + "brand_manifest": { + "$ref": "/schemas/2.6.0/core/brand-manifest.json", + "description": "Brand identity and requirements. When provided, the agent automatically applies appropriate rules based on brand characteristics (industry, target_audience, etc.)." + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["name"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/create-property-list-response.json b/dist/schemas/2.6.0/property/create-property-list-response.json new file mode 100644 index 0000000000..d745d41653 --- /dev/null +++ b/dist/schemas/2.6.0/property/create-property-list-response.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/create-property-list-response.json", + "title": "Create Property List Response", + "description": "Response payload for create_property_list task", + "type": "object", + "properties": { + "list": { + "$ref": "/schemas/2.6.0/property/property-list.json", + "description": "The created property list" + }, + "auth_token": { + "type": "string", + "description": "Token that can be shared with sellers to authorize fetching this list. Store this - it is only returned at creation time." + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list", "auth_token"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/delete-property-list-request.json b/dist/schemas/2.6.0/property/delete-property-list-request.json new file mode 100644 index 0000000000..f0b9bf2b7c --- /dev/null +++ b/dist/schemas/2.6.0/property/delete-property-list-request.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/delete-property-list-request.json", + "title": "Delete Property List Request", + "description": "Request parameters for deleting a property list", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "ID of the property list to delete" + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/delete-property-list-response.json b/dist/schemas/2.6.0/property/delete-property-list-response.json new file mode 100644 index 0000000000..548b2383c1 --- /dev/null +++ b/dist/schemas/2.6.0/property/delete-property-list-response.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/delete-property-list-response.json", + "title": "Delete Property List Response", + "description": "Response payload for delete_property_list task", + "type": "object", + "properties": { + "deleted": { + "type": "boolean", + "description": "Whether the list was successfully deleted" + }, + "list_id": { + "type": "string", + "description": "ID of the deleted list" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["deleted", "list_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/delivery-record.json b/dist/schemas/2.6.0/property/delivery-record.json new file mode 100644 index 0000000000..dcc200dcc2 --- /dev/null +++ b/dist/schemas/2.6.0/property/delivery-record.json @@ -0,0 +1,32 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/delivery-record.json", + "title": "Delivery Record", + "description": "A single delivery record representing impressions served to a property identifier. Used as input to validate_property_delivery.", + "type": "object", + "properties": { + "identifier": { + "$ref": "/schemas/2.6.0/core/identifier.json", + "description": "The property identifier where impressions were delivered" + }, + "impressions": { + "type": "integer", + "minimum": 0, + "description": "Number of impressions delivered to this identifier" + }, + "record_id": { + "type": "string", + "description": "Optional client-provided ID for correlating results back to source data" + }, + "sales_agent_url": { + "type": "string", + "format": "uri", + "description": "URL of the sales agent that sold this inventory. If provided, authorization is validated against the property's adagents.json." + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["identifier", "impressions"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/feature-requirement.json b/dist/schemas/2.6.0/property/feature-requirement.json new file mode 100644 index 0000000000..87ffb718ec --- /dev/null +++ b/dist/schemas/2.6.0/property/feature-requirement.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/feature-requirement.json", + "title": "Feature Requirement", + "description": "A feature-based requirement for property filtering. Use min_value/max_value for quantitative features, allowed_values for binary/categorical features.", + "type": "object", + "properties": { + "feature_id": { + "type": "string", + "description": "Feature to evaluate (discovered via list_property_features)" + }, + "min_value": { + "type": "number", + "description": "Minimum numeric value required (for quantitative features)" + }, + "max_value": { + "type": "number", + "description": "Maximum numeric value allowed (for quantitative features)" + }, + "allowed_values": { + "type": "array", + "description": "Values that pass the requirement (for binary/categorical features)", + "items": {} + }, + "if_not_covered": { + "type": "string", + "enum": ["exclude", "include"], + "default": "exclude", + "description": "How to handle properties where this feature is not covered. 'exclude' (default): property is removed from the list. 'include': property passes this requirement (fail-open)." + } + }, + "required": ["feature_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/get-property-features-request.json b/dist/schemas/2.6.0/property/get-property-features-request.json new file mode 100644 index 0000000000..b74b43887a --- /dev/null +++ b/dist/schemas/2.6.0/property/get-property-features-request.json @@ -0,0 +1,68 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/get-property-features-request.json", + "title": "Get Property Features Request", + "description": "Request payload for get_property_features task. Retrieves feature values for properties from a governance agent. Supports two modes: explicit property list OR publisher-based discovery.", + "type": "object", + "properties": { + "properties": { + "type": "array", + "description": "Explicit list of properties to get features for. Can be domain strings or structured property references. Use this when you know exactly which properties you want.", + "items": { + "oneOf": [ + { + "type": "string", + "description": "Domain string (e.g., 'example.com')" + }, + { + "$ref": "/schemas/2.6.0/core/property-id.json" + } + ] + }, + "minItems": 1, + "maxItems": 100 + }, + "publisher_domain": { + "type": "string", + "description": "Publisher domain to discover properties for. Use this to get features for all properties belonging to a publisher. Can be combined with property_types and property_tags for filtering." + }, + "property_types": { + "type": "array", + "description": "Filter to specific property types (e.g., 'website', 'mobile_app', 'ctv_app'). Only applies when using publisher_domain.", + "items": { + "$ref": "/schemas/2.6.0/enums/property-type.json" + } + }, + "property_tags": { + "type": "array", + "description": "Filter to properties with these tags. Only applies when using publisher_domain.", + "items": { + "$ref": "/schemas/2.6.0/core/property-tag.json" + } + }, + "feature_ids": { + "type": "array", + "description": "Optional filter to specific features. If omitted, returns all available features.", + "items": { + "type": "string" + } + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "oneOf": [ + { + "required": ["properties"], + "description": "Explicit property list mode" + }, + { + "required": ["publisher_domain"], + "description": "Publisher discovery mode" + } + ], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/get-property-features-response.json b/dist/schemas/2.6.0/property/get-property-features-response.json new file mode 100644 index 0000000000..56b2334b29 --- /dev/null +++ b/dist/schemas/2.6.0/property/get-property-features-response.json @@ -0,0 +1,28 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/get-property-features-response.json", + "title": "Get Property Features Response", + "description": "Response payload for get_property_features task. Returns feature values for requested properties.", + "type": "object", + "properties": { + "results": { + "type": "array", + "description": "Feature values for each requested property", + "items": { + "$ref": "/schemas/2.6.0/property/property-feature-result.json" + } + }, + "errors": { + "type": "array", + "description": "Errors for properties that could not be processed", + "items": { + "$ref": "/schemas/2.6.0/core/error.json" + } + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["results"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/get-property-list-request.json b/dist/schemas/2.6.0/property/get-property-list-request.json new file mode 100644 index 0000000000..eb7d75488e --- /dev/null +++ b/dist/schemas/2.6.0/property/get-property-list-request.json @@ -0,0 +1,35 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/get-property-list-request.json", + "title": "Get Property List Request", + "description": "Request parameters for retrieving a property list with resolved identifiers", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "ID of the property list to retrieve" + }, + "resolve": { + "type": "boolean", + "description": "Whether to apply filters and return resolved identifiers (default: true)", + "default": true + }, + "max_results": { + "type": "integer", + "description": "Maximum identifiers to return (for large lists)", + "minimum": 1 + }, + "cursor": { + "type": "string", + "description": "Pagination cursor for large result sets" + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/get-property-list-response.json b/dist/schemas/2.6.0/property/get-property-list-response.json new file mode 100644 index 0000000000..a4113455ac --- /dev/null +++ b/dist/schemas/2.6.0/property/get-property-list-response.json @@ -0,0 +1,68 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/get-property-list-response.json", + "title": "Get Property List Response", + "description": "Response payload for get_property_list task. Returns identifiers only (not full property objects or scores). Consumers should cache the resolved identifiers and refresh based on cache_valid_until.", + "type": "object", + "properties": { + "list": { + "$ref": "/schemas/2.6.0/property/property-list.json", + "description": "The property list metadata (always returned)" + }, + "identifiers": { + "type": "array", + "description": "Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use.", + "items": { + "$ref": "/schemas/2.6.0/core/identifier.json" + } + }, + "total_count": { + "type": "integer", + "description": "Total number of identifiers in resolved list" + }, + "returned_count": { + "type": "integer", + "description": "Number of identifiers returned in this response" + }, + "pagination": { + "type": "object", + "description": "Pagination information", + "properties": { + "has_more": { + "type": "boolean", + "description": "Whether more results are available" + }, + "cursor": { + "type": "string", + "description": "Cursor for next page" + } + }, + "additionalProperties": false + }, + "resolved_at": { + "type": "string", + "format": "date-time", + "description": "When the list was resolved" + }, + "cache_valid_until": { + "type": "string", + "format": "date-time", + "description": "Cache expiration timestamp. Re-fetch the list after this time to get updated identifiers." + }, + "coverage_gaps": { + "type": "object", + "description": "Properties included in the list despite missing feature data. Only present when a feature_requirement has if_not_covered='include'. Maps feature_id to list of identifiers not covered for that feature.", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "/schemas/2.6.0/core/identifier.json" + } + } + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/list-property-features-request.json b/dist/schemas/2.6.0/property/list-property-features-request.json new file mode 100644 index 0000000000..5beb1ded0d --- /dev/null +++ b/dist/schemas/2.6.0/property/list-property-features-request.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/list-property-features-request.json", + "title": "List Property Features Request", + "description": "Request payload for list_property_features task. Discovers what features a governance agent can evaluate.", + "type": "object", + "properties": { + "property_types": { + "type": "array", + "description": "Filter to features available for these property types", + "items": { + "type": "string" + } + }, + "countries": { + "type": "array", + "description": "Filter to features available in these countries", + "items": { + "type": "string" + } + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/list-property-features-response.json b/dist/schemas/2.6.0/property/list-property-features-response.json new file mode 100644 index 0000000000..9be8c83bbe --- /dev/null +++ b/dist/schemas/2.6.0/property/list-property-features-response.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/list-property-features-response.json", + "title": "List Property Features Response", + "description": "Response payload for list_property_features task. Returns the features this governance agent can evaluate.", + "type": "object", + "properties": { + "features": { + "type": "array", + "description": "Features this agent can evaluate", + "items": { + "$ref": "/schemas/2.6.0/property/property-feature-definition.json" + } + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["features"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/list-property-lists-request.json b/dist/schemas/2.6.0/property/list-property-lists-request.json new file mode 100644 index 0000000000..f7b860aa14 --- /dev/null +++ b/dist/schemas/2.6.0/property/list-property-lists-request.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/list-property-lists-request.json", + "title": "List Property Lists Request", + "description": "Request parameters for listing property lists", + "type": "object", + "properties": { + "principal": { + "type": "string", + "description": "Filter to lists owned by this principal" + }, + "name_contains": { + "type": "string", + "description": "Filter to lists whose name contains this string" + }, + "max_results": { + "type": "integer", + "description": "Maximum lists to return", + "minimum": 1, + "default": 100 + }, + "cursor": { + "type": "string", + "description": "Pagination cursor" + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/list-property-lists-response.json b/dist/schemas/2.6.0/property/list-property-lists-response.json new file mode 100644 index 0000000000..cf3b8e95c7 --- /dev/null +++ b/dist/schemas/2.6.0/property/list-property-lists-response.json @@ -0,0 +1,44 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/list-property-lists-response.json", + "title": "List Property Lists Response", + "description": "Response payload for list_property_lists task", + "type": "object", + "properties": { + "lists": { + "type": "array", + "description": "Array of property lists (metadata only, not resolved properties)", + "items": { + "$ref": "/schemas/2.6.0/property/property-list.json" + } + }, + "total_count": { + "type": "integer", + "description": "Total number of lists matching criteria" + }, + "returned_count": { + "type": "integer", + "description": "Number of lists returned in this response" + }, + "pagination": { + "type": "object", + "description": "Pagination information", + "properties": { + "has_more": { + "type": "boolean", + "description": "Whether more results are available" + }, + "cursor": { + "type": "string", + "description": "Cursor for next page" + } + }, + "additionalProperties": false + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["lists"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-error.json b/dist/schemas/2.6.0/property/property-error.json new file mode 100644 index 0000000000..e05248cf47 --- /dev/null +++ b/dist/schemas/2.6.0/property/property-error.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-error.json", + "title": "Property Error", + "description": "Error information for a property that could not be evaluated", + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Error code", + "enum": [ + "PROPERTY_NOT_FOUND", + "PROPERTY_NOT_MONITORED", + "LIST_NOT_FOUND", + "LIST_ACCESS_DENIED", + "METHODOLOGY_NOT_SUPPORTED", + "JURISDICTION_NOT_SUPPORTED" + ] + }, + "property": { + "$ref": "/schemas/2.6.0/core/property.json", + "description": "The property that caused the error" + }, + "message": { + "type": "string", + "description": "Human-readable error message" + } + }, + "required": ["code", "message"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-feature-definition.json b/dist/schemas/2.6.0/property/property-feature-definition.json new file mode 100644 index 0000000000..5c9adcac77 --- /dev/null +++ b/dist/schemas/2.6.0/property/property-feature-definition.json @@ -0,0 +1,84 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-feature-definition.json", + "title": "Property Feature Definition", + "description": "Defines a feature that a governance agent can evaluate for properties. Used in list_property_features to advertise agent capabilities.", + "type": "object", + "properties": { + "feature_id": { + "type": "string", + "description": "Unique identifier for this feature (e.g., 'consent_quality', 'carbon_score', 'coppa_certified')" + }, + "name": { + "type": "string", + "description": "Human-readable name for the feature" + }, + "description": { + "type": "string", + "description": "Description of what this feature measures or represents" + }, + "type": { + "type": "string", + "enum": ["binary", "quantitative", "categorical"], + "description": "The type of values this feature produces: binary (true/false), quantitative (numeric range), categorical (enumerated values)" + }, + "range": { + "type": "object", + "description": "For quantitative features, the valid range of values", + "properties": { + "min": { + "type": "number", + "description": "Minimum value" + }, + "max": { + "type": "number", + "description": "Maximum value" + } + }, + "required": ["min", "max"], + "additionalProperties": false + }, + "allowed_values": { + "type": "array", + "description": "For categorical features, the set of valid values", + "items": { + "type": "string" + } + }, + "coverage": { + "type": "object", + "description": "What this feature covers (empty arrays = all)", + "properties": { + "property_types": { + "type": "array", + "description": "Property types this feature applies to", + "items": { + "type": "string" + } + }, + "countries": { + "type": "array", + "description": "Countries where this feature is available", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "methodology_url": { + "type": "string", + "format": "uri", + "description": "URL to documentation explaining how this feature is calculated/measured" + }, + "methodology_version": { + "type": "string", + "description": "Version identifier for the methodology (for audit trails)" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["feature_id", "name", "type", "methodology_url"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-feature-result.json b/dist/schemas/2.6.0/property/property-feature-result.json new file mode 100644 index 0000000000..74fa6bfad5 --- /dev/null +++ b/dist/schemas/2.6.0/property/property-feature-result.json @@ -0,0 +1,43 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-feature-result.json", + "title": "Property Feature Result", + "description": "Feature values for a single property from a governance agent.", + "type": "object", + "properties": { + "property": { + "oneOf": [ + { + "type": "string", + "description": "Domain string (e.g., 'example.com')" + }, + { + "$ref": "/schemas/2.6.0/core/property-id.json" + } + ], + "description": "The property these features apply to" + }, + "features": { + "type": "object", + "description": "Map of feature_id to feature value", + "additionalProperties": { + "$ref": "/schemas/2.6.0/property/property-feature-value.json" + } + }, + "coverage_status": { + "type": "string", + "enum": ["covered", "not_covered", "pending"], + "description": "Whether this property is covered by this governance agent: covered (has data), not_covered (not measured), pending (measurement in progress)" + }, + "last_evaluated": { + "type": "string", + "format": "date-time", + "description": "When features were last evaluated for this property" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["property", "coverage_status"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-feature-value.json b/dist/schemas/2.6.0/property/property-feature-value.json new file mode 100644 index 0000000000..aad2b0083f --- /dev/null +++ b/dist/schemas/2.6.0/property/property-feature-value.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-feature-value.json", + "title": "Property Feature Value", + "description": "A single feature value for a property. Structure varies by feature type (binary, quantitative, categorical).", + "type": "object", + "properties": { + "value": { + "description": "The feature value. Type depends on feature definition: boolean for binary, number for quantitative, string for categorical.", + "oneOf": [ + { "type": "boolean" }, + { "type": "number" }, + { "type": "string" } + ] + }, + "unit": { + "type": "string", + "description": "Unit of measurement for quantitative values (e.g., 'gCO2e/1000_impressions', 'percentage')" + }, + "confidence": { + "type": "number", + "minimum": 0, + "maximum": 1, + "description": "Confidence score for this value (0-1)" + }, + "measured_at": { + "type": "string", + "format": "date-time", + "description": "When this specific value was measured" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "When this certification/value expires (for time-limited certifications)" + }, + "methodology_version": { + "type": "string", + "description": "Version of the methodology used to calculate this value" + }, + "details": { + "type": "object", + "description": "Additional vendor-specific details about this measurement", + "additionalProperties": true + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["value"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-feature.json b/dist/schemas/2.6.0/property/property-feature.json new file mode 100644 index 0000000000..81735ad433 --- /dev/null +++ b/dist/schemas/2.6.0/property/property-feature.json @@ -0,0 +1,23 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-feature.json", + "title": "Property Feature", + "description": "A discrete feature assessment for a property (e.g., from app store privacy labels)", + "type": "object", + "properties": { + "feature_id": { + "type": "string", + "description": "Identifier for the feature being assessed" + }, + "value": { + "type": "string", + "description": "The feature value" + }, + "source": { + "type": "string", + "description": "Source of the feature data (e.g., app_store_privacy_label, tcf_string)" + } + }, + "required": ["feature_id", "value"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-list-changed-webhook.json b/dist/schemas/2.6.0/property/property-list-changed-webhook.json new file mode 100644 index 0000000000..c1ce36f68a --- /dev/null +++ b/dist/schemas/2.6.0/property/property-list-changed-webhook.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-list-changed-webhook.json", + "title": "Property List Changed Webhook", + "description": "Webhook notification sent when a property list's resolved properties change. Contains a summary only - recipients must call get_property_list to retrieve the updated properties. This keeps payloads small and avoids redundant data transfer.", + "type": "object", + "properties": { + "event": { + "type": "string", + "const": "property_list_changed", + "description": "The event type" + }, + "list_id": { + "type": "string", + "description": "ID of the property list that changed" + }, + "list_name": { + "type": "string", + "description": "Name of the property list" + }, + "change_summary": { + "type": "object", + "description": "Summary of changes to the resolved list", + "properties": { + "properties_added": { + "type": "integer", + "description": "Number of properties added since last resolution" + }, + "properties_removed": { + "type": "integer", + "description": "Number of properties removed since last resolution" + }, + "total_properties": { + "type": "integer", + "description": "Total properties in the resolved list" + } + }, + "additionalProperties": false + }, + "resolved_at": { + "type": "string", + "format": "date-time", + "description": "When the list was re-resolved" + }, + "cache_valid_until": { + "type": "string", + "format": "date-time", + "description": "When the consumer should refresh from the governance agent" + }, + "signature": { + "type": "string", + "description": "Cryptographic signature of the webhook payload, signed with the agent's private key. Recipients MUST verify this signature." + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["event", "list_id", "resolved_at", "signature"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-list-filters.json b/dist/schemas/2.6.0/property/property-list-filters.json new file mode 100644 index 0000000000..e8968dcef1 --- /dev/null +++ b/dist/schemas/2.6.0/property/property-list-filters.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-list-filters.json", + "title": "Property List Filters", + "description": "Filters that dynamically modify a property list when resolved", + "type": "object", + "properties": { + "countries_all": { + "type": "array", + "description": "Property must have feature data for ALL listed countries (ISO codes). Required.", + "items": { + "type": "string", + "pattern": "^[A-Z]{2}$" + } + }, + "channels_any": { + "type": "array", + "description": "Property must support ANY of the listed channels. Required.", + "items": { + "$ref": "/schemas/2.6.0/enums/channels.json" + } + }, + "property_types": { + "type": "array", + "description": "Filter to these property types", + "items": { + "$ref": "/schemas/2.6.0/enums/property-type.json" + } + }, + "feature_requirements": { + "type": "array", + "description": "Feature-based requirements. Property must pass ALL requirements (AND logic).", + "items": { + "$ref": "/schemas/2.6.0/property/feature-requirement.json" + } + }, + "exclude_identifiers": { + "type": "array", + "description": "Identifiers to always exclude from results", + "items": { + "$ref": "/schemas/2.6.0/core/identifier.json" + } + } + }, + "required": ["countries_all", "channels_any"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/property-list.json b/dist/schemas/2.6.0/property/property-list.json new file mode 100644 index 0000000000..647670c5cc --- /dev/null +++ b/dist/schemas/2.6.0/property/property-list.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/property-list.json", + "title": "Property List", + "description": "A managed property list with optional filters for dynamic evaluation. Lists are resolved at setup time and cached by orchestrators/sellers for real-time use.", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "Unique identifier for this property list" + }, + "name": { + "type": "string", + "description": "Human-readable name for the list" + }, + "description": { + "type": "string", + "description": "Description of the list's purpose" + }, + "principal": { + "type": "string", + "description": "Principal identity that owns this list" + }, + "base_properties": { + "type": "array", + "description": "Array of property sources to evaluate. Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers). If omitted, queries the agent's entire property database.", + "items": { + "$ref": "/schemas/2.6.0/property/base-property-source.json" + } + }, + "filters": { + "$ref": "/schemas/2.6.0/property/property-list-filters.json", + "description": "Dynamic filters applied when resolving the list" + }, + "brand_manifest": { + "$ref": "/schemas/2.6.0/core/brand-manifest.json", + "description": "Brand identity used to automatically apply appropriate rules" + }, + "webhook_url": { + "type": "string", + "format": "uri", + "description": "URL to receive notifications when the resolved list changes" + }, + "cache_duration_hours": { + "type": "integer", + "description": "Recommended cache duration for resolved list. Consumers should re-fetch after this period.", + "minimum": 1, + "default": 24 + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "When the list was created" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "When the list was last modified" + }, + "property_count": { + "type": "integer", + "description": "Number of properties in the resolved list (at time of last resolution)" + } + }, + "required": ["list_id", "name"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/update-property-list-request.json b/dist/schemas/2.6.0/property/update-property-list-request.json new file mode 100644 index 0000000000..29368a3e11 --- /dev/null +++ b/dist/schemas/2.6.0/property/update-property-list-request.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/update-property-list-request.json", + "title": "Update Property List Request", + "description": "Request parameters for updating an existing property list", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "ID of the property list to update" + }, + "name": { + "type": "string", + "description": "New name for the list" + }, + "description": { + "type": "string", + "description": "New description" + }, + "base_properties": { + "type": "array", + "description": "Complete replacement for the base properties list (not a patch). Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers).", + "items": { + "$ref": "/schemas/2.6.0/property/base-property-source.json" + } + }, + "filters": { + "$ref": "/schemas/2.6.0/property/property-list-filters.json", + "description": "Complete replacement for the filters (not a patch)" + }, + "brand_manifest": { + "$ref": "/schemas/2.6.0/core/brand-manifest.json", + "description": "Update brand identity and requirements" + }, + "webhook_url": { + "type": "string", + "format": "uri", + "description": "Update the webhook URL for list change notifications (set to empty string to remove)" + }, + "context": { + "$ref": "/schemas/2.6.0/core/context.json" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list_id"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/update-property-list-response.json b/dist/schemas/2.6.0/property/update-property-list-response.json new file mode 100644 index 0000000000..435d4c7f09 --- /dev/null +++ b/dist/schemas/2.6.0/property/update-property-list-response.json @@ -0,0 +1,18 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/update-property-list-response.json", + "title": "Update Property List Response", + "description": "Response payload for update_property_list task", + "type": "object", + "properties": { + "list": { + "$ref": "/schemas/2.6.0/property/property-list.json", + "description": "The updated property list" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/validate-property-delivery-request.json b/dist/schemas/2.6.0/property/validate-property-delivery-request.json new file mode 100644 index 0000000000..39638929b8 --- /dev/null +++ b/dist/schemas/2.6.0/property/validate-property-delivery-request.json @@ -0,0 +1,32 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/validate-property-delivery-request.json", + "title": "Validate Property Delivery Request", + "description": "Request payload for validate_property_delivery task. Validates delivery records against a property list to determine compliance.", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "ID of the property list to validate against" + }, + "records": { + "type": "array", + "description": "Delivery records to validate. Each record represents impressions delivered to a property identifier.", + "items": { + "$ref": "/schemas/2.6.0/property/delivery-record.json" + }, + "minItems": 1, + "maxItems": 10000 + }, + "include_compliant": { + "type": "boolean", + "default": false, + "description": "Include compliant records in results (default: only return non_compliant, unmodeled, and unidentified)" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list_id", "records"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/validate-property-delivery-response.json b/dist/schemas/2.6.0/property/validate-property-delivery-response.json new file mode 100644 index 0000000000..ced6ba0e0e --- /dev/null +++ b/dist/schemas/2.6.0/property/validate-property-delivery-response.json @@ -0,0 +1,167 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/validate-property-delivery-response.json", + "title": "Validate Property Delivery Response", + "description": "Response payload for validate_property_delivery task. Returns aggregate compliance statistics and per-record validation results.", + "type": "object", + "properties": { + "list_id": { + "type": "string", + "description": "ID of the property list validated against" + }, + "summary": { + "type": "object", + "description": "Aggregate validation statistics", + "properties": { + "total_records": { + "type": "integer", + "description": "Total number of records validated" + }, + "total_impressions": { + "type": "integer", + "description": "Total impressions across all records" + }, + "compliant_records": { + "type": "integer", + "description": "Number of records with compliant status" + }, + "compliant_impressions": { + "type": "integer", + "description": "Impressions from compliant records" + }, + "non_compliant_records": { + "type": "integer", + "description": "Number of records with non_compliant status" + }, + "non_compliant_impressions": { + "type": "integer", + "description": "Impressions from non_compliant records" + }, + "not_covered_records": { + "type": "integer", + "description": "Number of records where identifier was recognized but no data available" + }, + "not_covered_impressions": { + "type": "integer", + "description": "Impressions from not_covered records" + }, + "unidentified_records": { + "type": "integer", + "description": "Number of records where identifier type was not resolvable" + }, + "unidentified_impressions": { + "type": "integer", + "description": "Impressions from unidentified records" + } + }, + "required": [ + "total_records", + "total_impressions", + "compliant_records", + "compliant_impressions", + "non_compliant_records", + "non_compliant_impressions", + "not_covered_records", + "not_covered_impressions", + "unidentified_records", + "unidentified_impressions" + ], + "additionalProperties": false + }, + "aggregate": { + "type": "object", + "description": "Optional aggregate measurements computed by the governance agent. Format and meaning are agent-specific.", + "properties": { + "score": { + "type": "number", + "description": "Numeric score (0-100 scale typical, but agent-defined)" + }, + "grade": { + "type": "string", + "description": "Letter grade or category (e.g., 'A+', 'B-', 'Gold', 'Compliant')" + }, + "label": { + "type": "string", + "description": "Human-readable summary (e.g., '85% compliant', 'High quality')" + }, + "methodology_url": { + "type": "string", + "format": "uri", + "description": "URL explaining how this aggregate was calculated" + } + }, + "additionalProperties": true + }, + "authorization_summary": { + "type": "object", + "description": "Aggregate authorization statistics. Only present if any records included sales_agent_url.", + "properties": { + "records_checked": { + "type": "integer", + "description": "Number of records with sales_agent_url provided" + }, + "impressions_checked": { + "type": "integer", + "description": "Total impressions from records with sales_agent_url" + }, + "authorized_records": { + "type": "integer", + "description": "Number of records where sales agent was authorized" + }, + "authorized_impressions": { + "type": "integer", + "description": "Impressions from authorized records" + }, + "unauthorized_records": { + "type": "integer", + "description": "Number of records where sales agent was NOT authorized" + }, + "unauthorized_impressions": { + "type": "integer", + "description": "Impressions from unauthorized records" + }, + "unknown_records": { + "type": "integer", + "description": "Number of records where authorization could not be determined (adagents.json unavailable)" + }, + "unknown_impressions": { + "type": "integer", + "description": "Impressions from records where authorization could not be determined" + } + }, + "required": [ + "records_checked", + "impressions_checked", + "authorized_records", + "authorized_impressions", + "unauthorized_records", + "unauthorized_impressions", + "unknown_records", + "unknown_impressions" + ], + "additionalProperties": false + }, + "results": { + "type": "array", + "description": "Per-record validation results. By default only includes non_compliant and unknown records. Set include_compliant=true to include all records.", + "items": { + "$ref": "/schemas/2.6.0/property/validation-result.json" + } + }, + "validated_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp when validation was performed" + }, + "list_resolved_at": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the property list resolution used for validation" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["list_id", "summary", "results", "validated_at"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/property/validation-result.json b/dist/schemas/2.6.0/property/validation-result.json new file mode 100644 index 0000000000..db1845ee8c --- /dev/null +++ b/dist/schemas/2.6.0/property/validation-result.json @@ -0,0 +1,79 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "/schemas/2.6.0/property/validation-result.json", + "title": "Validation Result", + "description": "Result of validating a single delivery record against a property list.", + "type": "object", + "properties": { + "identifier": { + "$ref": "/schemas/2.6.0/core/identifier.json", + "description": "The identifier that was validated" + }, + "record_id": { + "type": "string", + "description": "Client-provided ID from the delivery record (if provided)" + }, + "status": { + "type": "string", + "enum": ["compliant", "non_compliant", "not_covered", "unidentified"], + "description": "Validation status: compliant (in list), non_compliant (not in list), not_covered (identifier recognized but no data available), unidentified (identifier type not resolvable by this governance agent)" + }, + "impressions": { + "type": "integer", + "minimum": 0, + "description": "Number of impressions from this record" + }, + "violations": { + "type": "array", + "description": "Specific violations found (only present for non_compliant records)", + "items": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable violation code" + }, + "message": { + "type": "string", + "description": "Human-readable violation description" + }, + "feature_id": { + "type": "string", + "description": "ID of the feature that caused the violation (only present for feature_failed violations)" + }, + "requirement": { + "type": "object", + "description": "The feature requirement that was not met (only present for feature_failed violations)", + "properties": { + "min_value": { + "type": "number", + "description": "Minimum value that was required" + }, + "max_value": { + "type": "number", + "description": "Maximum value that was allowed" + }, + "allowed_values": { + "type": "array", + "description": "Values that would have been acceptable", + "items": {} + } + }, + "additionalProperties": false + } + }, + "required": ["code", "message"], + "additionalProperties": false + } + }, + "authorization": { + "$ref": "/schemas/2.6.0/property/authorization-result.json", + "description": "Authorization validation result (only present if sales_agent_url was provided in the delivery record)" + }, + "ext": { + "$ref": "/schemas/2.6.0/core/ext.json" + } + }, + "required": ["identifier", "status", "impressions"], + "additionalProperties": false +} diff --git a/dist/schemas/2.6.0/protocols/adcp-extension.json b/dist/schemas/2.6.0/protocols/adcp-extension.json index 3d31caf104..07ca8f429e 100644 --- a/dist/schemas/2.6.0/protocols/adcp-extension.json +++ b/dist/schemas/2.6.0/protocols/adcp-extension.json @@ -1,14 +1,14 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "/schemas/2.6.0/protocols/adcp-extension.json", - "title": "AdCP Agent Card Extension", - "description": "Extension metadata for agent cards (MCP and A2A) declaring AdCP version and supported protocol domains", + "title": "AdCP Agent Card Extension Params", + "description": "Parameters for declaring AdCP support in agent discovery. For A2A, use in extensions[].params. For MCP, use in _meta['adcontextprotocol.org'].", "type": "object", "properties": { "adcp_version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$", - "description": "Semantic version of the AdCP specification this agent implements (e.g., '2.4.0')" + "description": "Semantic version of the AdCP specification this agent implements (e.g., '2.5.0'). Extension schemas are versioned along with the AdCP spec." }, "protocols_supported": { "type": "array", @@ -23,6 +23,16 @@ "minItems": 1, "uniqueItems": true, "description": "AdCP protocol domains supported by this agent. At least one must be specified." + }, + "extensions_supported": { + "type": "array", + "description": "Typed extensions this agent supports. Each extension has a formal schema in /schemas/extensions/. Extension version is determined by adcp_version.", + "items": { + "type": "string", + "pattern": "^[a-z][a-z0-9_]*$", + "description": "Extension namespace (e.g., 'sustainability'). Must be lowercase alphanumeric with underscores." + }, + "uniqueItems": true } }, "required": [