diff --git a/schemas/cache/2.5/adagents.json b/schemas/cache/2.5/adagents.json new file mode 100644 index 000000000..0c079329d --- /dev/null +++ b/schemas/cache/2.5/adagents.json @@ -0,0 +1,493 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Authorized Sales Agents", + "description": "Declaration of authorized sales agents for advertising inventory. Hosted at /.well-known/adagents.json on publisher domains. Can either contain the full structure inline or reference an authoritative URL.", + "oneOf": [ + { + "type": "object", + "description": "URL reference variant - points to the authoritative location of the adagents.json file", + "properties": { + "$schema": { + "type": "string", + "description": "JSON Schema identifier for this adagents.json file" + }, + "authoritative_location": { + "type": "string", + "format": "uri", + "pattern": "^https://", + "description": "HTTPS URL of the authoritative adagents.json file. When present, this file is a reference and the authoritative location contains the actual agent authorization data." + }, + "last_updated": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp indicating when this reference was last updated" + } + }, + "required": [ + "authoritative_location" + ], + "additionalProperties": true + }, + { + "type": "object", + "description": "Inline structure variant - contains full agent authorization data", + "properties": { + "$schema": { + "type": "string", + "description": "JSON Schema identifier for this adagents.json file" + }, + "contact": { + "type": "object", + "description": "Contact information for the entity managing this adagents.json file (may be publisher or third-party operator)", + "properties": { + "name": { + "type": "string", + "description": "Name of the entity managing this file (e.g., 'Meta Advertising Operations', 'Clear Channel Digital')", + "minLength": 1, + "maxLength": 255 + }, + "email": { + "type": "string", + "format": "email", + "description": "Contact email for questions or issues with this authorization file", + "minLength": 1, + "maxLength": 255 + }, + "domain": { + "type": "string", + "description": "Primary domain of the entity managing this file", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" + }, + "seller_id": { + "type": "string", + "description": "Seller ID from IAB Tech Lab sellers.json (if applicable)", + "minLength": 1, + "maxLength": 255 + }, + "tag_id": { + "type": "string", + "description": "TAG Certified Against Fraud ID for verification (if applicable)", + "minLength": 1, + "maxLength": 100 + } + }, + "required": [ + "name" + ], + "additionalProperties": true + }, + "properties": { + "type": "array", + "description": "Array of all properties covered by this adagents.json file. Defines the canonical property list that authorized agents reference.", + "items": { + "$ref": "core/property.json" + }, + "minItems": 1 + }, + "tags": { + "type": "object", + "description": "Metadata for each tag referenced by properties. Provides human-readable context for property tag values.", + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for this tag" + }, + "description": { + "type": "string", + "description": "Description of what this tag represents" + } + }, + "required": [ + "name", + "description" + ], + "additionalProperties": true + } + }, + "authorized_agents": { + "type": "array", + "description": "Array of sales agents authorized to sell inventory for properties in this file", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The authorized agent's API endpoint URL" + }, + "authorized_for": { + "type": "string", + "description": "Human-readable description of what this agent is authorized to sell", + "minLength": 1, + "maxLength": 500 + }, + "authorization_type": { + "type": "string", + "const": "property_ids", + "description": "Discriminator indicating authorization by specific property IDs" + }, + "property_ids": { + "type": "array", + "description": "Property IDs this agent is authorized for. Resolved against the top-level properties array in this file", + "items": { + "$ref": "core/property-id.json" + }, + "minItems": 1 + } + }, + "required": [ + "url", + "authorized_for", + "authorization_type", + "property_ids" + ], + "additionalProperties": true + }, + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The authorized agent's API endpoint URL" + }, + "authorized_for": { + "type": "string", + "description": "Human-readable description of what this agent is authorized to sell", + "minLength": 1, + "maxLength": 500 + }, + "authorization_type": { + "type": "string", + "const": "property_tags", + "description": "Discriminator indicating authorization by property tags" + }, + "property_tags": { + "type": "array", + "description": "Tags identifying which properties this agent is authorized for. Resolved against the top-level properties array in this file using tag matching", + "items": { + "$ref": "core/property-tag.json" + }, + "minItems": 1 + } + }, + "required": [ + "url", + "authorized_for", + "authorization_type", + "property_tags" + ], + "additionalProperties": true + }, + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The authorized agent's API endpoint URL" + }, + "authorized_for": { + "type": "string", + "description": "Human-readable description of what this agent is authorized to sell", + "minLength": 1, + "maxLength": 500 + }, + "authorization_type": { + "type": "string", + "const": "inline_properties", + "description": "Discriminator indicating authorization by inline property definitions" + }, + "properties": { + "type": "array", + "description": "Specific properties this agent is authorized for (alternative to property_ids/property_tags)", + "items": { + "$ref": "core/property.json" + }, + "minItems": 1 + } + }, + "required": [ + "url", + "authorized_for", + "authorization_type", + "properties" + ], + "additionalProperties": true + }, + { + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "The authorized agent's API endpoint URL" + }, + "authorized_for": { + "type": "string", + "description": "Human-readable description of what this agent is authorized to sell", + "minLength": 1, + "maxLength": 500 + }, + "authorization_type": { + "type": "string", + "const": "publisher_properties", + "description": "Discriminator indicating authorization for properties from other publisher domains" + }, + "publisher_properties": { + "type": "array", + "description": "Properties from other publisher domains this agent is authorized for. Each entry specifies a publisher domain and which of their properties this agent can sell", + "items": { + "$ref": "core/publisher-property-selector.json" + }, + "minItems": 1 + } + }, + "required": [ + "url", + "authorized_for", + "authorization_type", + "publisher_properties" + ], + "additionalProperties": true + } + ] + }, + "minItems": 1 + }, + "last_updated": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp indicating when this file was last updated" + } + }, + "required": [ + "authorized_agents" + ], + "additionalProperties": true + } + ], + "examples": [ + { + "$schema": "/schemas/adagents.json", + "authoritative_location": "https://cdn.example.com/adagents/v2/adagents.json", + "last_updated": "2025-01-15T10:00:00Z" + }, + { + "$schema": "/schemas/adagents.json", + "properties": [ + { + "property_type": "website", + "name": "Example Site", + "identifiers": [ + { + "type": "domain", + "value": "example.com" + } + ], + "publisher_domain": "example.com" + } + ], + "authorized_agents": [ + { + "url": "https://agent.example.com", + "authorized_for": "Official sales agent", + "authorization_type": "property_tags", + "property_tags": [ + "all" + ] + } + ], + "tags": { + "all": { + "name": "All Properties", + "description": "All properties in this file" + } + }, + "last_updated": "2025-01-10T12:00:00Z" + }, + { + "$schema": "/schemas/adagents.json", + "contact": { + "name": "Meta Advertising Operations", + "email": "adops@meta.com", + "domain": "meta.com", + "seller_id": "pub-meta-12345", + "tag_id": "12345" + }, + "properties": [ + { + "property_type": "mobile_app", + "name": "Instagram", + "identifiers": [ + { + "type": "ios_bundle", + "value": "com.burbn.instagram" + }, + { + "type": "android_package", + "value": "com.instagram.android" + } + ], + "tags": [ + "meta_network", + "social_media" + ], + "publisher_domain": "instagram.com" + }, + { + "property_type": "mobile_app", + "name": "Facebook", + "identifiers": [ + { + "type": "ios_bundle", + "value": "com.facebook.Facebook" + }, + { + "type": "android_package", + "value": "com.facebook.katana" + } + ], + "tags": [ + "meta_network", + "social_media" + ], + "publisher_domain": "facebook.com" + }, + { + "property_type": "mobile_app", + "name": "WhatsApp", + "identifiers": [ + { + "type": "ios_bundle", + "value": "net.whatsapp.WhatsApp" + }, + { + "type": "android_package", + "value": "com.whatsapp" + } + ], + "tags": [ + "meta_network", + "messaging" + ], + "publisher_domain": "whatsapp.com" + } + ], + "tags": { + "meta_network": { + "name": "Meta Network", + "description": "All Meta-owned properties" + }, + "social_media": { + "name": "Social Media Apps", + "description": "Social networking applications" + }, + "messaging": { + "name": "Messaging Apps", + "description": "Messaging and communication apps" + } + }, + "authorized_agents": [ + { + "url": "https://meta-ads.com", + "authorized_for": "All Meta properties", + "authorization_type": "property_tags", + "property_tags": [ + "meta_network" + ] + } + ], + "last_updated": "2025-01-10T15:30:00Z" + }, + { + "$schema": "/schemas/adagents.json", + "contact": { + "name": "Tumblr Advertising" + }, + "properties": [ + { + "property_type": "website", + "name": "Tumblr Corporate", + "identifiers": [ + { + "type": "domain", + "value": "tumblr.com" + } + ], + "tags": [ + "corporate" + ], + "publisher_domain": "tumblr.com" + } + ], + "tags": { + "corporate": { + "name": "Corporate Properties", + "description": "Tumblr-owned corporate properties (not user blogs)" + } + }, + "authorized_agents": [ + { + "url": "https://tumblr-sales.com", + "authorized_for": "Tumblr corporate properties only", + "authorization_type": "property_tags", + "property_tags": [ + "corporate" + ] + } + ], + "last_updated": "2025-01-10T16:00:00Z" + }, + { + "$schema": "/schemas/adagents.json", + "contact": { + "name": "Example Third-Party Sales Agent", + "email": "sales@agent.example", + "domain": "agent.example" + }, + "authorized_agents": [ + { + "url": "https://agent.example/api", + "authorized_for": "CNN CTV properties via publisher authorization", + "authorization_type": "publisher_properties", + "publisher_properties": [ + { + "publisher_domain": "cnn.com", + "selection_type": "by_id", + "property_ids": [ + "cnn_ctv_app" + ] + } + ] + }, + { + "url": "https://agent.example/api", + "authorized_for": "All CTV properties from multiple publishers", + "authorization_type": "publisher_properties", + "publisher_properties": [ + { + "publisher_domain": "cnn.com", + "selection_type": "by_tag", + "property_tags": [ + "ctv" + ] + }, + { + "publisher_domain": "espn.com", + "selection_type": "by_tag", + "property_tags": [ + "ctv" + ] + } + ] + } + ], + "last_updated": "2025-01-10T17:00:00Z" + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/creative/list-creative-formats-request.json b/schemas/cache/2.5/bundled/creative/list-creative-formats-request.json new file mode 100644 index 000000000..7888c78d1 --- /dev/null +++ b/schemas/cache/2.5/bundled/creative/list-creative-formats-request.json @@ -0,0 +1,72 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creative Formats Request (Creative Agent)", + "description": "Request parameters for discovering creative formats provided by this creative agent", + "type": "object", + "properties": { + "format_ids": { + "type": "array", + "description": "Return only these specific format IDs", + "items": { + "$ref": "../../core/format-id.json" + } + }, + "type": { + "type": "string", + "description": "Filter by format type (technical categories with distinct requirements)", + "enum": [ + "audio", + "video", + "display", + "dooh" + ] + }, + "asset_types": { + "type": "array", + "description": "Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.", + "items": { + "type": "string", + "enum": [ + "image", + "video", + "audio", + "text", + "html", + "javascript", + "url" + ] + } + }, + "max_width": { + "type": "integer", + "description": "Maximum width in pixels (inclusive). Returns formats with width <= this value. Omit for responsive/fluid formats." + }, + "max_height": { + "type": "integer", + "description": "Maximum height in pixels (inclusive). Returns formats with height <= this value. Omit for responsive/fluid formats." + }, + "min_width": { + "type": "integer", + "description": "Minimum width in pixels (inclusive). Returns formats with width >= this value." + }, + "min_height": { + "type": "integer", + "description": "Minimum height in pixels (inclusive). Returns formats with height >= this value." + }, + "is_responsive": { + "type": "boolean", + "description": "Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions." + }, + "name_search": { + "type": "string", + "description": "Search for formats by name (case-insensitive partial match)" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/creative/list-creative-formats-response.json b/schemas/cache/2.5/bundled/creative/list-creative-formats-response.json new file mode 100644 index 000000000..391209c5a --- /dev/null +++ b/schemas/cache/2.5/bundled/creative/list-creative-formats-response.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creative Formats Response (Creative Agent)", + "description": "Response payload for list_creative_formats task from creative agent - returns full format definitions", + "type": "object", + "properties": { + "formats": { + "type": "array", + "description": "Full format definitions for all formats this agent supports. Each format's authoritative source is indicated by its agent_url field.", + "items": { + "$ref": "../../core/format.json" + } + }, + "creative_agents": { + "type": "array", + "description": "Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats.", + "items": { + "type": "object", + "properties": { + "agent_url": { + "type": "string", + "format": "uri", + "description": "Base URL for the creative agent (e.g., 'https://reference.adcp.org', 'https://dco.example.com'). Call list_creative_formats on this URL to get its formats." + }, + "agent_name": { + "type": "string", + "description": "Human-readable name for the creative agent" + }, + "capabilities": { + "type": "array", + "description": "Capabilities this creative agent provides", + "items": { + "$ref": "../../enums/creative-agent-capability.json" + } + } + }, + "required": [ + "agent_url" + ] + } + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "formats" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/creative/preview-creative-request.json b/schemas/cache/2.5/bundled/creative/preview-creative-request.json new file mode 100644 index 000000000..7d431736b --- /dev/null +++ b/schemas/cache/2.5/bundled/creative/preview-creative-request.json @@ -0,0 +1,163 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Preview Creative Request", + "description": "Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.", + "oneOf": [ + { + "type": "object", + "description": "Single creative preview request", + "properties": { + "request_type": { + "type": "string", + "const": "single", + "description": "Discriminator indicating this is a single preview request" + }, + "format_id": { + "$ref": "../../core/format-id.json", + "description": "Format identifier for rendering the preview" + }, + "creative_manifest": { + "$ref": "../../core/creative-manifest.json", + "description": "Complete creative manifest with all required assets (including promoted_offerings if required by the format)" + }, + "inputs": { + "type": "array", + "description": "Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for this input set (e.g., 'Sunny morning on mobile', 'Evening podcast ad', 'Desktop dark mode')" + }, + "macros": { + "type": "object", + "description": "Macro values to use for this preview. Supports all universal macros from the format's supported_macros list. See docs/creative/universal-macros.md for available macros.", + "additionalProperties": { + "type": "string" + } + }, + "context_description": { + "type": "string", + "description": "Natural language description of the context for AI-generated content (e.g., 'User just searched for running shoes', 'Podcast discussing weather patterns', 'Article about electric vehicles')" + } + }, + "required": [ + "name" + ], + "additionalProperties": true + } + }, + "template_id": { + "type": "string", + "description": "Specific template ID for custom format rendering" + }, + "output_format": { + "$ref": "../../enums/preview-output-format.json", + "default": "url", + "description": "Output format for previews. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding). Default: 'url' for backward compatibility." + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "request_type", + "format_id", + "creative_manifest" + ], + "additionalProperties": true + }, + { + "type": "object", + "description": "Batch preview request for multiple creatives (5-10x faster than individual calls)", + "properties": { + "request_type": { + "type": "string", + "const": "batch", + "description": "Discriminator indicating this is a batch preview request" + }, + "requests": { + "type": "array", + "description": "Array of preview requests (1-50 items). Each follows the single request structure.", + "items": { + "type": "object", + "properties": { + "format_id": { + "$ref": "../../core/format-id.json", + "description": "Format identifier for rendering the preview" + }, + "creative_manifest": { + "$ref": "../../core/creative-manifest.json", + "description": "Complete creative manifest with all required assets" + }, + "inputs": { + "type": "array", + "description": "Array of input sets for generating multiple preview variants", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for this input set" + }, + "macros": { + "type": "object", + "description": "Macro values to use for this preview", + "additionalProperties": { + "type": "string" + } + }, + "context_description": { + "type": "string", + "description": "Natural language description of the context for AI-generated content" + } + }, + "required": [ + "name" + ], + "additionalProperties": true + } + }, + "template_id": { + "type": "string", + "description": "Specific template ID for custom format rendering" + }, + "output_format": { + "$ref": "../../enums/preview-output-format.json", + "default": "url", + "description": "Output format for this preview. 'url' returns preview_url, 'html' returns preview_html." + } + }, + "required": [ + "format_id", + "creative_manifest" + ], + "additionalProperties": true + }, + "minItems": 1, + "maxItems": 50 + }, + "output_format": { + "$ref": "../../enums/preview-output-format.json", + "default": "url", + "description": "Default output format for all requests in this batch. Individual requests can override this. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding)." + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "request_type", + "requests" + ], + "additionalProperties": true + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/creative/preview-creative-response.json b/schemas/cache/2.5/bundled/creative/preview-creative-response.json new file mode 100644 index 000000000..007878ca8 --- /dev/null +++ b/schemas/cache/2.5/bundled/creative/preview-creative-response.json @@ -0,0 +1,244 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Preview Creative Response", + "description": "Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.", + "oneOf": [ + { + "title": "PreviewCreativeSingleResponse", + "type": "object", + "description": "Single preview response - each preview URL returns an HTML page that can be embedded in an iframe", + "properties": { + "response_type": { + "type": "string", + "const": "single", + "description": "Discriminator indicating this is a single preview response" + }, + "previews": { + "type": "array", + "description": "Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.", + "items": { + "type": "object", + "properties": { + "preview_id": { + "type": "string", + "description": "Unique identifier for this preview variant" + }, + "renders": { + "type": "array", + "description": "Array of rendered pieces for this preview variant. Most formats render as a single piece. Companion ad formats (video + banner), multi-placement formats, and adaptive formats render as multiple pieces.", + "items": { + "$ref": "../../creative/preview-render.json" + }, + "minItems": 1 + }, + "input": { + "type": "object", + "description": "The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.", + "properties": { + "name": { + "type": "string", + "description": "Human-readable name for this variant" + }, + "macros": { + "type": "object", + "description": "Macro values applied to this variant", + "additionalProperties": { + "type": "string" + } + }, + "context_description": { + "type": "string", + "description": "Context description applied to this variant" + } + }, + "required": [ + "name" + ] + } + }, + "required": [ + "preview_id", + "renders", + "input" + ] + }, + "minItems": 1 + }, + "interactive_url": { + "type": "string", + "format": "uri", + "description": "Optional URL to an interactive testing page that shows all preview variants with controls to switch between them, modify macro values, and test different scenarios." + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp when preview links expire" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "response_type", + "previews", + "expires_at" + ], + "additionalProperties": true + }, + { + "title": "PreviewCreativeBatchResponse", + "type": "object", + "description": "Batch preview response - contains results for multiple creative requests", + "properties": { + "response_type": { + "type": "string", + "const": "batch", + "description": "Discriminator indicating this is a batch preview response" + }, + "results": { + "type": "array", + "description": "Array of preview results corresponding to each request in the same order. results[0] is the result for requests[0], results[1] for requests[1], etc. Order is guaranteed even when some requests fail. Each result contains either a successful preview response or an error.", + "items": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Whether this preview request succeeded" + }, + "response": { + "type": "object", + "description": "Preview response for successful requests", + "properties": { + "previews": { + "type": "array", + "description": "Array of preview variants for this creative", + "items": { + "type": "object", + "properties": { + "preview_id": { + "type": "string" + }, + "renders": { + "type": "array", + "items": { + "$ref": "../../creative/preview-render.json" + }, + "minItems": 1 + }, + "input": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "macros": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "context_description": { + "type": "string" + } + }, + "required": [ + "name" + ] + } + }, + "required": [ + "preview_id", + "renders", + "input" + ] + }, + "minItems": 1 + }, + "interactive_url": { + "type": "string", + "format": "uri" + }, + "expires_at": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "previews", + "expires_at" + ] + }, + "error": { + "type": "object", + "description": "Error information for failed requests", + "properties": { + "code": { + "type": "string", + "description": "Error code (e.g., 'invalid_manifest', 'unsupported_format', 'missing_assets')" + }, + "message": { + "type": "string", + "description": "Human-readable error message" + }, + "details": { + "type": "object", + "description": "Additional error context", + "additionalProperties": true + } + }, + "required": [ + "code", + "message" + ] + } + }, + "required": [ + "success" + ], + "oneOf": [ + { + "title": "PreviewBatchResultSuccess", + "properties": { + "success": { + "type": "boolean", + "const": true + } + }, + "required": [ + "response" + ] + }, + { + "title": "PreviewBatchResultError", + "properties": { + "success": { + "type": "boolean", + "const": false + } + }, + "required": [ + "error" + ] + } + ] + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "response_type", + "results" + ], + "additionalProperties": true + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/build-creative-request.json b/schemas/cache/2.5/bundled/media-buy/build-creative-request.json new file mode 100644 index 000000000..f2b057379 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/build-creative-request.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Build Creative Request", + "description": "Request to transform or generate a creative manifest. Takes a source manifest (which may be minimal for pure generation) and produces a target manifest in the specified format. The source manifest should include all assets required by the target format (e.g., promoted_offerings for generative formats).", + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Natural language instructions for the transformation or generation. For pure generation, this is the creative brief. For transformation, this provides guidance on how to adapt the creative." + }, + "creative_manifest": { + "$ref": "../../core/creative-manifest.json", + "description": "Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt." + }, + "target_format_id": { + "$ref": "../../core/format-id.json", + "description": "Format ID to generate. The format definition specifies required input assets and output structure." + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "target_format_id" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/build-creative-response.json b/schemas/cache/2.5/bundled/media-buy/build-creative-response.json new file mode 100644 index 000000000..ff51af265 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/build-creative-response.json @@ -0,0 +1,64 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Build Creative Response", + "description": "Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.", + "type": "object", + "oneOf": [ + { + "title": "BuildCreativeSuccess", + "description": "Success response - creative manifest generated successfully", + "type": "object", + "properties": { + "creative_manifest": { + "$ref": "../../core/creative-manifest.json", + "description": "The generated or transformed creative manifest" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "creative_manifest" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "BuildCreativeError", + "description": "Error response - creative generation failed", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors explaining why creative generation failed", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "required": [ + "creative_manifest" + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/create-media-buy-request.json b/schemas/cache/2.5/bundled/media-buy/create-media-buy-request.json new file mode 100644 index 000000000..a4640c08a --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/create-media-buy-request.json @@ -0,0 +1,125 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Create Media Buy Request", + "description": "Request parameters for creating a media buy", + "type": "object", + "properties": { + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for this media buy" + }, + "packages": { + "type": "array", + "description": "Array of package configurations", + "items": { + "$ref": "../../media-buy/package-request.json" + } + }, + "brand_manifest": { + "$ref": "../../core/brand-manifest-ref.json", + "description": "Brand information manifest serving as the namespace and identity for this media buy. Provides brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest. Can be cached and reused across multiple requests." + }, + "po_number": { + "type": "string", + "description": "Purchase order number for tracking" + }, + "start_time": { + "$ref": "../../core/start-timing.json" + }, + "end_time": { + "type": "string", + "format": "date-time", + "description": "Campaign end date/time in ISO 8601 format" + }, + "reporting_webhook": { + "$comment": "Fields url, token, and authentication mirror push-notification-config.json. Inlined here because allOf + additionalProperties:false doesn't work in JSON Schema (additionalProperties can't see $ref properties). See CLAUDE.md 'Avoiding allOf with additionalProperties'.", + "type": "object", + "description": "Optional webhook configuration for automated reporting delivery. Combines push_notification_config structure with reporting-specific fields.", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "Webhook endpoint URL for reporting notifications" + }, + "token": { + "type": "string", + "description": "Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.", + "minLength": 16 + }, + "authentication": { + "type": "object", + "description": "Authentication configuration for webhook delivery (A2A-compatible)", + "properties": { + "schemes": { + "type": "array", + "description": "Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for signature verification (recommended for production)", + "items": { + "$ref": "../../enums/auth-scheme.json" + }, + "minItems": 1, + "maxItems": 1 + }, + "credentials": { + "type": "string", + "description": "Credentials for authentication. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.", + "minLength": 32 + } + }, + "required": [ + "schemes", + "credentials" + ], + "additionalProperties": false + }, + "reporting_frequency": { + "type": "string", + "enum": [ + "hourly", + "daily", + "monthly" + ], + "description": "Frequency for automated reporting delivery. Must be supported by all products in the media buy." + }, + "requested_metrics": { + "type": "array", + "description": "Optional list of metrics to include in webhook notifications. If omitted, all available metrics are included. Must be subset of product's available_metrics.", + "items": { + "type": "string", + "enum": [ + "impressions", + "spend", + "clicks", + "ctr", + "video_completions", + "completion_rate", + "conversions", + "viewability", + "engagement_rate" + ] + }, + "uniqueItems": true + } + }, + "required": [ + "url", + "authentication", + "reporting_frequency" + ], + "additionalProperties": true + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "buyer_ref", + "packages", + "brand_manifest", + "start_time", + "end_time" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/create-media-buy-response.json b/schemas/cache/2.5/bundled/media-buy/create-media-buy-response.json new file mode 100644 index 000000000..a8bd7336e --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/create-media-buy-response.json @@ -0,0 +1,96 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Create Media Buy Response", + "description": "Response payload for create_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the media buy is either fully created or not created at all.", + "type": "object", + "oneOf": [ + { + "title": "CreateMediaBuySuccess", + "description": "Success response - media buy created successfully", + "type": "object", + "properties": { + "media_buy_id": { + "type": "string", + "description": "Publisher's unique identifier for the created media buy" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for this media buy" + }, + "creative_deadline": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp for creative upload deadline" + }, + "packages": { + "type": "array", + "description": "Array of created packages with complete state information", + "items": { + "$ref": "../../core/package.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "media_buy_id", + "buyer_ref", + "packages" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "CreateMediaBuyError", + "description": "Error response - operation failed, no media buy created", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors explaining why the operation failed", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "media_buy_id" + ] + }, + { + "required": [ + "buyer_ref" + ] + }, + { + "required": [ + "packages" + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-request.json b/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-request.json new file mode 100644 index 000000000..1803c0018 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-request.json @@ -0,0 +1,53 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Media Buy Delivery Request", + "description": "Request parameters for retrieving comprehensive delivery metrics", + "type": "object", + "properties": { + "media_buy_ids": { + "type": "array", + "description": "Array of publisher media buy IDs to get delivery data for", + "items": { + "type": "string" + } + }, + "buyer_refs": { + "type": "array", + "description": "Array of buyer reference IDs to get delivery data for", + "items": { + "type": "string" + } + }, + "status_filter": { + "oneOf": [ + { + "$ref": "../../enums/media-buy-status.json" + }, + { + "type": "array", + "items": { + "$ref": "../../enums/media-buy-status.json" + } + } + ], + "description": "Filter by status. Can be a single status or array of statuses" + }, + "start_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "description": "Start date for reporting period (YYYY-MM-DD)" + }, + "end_date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "description": "End date for reporting period (YYYY-MM-DD)" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-response.json b/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-response.json new file mode 100644 index 000000000..13a47e6a4 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/get-media-buy-delivery-response.json @@ -0,0 +1,284 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Media Buy Delivery Response", + "description": "Response payload for get_media_buy_delivery task", + "type": "object", + "properties": { + "notification_type": { + "type": "string", + "enum": [ + "scheduled", + "final", + "delayed", + "adjusted" + ], + "description": "Type of webhook notification (only present in webhook deliveries): scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = resending period with updated data" + }, + "partial_data": { + "type": "boolean", + "description": "Indicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)" + }, + "unavailable_count": { + "type": "integer", + "minimum": 0, + "description": "Number of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)" + }, + "sequence_number": { + "type": "integer", + "minimum": 1, + "description": "Sequential notification number (only present in webhook deliveries, starts at 1)" + }, + "next_expected_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp for next expected notification (only present in webhook deliveries when notification_type is not 'final')" + }, + "reporting_period": { + "type": "object", + "description": "Date range for the report. All periods use UTC timezone.", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 start timestamp in UTC (e.g., 2024-02-05T00:00:00Z)" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 end timestamp in UTC (e.g., 2024-02-05T23:59:59Z)" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": true + }, + "currency": { + "type": "string", + "description": "ISO 4217 currency code", + "pattern": "^[A-Z]{3}$" + }, + "aggregated_totals": { + "type": "object", + "description": "Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.", + "properties": { + "impressions": { + "type": "number", + "description": "Total impressions delivered across all media buys", + "minimum": 0 + }, + "spend": { + "type": "number", + "description": "Total amount spent across all media buys", + "minimum": 0 + }, + "clicks": { + "type": "number", + "description": "Total clicks across all media buys (if applicable)", + "minimum": 0 + }, + "video_completions": { + "type": "number", + "description": "Total video completions across all media buys (if applicable)", + "minimum": 0 + }, + "media_buy_count": { + "type": "integer", + "description": "Number of media buys included in the response", + "minimum": 0 + } + }, + "required": [ + "impressions", + "spend", + "media_buy_count" + ], + "additionalProperties": true + }, + "media_buy_deliveries": { + "type": "array", + "description": "Array of delivery data for media buys. When used in webhook notifications, may contain multiple media buys aggregated by publisher. When used in get_media_buy_delivery API responses, typically contains requested media buys.", + "items": { + "type": "object", + "properties": { + "media_buy_id": { + "type": "string", + "description": "Publisher's media buy identifier" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for this media buy" + }, + "status": { + "type": "string", + "description": "Current media buy status. In webhook context, reporting_delayed indicates data temporarily unavailable.", + "enum": [ + "pending", + "active", + "paused", + "completed", + "failed", + "reporting_delayed" + ] + }, + "expected_availability": { + "type": "string", + "format": "date-time", + "description": "When delayed data is expected to be available (only present when status is reporting_delayed)" + }, + "is_adjusted": { + "type": "boolean", + "description": "Indicates this delivery contains updated data for a previously reported period. Buyer should replace previous period data with these totals." + }, + "pricing_model": { + "$ref": "../../enums/pricing-model.json", + "description": "Pricing model used for this media buy" + }, + "totals": { + "allOf": [ + { + "$ref": "../../core/delivery-metrics.json" + }, + { + "type": "object", + "description": "Aggregate metrics for this media buy across all packages", + "properties": { + "effective_rate": { + "type": "number", + "description": "Effective rate paid per unit based on pricing_model (e.g., actual CPM for 'cpm', actual cost per completed view for 'cpcv', actual cost per point for 'cpp')", + "minimum": 0 + } + }, + "required": [ + "spend" + ] + } + ] + }, + "by_package": { + "type": "array", + "description": "Metrics broken down by package", + "items": { + "allOf": [ + { + "$ref": "../../core/delivery-metrics.json" + }, + { + "type": "object", + "properties": { + "package_id": { + "type": "string", + "description": "Publisher's package identifier" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for this package" + }, + "pacing_index": { + "type": "number", + "description": "Delivery pace (1.0 = on track, <1.0 = behind, >1.0 = ahead)", + "minimum": 0 + }, + "pricing_model": { + "$ref": "../../enums/pricing-model.json", + "description": "The pricing model used for this package (e.g., cpm, cpcv, cpp). Indicates how the package is billed and which metrics are most relevant for optimization." + }, + "rate": { + "type": "number", + "description": "The pricing rate for this package in the specified currency. For fixed-rate pricing, this is the agreed rate (e.g., CPM rate of 12.50 means $12.50 per 1,000 impressions). For auction-based pricing, this represents the effective rate based on actual delivery.", + "minimum": 0 + }, + "currency": { + "type": "string", + "description": "ISO 4217 currency code (e.g., USD, EUR, GBP) for this package's pricing. Indicates the currency in which the rate and spend values are denominated. Different packages can use different currencies when supported by the publisher.", + "pattern": "^[A-Z]{3}$" + }, + "delivery_status": { + "type": "string", + "description": "System-reported operational state of this package. Reflects actual delivery state independent of buyer pause control.", + "enum": [ + "delivering", + "completed", + "budget_exhausted", + "flight_ended", + "goal_met" + ] + }, + "paused": { + "type": "boolean", + "description": "Whether this package is currently paused by the buyer" + } + }, + "required": [ + "package_id", + "spend", + "pricing_model", + "rate", + "currency" + ] + } + ] + } + }, + "daily_breakdown": { + "type": "array", + "description": "Day-by-day delivery", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "description": "Date (YYYY-MM-DD)" + }, + "impressions": { + "type": "number", + "description": "Daily impressions", + "minimum": 0 + }, + "spend": { + "type": "number", + "description": "Daily spend", + "minimum": 0 + } + }, + "required": [ + "date", + "impressions", + "spend" + ], + "additionalProperties": true + } + } + }, + "required": [ + "media_buy_id", + "status", + "totals", + "by_package" + ], + "additionalProperties": true + } + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "reporting_period", + "currency", + "media_buy_deliveries" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/get-products-request.json b/schemas/cache/2.5/bundled/media-buy/get-products-request.json new file mode 100644 index 000000000..0a0b77151 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/get-products-request.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Products Request", + "description": "Request parameters for discovering available advertising products", + "type": "object", + "properties": { + "brief": { + "type": "string", + "description": "Natural language description of campaign requirements" + }, + "brand_manifest": { + "$ref": "../../core/brand-manifest-ref.json", + "description": "Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest." + }, + "filters": { + "$ref": "../../core/product-filters.json" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/get-products-response.json b/schemas/cache/2.5/bundled/media-buy/get-products-response.json new file mode 100644 index 000000000..616cb954a --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/get-products-response.json @@ -0,0 +1,32 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Products Response", + "description": "Response payload for get_products task", + "type": "object", + "properties": { + "products": { + "type": "array", + "description": "Array of matching products", + "items": { + "$ref": "../../core/product.json" + } + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings (e.g., product filtering issues)", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "products" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-request.json b/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-request.json new file mode 100644 index 000000000..a1f760c53 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-request.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Authorized Properties Request", + "description": "Request parameters for discovering which publishers this agent is authorized to represent", + "type": "object", + "properties": { + "publisher_domains": { + "type": "array", + "description": "Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.", + "items": { + "type": "string", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "description": "Publisher domain to filter by (e.g., 'cnn.com', 'espn.com')" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-response.json b/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-response.json new file mode 100644 index 000000000..24f04fb47 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-authorized-properties-response.json @@ -0,0 +1,69 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Authorized Properties Response", + "description": "Response payload for list_authorized_properties task. Lists publisher domains and authorization scope (property_ids or property_tags). Buyers fetch actual property definitions from each publisher's canonical adagents.json file.", + "type": "object", + "properties": { + "publisher_domains": { + "type": "array", + "description": "Publisher domains this agent is authorized to represent. Buyers should fetch each publisher's adagents.json to see property definitions and verify this agent is in their authorized_agents list with authorization scope.", + "items": { + "type": "string", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "description": "Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')" + }, + "minItems": 1 + }, + "primary_channels": { + "type": "array", + "description": "Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.", + "items": { + "$ref": "../../enums/channels.json" + }, + "minItems": 1 + }, + "primary_countries": { + "type": "array", + "description": "Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.", + "items": { + "type": "string", + "pattern": "^[A-Z]{2}$" + }, + "minItems": 1 + }, + "portfolio_description": { + "type": "string", + "description": "Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.", + "minLength": 1, + "maxLength": 5000 + }, + "advertising_policies": { + "type": "string", + "description": "Publisher's advertising content policies, restrictions, and guidelines in natural language. May include prohibited categories, blocked advertisers, restricted tactics, brand safety requirements, or links to full policy documentation.", + "minLength": 1, + "maxLength": 10000 + }, + "last_updated": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp of when the agent's publisher authorization list was last updated. Buyers can use this to determine if their cached publisher adagents.json files might be stale." + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings (e.g., property availability issues)", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "publisher_domains" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-creative-formats-request.json b/schemas/cache/2.5/bundled/media-buy/list-creative-formats-request.json new file mode 100644 index 000000000..f6344c691 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-creative-formats-request.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creative Formats Request", + "description": "Request parameters for discovering supported creative formats", + "type": "object", + "properties": { + "format_ids": { + "type": "array", + "description": "Return only these specific format IDs (e.g., from get_products response)", + "items": { + "$ref": "../../core/format-id.json" + } + }, + "type": { + "$ref": "../../enums/format-category.json", + "description": "Filter by format type (technical categories with distinct requirements)" + }, + "asset_types": { + "type": "array", + "description": "Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.", + "items": { + "$ref": "../../enums/asset-content-type.json" + } + }, + "max_width": { + "type": "integer", + "description": "Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits." + }, + "max_height": { + "type": "integer", + "description": "Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits." + }, + "min_width": { + "type": "integer", + "description": "Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value." + }, + "min_height": { + "type": "integer", + "description": "Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value." + }, + "is_responsive": { + "type": "boolean", + "description": "Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions." + }, + "name_search": { + "type": "string", + "description": "Search for formats by name (case-insensitive partial match)" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-creative-formats-response.json b/schemas/cache/2.5/bundled/media-buy/list-creative-formats-response.json new file mode 100644 index 000000000..8ee66e7b1 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-creative-formats-response.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creative Formats Response", + "description": "Response payload for list_creative_formats task", + "type": "object", + "properties": { + "formats": { + "type": "array", + "description": "Full format definitions for all formats this agent supports. Each format's authoritative source is indicated by its agent_url field.", + "items": { + "$ref": "../../core/format.json" + } + }, + "creative_agents": { + "type": "array", + "description": "Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats.", + "items": { + "type": "object", + "properties": { + "agent_url": { + "type": "string", + "format": "uri", + "description": "Base URL for the creative agent (e.g., 'https://reference.adcp.org', 'https://dco.example.com'). Call list_creative_formats on this URL to get its formats." + }, + "agent_name": { + "type": "string", + "description": "Human-readable name for the creative agent" + }, + "capabilities": { + "type": "array", + "description": "Capabilities this creative agent provides", + "items": { + "$ref": "../../enums/creative-agent-capability.json" + } + } + }, + "required": [ + "agent_url" + ] + } + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings (e.g., format availability issues)", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "formats" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-creatives-request.json b/schemas/cache/2.5/bundled/media-buy/list-creatives-request.json new file mode 100644 index 000000000..d569367fa --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-creatives-request.json @@ -0,0 +1,136 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creatives Request", + "description": "Request parameters for querying creative assets from the centralized library with filtering, sorting, and pagination", + "type": "object", + "properties": { + "filters": { + "$ref": "../../core/creative-filters.json" + }, + "sort": { + "type": "object", + "description": "Sorting parameters", + "properties": { + "field": { + "$ref": "../../enums/creative-sort-field.json", + "default": "created_date", + "description": "Field to sort by" + }, + "direction": { + "$ref": "../../enums/sort-direction.json", + "default": "desc", + "description": "Sort direction" + } + }, + "additionalProperties": true + }, + "pagination": { + "type": "object", + "description": "Pagination parameters", + "properties": { + "limit": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "default": 50, + "description": "Maximum number of creatives to return" + }, + "offset": { + "type": "integer", + "minimum": 0, + "default": 0, + "description": "Number of creatives to skip" + } + }, + "additionalProperties": true + }, + "include_assignments": { + "type": "boolean", + "default": true, + "description": "Include package assignment information in response" + }, + "include_performance": { + "type": "boolean", + "default": false, + "description": "Include aggregated performance metrics in response" + }, + "include_sub_assets": { + "type": "boolean", + "default": false, + "description": "Include sub-assets (for carousel/native formats) in response" + }, + "fields": { + "type": "array", + "description": "Specific fields to include in response (omit for all fields)", + "items": { + "type": "string", + "enum": [ + "creative_id", + "name", + "format", + "status", + "created_date", + "updated_date", + "tags", + "assignments", + "performance", + "sub_assets" + ] + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "additionalProperties": true, + "examples": [ + { + "description": "List all approved video creatives", + "data": { + "filters": { + "format": "video", + "status": "approved" + } + } + }, + { + "description": "Search for Nike creatives with performance data", + "data": { + "filters": { + "name_contains": "nike", + "has_performance_data": true + }, + "include_performance": true + } + }, + { + "description": "Get unassigned creatives for assignment", + "data": { + "filters": { + "unassigned": true + }, + "sort": { + "field": "created_date", + "direction": "desc" + }, + "pagination": { + "limit": 20 + } + } + }, + { + "description": "Lightweight list with minimal fields", + "data": { + "fields": [ + "creative_id", + "name", + "status" + ], + "include_assignments": false + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/list-creatives-response.json b/schemas/cache/2.5/bundled/media-buy/list-creatives-response.json new file mode 100644 index 000000000..09fe4c88e --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/list-creatives-response.json @@ -0,0 +1,436 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "List Creatives Response", + "description": "Response from creative library query with filtered results, metadata, and optional enriched data", + "type": "object", + "properties": { + "query_summary": { + "type": "object", + "description": "Summary of the query that was executed", + "properties": { + "total_matching": { + "type": "integer", + "description": "Total number of creatives matching filters (across all pages)", + "minimum": 0 + }, + "returned": { + "type": "integer", + "description": "Number of creatives returned in this response", + "minimum": 0 + }, + "filters_applied": { + "type": "array", + "description": "List of filters that were applied to the query", + "items": { + "type": "string" + } + }, + "sort_applied": { + "type": "object", + "description": "Sort order that was applied", + "properties": { + "field": { + "type": "string" + }, + "direction": { + "$ref": "../../enums/sort-direction.json" + } + } + } + }, + "required": [ + "total_matching", + "returned" + ], + "additionalProperties": true + }, + "pagination": { + "type": "object", + "description": "Pagination information for navigating results", + "properties": { + "limit": { + "type": "integer", + "description": "Maximum number of results requested", + "minimum": 1 + }, + "offset": { + "type": "integer", + "description": "Number of results skipped", + "minimum": 0 + }, + "has_more": { + "type": "boolean", + "description": "Whether more results are available" + }, + "total_pages": { + "type": "integer", + "description": "Total number of pages available", + "minimum": 0 + }, + "current_page": { + "type": "integer", + "description": "Current page number (1-based)", + "minimum": 1 + } + }, + "required": [ + "limit", + "offset", + "has_more" + ], + "additionalProperties": true + }, + "creatives": { + "type": "array", + "description": "Array of creative assets matching the query", + "items": { + "type": "object", + "properties": { + "creative_id": { + "type": "string", + "description": "Unique identifier for the creative" + }, + "name": { + "type": "string", + "description": "Human-readable creative name" + }, + "format_id": { + "$ref": "../../core/format-id.json", + "description": "Format identifier specifying which format this creative conforms to" + }, + "status": { + "$ref": "../../enums/creative-status.json", + "description": "Current approval status of the creative" + }, + "created_date": { + "type": "string", + "format": "date-time", + "description": "When the creative was uploaded to the library" + }, + "updated_date": { + "type": "string", + "format": "date-time", + "description": "When the creative was last modified" + }, + "assets": { + "type": "object", + "description": "Assets for this creative, keyed by asset_role", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "oneOf": [ + { + "$ref": "../../core/assets/image-asset.json" + }, + { + "$ref": "../../core/assets/video-asset.json" + }, + { + "$ref": "../../core/assets/audio-asset.json" + }, + { + "$ref": "../../core/assets/text-asset.json" + }, + { + "$ref": "../../core/assets/html-asset.json" + }, + { + "$ref": "../../core/assets/css-asset.json" + }, + { + "$ref": "../../core/assets/javascript-asset.json" + }, + { + "$ref": "../../core/assets/vast-asset.json" + }, + { + "$ref": "../../core/assets/daast-asset.json" + }, + { + "$ref": "../../core/promoted-offerings.json" + }, + { + "$ref": "../../core/assets/url-asset.json" + } + ] + } + } + }, + "tags": { + "type": "array", + "description": "User-defined tags for organization and searchability", + "items": { + "type": "string" + } + }, + "assignments": { + "type": "object", + "description": "Current package assignments (included when include_assignments=true)", + "properties": { + "assignment_count": { + "type": "integer", + "description": "Total number of active package assignments", + "minimum": 0 + }, + "assigned_packages": { + "type": "array", + "description": "List of packages this creative is assigned to", + "items": { + "type": "object", + "properties": { + "package_id": { + "type": "string", + "description": "Package identifier" + }, + "package_name": { + "type": "string", + "description": "Human-readable package name" + }, + "assigned_date": { + "type": "string", + "format": "date-time", + "description": "When this assignment was created" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Status of this specific assignment" + } + }, + "required": [ + "package_id", + "assigned_date", + "status" + ], + "additionalProperties": true + } + } + }, + "required": [ + "assignment_count" + ], + "additionalProperties": true + }, + "performance": { + "type": "object", + "description": "Aggregated performance metrics (included when include_performance=true)", + "properties": { + "impressions": { + "type": "integer", + "description": "Total impressions across all assignments", + "minimum": 0 + }, + "clicks": { + "type": "integer", + "description": "Total clicks across all assignments", + "minimum": 0 + }, + "ctr": { + "type": "number", + "description": "Click-through rate (clicks/impressions)", + "minimum": 0, + "maximum": 1 + }, + "conversion_rate": { + "type": "number", + "description": "Conversion rate across all assignments", + "minimum": 0, + "maximum": 1 + }, + "performance_score": { + "type": "number", + "description": "Aggregated performance score (0-100)", + "minimum": 0, + "maximum": 100 + }, + "last_updated": { + "type": "string", + "format": "date-time", + "description": "When performance data was last updated" + } + }, + "required": [ + "last_updated" + ], + "additionalProperties": true + }, + "sub_assets": { + "type": "array", + "description": "Sub-assets for multi-asset formats (included when include_sub_assets=true)", + "items": { + "$ref": "../../core/sub-asset.json" + } + } + }, + "required": [ + "creative_id", + "name", + "format_id", + "status", + "created_date", + "updated_date" + ], + "additionalProperties": true + } + }, + "format_summary": { + "type": "object", + "description": "Breakdown of creatives by format type", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "integer", + "description": "Number of creatives with this format", + "minimum": 0 + } + }, + "additionalProperties": true + }, + "status_summary": { + "type": "object", + "description": "Breakdown of creatives by status", + "properties": { + "approved": { + "type": "integer", + "description": "Number of approved creatives", + "minimum": 0 + }, + "pending_review": { + "type": "integer", + "description": "Number of creatives pending review", + "minimum": 0 + }, + "rejected": { + "type": "integer", + "description": "Number of rejected creatives", + "minimum": 0 + }, + "archived": { + "type": "integer", + "description": "Number of archived creatives", + "minimum": 0 + } + }, + "additionalProperties": true + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "query_summary", + "pagination", + "creatives" + ], + "additionalProperties": true, + "examples": [ + { + "description": "Successful library query with results", + "data": { + "query_summary": { + "total_matching": 3, + "returned": 3, + "filters_applied": [ + "format=video", + "status=approved" + ], + "sort_applied": { + "field": "created_date", + "direction": "desc" + } + }, + "pagination": { + "limit": 50, + "offset": 0, + "has_more": false, + "total_pages": 1, + "current_page": 1 + }, + "creatives": [ + { + "creative_id": "hero_video_30s", + "name": "Brand Hero Video 30s", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vast" + }, + "status": "approved", + "created_date": "2024-01-15T10:30:00Z", + "updated_date": "2024-01-15T14:20:00Z", + "assets": { + "vast": { + "url": "https://vast.example.com/video/123", + "vast_version": "4.1" + } + }, + "tags": [ + "q1_2024", + "video", + "brand_awareness" + ] + } + ], + "format_summary": { + "video_30s_vast": 2, + "display_300x250": 1 + }, + "status_summary": { + "approved": 3, + "pending_review": 0, + "rejected": 0, + "archived": 0 + } + } + }, + { + "description": "Query with assignments and performance data", + "data": { + "query_summary": { + "total_matching": 1, + "returned": 1 + }, + "pagination": { + "limit": 50, + "offset": 0, + "has_more": false + }, + "creatives": [ + { + "creative_id": "hero_video_30s", + "name": "Brand Hero Video 30s", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_30s_vast" + }, + "status": "approved", + "created_date": "2024-01-15T10:30:00Z", + "updated_date": "2024-01-15T14:20:00Z", + "assignments": { + "assignment_count": 2, + "assigned_packages": [ + { + "package_id": "pkg_ctv_001", + "package_name": "CTV Prime Time", + "assigned_date": "2024-01-16T09:00:00Z", + "status": "active" + } + ] + }, + "performance": { + "impressions": 150000, + "clicks": 1200, + "ctr": 0.008, + "performance_score": 85.2, + "last_updated": "2024-01-20T12:00:00Z" + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/package-request.json b/schemas/cache/2.5/bundled/media-buy/package-request.json new file mode 100644 index 000000000..c082d8450 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/package-request.json @@ -0,0 +1,79 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Package Request", + "description": "Package configuration for media buy creation", + "type": "object", + "properties": { + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for this package" + }, + "product_id": { + "type": "string", + "description": "Product ID for this package" + }, + "format_ids": { + "type": "array", + "description": "Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.", + "items": { + "$ref": "../../core/format-id.json" + }, + "minItems": 1 + }, + "budget": { + "type": "number", + "description": "Budget allocation for this package in the media buy's currency", + "minimum": 0 + }, + "pacing": { + "$ref": "../../enums/pacing.json" + }, + "pricing_option_id": { + "type": "string", + "description": "ID of the selected pricing option from the product's pricing_options array" + }, + "bid_price": { + "type": "number", + "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": "../../core/targeting.json" + }, + "creative_ids": { + "type": "array", + "description": "Creative IDs to assign to this package at creation time (references existing library creatives)", + "items": { + "type": "string" + } + }, + "creatives": { + "type": "array", + "description": "Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.", + "items": { + "$ref": "../../core/creative-asset.json" + }, + "maxItems": 100 + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "buyer_ref", + "product_id", + "budget", + "pricing_option_id" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-request.json b/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-request.json new file mode 100644 index 000000000..7d44f4198 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-request.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Provide Performance Feedback Request", + "description": "Request payload for provide_performance_feedback task", + "type": "object", + "properties": { + "media_buy_id": { + "type": "string", + "description": "Publisher's media buy identifier", + "minLength": 1 + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference for the media buy", + "minLength": 1 + }, + "measurement_period": { + "type": "object", + "description": "Time period for performance measurement", + "properties": { + "start": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 start timestamp for measurement period" + }, + "end": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 end timestamp for measurement period" + } + }, + "required": [ + "start", + "end" + ], + "additionalProperties": true + }, + "performance_index": { + "type": "number", + "description": "Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)", + "minimum": 0 + }, + "package_id": { + "type": "string", + "description": "Specific package within the media buy (if feedback is package-specific)", + "minLength": 1 + }, + "creative_id": { + "type": "string", + "description": "Specific creative asset (if feedback is creative-specific)", + "minLength": 1 + }, + "metric_type": { + "$ref": "../../enums/metric-type.json", + "description": "The business metric being measured", + "default": "overall_performance" + }, + "feedback_source": { + "$ref": "../../enums/feedback-source.json", + "description": "Source of the performance data", + "default": "buyer_attribution" + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "oneOf": [ + { + "required": [ + "media_buy_id", + "measurement_period", + "performance_index" + ] + }, + { + "required": [ + "buyer_ref", + "measurement_period", + "performance_index" + ] + } + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-response.json b/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-response.json new file mode 100644 index 000000000..9e7ecb2ea --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/provide-performance-feedback-response.json @@ -0,0 +1,65 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Provide Performance Feedback Response", + "description": "Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.", + "type": "object", + "oneOf": [ + { + "title": "ProvidePerformanceFeedbackSuccess", + "description": "Success response - feedback received and processed", + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Whether the performance feedback was successfully received", + "const": true + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "success" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "ProvidePerformanceFeedbackError", + "description": "Error response - feedback rejected or could not be processed", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "required": [ + "success" + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/sync-creatives-request.json b/schemas/cache/2.5/bundled/media-buy/sync-creatives-request.json new file mode 100644 index 000000000..a9461d56a --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/sync-creatives-request.json @@ -0,0 +1,177 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Sync Creatives Request", + "description": "Request parameters for syncing creative assets with upsert semantics - supports bulk operations, scoped updates, and assignment management", + "type": "object", + "properties": { + "creatives": { + "type": "array", + "description": "Array of creative assets to sync (create or update)", + "items": { + "$ref": "../../core/creative-asset.json" + }, + "maxItems": 100 + }, + "creative_ids": { + "type": "array", + "description": "Optional filter to limit sync scope to specific creative IDs. When provided, only these creatives will be created/updated. Other creatives in the library are unaffected. Useful for partial updates and error recovery.", + "items": { + "type": "string" + }, + "maxItems": 100 + }, + "assignments": { + "type": "object", + "description": "Optional bulk assignment of creatives to packages", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "array", + "description": "Array of package IDs to assign this creative to", + "items": { + "type": "string" + } + } + }, + "additionalProperties": true + }, + "delete_missing": { + "type": "boolean", + "default": false, + "description": "When true, creatives not included in this sync will be archived. Use with caution for full library replacement." + }, + "dry_run": { + "type": "boolean", + "default": false, + "description": "When true, preview changes without applying them. Returns what would be created/updated/deleted." + }, + "validation_mode": { + "$ref": "../../enums/validation-mode.json", + "default": "strict", + "description": "Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors." + }, + "push_notification_config": { + "$ref": "../../core/push-notification-config.json", + "description": "Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL)." + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "creatives" + ], + "additionalProperties": true, + "examples": [ + { + "description": "Full sync with hosted video creative", + "data": { + "creatives": [ + { + "creative_id": "hero_video_30s", + "name": "Brand Hero Video 30s", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "assets": { + "video": { + "url": "https://cdn.example.com/hero-video.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + } + }, + "tags": [ + "q1_2024", + "video" + ] + } + ], + "assignments": { + "hero_video_30s": [ + "pkg_ctv_001", + "pkg_ctv_002" + ] + } + } + }, + { + "description": "Generative creative with approval", + "data": { + "creatives": [ + { + "creative_id": "holiday_hero", + "name": "Holiday Campaign Hero", + "format_id": { + "agent_url": "https://publisher.com/.well-known/adcp/sales", + "id": "premium_bespoke_display" + }, + "assets": { + "promoted_offerings": { + "brand_manifest": { + "url": "https://retailer.com", + "colors": { + "primary": "#C41E3A", + "secondary": "#165B33" + } + } + }, + "generation_prompt": { + "content": "Create a warm, festive holiday campaign featuring winter products" + } + }, + "tags": [ + "holiday", + "q4_2024" + ] + } + ] + } + }, + { + "description": "Scoped update using creative_ids filter", + "data": { + "creative_ids": [ + "hero_video_30s", + "banner_300x250" + ], + "creatives": [ + { + "creative_id": "hero_video_30s", + "name": "Brand Hero Video 30s - Updated", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "video_standard_30s" + }, + "assets": { + "video": { + "url": "https://cdn.example.com/updated-hero.mp4", + "width": 1920, + "height": 1080, + "duration_ms": 30000 + } + } + }, + { + "creative_id": "banner_300x250", + "name": "Display Banner 300x250 - Updated", + "format_id": { + "agent_url": "https://creative.adcontextprotocol.org", + "id": "display_300x250" + }, + "assets": { + "image": { + "url": "https://cdn.example.com/updated-banner.png", + "width": 300, + "height": 250 + } + } + } + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/sync-creatives-response.json b/schemas/cache/2.5/bundled/media-buy/sync-creatives-response.json new file mode 100644 index 000000000..18c3e6281 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/sync-creatives-response.json @@ -0,0 +1,148 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Sync Creatives Response", + "description": "Response from creative sync operation. Returns either per-creative results (best-effort processing) OR operation-level errors (complete failure). This enforces atomic semantics at the operation level while allowing per-item failures within successful operations.", + "type": "object", + "oneOf": [ + { + "title": "SyncCreativesSuccess", + "description": "Success response - sync operation processed creatives (may include per-item failures)", + "type": "object", + "properties": { + "dry_run": { + "type": "boolean", + "description": "Whether this was a dry run (no actual changes made)" + }, + "creatives": { + "type": "array", + "description": "Results for each creative processed. Items with action='failed' indicate per-item validation/processing failures, not operation-level failures.", + "items": { + "type": "object", + "properties": { + "creative_id": { + "type": "string", + "description": "Creative ID from the request" + }, + "action": { + "$ref": "../../enums/creative-action.json", + "description": "Action taken for this creative" + }, + "platform_id": { + "type": "string", + "description": "Platform-specific ID assigned to the creative" + }, + "changes": { + "type": "array", + "description": "Field names that were modified (only present when action='updated')", + "items": { + "type": "string" + } + }, + "errors": { + "type": "array", + "description": "Validation or processing errors (only present when action='failed')", + "items": { + "type": "string" + } + }, + "warnings": { + "type": "array", + "description": "Non-fatal warnings about this creative", + "items": { + "type": "string" + } + }, + "preview_url": { + "type": "string", + "format": "uri", + "description": "Preview URL for generative creatives (only present for generative formats)" + }, + "expires_at": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 timestamp when preview link expires (only present when preview_url exists)" + }, + "assigned_to": { + "type": "array", + "description": "Package IDs this creative was successfully assigned to (only present when assignments were requested)", + "items": { + "type": "string" + } + }, + "assignment_errors": { + "type": "object", + "description": "Assignment errors by package ID (only present when assignment failures occurred)", + "patternProperties": { + "^[a-zA-Z0-9_-]+$": { + "type": "string", + "description": "Error message for this package assignment" + } + }, + "additionalProperties": true + } + }, + "required": [ + "creative_id", + "action" + ], + "additionalProperties": true + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "creatives" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "SyncCreativesError", + "description": "Error response - operation failed completely, no creatives were processed", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "creatives" + ] + }, + { + "required": [ + "dry_run" + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/update-media-buy-request.json b/schemas/cache/2.5/bundled/media-buy/update-media-buy-request.json new file mode 100644 index 000000000..219163028 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/update-media-buy-request.json @@ -0,0 +1,128 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Update Media Buy Request", + "description": "Request parameters for updating campaign and package settings", + "type": "object", + "properties": { + "media_buy_id": { + "type": "string", + "description": "Publisher's ID of the media buy to update" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference for the media buy to update" + }, + "paused": { + "type": "boolean", + "description": "Pause/resume the entire media buy (true = paused, false = active)" + }, + "start_time": { + "$ref": "../../core/start-timing.json" + }, + "end_time": { + "type": "string", + "format": "date-time", + "description": "New end date/time in ISO 8601 format" + }, + "packages": { + "type": "array", + "description": "Package-specific updates", + "items": { + "type": "object", + "properties": { + "package_id": { + "type": "string", + "description": "Publisher's ID of package to update" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference for the package to update" + }, + "budget": { + "type": "number", + "description": "Updated budget allocation for this package in the currency specified by the pricing option", + "minimum": 0 + }, + "pacing": { + "$ref": "../../enums/pacing.json" + }, + "bid_price": { + "type": "number", + "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)" + }, + "targeting_overlay": { + "$ref": "../../core/targeting.json" + }, + "creative_ids": { + "type": "array", + "description": "Update creative assignments (references existing library creatives)", + "items": { + "type": "string" + } + }, + "creatives": { + "type": "array", + "description": "Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.", + "items": { + "$ref": "../../core/creative-asset.json" + }, + "maxItems": 100 + }, + "creative_assignments": { + "type": "array", + "description": "Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids.", + "items": { + "$ref": "../../core/creative-assignment.json" + } + } + }, + "oneOf": [ + { + "required": [ + "package_id" + ] + }, + { + "required": [ + "buyer_ref" + ] + } + ], + "additionalProperties": true + } + }, + "push_notification_config": { + "$ref": "../../core/push-notification-config.json", + "description": "Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time." + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "oneOf": [ + { + "required": [ + "media_buy_id" + ] + }, + { + "required": [ + "buyer_ref" + ] + } + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/media-buy/update-media-buy-response.json b/schemas/cache/2.5/bundled/media-buy/update-media-buy-response.json new file mode 100644 index 000000000..3bde792b7 --- /dev/null +++ b/schemas/cache/2.5/bundled/media-buy/update-media-buy-response.json @@ -0,0 +1,98 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Update Media Buy Response", + "description": "Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.", + "type": "object", + "oneOf": [ + { + "title": "UpdateMediaBuySuccess", + "description": "Success response - media buy updated successfully", + "type": "object", + "properties": { + "media_buy_id": { + "type": "string", + "description": "Publisher's identifier for the media buy" + }, + "buyer_ref": { + "type": "string", + "description": "Buyer's reference identifier for the media buy" + }, + "implementation_date": { + "type": [ + "string", + "null" + ], + "format": "date-time", + "description": "ISO 8601 timestamp when changes take effect (null if pending approval)" + }, + "affected_packages": { + "type": "array", + "description": "Array of packages that were modified with complete state information", + "items": { + "$ref": "../../core/package.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "media_buy_id", + "buyer_ref" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "UpdateMediaBuyError", + "description": "Error response - operation failed, no changes applied", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors explaining why the operation failed", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "media_buy_id" + ] + }, + { + "required": [ + "buyer_ref" + ] + }, + { + "required": [ + "affected_packages" + ] + } + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/signals/activate-signal-request.json b/schemas/cache/2.5/bundled/signals/activate-signal-request.json new file mode 100644 index 000000000..2eb2d8f6f --- /dev/null +++ b/schemas/cache/2.5/bundled/signals/activate-signal-request.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Activate Signal Request", + "description": "Request parameters for activating a signal on a specific deployment target", + "type": "object", + "properties": { + "signal_agent_segment_id": { + "type": "string", + "description": "The universal identifier for the signal to activate" + }, + "deployments": { + "type": "array", + "description": "Target deployment(s) for activation. If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.", + "items": { + "$ref": "../../core/destination.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "signal_agent_segment_id", + "deployments" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/signals/activate-signal-response.json b/schemas/cache/2.5/bundled/signals/activate-signal-response.json new file mode 100644 index 000000000..a16217537 --- /dev/null +++ b/schemas/cache/2.5/bundled/signals/activate-signal-response.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Activate Signal Response", + "description": "Response payload for activate_signal task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the signal is either fully activated or not activated at all.", + "type": "object", + "oneOf": [ + { + "title": "ActivateSignalSuccess", + "description": "Success response - signal activated successfully to one or more deployment targets", + "type": "object", + "properties": { + "deployments": { + "type": "array", + "description": "Array of deployment results for each deployment target", + "items": { + "$ref": "../../core/deployment.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "deployments" + ], + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + } + }, + { + "title": "ActivateSignalError", + "description": "Error response - operation failed, signal not activated", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)", + "items": { + "$ref": "../../core/error.json" + }, + "minItems": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "errors" + ], + "additionalProperties": true, + "not": { + "required": [ + "deployments" + ] + } + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/signals/get-signals-request.json b/schemas/cache/2.5/bundled/signals/get-signals-request.json new file mode 100644 index 000000000..4486d2529 --- /dev/null +++ b/schemas/cache/2.5/bundled/signals/get-signals-request.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Signals Request", + "description": "Request parameters for discovering signals based on description", + "type": "object", + "properties": { + "signal_spec": { + "type": "string", + "description": "Natural language description of the desired signals" + }, + "deliver_to": { + "type": "object", + "description": "Deployment targets where signals need to be activated", + "properties": { + "deployments": { + "type": "array", + "description": "List of deployment targets (DSPs, sales agents, etc.). If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.", + "items": { + "$ref": "../../core/destination.json" + }, + "minItems": 1 + }, + "countries": { + "type": "array", + "description": "Countries where signals will be used (ISO codes)", + "items": { + "type": "string", + "pattern": "^[A-Z]{2}$" + } + } + }, + "required": [ + "deployments", + "countries" + ], + "additionalProperties": true + }, + "filters": { + "$ref": "../../core/signal-filters.json" + }, + "max_results": { + "type": "integer", + "description": "Maximum number of results to return", + "minimum": 1 + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "signal_spec", + "deliver_to" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/bundled/signals/get-signals-response.json b/schemas/cache/2.5/bundled/signals/get-signals-response.json new file mode 100644 index 000000000..1e8f3a9ef --- /dev/null +++ b/schemas/cache/2.5/bundled/signals/get-signals-response.json @@ -0,0 +1,99 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Get Signals Response", + "description": "Response payload for get_signals task", + "type": "object", + "properties": { + "signals": { + "type": "array", + "description": "Array of matching signals", + "items": { + "type": "object", + "properties": { + "signal_agent_segment_id": { + "type": "string", + "description": "Unique identifier for the signal" + }, + "name": { + "type": "string", + "description": "Human-readable signal name" + }, + "description": { + "type": "string", + "description": "Detailed signal description" + }, + "signal_type": { + "$ref": "../../enums/signal-catalog-type.json", + "description": "Type of signal" + }, + "data_provider": { + "type": "string", + "description": "Name of the data provider" + }, + "coverage_percentage": { + "type": "number", + "description": "Percentage of audience coverage", + "minimum": 0, + "maximum": 100 + }, + "deployments": { + "type": "array", + "description": "Array of deployment targets", + "items": { + "$ref": "../../core/deployment.json" + } + }, + "pricing": { + "type": "object", + "description": "Pricing information", + "properties": { + "cpm": { + "type": "number", + "description": "Cost per thousand impressions", + "minimum": 0 + }, + "currency": { + "type": "string", + "description": "Currency code", + "pattern": "^[A-Z]{3}$" + } + }, + "required": [ + "cpm", + "currency" + ], + "additionalProperties": true + } + }, + "required": [ + "signal_agent_segment_id", + "name", + "description", + "signal_type", + "data_provider", + "coverage_percentage", + "deployments", + "pricing" + ], + "additionalProperties": true + } + }, + "errors": { + "type": "array", + "description": "Task-specific errors and warnings (e.g., signal discovery or pricing issues)", + "items": { + "$ref": "../../core/error.json" + } + }, + "context": { + "$ref": "../../core/context.json" + }, + "ext": { + "$ref": "../../core/ext.json" + } + }, + "required": [ + "signals" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/activation-key.json b/schemas/cache/2.5/core/activation-key.json new file mode 100644 index 000000000..986b4677a --- /dev/null +++ b/schemas/cache/2.5/core/activation-key.json @@ -0,0 +1,49 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Activation Key", + "description": "Universal identifier for using a signal on a destination platform. Can be either a segment ID or a key-value pair depending on the platform's targeting mechanism.", + "type": "object", + "oneOf": [ + { + "properties": { + "type": { + "type": "string", + "const": "segment_id", + "description": "Segment ID based targeting" + }, + "segment_id": { + "type": "string", + "description": "The platform-specific segment identifier to use in campaign targeting" + } + }, + "required": [ + "type", + "segment_id" + ], + "additionalProperties": true + }, + { + "properties": { + "type": { + "type": "string", + "const": "key_value", + "description": "Key-value pair based targeting" + }, + "key": { + "type": "string", + "description": "The targeting parameter key" + }, + "value": { + "type": "string", + "description": "The targeting parameter value" + } + }, + "required": [ + "type", + "key", + "value" + ], + "additionalProperties": true + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/audio-asset.json b/schemas/cache/2.5/core/assets/audio-asset.json new file mode 100644 index 000000000..fa4e69534 --- /dev/null +++ b/schemas/cache/2.5/core/assets/audio-asset.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Audio Asset", + "description": "Audio asset with URL and specifications", + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL to the audio asset" + }, + "duration_ms": { + "type": "integer", + "description": "Audio duration in milliseconds", + "minimum": 0 + }, + "format": { + "type": "string", + "description": "Audio file format (mp3, wav, aac, etc.)" + }, + "bitrate_kbps": { + "type": "integer", + "description": "Audio bitrate in kilobits per second", + "minimum": 1 + } + }, + "required": [ + "url" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/css-asset.json b/schemas/cache/2.5/core/assets/css-asset.json new file mode 100644 index 000000000..711f38f31 --- /dev/null +++ b/schemas/cache/2.5/core/assets/css-asset.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CSS Asset", + "description": "CSS stylesheet asset", + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "CSS content" + }, + "media": { + "type": "string", + "description": "CSS media query context (e.g., 'screen', 'print')" + } + }, + "required": [ + "content" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/daast-asset.json b/schemas/cache/2.5/core/assets/daast-asset.json new file mode 100644 index 000000000..736624c53 --- /dev/null +++ b/schemas/cache/2.5/core/assets/daast-asset.json @@ -0,0 +1,86 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "DAAST Asset", + "description": "DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving", + "oneOf": [ + { + "type": "object", + "properties": { + "delivery_type": { + "type": "string", + "const": "url", + "description": "Discriminator indicating DAAST is delivered via URL endpoint" + }, + "url": { + "type": "string", + "format": "uri", + "description": "URL endpoint that returns DAAST XML" + }, + "daast_version": { + "$ref": "../../enums/daast-version.json", + "description": "DAAST specification version" + }, + "duration_ms": { + "type": "integer", + "description": "Expected audio duration in milliseconds (if known)", + "minimum": 0 + }, + "tracking_events": { + "type": "array", + "items": { + "$ref": "../../enums/daast-tracking-event.json" + }, + "description": "Tracking events supported by this DAAST tag" + }, + "companion_ads": { + "type": "boolean", + "description": "Whether companion display ads are included" + } + }, + "required": [ + "delivery_type", + "url" + ], + "additionalProperties": true + }, + { + "type": "object", + "properties": { + "delivery_type": { + "type": "string", + "const": "inline", + "description": "Discriminator indicating DAAST is delivered as inline XML content" + }, + "content": { + "type": "string", + "description": "Inline DAAST XML content" + }, + "daast_version": { + "$ref": "../../enums/daast-version.json", + "description": "DAAST specification version" + }, + "duration_ms": { + "type": "integer", + "description": "Expected audio duration in milliseconds (if known)", + "minimum": 0 + }, + "tracking_events": { + "type": "array", + "items": { + "$ref": "../../enums/daast-tracking-event.json" + }, + "description": "Tracking events supported by this DAAST tag" + }, + "companion_ads": { + "type": "boolean", + "description": "Whether companion display ads are included" + } + }, + "required": [ + "delivery_type", + "content" + ], + "additionalProperties": true + } + ] +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/html-asset.json b/schemas/cache/2.5/core/assets/html-asset.json new file mode 100644 index 000000000..7a916e38d --- /dev/null +++ b/schemas/cache/2.5/core/assets/html-asset.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "HTML Asset", + "description": "HTML content asset", + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "HTML content" + }, + "version": { + "type": "string", + "description": "HTML version (e.g., 'HTML5')" + } + }, + "required": [ + "content" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/image-asset.json b/schemas/cache/2.5/core/assets/image-asset.json new file mode 100644 index 000000000..32a555c27 --- /dev/null +++ b/schemas/cache/2.5/core/assets/image-asset.json @@ -0,0 +1,37 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Image Asset", + "description": "Image asset with URL and dimensions", + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL to the image asset" + }, + "width": { + "type": "integer", + "minimum": 1, + "description": "Width in pixels" + }, + "height": { + "type": "integer", + "minimum": 1, + "description": "Height in pixels" + }, + "format": { + "type": "string", + "description": "Image file format (jpg, png, gif, webp, etc.)" + }, + "alt_text": { + "type": "string", + "description": "Alternative text for accessibility" + } + }, + "required": [ + "url", + "width", + "height" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/javascript-asset.json b/schemas/cache/2.5/core/assets/javascript-asset.json new file mode 100644 index 000000000..f272268f2 --- /dev/null +++ b/schemas/cache/2.5/core/assets/javascript-asset.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "JavaScript Asset", + "description": "JavaScript code asset", + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "JavaScript content" + }, + "module_type": { + "$ref": "../../enums/javascript-module-type.json", + "description": "JavaScript module type" + } + }, + "required": [ + "content" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/markdown-asset.json b/schemas/cache/2.5/core/assets/markdown-asset.json new file mode 100644 index 000000000..7a6505660 --- /dev/null +++ b/schemas/cache/2.5/core/assets/markdown-asset.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Markdown Asset", + "description": "Markdown-formatted text content following CommonMark specification", + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions" + }, + "language": { + "type": "string", + "description": "Language code (e.g., 'en', 'es', 'fr')" + }, + "markdown_flavor": { + "$ref": "../../enums/markdown-flavor.json", + "default": "commonmark", + "description": "Markdown flavor used. CommonMark for strict compatibility, GFM for tables/task lists/strikethrough." + }, + "allow_raw_html": { + "type": "boolean", + "default": false, + "description": "Whether raw HTML blocks are allowed in the markdown. False recommended for security." + } + }, + "required": [ + "content" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/text-asset.json b/schemas/cache/2.5/core/assets/text-asset.json new file mode 100644 index 000000000..d6c0d2da8 --- /dev/null +++ b/schemas/cache/2.5/core/assets/text-asset.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Text Asset", + "description": "Text content asset", + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Text content" + }, + "language": { + "type": "string", + "description": "Language code (e.g., 'en', 'es', 'fr')" + } + }, + "required": [ + "content" + ], + "additionalProperties": true +} \ No newline at end of file diff --git a/schemas/cache/2.5/core/assets/url-asset.json b/schemas/cache/2.5/core/assets/url-asset.json new file mode 100644 index 000000000..a0cbbdf69 --- /dev/null +++ b/schemas/cache/2.5/core/assets/url-asset.json @@ -0,0 +1,25 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "URL Asset", + "description": "URL reference asset", + "type": "object", + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "URL reference" + }, + "url_type": { + "$ref": "../../enums/url-asset-type.json", + "description": "Type of URL asset: 'clickthrough' for user click destination (landing page), 'tracker_pixel' for impression/event tracking via HTTP request (fires GET, expects pixel/204 response), 'tracker_script' for measurement SDKs that must load as