diff --git a/.gitignore b/.gitignore index 628e4a9b..09410faa 100644 --- a/.gitignore +++ b/.gitignore @@ -152,6 +152,9 @@ uv.lock # Temporary schema processing directory .schema_temp/ +# RegistrySync cursor file (written by FileCursorStore) +.adcp-sync-cursor.json + # Working/status documents (not for commit) IMPLEMENTATION_PLAN.md IMPLEMENTATION_SUMMARY.md diff --git a/Makefile b/Makefile index 1398dcb7..d0928d31 100644 --- a/Makefile +++ b/Makefile @@ -41,6 +41,11 @@ test-generation: ## Run only code generation tests $(PYTEST) tests/test_code_generation.py -v @echo "✓ Code generation tests passed" +regenerate-registry: ## Regenerate registry types from OpenAPI spec + @echo "Generating registry types from OpenAPI spec..." + $(PYTHON) scripts/generate_registry_types.py + @echo "✓ Registry types regenerated" + regenerate-schemas: ## Download latest schemas and regenerate models @echo "Downloading latest schemas..." $(PYTHON) scripts/sync_schemas.py diff --git a/pyproject.toml b/pyproject.toml index 84a98a1b..fbb682f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,6 +73,7 @@ line-length = 100 target-version = "py310" extend-exclude = [ "src/adcp/types/_generated.py", + "src/adcp/types/registry.py", "src/adcp/types/tasks.py", "src/adcp/types/generated_poc/", "examples/", diff --git a/schemas/cache/.hashes.json b/schemas/cache/.hashes.json index 84d0f5ca..e2902a23 100644 --- a/schemas/cache/.hashes.json +++ b/schemas/cache/.hashes.json @@ -1,406 +1,421 @@ { - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/a2ui/bound-value.json": "d696f91f7c70c9c194e929d3f2f92c97fc6d64820714d955d941850a4e3872ec", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/a2ui/component.json": "3b75022f8afb4fe3795fdfc56dabadb77551aed3869deb818743a3e92e86c088", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/a2ui/si-catalog.json": "eece7cdd59680c0628e237a452b9b1270fc35e1b7a7698c01fd536a4508d9f2b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/a2ui/surface.json": "9c0e653411013441cb717a0e4f6ec4aab865a9a3c72a6105a7ca498616cff4e6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/a2ui/user-action.json": "dc490b32e47546c4006bff8ece720766c700505366d9adf9bdefdd4deaa29050", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/get-account-financials-request.json": "883a9511398e75249e4572e1f0b66454387a9cc6971339b5c737e06cb6334996", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/get-account-financials-response.json": "cbc59678240a7b95e9a65a37ca825dd1b6d35d4ed2a84f4fafafce35184d07ee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/list-accounts-request.json": "5ee2bf721138bf3185262e6f7201fe8cf5063319363c6050de1182bf99fa93e0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/list-accounts-response.json": "d04f0a9e5037461a394074f756ac941647faec901595b005a360eb0255ed8495", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/report-usage-request.json": "0c712851da9bc770b40dc8726db8697b9f8e2fc454f5d6f5f131b2ad54da0813", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/report-usage-response.json": "eade8c080882e096efec0f26a4b2eb07e5c73b894b088de24f0f4ef9027404ec", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/sync-accounts-request.json": "3394d99bfaf4a1cbcdc2a39324dae6cadf95e84168fd555bb4bbd2863ac6712b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/account/sync-accounts-response.json": "da2f219cd078a0a743bcf288117f48d8cba72cd8b3664a65046c32a2d945e4c9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/adagents.json": "5b2fed8777f587a28946cc5ec7fee3a0c3158affa9dbafc475d24d97be95253f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand.json": "600dfd2eb3897ceb8e4ec5a5a9fb9273add435209643fb0e3014df6c1df9a5cf", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/acquire-rights-request.json": "873f8d1e6eaee7cce20dd8437708e6db5983b1a5030fbd822fea8ec80191375d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/acquire-rights-response.json": "bd97a5936b1e8943bcabce02dfc974e3bf62ebdec40fda9009229bda16431b9e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/creative-approval-request.json": "78abe8e3560f2154faea583d4b5f534ead347fd098bb476d5d5f35941801ae91", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/creative-approval-response.json": "d6337b750ad3bdb83ffb19e071ecc4bea7e49c576c472c4c5835cda874e21d6c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/get-brand-identity-request.json": "4136a903d56880abb2df2daa6683c2274193005812cf157d78d53d02cbf936fa", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/get-brand-identity-response.json": "b522a81a37753b24cbf3770a919159fef15bee4c896b2b8f4db159067cbeba8f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/get-rights-request.json": "8f47f736fbd979d1a828094de16db5331894c715750b2744355226ad65eb1b68", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/get-rights-response.json": "2bb13b9f9f8ea0566b81641c888dc3bdca43f27051a81961fbe2222b219c4262", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/revocation-notification.json": "06713c941427cf93aa79a3648f2ce88d23b28adbb0a4eabd2173fa78edfeed3e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/rights-pricing-option.json": "7fea36e1ccdfab709eec71e5519a81270d74ba43568f0d010cce1d4046ecbea1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/rights-terms.json": "48241bcda729e9c91020f3d7b0040454b33afe57ab8ed39770d10a7fee1b871c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/update-rights-request.json": "1fb32fd7488b494fee034c11afd8fc2b11078ee92bbbedda6b0be8f01537959c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/brand/update-rights-response.json": "88d2ab1cb6cf3ba7508b2aec17950613c049ec6e747af424cee86d8d016d0c25", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/artifact-webhook-payload.json": "6c72dcd7baaf8458f89ad5ec03b97458c323d5089f10fa2a8fe39eace37729b0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/artifact.json": "03a5556bd5c47c10a6cdd0aa09e31603e7b0fb18f08f8302037b818e7067b7b2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/calibrate-content-request.json": "e26ef51f0589e0eb7b4f61dc21a435e12c8afa7e6d6a70c4b960aac9deebd104", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/calibrate-content-response.json": "d95b07001b4784c162228a621a1288e5f4616156f6db204c21af29c67e67df53", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/content-standards.json": "7693c625a45cd0c85d7832c0d6a7a224de9c6c72c476928f66024cb945bed907", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/create-content-standards-request.json": "3bc5bc7f0cb2f2a761e5ef3c97018006f5f70765b9afe394fdcc425dbef57ad1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/create-content-standards-response.json": "3771dbff1ba6a6e3c6065c902a1a41f62096add47913fad5aed9ada044751259", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/get-content-standards-request.json": "aeb0ed3b65e3bcd1a234b8697d943739b7b60dbd3836fca7d77c9589088d7c31", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/get-content-standards-response.json": "3e7084af273abd14509772d9f2f094cb4840b34203490d01adba62b3890ca78d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/get-media-buy-artifacts-request.json": "aa41e4f50479b188ed724034eac7c3fdb778fa12392240fee251a4ae49a783e0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/get-media-buy-artifacts-response.json": "47030e17692edf61d77866b8bcfdc3f1f151af76976b82dcff9e2f48ccb6077e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/list-content-standards-request.json": "f8a62f78808955ae36a35415a0cef17c5c38caea42e49fe8f2f37274e2702307", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/list-content-standards-response.json": "fe5414156ca103c8621a02ddc73e0fa720966cc12348ade53bc3d0f46093eccb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/update-content-standards-request.json": "b795936198ee7cac98c65dfd3a794dbc9716cb618b915852331cea886d01b65b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/update-content-standards-response.json": "1131bef9cdb88819cfdda860ab0f181ec6dabb5e2be0e442c4fbcc75a6216d07", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/validate-content-delivery-request.json": "2043566e46f99cdb81a505b5373e14333957068e6ff035124e18644a976048c2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/content-standards/validate-content-delivery-response.json": "ac1ad463e15e1aa64fad66d0f455cd9c403fa6960b9c27857a873e4cb7cc274c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/account-ref.json": "73e33f65a4e5f13b7b9d4327c64ac975ff6601725e434746c096860631f5f3d8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/account.json": "08e34a0e1debeca4b82b5a23279c4836849a180cfd7fd6e2191608ae6c3f829a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/activation-key.json": "1f3e565c32d011dab85e00294fb08c99263a4dd77a8a9451399849719ba40292", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/ad-inventory-config.json": "6a5ac28360a89f7b01a674c04106813f3b29377eb2caf2b05cf7b9ba152f6cc6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/app-item.json": "8722921a655aca80460c7b22983d8f91f5d49d60d2d795044d4d45ef0b01c290", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/audio-asset.json": "ad03f2d6f17b8818e205390a7a52f73d295480f5a48fd102abc5aa64136aef40", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/brief-asset.json": "5f52b423b66ad5e6a53c094c3158bd5897b4a67389acd1603c2c33b3dcd6366d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/catalog-asset.json": "14594f94e47968402eebcdc96b834bef413fad2dfd8ac16b44ed58e08c44a477", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/css-asset.json": "ec7dfb5f205338f95bee80ab1de9ef91713b35ce4e1a561f8071ea4d0a5a8287", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/daast-asset.json": "dddb2b30552913d650a0c8b853be481fb089b8a5775205056fdc6ee576069829", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/html-asset.json": "2650096ad4c48fe06d0097ce52278c0b96fe108b170e0cc193caaa186d615ece", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/image-asset.json": "34a7702d22e7e5bea787cb0f5618f43f80ae3346dd95e58d9cf883caa88b8333", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/javascript-asset.json": "3fb1a2ca9de46c6fea900b9964b4a79a895c3f9835de6d2e94b7c8e7c2ca1be0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/markdown-asset.json": "9e57b288ae050e6008fd6e236aa3c5f2867d8ee721737fbf41a52287d5413b1c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/text-asset.json": "0c42b23573fc2adb82002792ef61db808e474231ccd296489fa32bd5e1b9dc8d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/url-asset.json": "068f0039476e8094a029411d8d324082edd35d84df10f68a9a8ce00e62231952", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/vast-asset.json": "58091c7e0876962e6b9915202fef8683f948264b68679a0dbb5cc513be92ece9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/video-asset.json": "bcfa7b383646ec3d86fa6938559fcdf215ae30b19f07f9eb97dc2e4740889771", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/assets/webhook-asset.json": "67aabd0ce9f5da4834d5f503e1603bbf1029fc84dcde05ac9fa17d5714ac59ad", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/async-response-data.json": "ba6180f75df7ab427d1f1e1b0bd590be585f4e2a6b5ac60ab67f5d41c6060881", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/attribution-window.json": "d8f9eb1ccb70634afd826ef01e776fadd48c27bc93ae717805feb80e55bda5b0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/audience-member.json": "67545ed2022855f12a6acc7821d7f0cb35d1f14308543fe6c39faa2517c6afc3", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/brand-id.json": "219783baab9202291c3d612cff59939bd88a4e1c229c242238dbaa7a2a44a302", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/brand-ref.json": "a888cee01b37f99aea003d51a9bd71e4dad6e0ce9ce41a6d9b82677d5a6785d8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/catalog-field-mapping.json": "aa45317fed975d9a723aa8adfc39aaa7a76fad3fae435e56ae71cd2363583eba", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/catalog.json": "ccd53052777f0b3622c485e5deda9fbab5517e1831334c8d14e2e70e403e336b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/catchment.json": "d856640ddb369927d332c977470c63b8dcf69674e7144c4c77c2494fd778e5be", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/content-rating.json": "1e93428cadcf8eaf11473e8f192a6eceb7ed2645bb3ab0586501749f5992823d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/context.json": "0fb73ff80594987c44a4a4d7eaa42b3cf3fcb9239381eb722d4050db0c39605e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-asset.json": "c1560122dab4a5ba0e2fc946a0604cd7250f90e6c6bc8ad67ded65a70076f3d7", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-assignment.json": "e60605f7df065baf0139aa747d2c5de85597508427e6f162de37f27291387636", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-brief.json": "03d1f630b91de71dfce892751ee60255872bf46b730375f42a5380dbe3e043f8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-filters.json": "7a9e2818fde339d07b5fecd8cc177e3dbe54d0cf199dede0b79203272de4a674", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-item.json": "4155a469cee1aef2bee8dd8349108e182dc68feb2fb7140c379025ce0e00dd22", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-manifest.json": "71936d9fa915084aacba5407914ed771b0a51bada6a3b63718918c2a2ecbb3c4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-policy.json": "183ff5354df08650d67475a2f672cd08125d55f4f89d4422ef273d015ec07a01", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-variable.json": "019e9e6724edae14b8c0fbbf6cdc520d269c8bd173795fec2e6ab71828f3d1eb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/creative-variant.json": "711ca1d20613cfe91fff6ac7ca769207f283dfc6060e7553ac72c935b0429541", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/data-provider-signal-selector.json": "1e737fecd01d0567ff7f702f7e2d30b0f110af2c7058cb2d5d8bf762bfab0986", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/date-range.json": "2b0e8c1b1e34efbde5f9b8ba15a637387648c8cb9316bf1ffb8057678113b49e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/datetime-range.json": "4870a4079615e8d186bd034eb4c2328ac6baf5b69f66a30194f960d90e3fc922", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/daypart-target.json": "ba207298a2cddde6c4a997e655b58a001bcb67cb1790875a30e155d49ed57697", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/delivery-forecast.json": "0e77fb28e88216d4e78ed5848c56c6852d944912eb765f9afe135d89c1cd7866", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/delivery-metrics.json": "b2f16538c3c0553605b91293c4fb9ab731401f3b512d2e4d1e854a1b2a1ce834", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/deployment.json": "96d05fc5c256b51f7332e23c008e654264fd7b58e90f1dfd333c5125d0c8ec64", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/destination-item.json": "4f597454e02e6fc7f1785e3dad0c68284abd451eebd1e60f2918e2757f8343c2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/destination.json": "4e6f7f877286cd633a2494c159bffaf7c45cb94e702d2325f8323226309974b6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/duration.json": "5d6966d7db1352fcb2806697fe50b2343564c0cdcaaeea2d32ebeb184ab4aa3f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/education-item.json": "8fee79f160a36ad1e2675107e8ed6283b100f3beb395f8af814d24c9cd6e13b2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/episode.json": "8e633f846ce60c11fce5348bc5e1129d2119ea00ac0bc0c213fd202c7a773eaa", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/error.json": "df04d6d6539d2db4cdc39d72503e37ac88ba3dc2d7c77041f8df0d40643b6722", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/event-custom-data.json": "50826262c71c78c959142f793f1722ecb2b1e7efc66fcc45b12e987a7e3bc86c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/event.json": "bab861739152db006f8c883769df5d266bdeeb8d916f9050a1ef34fb0d263e4b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/ext.json": "13804241885d2089ac4a7e6c9b54de3981aea3541e480922401224a65a1c0f19", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/flight-item.json": "ff0b4d6c48e2574484a77d94fb3f93fb3d1f4e1ad8c2906149362c36e6bea466", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/forecast-point.json": "d9670bc77111fe2612517fce9e49ed98e0435a8752d4e61b6a922370ff30d7b6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/forecast-range.json": "097fa40418653e3dfeba0a9cef35dcd4a2aa2323d62d73fb4d2ca75143db81fb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/format-id.json": "91e25c151572af491a88a34b39fa8e07f1415f345f7e74d35d48a5ed767f7b6b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/format.json": "fbf101b0731ac49dd8660e2ba2b0a777f5d2499946dc045c7fa218246ee637cc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/frequency-cap.json": "60e3a0879ca608d266f3312e6f0b469e3a130f3ab1e96c4c668e54c4b3abe82f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/generation-credential.json": "bbbc095fed0ce98755c8bc86005c391378209c353212282d10deea224069d4e8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/geo-breakdown-support.json": "ebb754ae29aa6e3c745dfbd8a3184211a171df353492f329dc8b0df952f33551", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/hotel-item.json": "33781e669dad3e3aae82bd8beb086458dff81257ba4ecbd9152e2ab3badb7736", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/identifier.json": "fab9cd6a8f1df375787ab77f89841a456bf157d0049890ef18a8623ea0e7d3be", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/job-item.json": "a1e79e163a40afa823c2f8d85749ed5cdc5dc0f5d85d0a3d8004ac52820759de", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/mcp-webhook-payload.json": "4512d6ffb692f9d0e4d6d43d210ac19205a26c81a70e3943d0b78467d2a1de64", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/media-buy-features.json": "b404654f24f2a42b83ef09bb7509ccd6d9743b3002031129121182df8754abda", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/media-buy.json": "0e6ad0ae080731d730003b3f18f63761ac0272e463a7b8f69ac9b7413ef862ab", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/offering-asset-group.json": "91e01e49aeccfc2f799d5827d91dadceb996712fc5b3584862ba7bd7e5a03583", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/offering.json": "e1267d3cf9104c1645736a50e27cc266d6ad78e70a411f119c8d67d48a5cccda", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/optimization-goal.json": "4643ec40cdb79422217e3dfe3ce695d040cbbc3b54cf5bcfc2622219473e125a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/outcome-measurement.json": "7bf75b88c8c1de2dbeaa120fb62422e1cffae83f4c40b9215655fd7a80e6603b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/overlay.json": "7235b41fbeff8b40d2954e3e72f7b44472ab6a999445629e36f7b8abf6e9ea1b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/package.json": "fc4f50a652dc7e469a2664271c5ae6c706322e6863b1c8805f45297443ae03cb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/pagination-request.json": "cf17f4c22eda721f8d0db5e0fb9434ac64e6f6b155fd8f26a3f1fc9fa2307c7b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/pagination-response.json": "8dd60eb0ca8516b70b9ca9ec43e7e40e5d0c52f9905776506049a8faff6e0fb1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/performance-feedback.json": "9e5ea18e94f82de7d593f4b54a88271a424368b687ddf0ee2c9f9758ca1eeb76", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/placement.json": "8c9d546ad66d7d95e87167fba071173531eac1ee32e4ebcef2479748aa003d39", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/planned-delivery.json": "f8833c37b0302860bcb03db70471e34aedd8807a88f1be0f33ba8fb4921ac8ed", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/price.json": "2d647dffb0aac5154d74c4c87233eda0a36c079a1b77fbd18bde0a713fb96dbe", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/pricing-option.json": "db5d4c3364d22b6e0953bde19edf83578454e89a89c4c977cbc41287e368acc7", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/product-allocation.json": "7a307107779056bd5ffe1182be32298d8d6eaa9a65f8e2204777b7b32f87bb93", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/product-filters.json": "e621f23b5e1246db8636a05cb02d9e84cee5f4f7bc5c23bf2f011022da840638", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/product.json": "9d7d33aa1b392c4a3bb1871890829078a83d582d4ad1ee5be781c94d9a03f5d0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/property-id.json": "8a1c4422ccf5f822262e74a0d7f8a771c1e84217318f23ffeeb58ee1f4d8030f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/property-list-ref.json": "fff5304a5baca150482ae3220fd692db5a7d5220e82a418c7dcc9f2f49880865", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/property-tag.json": "ba1bda41b7c2f552a5956e50781847565761e6aae423d83e35e57a72b5e69f6b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/property.json": "69ddf9d501982f18dcb80a0c26d6ec8159f8f9d27848ef91c2154e5ffc10159d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/proposal.json": "a1c5d231ab7c0fd8fb77df0f5efc5f3d49c474c42a830b7bcd8ee381a04d69df", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/protocol-envelope.json": "cb140804139b7b1bfb452d5ff31e274da88f4f14b4ddb076f169567b749e2b09", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/provenance.json": "734e013943ee81cd97e6be4a368583df328cd4f4481a5faf7122757ea7bb4c6d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/publisher-property-selector.json": "7cf4299f8a36939f6e4980ea5d1beae8c73b8b85fce5fc1154a2c4ad94d53822", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/push-notification-config.json": "e08b1b7b08c749bc26e1a45c1fb28a0ac2b87fc0d426bda19ca94b714f3fd1c7", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/real-estate-item.json": "04dc6c65e4157e0796c8a32e7dcc13c7a8652071ed8b4b09293eb7548a132c22", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/reference-asset.json": "54b868741f1e30e3ca04dc80b810e689e987a51a0224ba3bc45b521e56b7e78d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/reporting-capabilities.json": "afe3b12230f32d183041bdff1c898769994e211ce261b54ab726143792ed3221", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/reporting-webhook.json": "2a6b03726e0703c3a9db7ea4c0d863894a542184473e3d9b3e57b1de41ba81ee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/asset-requirements.json": "1f8925acc7cc1df192605c84a6f0d8e6ec67e375d1cad2b4f1ec2fb590578397", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/audio-asset-requirements.json": "74f9004ad9c71177fb440d1ad2d3d7a1d887dea481109d5f019c6033ecb28b21", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/catalog-field-binding.json": "a9ed6bade0ca49faba84c855414b718404455b5f1b8686a219b2587339a73142", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/catalog-requirements.json": "e5ccb6c0612210dd5f79037a72ad1decc4643d29120b27008f76a7837535f2a8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/css-asset-requirements.json": "dfdd32791e2abbebc5e1d273943df3fd2ff308510cb4d5015d3d4c588f00cb66", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/daast-asset-requirements.json": "f8768eeb41e2ed2be7fabc1a59813af54e47d4231cf072d06750540385b5251e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/html-asset-requirements.json": "861d3a2b9df300dcaaf1aee6d03d8ce1dde39059b8750934ffb1a9dcfa01d05c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/image-asset-requirements.json": "c026a6617c0fd1246725bc2f2b1ef870c792c9fb6064c3ddc15e303a5bc160c0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/javascript-asset-requirements.json": "f06633fbea140d29c5eb06f836ce2d9f7f5d75f22021bc7f14a270b0b4572bff", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/markdown-asset-requirements.json": "bceb0d30f74e3475aaacc3edd8fb0a96d5ddd444620cee8c0ee996cb4fc10441", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/offering-asset-constraint.json": "812dfddc9e589c8218c49aee1de9cf215a6a5a59f714c9de42d8a4b8d26b0fd3", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/text-asset-requirements.json": "f13e677b7f6f8900fc4c1cea92986af9af13ae3a4097595338a0230f21b081ee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/url-asset-requirements.json": "9bcaff2bd29d3a00ff3dcf42b2c9e103a67d4830d845d7651b8a2cab2d9c53c5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/vast-asset-requirements.json": "8f9b4839b59db253a09e9d619440f12cf02300350ce842f0ee0010638a2e71ef", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/video-asset-requirements.json": "f1dd2ca98822e6ad56aabb4be80d4c8d4c336a4b84296826a0a8138ff1e39a98", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/requirements/webhook-asset-requirements.json": "20d489934763c4a72f7218641e8a310dc1dbe00475c6aa4f9a52bceb497664c2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/response.json": "612aab4c813610dfd3e7a3bd01533fd0d10dca9e2bd4ec9d65c4f53eafdd83ad", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/rights-constraint.json": "fad8f110274ae9df791180f9ec2387c0fd6bae6813edec4a81eaf169b966ad89", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/show-distribution.json": "51e73aa238315a542996f3f1166f2020e775b64573190d1a12afb6f0a72937d1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/show.json": "4e90ac9c50352165c5e1beef500e17f324a200fc5e978fca181dffa83c74eb0f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-definition.json": "9103cf6685f26f3f75180f7dc38c30aa0723fa6f2bbc36ccb8864408d4c373b0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-filters.json": "6c88c3a364cee1183bf14476fc9ec9c65b9e7ba322bddfa063a2c033732d6670", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-id.json": "1f1fe790844002ba254b8ff085b8fc23b55fa738f2cd9f01f2cedfe58bc1ca60", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-pricing-option.json": "3621cb623d4b22b7fdd28a453e74daa429aae42f568eac35ff310bcef591363c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-pricing.json": "2edf160696e8c162f15f44f2667ee360ba8c0315fede96dfb7f26529fe6df215", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/signal-targeting.json": "f9c42cd2355385d1f1718848908a5bf1fdda506a9b2aae8f847bbd824d5c4177", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/start-timing.json": "61b6a91a6a5eda5d358c0ea3a85ad7042aca1eaa375f88f49f483ad37018c813", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/store-item.json": "e794ae74943ddbb53217d9eaaf556cc377a185be824d2fca049b45f15f4f5b1d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/talent.json": "62c3111b90fa87809957034108274cd3911ffa4af3d0ff6717d6a26d91c616e5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/targeting.json": "8a655e3deafdcf1373ad1c4565b9d0140ccbb475fca37b708ec86068e8ff2036", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/tasks-get-request.json": "2c207868274727c5229a044d59cd61e48b6b9ef7142cb89163d936c4d7f7dbeb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/tasks-get-response.json": "0b6ed7e457f4003066b15ca2044d2aa286a063ae4f4b1ce1e0e8dffd307d96b0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/tasks-list-request.json": "d5b253d0a66dcf2b8a79dade0abca7dca28e6b2db7e819d7d0aa8b69adcb96cf", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/tasks-list-response.json": "9eda1fdec133fb6f442ae77298a9b9e78a521f211dbd73f69026ff84bfb2fb64", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/user-match.json": "4b4d0807ed92c730dc18cb365af595502b9c3134c6fb636765b7148bd86ed0f6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/core/vehicle-item.json": "35efbf6256af805abadc8d760ea5dd255e4656f103b7e90f9c904560e9dd157e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/asset-types/index.json": "9477064c0b9e139b438ec7160e546e95b122fb64b00b6a84a8c2a78e3ed59c1e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/creative-feature-result.json": "3ba5ab3b14de105eedffee55c47c549b345602cdebe1762e937deb922c110077", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/get-creative-delivery-request.json": "77a053bde14fa294513e0260c2047966559de31abb22b306659e0dd87ae7c168", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/get-creative-delivery-response.json": "f1563c72262cb7a1e778114d06ea39b49b65ed32878a38033d3348b9b4084318", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/get-creative-features-request.json": "aff831b3fc9b7ef1bd605367954f264ac6a67ea2541065d8893e7e463f22ae77", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/get-creative-features-response.json": "77f504ac4885643b7103774fc903d143be64638e669f493fcd53ab2358aefdee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/list-creative-formats-request.json": "6436e7b204459afdd23571bc779406dfd4c32ce636bdc1e8b29482bcbe7a83e0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/list-creative-formats-response.json": "293f3e8575f8b647c2e0e57f9e8b561252e005c8e9614086e721360ab200c000", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/list-creatives-request.json": "f5545d228a5f9392cf0e913dac12c769f1eedd6f40b68fb80b02b9bab3040d2d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/list-creatives-response.json": "e2d615965dad7b018695bd4d241f70ff5a4a4267fd52db27356091f7ac0ab749", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/preview-creative-request.json": "854644529c8b79c775033b02b19811f7fb96d128a922319d907f4f64b2ce1950", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/preview-creative-response.json": "90940edb4fe09a03929ed72f87742486a1d48bfa5df43b46bca72aad92bac477", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/preview-render.json": "5a37e2774ecfcd75f9341b6142d680d0f901bcfbba908f046e707fd50aff09df", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/sync-creatives-async-response-input-required.json": "9e754230ff224ad8f120b9592ffc85b33a86e1fd6f36b6d81b25dad017972051", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/sync-creatives-async-response-submitted.json": "1155d86cce69d0de9138220056350cb3a894fde5815ff2ff98d3eb3af353bf21", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/sync-creatives-async-response-working.json": "29b097b25f2a87b4876badac3cbe3efa7a6fd4648685acc1559591a89d074ca3", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/sync-creatives-request.json": "a9690917b4ec5b94d27b378b9eaed2650a5719a6eb8f94bcc1ab5525a3706ff1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/creative/sync-creatives-response.json": "a1d92b0fc59396f5bb1614c37bf18a9544b41a110f8ed8f046447c93e988c246", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/action-source.json": "20cca8e9ab33673fe1ecc364d5ef41eb277c7a39be386f5e6c0c8d1bdc45499f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/adcp-domain.json": "10f1ce7a442138bc0bf7d923daf096dc2214b60b4e3611b2309f3610b9f739e7", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/age-verification-method.json": "2599117743454acb0324a8f9a92a2fc120fb8efc0bc050e657b6723a8e444d15", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/asset-content-type.json": "14d8f6a822799346e435dfee967342633096c8a1cb18816ddcc302d9eb347b7a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/attribution-model.json": "a83e065c1780c17a3b6ad18132acb38ff6e5c49220c9f9617a6c933fad9118af", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/audience-source.json": "6a800e63111bbbd73ac822539ea7951d0852da96d9ea3195c061f6afccb3834a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/auth-scheme.json": "a225daba77255fddd28ff7b38e61d5179e2ed0b59a06fef519ad71e2d162f21a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/available-metric.json": "d28b2455fd6b278c2bbae4cb72937f2bc6d67bfeb59d2ba18a26f8113bd2e8cd", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/budget-authority-level.json": "63a2356d6ad0553a662bd956f0e5b6d3491d092594ceeece57d0a85c0abf021c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/catalog-action.json": "bcb4daa23d9007748219a34c5daa083992aba9b9163dca580d325a96079d216b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/catalog-item-status.json": "0b9a56c6c036916ce0ec3453ae687694ecbaa47d0e3698bac3a1989524c45dd2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/catalog-type.json": "3a10ae79c9d0606a03cbd7e1f212c3ebf92cae58d0a6000e660131bdfe01c71a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/channels.json": "a024383f6beab6dbf0b2ae40a1d40a3f3e3ccda0deb24ab748ba3fe6320f04f2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/co-branding-requirement.json": "30c668395f5e8fa0c0556920f3c495ae1d7a1cd41d0819111a1c8fc224cc454b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/consent-basis.json": "c9112d9f5e151a285829b4c3e4cb5ca5289082c7c32e5d088c54432e2dee0147", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/content-id-type.json": "899fad00255269e09e865a31045a7f8412ad9f81c18a654d098f0d0f6bd6ff19", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/content-rating-system.json": "1cf826d2b3fd24ac54939382612a2734769e5b6a34d518f1ab503b38f383a865", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-action.json": "a3d913cc003dfa451fea68678d320e1acedfa2e3e747040994e4d4a899c6e27c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-agent-capability.json": "a3000b9061474c2be8663f192898b4e430d28fca47f9bc6d4ac670145a0a9559", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-approval-status.json": "3da8536af0a4156ff59936ef9513301b9d219b1f1c1db7b6c9426f4bc5c44b01", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-quality.json": "7c4a49ded9c42e1981310d682481bb4226b993a532c17baded19d2b166e5e8cf", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-sort-field.json": "7f0e9552f6bc555339d1cf66ae5e6c13937faeceaa35df950e68dbff530d5386", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/creative-status.json": "fa2b08aae02bde5f9868ff2ef1764809ddd2b297ad3c056cc7fc5a3b27815dc4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/daast-tracking-event.json": "a6d96dbd4f0f59a21e008713010942c794710996ad3d2588260da1621ba8eb98", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/daast-version.json": "a7c9efd5204f40b7c5de6ae73c85083691b25d14ea465470706365c8e4f08ef0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/day-of-week.json": "35e1c2edb4acb690fe7c02eb9147982f4a2fba83fb91b1f9cf19d93e480f013a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/delegation-authority.json": "c4af6f21eee376ceeb72b939abac87c4255075c6ea60cf2f54895b6f7588a6b3", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/delivery-type.json": "156008125bdaeb54943946079c5a96a886b947972b79306d148db51a4651271b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/demographic-system.json": "7a1e00ee5493ce17d45bca16929ca7985bf37f6849e2e21d5b76e34d4331deb8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/derivative-type.json": "f9ae01a67648d6089daec0ef9186156c32fc2f7fa4e88b83dab9b4998a2e5ada", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/device-platform.json": "8284d8e821ce9a1c6b40f067e0e9cbbc4c4b3a5c2eb674957e3e63b0ff17bbac", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/device-type.json": "f569e487a1eda6ea96555e69713d750dc2ac2c7fc12cf3c5f65ccdd2f74a4d61", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/digital-source-type.json": "3d7d5acf2e6f35f8ecd83015eca9e001351a0ce9b32f754a44d563d8d90c562d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/dimension-unit.json": "01b0e307d78f6c6c44ecb3895fa44d24a5c1c31c25931ae58caba8b0f048c824", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/disclosure-persistence.json": "2c1f18273e945185ea63b9672710a12b315e89c78f67fd19f09f286e3137a048", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/disclosure-position.json": "7caf0703c29025211942d57715775bffb4c3a10cca6b0c94bf80e102d9de2678", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/distance-unit.json": "aed53cb8c65b2a7a643f3bbd6d0b31cc33e4745c5de4ed494f7799016e7a9c3b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/distribution-identifier-type.json": "1c63f57dea83a6e5b57878daaf7fa159a0fec5b38a039075ffa73725496b2448", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/episode-status.json": "1eed0cf85e7c18d00ee821682ce99e6901d3e87a00ee24ef61825b6179e2d337", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/error-code.json": "64b31f3f495cb9f69e2f35829cfa4130f99166ee651e3149d2980d8c8f63602f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/escalation-severity.json": "0d66ddc1fffefac674e9bf64ac2cf54a138d95753eb3cfdb80246d2f4a18e627", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/event-type.json": "7a651de01712d26fe00612cc9dfe9bc4c39c692c95cb67afe807bab04e7f3d9b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/exclusivity.json": "bcca997ebacca15b0c7eaaeae771108ead4a9a61911a1458337bdf31d2169786", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/feed-format.json": "a83de6ddb7619bdc07d577fad412eec05a8d338369ad2c8cd9a90ffd7f36e067", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/feedback-source.json": "a89eb168084f5a6b3c1892d1e585b0cedb611c10ff813a176ecc93442196af4b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/forecast-method.json": "147afc3f42edcdab68abaf1ccd3392289f4651c82906efefba2f164565f9198b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/forecast-range-unit.json": "859fddc34e74b26c83615979a8d04b29a59d2c174b37ffa3d7f363420d60cc0e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/forecastable-metric.json": "1f0a3e9a197a1dace23f8fce9aea8e053d285bcdcd53ab245490e2e8315dd8b8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/format-category.json": "b39a257497d008fdf7c7a769c4f039bfe31fe1cd7980d41b85f5b7b3e1fb9b7c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/format-id-parameter.json": "72367d2e295a28029a5dd4e073ac34ecc338ab249f87b072120bdf3e870fd44e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/frequency-cap-scope.json": "180288f459461655f78f5892403b6f9dc49bc78b9c1e729e9245981fb3251cbd", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/geo-level.json": "bcee5f9fe4a648200ecb11b73098365ec93000e30f5b2cb99965769089933452", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/governance-domain.json": "1350ca69e52ba0e2c9066e672c6fbbd4152a534a29d6651eff84cc96e9ef99e9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/governance-mode.json": "017ff1c036a4c8a8ccf4605578f27c73061ca257900bf736497bd031a0626d1f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/governance-phase.json": "43915e3fcdda3439005e3619b349b4e73ef61f682fe663e34bac51399cc9eeeb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/history-entry-type.json": "8eb725a714ef85e630447e25bb4d64a671f73f4aee74bbf6000ce26cdf57edda", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/http-method.json": "316f0da683668584c5ac61dd16b9bc222257fd66454462a00d4a86e056bad084", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/identifier-types.json": "386d89b1fb81cc1dc77137682399c60083db7479253f0edcc3723aade032e1e6", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/javascript-module-type.json": "02054d0a9cc277a4cc082e868b3a685d62176c62e82fc7f5eb92940e023bdd6c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/landing-page-requirement.json": "a0e08f609ab2811156418c1534acd9a2510aad4a959bc8a20cb5eb83d0a3fb4f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/markdown-flavor.json": "1bab6bde889394a84935a5dd7a7f5997b1c3ca938e38a410adf273c9cd69647c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/media-buy-status.json": "5fbb2f3c02fe8bce0d10b2ff44a2c25624f302c86b3b1ae8e066c3535771c928", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/metric-type.json": "052be0d861e9a093c9880a8ae93bf6a4c91e84059c4b92dbdbcd2c2cba73f1c8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/metro-system.json": "d3eedbfd2857e3282447ae43c5578e37d9d60de303f2f34be22de5ff293c0c68", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/notification-type.json": "4c01b9278e3ea3a84bde9795722b4c656fa4df2204dc6763d822ccefb0188158", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/outcome-type.json": "fa4790b2695ea1a984218730b12ffd2a52b5a4217285ff7d90b0de446cc30ac8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/pacing.json": "fa10dea264946e2a0dd4301234f44d9b0b8c2b068278d1b155c0d7c2a502acfc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/policy-category.json": "0f55b3d43e46a06b2e4ec67d5ddfbddfcdadd557db20e408cd3703a22c5a6508", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/policy-enforcement.json": "1ec3e22d50eeef803bc9db0c1709a4bc79e01440559faa391787dbaffe09054d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/postal-system.json": "22f7aac657c4e23827ed395b6d3fd0d2771c5924baef4f518ec421348839db47", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/preview-output-format.json": "bf678458b88a1f97d88054ad276a9fbdd7880a5f185738906becd0d3c01bbfcc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/pricing-model.json": "a52a21a04e4d3d1e979a53f863e1ddeeb62d576ef469058861da32f8d2c80d06", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/production-quality.json": "2e26ff5bcd5b66242b43535ec7e88774e281d218d508cf32ad6a3420252624b9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/property-type.json": "fe9ac2a9ff8edcd44ac10a09fb21996dffd35b7b349889785e32685e7d069125", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/publisher-identifier-types.json": "7d1a08efc5982003e96b19b88aa236b51c3d94dd0cc61a4f23c36b500357f681", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/reach-unit.json": "886715239f2149a07243e6eba1efb5c7b34673905ab7be0b1a4636b777062946", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/reporting-frequency.json": "fe475de52bd7d0328bb537b5fba3b0cd72b8d9e844d3a9a68bda63aff0d4c0ef", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/right-type.json": "cc95ff19f919a008a605957d9227252941dd00e75dfead369c8360e4d9a6daa2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/right-use.json": "5ad33b31872a5f9bd0218a72b24dbf48f783aa09bae80a950c30410d1b6e3d10", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/show-cadence.json": "40deb6cdbb5aa5f603a3a1b3aa5ff0329371383f90477711677658b0800224ed", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/show-relationship.json": "56c3da86cd68fe019f5dd1d2a872acd6f4f7fd3ce335ab9e4172e6d7ed25652c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/show-status.json": "4dfd5a33ea52be0841fec0de61c6e7bc065c68c983b47b148808768a04db9c44", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/signal-catalog-type.json": "090211da9233b7faf3003a0b92bd0e41c16ea78c5b06097fb5224dbf677a8802", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/signal-source.json": "b928215d8627373a6a0fb2f9ebb9d97ae89d6473b6310480ae1c868e43a22111", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/signal-value-type.json": "39dc588e747321500116e2d93c9ce42331d5072444b9a95ad3f9d3b5ed685471", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/sort-direction.json": "9e78dc587f8a137ca0d3010722f88b1199cae3684d9f9527b81343382b194340", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/sort-metric.json": "97892d73e2024e24eb7bb12a52cb219fac5f39172ce8fe34e1a36025698f887c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/talent-role.json": "9ffdf4a7baf346b18c219cac03bfe0c9a6201332e5876d4ff8908a047ba5a9a1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/task-status.json": "2a066c93d68a56a05ab5986221e131b04d8a64d2324376d5ac6c4207a23d7e1f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/task-type.json": "91d0422d19e4dc43d2dbc72e8805ecef17d85ee4a7f65f013adbdeda20a0d9fa", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/transport-mode.json": "5c65b33220f2e0ddb64db9daf57a7b6b65eb7144c8e3efa416a07c048ae468dc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/uid-type.json": "863d1d3db927a09de0421773ff37257ead8c72d066b16c70856e4198d35897be", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/universal-macro.json": "081752ab0d008a5e7dc4d03a466817267e714e2a8b0b47c474fd4ef134994ea0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/update-frequency.json": "8708c42e459c2a6301158336c1dc40301623510e3a4389eb174ae06fac780724", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/url-asset-type.json": "07adbc254034079e88ee3971c6568f35c719c76a062fb24963317a3690ca0d8b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/validation-mode.json": "aaa7b24b69d5d5271b79bd02499e24830f2cd063e095b5a40df797338038dbfd", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/vast-tracking-event.json": "998d7ebce72dd035615755f5d8e900b4fe82e3245b52f5b02d2b7c4eccec6395", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/vast-version.json": "7a5cf28c7318892624239a2418349d46a808361f83d516c1d71042111c5d313d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/wcag-level.json": "dee2e52fbe22f3240ed34b44b12b07ef2dff55b971737bf7cb0303de05028b48", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/webhook-response-type.json": "1a23710674ee5ede3de5e022f243003abbcb488660173b44d69536833a0fedd4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/enums/webhook-security-method.json": "488e8425e4abfd0ff4f2983de047ea889d9019d50a8dc8dc3adc70619255818c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/extensions/extension-meta.json": "6d78ac98bf0e6bd2daed7ff6c4f14f5143fc42e65d42f035243879b22c1bf6bc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/extensions/index.json": "3841315110df7f2e9760e9c6fa6b7d3999bf151bd6be12ecb336de26062df0ea", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/check-governance-request.json": "aa633af2d69351ae7f2505beb47e7f6d634e4043d24078a589e380da549fa4ee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/check-governance-response.json": "20a0cc86dbbcc5cf44998684c9e34318bd8fb6764cfeb9703f1a619b6ee2bb5c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/get-plan-audit-logs-request.json": "80e2c114bde735c9a10892da7f91a6c196ffcbae4f5e5277944747db064c1bf5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/get-plan-audit-logs-response.json": "6ab15cdab32d626392b1b57ce2b9dc36a1945d2e3e0b85bb36c26b3c9cb35485", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/governance-context.json": "dd8c7cea9fb360bbb7e3c3ed49fe73a3bb4128fd0c98a4e09f1b968f04a64fd2", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/policy-entry.json": "72a9017938f7df44f0d986a345bd147f1a3d7c8d5c05a35404acf67149fd0ea0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/policy-ref.json": "c28bb6eafa3a3305ccff85f9183a2b8ef884449574b372f4904c361da1d3fc8f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/report-plan-outcome-request.json": "dd443e870a392a316bb027fe7ab2cf50a9f61fa652bfc6ff8dbaa3211ed85b18", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/report-plan-outcome-response.json": "b5baccd075ab9847a57f949f7b14b0c24f1254180c5b85944fc6aab62582bdec", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/sync-plans-request.json": "e2cbff40b4ecbbc380c2fb7d98a1a449c4f3444f4a27e51fe1510005c6442e6a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/governance/sync-plans-response.json": "1a3305d7e8541468ea310b2db0dc0afe38bbbea061579e644d5a84db435040c8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/index.json": "f98fd4987a890bc6f6c5d921e55e40fdc88be70fdfc6eeba86ccc2d54f75e401", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/build-creative-async-response-input-required.json": "fd2f70ca1bf2b9c7e9908501c9c83ace0038d67ef594f18d2f9f06bd8cabadea", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/build-creative-async-response-submitted.json": "10110fe33993c741a21922776df745cef7dcae1d4de0fc6c9691682ce8ec5347", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/build-creative-async-response-working.json": "e697ea78c20a58a773b06be0336597e14ff2c200fe8cd2ccf787c8ee76707d33", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/build-creative-request.json": "0dc89c1b2e3e0ff8e3796fdd1ef24ce8407698a8e6a501f0efea7c53ed62d7d0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/build-creative-response.json": "0248b77c14eec5541b8a5dcc541360f94b9516cccc21cd20d7c8e8f779bd47be", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/create-media-buy-async-response-input-required.json": "e7ceb962e874a8205be0f6f22f46d1e4b0e8e42f175af07dfb12b28bac5ad34e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/create-media-buy-async-response-submitted.json": "ad5932de5a20974ac0f4f03b5b82ad384661799b774b3dda29b84cd789f09b24", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/create-media-buy-async-response-working.json": "6e86537aedeeaf0008e7d9b9bc990703e18e8a13cf695aa074e0f573ce7fdf04", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/create-media-buy-request.json": "bf555827f22448f267f3182275576350e4425b5660fc1023deb751b1632e2dbd", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/create-media-buy-response.json": "ebf74fa37f5ab7557b8354f0bc9de76f7cfb62eaac10fb5457d2f5cffc35470c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-media-buy-delivery-request.json": "87c8edcb69c57a21cbb9a0061c8dd5896ea7285c65fe6030911d90eddbcec287", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-media-buy-delivery-response.json": "1decd52cd1ffbba4f42f7b16248a102ad6e054f9c24fe67c5e130f9460c3b3a4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-media-buys-request.json": "85d231c88b34ee821b28ea683342cb11bd379b47751f72887174f1cf957e3632", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-media-buys-response.json": "50cb8e8559596a064cfe1edcbc2458e0c374c68300f76f7858bb8c75443736b1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-products-async-response-input-required.json": "7dd2ae460e2b3a7aac40952a3b1623cb93266425aef30056f8dd6ea98ff06bfb", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-products-async-response-submitted.json": "36b6c0a487c77ad89f1e279c30a33ce96abc880756587f6cdf1126cd5fdbe929", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-products-async-response-working.json": "ae0407dce771310c432016491b4afa473e521cde0c2df723a87e1b8805fccd1c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-products-request.json": "a5296f9a284066aba0563c0405202fda36540a34f9ebe755c539f01924861f1a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/get-products-response.json": "fc5ddede551863d5110412767f7bd18f5c66163da80113ef1d5f8705be75195f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/list-creative-formats-request.json": "0a4cb3fedbcd0da419c899fed36675b2eabc626ac399566d267873ae3e3a6755", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/list-creative-formats-response.json": "3c965ac55af359117b92acf25afdfc8c8262e0a401b6ed10baf35b76a529637d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/log-event-request.json": "b75478409248e52fcfed192ba757a507900f60f7225d7ad15132a3151e103a1a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/log-event-response.json": "94c1c82f4e21481172708644569b9f3d2628fe7d80a684d870c89e369d25fb88", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/package-request.json": "6e3e46fdb1fca2e339b0db23f624e9f719fc1a7968d72a36e7cf7b9271ab80cd", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/package-update.json": "21b8eae354540cfb208f996812432f6b067b648788488f39d32356adcb006ac0", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/provide-performance-feedback-request.json": "74504c0da97f2fe08ac57dab357c0c5adf7b2ad94d73628b24a684e59019f917", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/provide-performance-feedback-response.json": "14c5f405852c52b4d5f07795fafda10634085dceed8921bdf9b2f09bbcf6d5cc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-audiences-request.json": "028aa834a0e6744295ca9ee1c0bd85d0dcb27ed2ba227f038a9027591ee14bec", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-audiences-response.json": "647a65c6e9257d57a11c25deb82cadc485de9b0636da6e20064dcbab3794a0a8", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-catalogs-async-response-input-required.json": "46654da2e2a267019a8b49c90d9c20e1def3b6b23321b79e1c81067409f7b6c1", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-catalogs-async-response-submitted.json": "8b38803137980f8f01d4bbc9bdd6605cc76dfab73ac69ad7316dc297ff82f689", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-catalogs-async-response-working.json": "8bc9ef5500a7b750e74687302ca52c56448470361ff5ef864183623bb8fc4197", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-catalogs-request.json": "9d29c9a1925c940f702d74d9ea1616602d6cd85b6b74a930ebd5307478859ad5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-catalogs-response.json": "8106975ba2ad7b81c2ff292681e2de619c49ffa6c6356fed81284d049dbbbfe4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-event-sources-request.json": "e00a0ddfe75861e659bdf8877b7257dbe6ce606dfc9087c17ba865d9ac82b4e5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/sync-event-sources-response.json": "973ec597466545f7a75bb62559aac0132892af466920ef4bafcdbca9f22a3881", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/update-media-buy-async-response-input-required.json": "c7255e2e8afce07234a8a07423b7d66ae75e9a2cf0e60c673432072d83f997b5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/update-media-buy-async-response-submitted.json": "f78ea9e4abb01d0f2fe1d9f159af5505ef241d1f0d6d9d5c24916d7be4329f03", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/update-media-buy-async-response-working.json": "b508733afda28446e4e1acce7a7eb98a0dfe6797866d7cff5a54ae5d77e3585e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/update-media-buy-request.json": "ec6adfc7f9a104b03ffd936ea95e2468ccac6d61d4c8ed66a9e3ad6125a70557", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/media-buy/update-media-buy-response.json": "bb416b2688ec1265165132d66fc0ef611bc95331e7bc263a3d0a4426aede2b31", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpa-option.json": "dfcf1e80b9a220a167a46695d7675b8933aea665164b725e10a6a4d869c4ac0c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpc-option.json": "74419f2442325315d4bdeeed8a053fdd7ae4d7cc1e36a2c7b78bd97121c5e03d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpcv-option.json": "6a5ac9866aa418df08d12cc8c9863224f4d48aef966d05256f23018ded98db68", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpm-option.json": "ced4e33f7fcc3d3e1d1055fe7f0313359949b0251c185badc42170053dea0d4d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpp-option.json": "a5473e89c20366f2737e93303afe882560fdd5423d95000e77967cec76c0f8ca", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/cpv-option.json": "f8adc7f5af1af8116c5851bbd3083dbf0dbcd9e7fd5a714d7eb5f1305bc4d094", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/flat-rate-option.json": "ffd644e7bd1d9142b7cfdb5ed0760bee0331094dede90c4fbf5dd39fc42c8c7b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/price-guidance.json": "a6ec4fd0c638f8f7a898900f2cad0a0366cf6cfec6b1d4fe39f4a69f7d49238e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/time-option.json": "9a4a0eab12799d8cb4e13d590e1178fd98d41b569f2ca7c2d4245234182cd239", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/pricing-options/vcpm-option.json": "4fe64b92915f3c9f367de489ebeced0d859d36549f8c779777b4a358badfeb67", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/authorization-result.json": "0434879b5f3822de1916a27226e6eadb354b12d587f5f84e2088a050166d9e2f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/base-property-source.json": "eeeade4fdb6d69e2b0420ed15435140d6aa33dfcf9160bda89b4554a9719c0d4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/create-property-list-request.json": "55efbc8fc3cfd33be1f6784ca94732c53978233e9b5a2228e466253c84673fae", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/create-property-list-response.json": "b38f2bc57ea18f370b320e56555a46467f048ccda82bc5f12048411b9b82b522", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/delete-property-list-request.json": "c20644a6242ce64e7d376da1292f58ec96cb9b1814759e21698d8375a7d86555", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/delete-property-list-response.json": "9af3b4839cfd7c13f9a0ba4a58711efcc7bc4cc95ce6565d85959e314a889c03", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/delivery-record.json": "1f28cf4153879bd6c9314df369f613874bde5dfe1f5b56759ec6a55728e3c38c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/feature-requirement.json": "848b7c8c2eb53cf3b894317264695c53f6db1495692369997408dd46f7f2c9b3", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/get-property-list-request.json": "75cb67061a4e813c5b8589982db866581996cfe5cd2c6130464d6eeb53489662", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/get-property-list-response.json": "6ff3a767126b738c8927e62679c8c9da79fbdc6557be48c4956bd1e6dbcb8a7b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/list-property-lists-request.json": "629eca34453d8f8a33a45c441877148720ae054c9b8e9909c96170eba87e7b57", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/list-property-lists-response.json": "76bb36b5b75d66c207d35840cf369e4506c7ac9c37410c6b9da8cbe608fc13c4", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-error.json": "484bc17aa1af96e4abac83f4ba2547d43cfc3dbf6f2f3de84ed80e3eb1f9ba15", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-feature-definition.json": "5ea5893eb5291c495c96f9460c481ea6080ddaa3945c43b62eb87a2cff3c81e5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-feature-result.json": "4296e933908de0bb1fdd2538d7fe78fc4debb0854f09c42edf6eed29a17494d5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-feature-value.json": "7ca635d4c4db782e0ea045a267e858e0e813f4ceab5fb9542298a98979a3e32c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-feature.json": "0a5f40e3c0beff679c5db14163f4196a773a999c6a63d69d26ec925c55c9286b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-list-changed-webhook.json": "51c01e4d452a00acc9848139e7694b14f62660d1b762f2c478596298f1cfb329", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-list-filters.json": "e57af0ae4fdc19fe361cbdda368323ed62c8ce34fb14c2275b15add96a5de01e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/property-list.json": "877fb067ce1194f915e558bbfd7a37736040d8c25becf18228e841f327fefd1b", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/update-property-list-request.json": "459e3c676e2a369ff8d6e7cecddebcdd21bf6ce317172b385c67a7d1129e166f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/update-property-list-response.json": "fb5565648ba77cd06f0ea8a86612103cf6370c4db1572e58aadea3cb81e9dddf", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/validate-property-delivery-request.json": "629cb5bc59b67d969d2d9b5671240a5aef3d3ab1dc86a791ce57126c483fb340", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/validate-property-delivery-response.json": "8057e83340f452eaf48ee21efe63c32ab997c57311e9c615fa4f239b690d4c2a", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/property/validation-result.json": "eeeeb1d8252707cfbae947787856d952e4ad9cf3640ed67dedab68f29e7a0bef", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/protocol/get-adcp-capabilities-request.json": "56e7edee95223aa62f93e780b0080827a772c44ff2d197824c5abbb00210c31c", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/protocol/get-adcp-capabilities-response.json": "da02312cab6315ca5b76a7127ee199acfc280ac721600f921cf08a266311ed11", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/signals/activate-signal-request.json": "9a02dc943edf12295394417fa30b3f59920158884ae387c3854ffc5c1f973a1f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/signals/activate-signal-response.json": "7da54281c9354268a5dcb9ce6020b90405c9e4745f06946ed9031135f02323cc", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/signals/get-signals-request.json": "e15a45d1a03d5d6ecdff66cedf6c1fe57d8e3659fc08fd12b6328f22b025155d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/signals/get-signals-response.json": "78f64c7d6b31bca9ef6954c4cb47db4af5fea5cc69921a4ff1e851e6ffe8add5", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-capabilities.json": "753d65ebe3448776657c53b06237f19bfa474f174ce5b5e10458d688f457ccee", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-get-offering-request.json": "c2fe18092e73eae2640536406b10a70b00adbfa99e7e4bcf3c7d5deee1d16666", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-get-offering-response.json": "3149733affe96be0ab164546ddaa4d4c76f3582135c9d6e05538f8751a556b9d", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-identity.json": "bdd25ee82dd6eaac5b0020440b0b4568e2f232eaca0bc15081ea79865794d07e", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-initiate-session-request.json": "b8ff759b960964e741c7057481b92f56170220dcb240f48438a950f10308d9f9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-initiate-session-response.json": "cacc32bbbcfde78f2136697490a9ae0ce56b4c71ce80a0ca9494ef71c709cffa", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-send-message-request.json": "57d87cc7feb639a0314c3dce773177e16c152e2169ef982f7d862c115879a800", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-send-message-response.json": "0d3c5635a0a1e299e156b4608b4328ccf7f6c2aac905bd08da70307b9bd926f9", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-terminate-session-request.json": "e6d42ddd6da15167db1b78fc50853fb177841628aba769aed22a5f6c0f1aef3f", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-terminate-session-response.json": "202817c0ed3c3e4cc50bf70b0f9d943274f23c950b250ccb817a1965cd2e7886", - "https://adcontextprotocol.org/schemas/3.0.0-rc.2/sponsored-intelligence/si-ui-element.json": "6a0d9b5ae2fe28810046f6341c3f5205a19ba03932bded42aacbb53f2625478d" -} + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/index.json": "337965cc387d0863e16103ffe56092708470c8ceb3b5631b9b03b5c0b7944dbd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/a2ui/component.json": "d22a41a4bf249e0a1f21a6c4ef3916d1c7733e0f048d68cfb2c8536f58566b9c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/a2ui/surface.json": "6cac1f60e2fc36ad4a768c94cc7e430151bc2a76e280ca55be43e356e643c78a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/get-account-financials-request.json": "9fc44c2993a789fb81b26c444887abeceeb7e5b8ff74f3563cec896085a2723f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/get-account-financials-response.json": "74665c6dfb358503e84dc92361ce1418a622bfb4ea9673c4fc5488168f9344ed", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/list-accounts-request.json": "ce85993a01c59171ce98105f08cd8a2d41b43d42f2e16cdc71063b235bef2bb8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/list-accounts-response.json": "b7643a844da74a5645864bb9d8baa7d76692e564e242ee8792ceee0a2f248a75", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/report-usage-request.json": "c852c5c3e6a31ae23f27e0833055ef82e70c4140c7e86a5816634b358b7267dc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/report-usage-response.json": "bb5b43da867fe14dfeb276107e65a41928debfeb156f6f3c3e88d7927ab1e2bd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/sync-accounts-request.json": "64bbc9bed697ed2907d79d381960ff1318755493b4296a7198258b7e5ee44780", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/account/sync-accounts-response.json": "587aa9e2ac3ac6b04367c2a271d11243c8737b34ca2737980c30f91a053aa1ac", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/adagents.json": "b7c315a1450760c19937baeda27f1787826dbcb5246d0f867ea3e06d415ca034", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand.json": "ca89038a2f824bef21dc278d4d0c67ed8a16c37c7f642bea11daf66508b83f2e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/acquire-rights-request.json": "839decc5694aa5655046c29d01bab8697c8c175661fb824b8b923aa815093421", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/acquire-rights-response.json": "e06aceb0ef6481a68c573d88417f0b97c05105915b8d42fe55ba182717f1c2c7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/get-brand-identity-request.json": "1df6ccf72d064930f8df0226a2a7a4f73634470b41459b944df8af86bcbf56b2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/get-brand-identity-response.json": "2c81d0ab363c6cf7f3cd503c227d2a2473945713a3aa64f546a8e1f006730d60", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/get-rights-request.json": "1b9c5fa60d6cf68ca526e05306c2229bcee2fa726a896ae06992659ec784facd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/get-rights-response.json": "aab827a8758099930b54d5b1d920b0564376b709a685d6e790f97136dc810c3d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/rights-pricing-option.json": "c1cee083ec9d6030e0cecb33d77b07052c5d109d27d6365bc84266d81e16141e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/brand/rights-terms.json": "db321b8024870a6f4eb94d6f3057365ad9690a23029d418c0aa7d8a8b9976979", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/compliance/comply-test-controller-request.json": "fce05b8a5c210d3e1c026ac3bd2d94570d9fe8fd9cf117a5dea5c9b7995f9cff", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/compliance/comply-test-controller-response.json": "e8b4a8ab03bf838a109e7257d3a1796feb3d5d120692e1b2143d88ac0f6fff5a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/artifact-webhook-payload.json": "c6377e352bd9956dc159be248358b01d53d1d344b73489216a96959fa1dc51f7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/artifact.json": "8285b6a997d8c5a1aedb006adb3fac7eb82396ea14bb1266a291197d45eff57c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/calibrate-content-request.json": "6537170c634f47a495ceac13a77ffba136521c21170999021a59bede1a9a09b2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/calibrate-content-response.json": "c596242076ce3906693f15423366213c644ade4129823c2a5025bfa1d1088047", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/content-standards.json": "7c30143ebf55fe0e0a0cc62ee8d67022f6ad78933303d570e3c3a557df8a0752", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/create-content-standards-request.json": "f57f73577da67b09dfe6cfe8aeb16b67b7ebf511acbe3deac0f68d22937e2a98", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/create-content-standards-response.json": "475bf8eaf344ad41340ac9d70882175515080d87cfea6a23a7607a0459ccaa50", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/get-content-standards-request.json": "b8e88888817daa42b47a03964d3c183368aa46691a1135a75a1447a50cb34d70", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/get-content-standards-response.json": "a35255bb6e312ae98ea43288f807b0634220363284d109e0f670afb346bb461e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/get-media-buy-artifacts-request.json": "138c4874bf2e6c6d2cd5323db092b3dab01962f2882eab7f3952f27108b7a472", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/get-media-buy-artifacts-response.json": "34bb1a0b998d4dda0f20330b6932886a81371e8e796b01bffe2fab3aaf3bdf0e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/list-content-standards-request.json": "edf0418927f439b6b8c67325b797a28322515fa2bb67dbb782e40c78eb909282", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/list-content-standards-response.json": "27609d784e94493d591a8304cd15eaf5355fc2276c7869ca7a10ea70345fdf19", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/update-content-standards-request.json": "562b9bb1c3be385ab506042123ea7e7ec59d72c3e58a9740c59289283481f5dd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/update-content-standards-response.json": "e748c05d78a081645f833038c6a78977653e694fc50e9eb9d79abae324a1516c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/validate-content-delivery-request.json": "af16937eba4c1910e70ce0e7ac7872a4e82d32d5549330522ca7c93ddc8bd9d4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/content-standards/validate-content-delivery-response.json": "37a89f390d7b652ef862b57d944a7e413a587677b68768fa1dc7cda3b48473c0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/account-ref.json": "8e1aab16e9a3aa506422fc4b2966a141bff0fa0c90d6ecd328529fee1d56aa76", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/account.json": "cbb428cf9aadd7f72a872d1653fb0a27be5f4ea910bad1253e2a5f8185f11fd8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/activation-key.json": "49211f2c174122c9f82f35dcd6c689621855c67f9443a68e360d8706b4b0ef51", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/ad-inventory-config.json": "fd9dc17d81284ac4c49cc49740353eb60a6f447b0d05e043afc7571ed7669781", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/agent-signing-key.json": "c48ec6156e2311a6850d3c1e9016716cb83fd436fd7a7fd4b78938d6670cc66f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/audio-asset.json": "4c1ffd271031888a90a7473071fee8e96b2ee39083f39e0be8d824f446696826", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/brief-asset.json": "986312c6fbc535b7a0489be316a058136d0ffca46e9bf40167aa550edcb9dbc1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/catalog-asset.json": "d42fa509be120591a2af71469bf635665ca6960ffb44c0c45947cb511664d137", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/css-asset.json": "3b05e2315b5ac4290479ca15b4b777b4fa9a560010721524a8fc8b88260792cc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/daast-asset.json": "1a4a15aa6e82508bca2de763f721d6077ec3687e2d8297918df51e176b0c58e7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/html-asset.json": "15aaab0dbea8193673b2fb26cda597ba3046965f525093cedd99b795e79c120a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/image-asset.json": "92412a33d0d3fd1cb90181e14031351a68f425248f7bc4befbfcdc9921b3c1f0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/javascript-asset.json": "f6a8debcc93d6501a774ae92ffe11c0090a5d293749c456207c37009e1d91b08", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/markdown-asset.json": "47810fa16aa050ee98e664ea1fa3aa6dfd89a8223b6404c9aa0e45c838108c0f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/text-asset.json": "5307478b9c335fd0311e9aecec087606602b6a4d297e1b67d29b87e16e0a9a7e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/url-asset.json": "3b56b834454a062fb7f316c799feb7cc5cd81f56e8a978494e6130eb4ce3095b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/vast-asset.json": "0a4de3c3b8389196baced22e26ec5c65b5d03339a8ba8a855000f0f118164e6c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/video-asset.json": "6f8c1497f7ce1a1bdb9185816a67e74256b8f33d8d31d308915439ab2cb66993", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/assets/webhook-asset.json": "e5e708e1ee8f554e60ac28195cf356e4bcb0dea55c137a84b25359d76dff054d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/async-response-data.json": "06501bd79d631864af4f13a6e34a254870fd0f98316217e880a1f80ca399fb1d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/attribution-window.json": "48bd87e750bd8e67e4842e4436dcbdbe2f8d44dcb00a4de4c12fede504178f95", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/audience-member.json": "99f73021919ac070342c5d5c8a3b5d16eef9f9a527a49f146db9696da0ac8de1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/audience-selector.json": "e0b2da1c52e48cfca37c7a5a4aa53ee0dc3c52433fc152e6db0fba0a4c85f409", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/brand-id.json": "af0beba954bdd6f6cdc999482536debf7df392601bfec6fe4aa10e859d9964d5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/brand-ref.json": "fe7d9a9c7a172347238bf6efd1d80146ee3d8f32bb28b8fc6a00399aa595c8fe", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/business-entity.json": "90524b7476106a39ac4b8d37d4c70ac16c7b3ee499148ba97c480d7359daf857", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/catalog-field-mapping.json": "f2b48aef2b7b004c470f64c0f678cb990790f97f7130981aaa68988ec5f01da6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/catalog.json": "e26cbf1fc7dd548247353b268841d438c8cbea1817cdc0c88069dfa773be77e2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/catchment.json": "c77eca4398cdcd82d9700c6ce50c323f2190aa5a3bef27de0cb598c2f0cca381", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/collection-distribution.json": "9c8e8dc5857eb9c5a08657bd6ccdf667028156db0cd931162ccb7fca9b92417c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/collection-selector.json": "081452eaa7b8c8ca3220a7cbc89588eb11f9116be617514a61c440890679b5f8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/collection.json": "8e9e04fc713afe17f9598bd99b4875c14466d71e7d8c8905aec794fb3563498c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/content-rating.json": "da636d26db394d63cf8324f718cad540434e4116a555cff66d884d9e216655bc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/context.json": "36f093ec6cbf4959ccce17598639a1401d90c4c94b431c90ca18a1ecca9d6670", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-asset.json": "2374ca62ffbdb52e2051371f8c31151396c84f772cf286aa03d4e7fd4bb5da9b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-assignment.json": "a7b3b94ab35d46f130f989537ab5078ba51e572521868aed6924a7634feca7aa", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-brief.json": "5b4e8aa8a149deb74294ea2d8e59b07af5151c8bbfa0b3c11bd27535570eb094", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-filters.json": "c98c99dc62058d35b3a30a016db715db5e4144f408f0198a1911d8fe9af6ad7a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-item.json": "a57020236d9795ac5c0a216767312784e3f199acdd8c0d2c9185c078d256d9e2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-manifest.json": "ab3c83d6b3e022b8004706d90629447fa5dc3a8431f4ef9052e2beef66a2c8cb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-policy.json": "b57062159388f555cf3085c3152aee8885092ef525124a07d523114da5ee79e6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-variable.json": "887135d4977dfe09ed0eb09cc7c6680932aacac687ad2687995ef00b96a7b682", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/creative-variant.json": "d238d4b5ec450eebc21b924dbbf937e446a998d99d5d235765baa8d0cfdd882b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/data-provider-signal-selector.json": "bf64573e6dc5c8ca02642e29e4828074db39c3de3d183bc6c0607ae332287006", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/date-range.json": "af3d972504557299374292fffd29d3d7fc599bac7c6f845bd5e369d71ae6822b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/datetime-range.json": "e487c28407078eea7924c67fc3ce7d3c872c2cf3b473ff03e98a6c0e2c1d52aa", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/daypart-target.json": "3a2b36ef137dad024db9011d538e08a82a75d507d05a227ab803cc1b96c23469", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/deadline-policy.json": "05891a79ad2e6ca8a780fc1c1ffe08d3ade5d8c710d782b1c67ea77039ac903c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/delivery-forecast.json": "32f665c34267f7c405daf68ed8155dec283762d5ab9d203e10d9a56378d0a1bb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/delivery-metrics.json": "6590ddb8ca403a58449a18434e5a7ec424a1e8f33ad1ae103937a4ac179e185d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/deployment.json": "8e3632749b01594c6a68351461b2d3ab2426520b7e3d10d603f8ac0cd6e4469e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/destination-item.json": "068cb60a45457276ffd1d81f4086afdf66e1bc3b72fc3228058b9c922d209bdb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/destination.json": "97f216c49be477cf1081cea20325ae5657c4d43e0a606838f472c62a9b533bf4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/diagnostic-issue.json": "c4530f7b2b9f0b8240ef76a8722c0655ddafb9415c24dae435e6245b6b4b694b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/duration.json": "a439738df862db14e1c3fe610c1f06ee97da68384641a9576c047a0e0d16f530", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/education-item.json": "3bac05d8c668582cb48f3772633e85d0a92f483ead1d59ca55d1df1e04787003", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/error.json": "72834a865eb205619c992e52e3146004d59ff263b7cf7c762b0a39fcb9183a09", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/event-custom-data.json": "90a319b34a865b802c306973b2b1648c1dd5d14e9b93fa438cd793fccaf55766", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/event-source-health.json": "5c651ed1db3a4a0cbf333db173f81b9ea094460a48f8fec6a63e270b0575785d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/event.json": "25e2c65ab09361ff9dfcb738a90be98b9f76bb48450026a529dabb3f37598425", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/ext.json": "c5c1af3285f2f97f1366f9fdb95b51e06657d3b27b18df20fdccc8c8126a9eea", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/flight-item.json": "942114dc393ad5f0b231b645b0c1220bd750eb1acd1159e18ac7076d58400f61", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/forecast-point.json": "402915a12aa4849c6064ad713bdc52eb696052a567f886b132d10c0b47c99285", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/forecast-range.json": "e6bc264f87be81379238b37f359180553caa73270edbdb04b8af2e1c7b6b5200", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/format-id.json": "77a8885b39b09893283f5d56ee43425616b4ff7a5707cd4cdb78d602614d15bd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/format.json": "a51942f65d8abd726b0afaf2f7089d550bb6eb68919af5f7442dabdd787918ce", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/frequency-cap.json": "e546af65ced0efdd94b37aa8a79392ee0db65199d7523f3874502062fe2beb9c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/generation-credential.json": "7ed94f90dac432106d46ce8406e5560c691049f9c618dac38b6a9c94fe66b90b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/geo-breakdown-support.json": "cdb8bbf5f4a5310b8c1e6c75b9def6fbd8fc25b1a6b9a5f35289190b265f0df7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/hotel-item.json": "b3a48a73b763dbee7aa3d489d0ff3f85b83eaad5452fa1c41822f0f210b5006e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/identifier.json": "a1fc2123d11363750b1535b1dd50a8420f0b4d42feb1282d42f79e7197b84552", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/insertion-order.json": "3ac04a4a50ecc4345a938a2562a213a2574a49f3c40f25f08b219ff63775da5e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/installment-deadlines.json": "18a1eff2d19019adf8614f96409b4a0d738194e7a0202710bf3954274f084fc0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/installment.json": "eb2033ab2cd36e58147122526ec7adb11f43c1828cde2ce0cbf8470c0a0320e9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/job-item.json": "f7ce002b9545f747cd214cd89c8917ecfff8a44784269b6a1043fc3cae208d23", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/limited-series.json": "755c3435c9f63e5d882ebef0649e4c954c95c842e3c1cf659ac76504fe47b301", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/material-deadline.json": "f64a64a1806acea36e3d40a5dcdc1bfa5107f567296a79f81dadbb331b4625ac", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/mcp-webhook-payload.json": "779c37fd07367dba50cfdd9e380b85fc340f335571387365add175421f075743", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/measurement-readiness.json": "d21431610d1f4df28c910943c2b7c57476e89fee0de2b17c2178ed6a444b1153", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/media-buy-features.json": "0e4820325f5e36bd21d3b047e97a86995be00dae045ce76d0bc0aa6d3bc0cedc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/media-buy.json": "94d8b6af4faef192f84a87e163a04d6d54b5b191c11441c3b317359a0ac352a0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/offering-asset-group.json": "dff532d46abb645f9cc148b3f5f7f5ee3ef855509a7f63cd4ab30fd4ec600cc8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/offering.json": "feaae5cc67b058f8c07100099fbbd309ca4b038614620c30e16cc2759d8277af", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/optimization-goal.json": "eed5461f199a14074017cd6a9988adaf6d47cfe127022829f2923ec111305f2e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/outcome-measurement.json": "66c9072ecbcb25d9bc4de7f1c91206e8b820d399d035b56832ae3f3227140bfa", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/overlay.json": "ea4a05a68f836d4e9970b77930770b53a531aececfcfe1d5c5972fbe6c783d4d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/package.json": "86e972f84fef1a46a0e30b6f95a0680b5fabc0aa84ba6484a6fc226f4da855d3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/pagination-request.json": "2e798210cee0cb028abf107f86a9d31ba8698b294ebc2cdf1150c28cf7fabd79", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/pagination-response.json": "c2b29bbb668fb6c4839a3be878e40a01966c7bd2c7785bc100b58ac9412b2af1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/performance-feedback.json": "8ba7065139aebf018299dbcaee83665745bd617a98c6c884a51dd5d04ed33cdb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/placement-definition.json": "84a7a032e82cc0d3f73ba0f1362e190d095598116f0bae0eb2bcdb92c2761efd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/placement.json": "21c6d48abb0560fdb0f5a2219a6bc5bb0392e4ae3f88c04f6801afbadbec84a4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/planned-delivery.json": "560976c9d1b6d314e3c7ffd25ebdf0d25552e3937466da49dfcc3fb21fedf303", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/price.json": "be48aa7b81c10ac02adc27ea39a95e051c62dde7e04ddb8fb16d0d92ffad5557", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/pricing-option.json": "66c25a6614b031f94fcdcd8e45c3594aafcf8048ccd760e58bc6641ce83c13a6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/product-allocation.json": "97caee1d479157ccddca1132ef62f46f33103b496d18084d100d17765f751c3d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/product-filters.json": "6df5fb954f7531145d585ea981a4a9dbc805cf2b47704d582c332068d470c62e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/product.json": "68a1474fda31cfc77cc22f7ea65e9d785cf9d6b0d8a30fd0bec5e98536318d39", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/property-id.json": "a35c55f7ee76ba6b00169c7f10b1c99cbc78428f02270085ceaa0d6b6682ffa7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/property-list-ref.json": "c4bc69c0d05dbf26c6c65bf18fed4740b76b22c5fa491810853c4102b0c29328", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/property-tag.json": "62bdc767e49f96eb2a93fcd7eacfd17546ff0672733b0ef5b8428abfae404719", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/property.json": "7f599dc226a6ea86b7d919610a11a1d8557a8e646d89681630470b951903405e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/proposal.json": "7bd35aa4e4edecbfd8c4c888ec8c6061992e8cebe58b1768d889dc799349eb84", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/protocol-envelope.json": "97b3105d54c39d3be9bb61cae791dc8f79eb5beeaab437cec5fb4dffb6aeb545", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/provenance.json": "7f8b2466cc6bd7b4505b6ec99a70b0c638fcb7e82af1b886d2f585e700c2ca8e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/publisher-property-selector.json": "80f5752ce8130fd10de72c371a4a1a55d01e6e2a1dcf13e9c4675364f995a802", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/push-notification-config.json": "f8064ce2c2083b43dd5119f3d29f4cbcd86381cf9dfef42bb38cbefc930d284f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/real-estate-item.json": "5052af9c73aceba3d381c4039e8f8c575ca7a4acfc43046fac857a3a04c0826e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/reference-asset.json": "7878ffac0af72af6635d0cbe4fbb67ea1cbdb83858927b5ec1ebfa0eb43240b9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/reporting-capabilities.json": "7e34bdd5136cc3eea1fea1d0491071424a54232b31f8518311f076684f14f18d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/reporting-webhook.json": "4ff6f4bbae66bbf4eeb2cb540d41e874bce4e62eaf3482a114eeba34c1edeba7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/asset-requirements.json": "d785c2c9bff7414c8791bf7720b4c46224513da66138ec3f67d8b1febf6d79d5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/audio-asset-requirements.json": "c7b25539ab058ab77c36958475784dfd667d095fa7b968aee3f0e94132b6a76c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/catalog-field-binding.json": "a09d50656afb126885983ec46ce8c080e07ae9a42f691ecfc2a44aca3bc8d96e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/catalog-requirements.json": "ae8d67a1033c6871e30708c71407fc8dd1f56a19740102a2ecff1f357db739a5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/css-asset-requirements.json": "84426ff7effffa4a4855d27d4f054209e9d23eacd121683eeedcec6b0d310a3f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/daast-asset-requirements.json": "fae43587a0d8c4710da4fe09b772c59ae42749a9bfbd21657acfe3efe00be599", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/html-asset-requirements.json": "ed5bb07dd21c184eeb4dac0be4d34e18ea654f5b770002d24415080b0af91a38", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/image-asset-requirements.json": "f94eb0612adb069b3667000c647672b3015592ed958d7b36444a8ccc09e9167e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/javascript-asset-requirements.json": "666dd91dfc25866ffbc6af09a1aaa19f468a0cc8a65fb07efe28adee13591235", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/markdown-asset-requirements.json": "6205541e82d660dbb955cf9e36732b035b621562a2b51487eccafa956ab5191e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/offering-asset-constraint.json": "b8b7baeb51d47fc08668744bc4ca08d0690e8f720615850d8311522d55f0dddb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/text-asset-requirements.json": "5562aea2423d6c79dc068f53d7628695bb39b4b394c0202e8bd60effe2037479", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/url-asset-requirements.json": "a9726940c9b572eb85129cfa202200f17a7d678096ed295da100a6736544c820", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/vast-asset-requirements.json": "40f1b5cb7bc0e236d943d21842166cbbc522711f614f2da84c8d6b13277aef0b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/video-asset-requirements.json": "cfe0d741fee6550067f13f2ab447f06ffe4dd4e4e9f00d89ae137a770dad24bf", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/requirements/webhook-asset-requirements.json": "6da417c652702e876910561e6ad9e0000170c9986d0a2a97f94ae3d1f10535bd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/response.json": "b15a225a65d3ec28f740ca8f4c78ac8019cf4a7a08e64b758af10a12fc29a7a1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/rights-constraint.json": "735912432800212171592a745175269f3f9c90bd9e484ed869462a3533b59349", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-definition.json": "6b556a7fc5edd66c3d0558e9596462cde122d1221cd7f8d835aa8da7c153ee9d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-filters.json": "ac2f7318e3f250b317fbf7450b849cf7da23ab1dce95da5a1feaf7a1aeb050fc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-id.json": "502249fa0c035e4a9ac895d977569e5db625ed7f531f004b9c15d67d8a6715e4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-pricing-option.json": "500cbeba05b0a825b4660a361dc8174fceca544a36bb98328a5955eb14f6f813", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-pricing.json": "60a1e03b4d96916d1e17accbe1d7bab6fa43aee473476746fffc387cc96b0d2f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/signal-targeting.json": "718182083b753ec40201c0903f2f040c2b7d92e7028d641fffab5500d038cc0a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/special.json": "ccde951fffe66adc4eb9f649b478d2a7f9222aab0cfc5a6625839f9834d41a96", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/start-timing.json": "6cf400371202dfae4f8a4510006f87ba79ae618e326fc7ddfdfb87115b0a60ab", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/store-item.json": "361787bbc632fde6c5fa83ebd61b42b805db1b3b030936034a64c3c8d0133e39", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/talent.json": "f636f9e31324ed2a9e7d5a11190827cd5ff0d7997a36e352dc2adca6d3988133", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/targeting.json": "1193d005ea18ddc1a82fbf300c0af94cbc931a4b4f6bdab2208e55a4eb71b4f4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/user-match.json": "24ce93394e16c2efe2cd09b5228397f4d89e849f94bd56724efb7678cf231773", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/core/vehicle-item.json": "473559b138e3c4fba56c55497472774bbc2a7225dc8503698c7708ee94b88a04", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/asset-types/index.json": "96a481a046f65d0ead5e56ba95c15ddb411d76ba70eb6d1df5a7f873205acab7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/creative-feature-result.json": "79a94729f8dfd10d826756de53f443e61b7f3feac411196cd490e1be978c865e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/get-creative-delivery-request.json": "0eef2a9ccc6529ecef715f0421f89b35704d8c7ac4f481d0960946029407e8f0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/get-creative-delivery-response.json": "feb57b65e183d79a8019afdec7c7bde499e1bc73bd679d04fd243ba955216857", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/get-creative-features-request.json": "2a58b027a95b8185ddad645f4f5275ea6e7b60f4bac7f3da9985dfaa90604ed0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/get-creative-features-response.json": "efc5fd2a280d69e737ce7cf0afeae36b2b7961fc95c3d5f3479aa6e948df61a7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/list-creative-formats-request.json": "dc38746b693273f7a2019b5bab0fff5482e02784389813a42bb658d3b075004e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/list-creative-formats-response.json": "067bc4eeda59e32956105cd35969c8ec93c489acdb085701c290a03eff3a6d66", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/list-creatives-request.json": "82cd55af274917c6a6b7f43cbbd1c5611cca490c0319df46edce44695557ebb0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/list-creatives-response.json": "2b13767713ba9b9b5ede64a590fc246a1b7d0d2f3ece735a16b59ebbebea45cb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/preview-creative-request.json": "9e1c70b943d0f0f62c15631f2751bc4eef8aabf82352b1cf981907bdcc153d05", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/preview-creative-response.json": "aac85fd800f6b3c7ca4459bb0e8a7b297f506216130d49b94d408d31d3567cb3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/preview-render.json": "1b07b42d28d0c2007d9abb4e2edff279bcbf42c55162ad2069ca311472436280", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/sync-creatives-async-response-input-required.json": "bc7317cd10d83435bf1cbc80ef45f8b1ae46e4fa504cf0ecf5be61be3ebfa946", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/sync-creatives-async-response-submitted.json": "6c7b5aa13a0a73bf9a9b78e0233d053153b2ee3aa012d5600279df17e5a68d2a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/sync-creatives-async-response-working.json": "8ed8e7bdd7ac72c797a0b094fdc0a5e9fce654beb8dd9949ab44b0a624dc3408", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/sync-creatives-request.json": "570a9cdc541d65d3d16c24c373b197067cb5d7cd62fc76b0f9dfe573a8dac358", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/creative/sync-creatives-response.json": "3f86532a480c94f59a77b2f11694e8094a090a56bd4b63744d3db84e0b100608", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/account-status.json": "c979b5e3d4349ee1122115211a58c7f92bbc4b82a55f09fea32994e258e5031a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/action-source.json": "56b008404bff9f5c3c8479b24ce2bd41f879e04fad6d05a56d8c9082b3b9ba76", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/adcp-domain.json": "d405ed732a4cde02549379eab394133347c89c51bec7368cfc111bd3c6f52d39", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/adjustment-kind.json": "1ceb6366205dc99028823dcc1625f6a998b467b512a97986b3ff56f1eb0febf1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/advertiser-industry.json": "c3c4754fe9679c32fd2b4bc9352e6b363184ffc32795809d17fa48cce6f74957", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/age-verification-method.json": "abad241d52b3b393e5fca15d5c690c724b1b7796762567f163b7122867a269b1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/assessment-status.json": "3d06a21fb6cd965d8d4efc8039a8a787f61f312e6a9a13d2400d8cd662e9fcae", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/asset-content-type.json": "9badf3245dc4b2691456e88eed5d8e4f28a3777bab66efa66b175ce6e9a0e315", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/attribution-model.json": "cff0310a1108345b80d620eb7b1aec3489c5c57cb26d6aecaf1dbc7b92e4dab9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/audience-source.json": "f7937d36a894e2afa213c3bbf877d0bd134f9d642be8ce19e4ad09ae51d25dd3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/auth-scheme.json": "541546b3b9084fbfa1da0f10ce5d1402f0a5163b681316c71d20adf29185511c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/available-metric.json": "5ce7c51b425a3e31bf145230dd081da4b27618710c4ddd025106b9b887710494", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/budget-authority-level.json": "d1695c98f8d41ed6892d7e1c546f7137df7abc291e8ee4cb5c182cd2cb4d9c6a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/canceled-by.json": "afa612f38e82ba8599c814a75b84942cc5b47a328e7e6bf3714a958d90729d73", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/catalog-action.json": "60e1f7612ccc232a877c8065010f4236116da6e48347aae5a67006575777675a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/catalog-item-status.json": "556faf0e1f7b5df22d706c6f51d5cef349226bfb2f3bbe72efcc7bb6df6059e5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/catalog-type.json": "8082ba0e9b2ec1e451c579edae2eab8e398f86d0ee527f5af4f77d865b74af6e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/channels.json": "c5d114c3e6add9008b974fa67e6128f01be69f98d210ae69753e2abda853a142", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/co-branding-requirement.json": "5218ec205e4bad133bf1e1b35112a7a3e42c8a08cf3a385246a3db0a31d199ff", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/collection-cadence.json": "cbed1addda9474aa14cb605fe90c983ffd530271efc9f36d452e42b3f473253d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/collection-relationship.json": "e5b1e3fb7d7494f194566d190b74247092f6599c49e766a39d8dd8dfe085ae50", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/collection-status.json": "290366ba3ea9f35ca21fa57616798c9af69f1bd339c4a720235400a49a263df0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/consent-basis.json": "e239b0591834e717a2ba77964c9517a0d807840c424c456e96de7b46152c0d45", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/content-id-type.json": "c20694e48e05cb8d536911b6fbaa510e5ed2453161df01af159246bfed145fe1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/content-rating-system.json": "bf43f9a92f922b8e58ded86045695f38ae3eb558c53d7a8c0c406b3ad8e92a2b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-action.json": "4aaa15c1411f387494b8e192404df705f65336acd983c2dbf3c0a3261154337c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-agent-capability.json": "26470082db67f6c97826889dd450aa8ab823453c959eac9964c50945ee35915f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-approval-status.json": "a3a1db1aecca907289d269fc00e428def705b46c1bc9a91507569e51e8f8c29e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-quality.json": "5cb290ea97a6369a68d817f2384fa1c1f4c954ea5ea5548bbabcb5b68cbad081", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-sort-field.json": "faeb3a1c5f9b7b9bc2e4fa5c22b809fa0d3e1f711842379c9465af2ea2ac3bbc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/creative-status.json": "e4db4382a79960b99c12ec765cd57d10cd1d4b8e771e49150bd3ada0b8338a76", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/daast-tracking-event.json": "4c8c8a528e7b98d26f2b48b5267013bf1c0843984e0df5b90b4ea1e7ebf31113", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/daast-version.json": "52ee754425a9c0a366403815f1f84359e51fe68da29d6fb25f7aa7ee8ed81b28", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/day-of-week.json": "0d8111721a7f75d6c234ab615f07a811ddd879b9a6196ec337a8d85ad6d1b75c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/delegation-authority.json": "cf9fec9ccfd2b75badec9fbe68e408bd39790411aba74b484eff917124e5049b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/delivery-type.json": "8880d410edeaed2392cc4dc165b4b89e5d031aa87339eb0ce9f717d1c0a12e83", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/demographic-system.json": "43d8a6c262071500fd8fb3b08b8e158c9b7d530a2fe1e890894907225edf1c93", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/derivative-type.json": "49417853526c8330d4f1ae5cf22832dd3c0b7f46bee3fa85794e5035c1166b30", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/device-platform.json": "834b1ba2bcb34958e3557aff928d51c000ac27b2bf59dc42723bf3dd435ebed1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/device-type.json": "3e248bb16accbe51111bfb9fbe265e7203f00ef8b915a90128ca518103982057", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/digital-source-type.json": "5c1037b7dbf6fa3310c0ed732a3b1b0932339f1759b42364380b792c6da3a19b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/dimension-unit.json": "d70ba3035d85faf9c0378092d0238b024b2b319810481b3c9bc6bd8973c72a24", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/disclosure-persistence.json": "df28662b89f736ba6f5db294e6857cff3aca1d485e066f8b72d9a8955286661a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/disclosure-position.json": "89022d5e01cb9ac81f8e1b87c125fc2a29cbc5a3ed610fc16eb83e7f0661e9cc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/distance-unit.json": "8521c106cf45ed42385027c1585ac9e9ad40489140c76104a95b574cde3cb04a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/distribution-identifier-type.json": "3dc64ac23ebe930f9f6bc28999bbc147daad675125cc3a94eb84e38d3b5aeb06", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/error-code.json": "00be84afb7b215d67f00d05ad3869bb5c9fe328d3bbda74fcf7b968fbe5219c8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/escalation-severity.json": "9fd1607ad829f7c5285416f9c1c968be7e1891f7bbdde182639b150f51235f21", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/event-type.json": "6977b3c21d0a5b7d671a61fc666464a606b7126e96668c129ede1115755bfcd7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/exclusivity.json": "dbfdd36772cd436d3160a4f907bdaa7832445b5e5e2498777215dd94fb445135", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/feed-format.json": "001191d949f6a44615a6015f8eb1f1f540cad36ada39326a267eaa4645b6965f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/feedback-source.json": "d386c2c91fef1596d63bbc4d778d836a7bc2bcfa61159a977d7dd24e9315f9d1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/forecast-method.json": "e0891382333d8574d8f441d82fede223af3084a88a45140e795ef5ea37ebd367", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/forecast-range-unit.json": "90f745ff2aba1425a12495913e8269c49fa83c8563c6286e026a254475ce47a0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/forecastable-metric.json": "a5070ed3d6ba0ee3c47b64d4f22fe0676c680366e946139d4ef7cf4a73017dd1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/format-id-parameter.json": "0535d8774457622a14cbb9d04669a8f21a18b78bd51d0b8c827b28d65afc49ac", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/frequency-cap-scope.json": "225d76be25173303e1b9bcda03763d6a9f7dae976996a49ccdd63af1cf62845b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/geo-level.json": "85ab7c17bd12b5a66b85dadfb9e5f66582897b45e28fc04a44bf4b7f9fb99e9a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/governance-domain.json": "7525162b93a6c7c3d969141da98bb7f83b988d0a91c50f460ab49c99384aebb9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/governance-mode.json": "68ba7f3cb93acf8b5c6477c5fac532de77caa4bb164d7120aa63dd0dc921c0d0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/governance-phase.json": "25491073b8f7c8133c817dae507bb559169cc3ea18e8564e296943b8dedeb805", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/history-entry-type.json": "33be1002a81e8624f1ac817920b08cc13b79b480bed554f00f466254a265026a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/http-method.json": "95472135ef423dece55d2b018aa5bb2e657addaa515c5c9f33e178d69705ae87", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/identifier-types.json": "f1e5d0fdfdeed6d3aba7ca6f15ec8df2343e2b3ca4881420082c8715414ba980", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/installment-status.json": "1c1d30802ea0540e54762f033a1479613f0142719eda28d8d7c8a3e3fb285f44", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/javascript-module-type.json": "7aff0ed0ef9b58e81fd24c0461f3bab6788cb317125e63076d19244396a475bc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/landing-page-requirement.json": "444799db295fb700a628b345030d7830eb9fb5a31928bb15ae3a803f5649b6e7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/markdown-flavor.json": "d79470b71f4b3e6fa6152962ee15fa3585f712c90ca6b49fbf669d2b6f84c8a0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/match-id-type.json": "cf2fa97efc01e40769511e73393099c9a2075e8ae43f0d32042e7510192edda3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/media-buy-status.json": "922b6fd96b876d7ebdf148c129a808bda560cbbc0ea69d7d9d3989fbec55eaef", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/metric-type.json": "4c08d6b77bb09a80c853c5c957fad23d65f8f00469ebde558cef84c7eb1757da", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/metro-system.json": "fd8d9ae52b9f91b5fad364d351975fe9af139e425f92b7cc9f20a9b16ebb166b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/notification-type.json": "25a194b2e1f82dc1334bcc793f7560e8dbace6e583965d49f2b94e303a6af61c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/outcome-type.json": "0f88fefe25392d54e67186ea19b0e035f42d42875ff95436b9810fc81373e3ce", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/pacing.json": "a00ec720fbd82ca9e74aec13b001f208734908e497d2d32f2a138198c3dadc77", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/policy-category.json": "ab9ae73be8459a62c205e9b1882cf69b32600cc80c45c0dd3841a9a325fb5c97", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/policy-enforcement.json": "ddd5504656e72298cbea7a88d258fcdcbc6c7bbc1c9ea59e49fbb7e1f6958f4f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/postal-system.json": "d994dec184a3dbff8acc5af9b158fdb641eb463250674fe5259aa0345d6a8c04", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/preview-output-format.json": "40ebd82db8f38975dd0285b2500a4e174bcc923f838dce34edfd406bc85be130", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/pricing-model.json": "050e3634b2257fa4d4cea85ec01f6920b1fda1f806975eb0e93db71662c5e4fd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/production-quality.json": "c28aec989ea8adcec88fb01217e6bba5e3eb555f626ccb8570e7370ca9ca5f7b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/property-type.json": "c4c6aa8e3a21b1ce8974f1c76aa8c467ab715a142b23b3c84ce6bbbbbfaa2ae0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/proposal-status.json": "ee47d603d20c3a644f0bd2280ea3d973300542a1d1a189562cfbd649a7793290", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/publisher-identifier-types.json": "3e994c7b8c21e65cd3a344b06715b0def3299941054f6931475d058449552152", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/reach-unit.json": "c437646c497113b7be60c518fb8c4e4707da5702f645f04e8934a044b688437d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/reporting-frequency.json": "450378768088b0534cd36e023a5cff410ec04c2bab4cc428a44e6f5dfbc65c88", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/response-type.json": "87de8f690c52fe9490ca45e16c4f4a12c7251e9d517a2a7a1a63421bdcc7dd26", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/restricted-attribute.json": "b939c8996b588370e065ef287ac96666ef8e00a0cd89013bbfd462cc4806d129", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/right-type.json": "fb77373efe6c635914f3def4621b42bf9f003208584b85db1eb4e9091b36ce98", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/right-use.json": "8f3e3764a11a622b6d835e04e23d3db4a5795dbdb140d904a434f1ccceff6b86", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/si-session-status.json": "beff2d07f84e112cf167b9c0e377f32442b17cbee3879bfc24bdc571d90212d1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/signal-catalog-type.json": "742abb7deafb2e96e0e41f5faf576684af172a11cac4aced181c3b12a6081a69", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/signal-source.json": "eae9f86ec054a0bcb400f08fc01bdbffec5f2fccf419378ae698c750609cafb9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/signal-value-type.json": "d9c36f6d0a6f33e113785169c700826f29f7b9e0fd940fa0bec68bd0a5134eb4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/sort-direction.json": "db1d8c459a1dee3aacaadbba65d1044b1dda093de4bb66652c0bc4a986828195", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/sort-metric.json": "dd4d8d38eeae2672600e34f4db596f5826a91e37e4a2f7b3ba8ebd537d27973f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/special-category.json": "dcf2e66c8f249809588e2a0c54dab247da12555ad0dc37fa59dbecc672c00715", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/talent-role.json": "a5fe0d3860d9d5958da954f33db9380b365aa02fd66cd839f2c4cc7fe53cd818", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/task-status.json": "c66fea8e973d8719bfbfe8806b84a48159447dccaaa7ef0b7497cc43228ad2f0", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/task-type.json": "c31dd37daa08154813885fdd4923fe3114e1769626e3428ec6d7f90c31371d23", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/transport-mode.json": "d92db5dab57b92a752653a5190e728067c0f67b190e2c77213e6f2f70d6e533f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/uid-type.json": "4351abc3a7961826e4273b5ed5a5ef0a32b26e9def3962aee3c9d8372872aa5b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/universal-macro.json": "05804301ecf85282c0b16d11ea118950a2f7c3de40b73f3aecb27e251166e514", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/update-frequency.json": "3863107a07c294844f2deee661064a5f76751c54515d0db2ba1ba4f4056bd3c8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/url-asset-type.json": "3aed590f2d778ccd320def8f515848d0f540379f61239f794f6466167212cdc5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/validation-mode.json": "88e6b4393498edb19b0d8c59b562cfe254d18f91a3d5823fc0111bd950237fd9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/vast-tracking-event.json": "0a137f05d2b6e3061ea6b5f55fc7bdd070470f9c2129a8e9542c665d1b3da5a6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/vast-version.json": "8bf6ceab7ce83734774126bcbcfb4918d1d4104ea7b030bd0be7b1f6a381d34e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/wcag-level.json": "fed12c2096900c795481ad29f601e8324a42c335daaa412a7d34d47fa1769531", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/webhook-response-type.json": "03f77d6271fc292280b64271f90bc35840d1cf5609da645178c545969612e1e3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/enums/webhook-security-method.json": "918d570eddd2a9150c37744d5e9c58ba3faaf34cfa66e7b93c2948656f7ca7a2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/extensions/extension-meta.json": "07a8669be04a0f3b02e6471ce001a2de3da061a19be9a3c8a46140ab809b755b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/extensions/index.json": "767932876279653ae4acd516a79463074e8933e3b994509638955dacb10919d8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/audience-constraints.json": "3d168292429350c8ba120f32fe7d09ab830c30d7e424598c078abbed7e2b744b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/check-governance-request.json": "29806d9864dd1a661a37744f97578257f60e2fc02cadfc2e8bca637deada6390", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/check-governance-response.json": "b8b584e766a406d13ee653ed4fd070c26083c0b4eb641b964f0997483ea5d657", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/get-plan-audit-logs-request.json": "0736713c4a8d692f850cfbe88f69078f2f863272eeb4285a1e8d3602fda20e98", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/get-plan-audit-logs-response.json": "bc241d64205ddc725de9e2b4b1ce2fc03ff1238305eb262a3d508455c12c147e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/policy-entry.json": "a83f888fd181a02ec8d2115b1edc651a2efdabdf6a86e4c12daea787959d0278", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/policy-ref.json": "bce27606906d97984b602c7d92733da0cec7980c09ea25b59296f018a6bdcee8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/report-plan-outcome-request.json": "8a73974c8461f09126ca0a7d1b2063d33b0967db98a4b289d0f720a07e041442", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/report-plan-outcome-response.json": "6b93baaf4a5b45d42eaf7780577dc876790ec6fd62c038da288b78463788d8e9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/sync-plans-request.json": "600e1de4c5715945cb4b6bbe1d9232132d19ccd55228035585d1f19fba18e745", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/governance/sync-plans-response.json": "8f7a4b550a5a6627e5f108a8ae7152516b5eddac47a3acb59700359873e05c5a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/build-creative-async-response-input-required.json": "c4afe829c05bfb43c3f8c1514784b2c03cc247f4901e50e8f0147d99614ba90b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/build-creative-async-response-submitted.json": "dcf27dbe4664f34775a048b9f1f8bcf89e1b8e3bc3f9fa6a32311e1568c48842", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/build-creative-async-response-working.json": "59084c18775f0f74c9c48f058f0dea5540e17c8864328cbccd73b22db6fff7a2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/build-creative-request.json": "8e51537d7604f9a4692c7964a528e2f6aa1e740feb67f8a02ebc027e0f92eaf8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/build-creative-response.json": "ac7b87d8d65c46a9269b6a221f45d79e5e584bd97f9ea57ff2d903eadaf13b25", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/create-media-buy-async-response-input-required.json": "51ad4d04c8699d4705ca373201be3e9745e6b78a9f8f7e0e16cb2f30501021ae", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/create-media-buy-async-response-submitted.json": "58d616a1b2381e001733061c476911ccfd241019929afbe6b4488d208d93eaf4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/create-media-buy-async-response-working.json": "dfe79e449b2a9a45c6b76a6641450fce907ed210b21763b06b08f90eddee8eca", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/create-media-buy-request.json": "049242f97ef0326dd45d8d27633f28bb338e15a430c471b3f4211e217e621780", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/create-media-buy-response.json": "67d09564048edd3fa1b587b4aedbce81f128ed135e4e12ec4ba04182c75f38bc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-media-buy-delivery-request.json": "f54840a73a683c1b4926b76ec6b017399b10a8f0c2bd6320555cdeb1ce664682", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-media-buy-delivery-response.json": "f55a0c1bda9459c82514fd7eab561249c580bc80f7011aef784c9afa49401267", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-media-buys-request.json": "b275bba06a3fcfed6695e99762c38adee37a75658c140abd181d92b20815b990", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-media-buys-response.json": "636b127d6c4e373ea78fbd53f220c0816f6c4c3c4881ed3df9b7d8363411de70", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-products-async-response-input-required.json": "b3144c9c995d89b603dc0a1a680218b09ca209f3604caf1897d0b69238d3d786", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-products-async-response-submitted.json": "a6ecc0664c9721a24b9ae28a0a8cb647993e0a179d13c73eb8b3f2432949908a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-products-async-response-working.json": "bda96b291e41fb0648a0a3b4d5eca6cc7bac793db05d63dd05114840fa692a52", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-products-request.json": "0bbd8c5a8fa70626a8e1b2562d29098285fc05ea4c1d212be21464d951830815", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/get-products-response.json": "3a676fe99a0a4c091651b5b16e5fde38104d011314825b0ff3ca30f28a2f997e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/list-creative-formats-request.json": "573eeb3453db60f4495ba980820979e5d910c5537f56d4b15b82c3f7fc58cee9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/list-creative-formats-response.json": "164c3128d044a331c155c5dbafd9c119eb94381d414efc1d60f002280dd19db7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/log-event-request.json": "c07a5392135003ccda2304d9a6204b793a77150a7d05a1f5673d5d9e64a0b14d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/log-event-response.json": "aedee653b83b355f44d85fe048e138d9e1db59a9169ed13fe383be21733d246b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/package-request.json": "53962825f4e8ecbdfc829b80446fd0a6fda2f3c8f5a2092ff1ba2909d906eba8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/package-update.json": "b04f2b8fe8196260a6272d9a7e3076943279fbed1691cc2a38db65c59e512fc2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/provide-performance-feedback-request.json": "13c812783d9901f83240a8d1dc5050dfac097297dc6a0296c2a3c5282fff7ee4", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/provide-performance-feedback-response.json": "a3af63101958fc8a613dbfd951edf2a79497458b2b25ba7d967478559ead7585", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-audiences-request.json": "1ace49c815a8726b14df7c80af8be37ef248392a5c89d870143f80fd2af22c81", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-audiences-response.json": "0f9fd733532f90aa77d98e8c9fa1d207803961b1090aaf1794f2bbb70a804009", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-catalogs-async-response-input-required.json": "45ad63545c39aeeab289baaf199b8abe82ece51e15f8a2364dacbcbb3a0b57ee", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-catalogs-async-response-submitted.json": "1d137d49e31d81578417ff6e6b296b6150edee94be3c65a3114892464e3d88fb", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-catalogs-async-response-working.json": "c79a58d257eba7f16cd7fe0b5f1c930f807bfa4de329814cbebd65fc75ef5904", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-catalogs-request.json": "97ec15d7b17fdded2eed47a1282245c393ae6557ae7c0e420e68bde12f864301", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-catalogs-response.json": "ea1ff2478cf18b661dcaae3101bdfcba07ce14bf21de214e59c6fb2e79eb2490", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-event-sources-request.json": "420d662512580568283fb8f4facd6eddc2d88359054a018828106d7442bf9c7b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/sync-event-sources-response.json": "225e235a9d0b568d8d0aded50c23339a39cfc405106192e60b24118e365ed25f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/update-media-buy-async-response-input-required.json": "0837a9b984f743df8f953adea545c23d17ee3a91b56982b2efa727e223d37d08", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/update-media-buy-async-response-submitted.json": "f8ebcd304481302386c2ef045df19cf38140c665ed239e5fe3643fd92a6a84fa", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/update-media-buy-async-response-working.json": "f4b168032b63ac4364108b9a55fb208a410151831478af6908b8c5ad8e6fd84b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/update-media-buy-request.json": "7b6314d8d51c58d13a3a74c9b24c14242993031638194f98b2e70a86faffbcb9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/media-buy/update-media-buy-response.json": "8c5e028ee6aef660be078f8d0aac07d980c470fd6f16fd61ab4d27455fbc06e6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpa-option.json": "7ef564f00aaed132d366b63e190f38c8113a9e0aad9b14f699b40043b0fc511c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpc-option.json": "17052184378475ed4c7ae0596ebeff7f4eb4273bc52c5a86ee55b4298c15c05b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpcv-option.json": "70c62a6ce4884a363041873f2ddc2ff9d69188e595241613ca5eb0bb7377288d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpm-option.json": "9c8f67f5b9eebc468e1bf19d0dadce040144c2c8fbc852dfc7ee4960e6150d9a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpp-option.json": "f8e2a1b595e2c015ed90562e89b397deb1108fcd15274693eeeca932a9b9376e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/cpv-option.json": "0861ee0f8708e00c1e735da674196b4d7ede2d53148817a5aabfad82b1cd000c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/flat-rate-option.json": "e87f1b97fc6bf1cf354e8fe3036acdbc8ce7e8859947dd19b582a47c9a060d8f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/price-breakdown.json": "dc551f6ece12b113a218827a4611c1e378b4a0f4039ac7cd2a88df836d01eb15", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/price-guidance.json": "fa9be1fe78912ada620660114ccb6bd28c934a1a69d1d0468fbf47e6ea53fb14", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/time-option.json": "d78562e7a6bb9c3b4ae3f371006c7aa34f26bf8fe1a3d3bf6769a154e1f939a5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/pricing-options/vcpm-option.json": "d063433f887ef93d65e0b00d0f38405800d25df3cc004aed610a419651f86f53", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/base-property-source.json": "99aad90385fd492a06a59c3f7cac5c138f206d9ab78f0a9efc3d10313832b74a", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/create-property-list-request.json": "17ea0c2a02269a9bf8bd471e9ee8d9f206288bcd067d21bf1213047287269d62", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/create-property-list-response.json": "17be2f2681904df49370de3563f87e074a028d231f9e9fcfe32412b05f76989c", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/delete-property-list-request.json": "30da92efcaa1c9411149a630e9e11d51d268f41af33b4835378080cf3ad8f2cf", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/delete-property-list-response.json": "9a621c5c7da0eaf6b66cc80d70030df09cc4652392424ad645952006e5be95b8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/feature-requirement.json": "6c4f49667316188dd99ccac8024861eed5596732d8f5c99ea1b10da9ca737f4e", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/get-property-list-request.json": "7e48fb867f9115f28342007ab35e8b111ffe91d9efaebd5f5831d130c929893f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/get-property-list-response.json": "fa147328c0fb59e198a164faeaa1ee0fda44b49f1abbf40e69fbd1ae16db2af2", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/list-property-lists-request.json": "e06b82c503dd9b57bf13a34402190aff0083869135668d0340492736b0a25ac5", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/list-property-lists-response.json": "a9b7f08b124a38ad472597636906c755e0811fcfbfebad9686ddc4ce343af20d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-error.json": "3230b0b29e4697f526d94518cf6d2915de41483fde9da28454012502a9e657b7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-feature-definition.json": "82c739c52cba58f213c2324e862dae03a9bfbb9d91db5bbc9120930fb51d0847", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-feature.json": "1f84891bbb2396750ced46a1003c9a905d449b98ec97c9e78538cf64987ceb43", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-list-changed-webhook.json": "352aa3578ca4c1b9b4d7000a50299facda0962f6b3e128d32728fb90604d7faa", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-list-filters.json": "184e25ef3ac8b1ba4cc821c092d14eedf53705ce831d333e4248def32c92af11", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/property-list.json": "762ba1152e2297955703ff227f79d06eb2165c5baa8d750615767a9fad6121fd", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/update-property-list-request.json": "1d9c177039a4fb2941a497786b4f091baede4bcd71703155c7f3a90d12752b9d", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/property/update-property-list-response.json": "a61161bfb9d390445abd40b5b54725eff102143ae6ada6f6ac47ae41585dc521", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/protocol/get-adcp-capabilities-request.json": "94610639e141f7ac641c30c146bc5c7ca5466fa450090bce512cbcb8b79604d6", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/protocol/get-adcp-capabilities-response.json": "e196bfc7639f4c264e583a51e13b3b019ee90a40b99e8179676ff7369f46bb6b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/signals/activate-signal-request.json": "d4e16f6d1428698b5293a78f073b48885512ff8bb981c57facdaa109690916f3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/signals/activate-signal-response.json": "35ff2816c8d0f0e7fc5fe75259e4c532b70c39f191de2d554508d6fd57452561", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/signals/get-signals-request.json": "bc9604bccac6ebec61abba05880a8ea42186ab9ee9e15f8fc8aef210e63cf043", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/signals/get-signals-response.json": "b7584fea368408465e08939e2b042a1d793b209e28c0202e8562dfd5191c1b0b", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-capabilities.json": "05656522cc3a54b30843577cea3003ca9cfcacd51adf34531766a090ae859159", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-get-offering-request.json": "3d3e75972390f72f750f88ef7c606552e7984609402453035b5ade47bc4a0ca3", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-get-offering-response.json": "f21cad7a07186263cb6cec1edb067895ad7023b460e5409e375af7a6f3fe08c9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-identity.json": "935f99414805f861a35798f00efba45a7a6fb1a37a27414188c09ff29fb207b7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-initiate-session-request.json": "4545e772d1d2bf3d4c772e84f05bd80e694b9ed6fb6cf751d231e86bb8e27419", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-initiate-session-response.json": "b26d4d0cd5cc22b159167ea2cf94a9207ceab68b9ebce567178aed90767cb6bf", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-send-message-request.json": "79ec92d648a717ecebf9a73d33e14c4cedb0afb71ae200f6564a4663bf0a9150", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-send-message-response.json": "8488bf1bd46c458eefca9da5c8fa1770c68854b0d844b36eb975ac720e5cecf7", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-terminate-session-request.json": "1082531d80e391afbdb4032960104122629b3bbabe9f97362a455183bf8378dc", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-terminate-session-response.json": "577bc52706084077807e310075dfea3b5ab8adb8deafbebee4b5e3540336d488", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/sponsored-intelligence/si-ui-element.json": "6751458039a4d92461ebb802508d7a84c1e3a77663bcbe0e889faa31d65e2fc8", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/available-package.json": "77bc5525df39439512203da0e19ee543341dd8a2fcbdc4e06eb98792140e1fd9", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/context-match-request.json": "3428a6d6ec496cf4046f333daf962187c447b334072b79fd771a3de517ebb5af", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/context-match-response.json": "cfaae7e62acf0a6771665e92508cc1fb9021e1181d16f473c06db4d1ffcf867f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/error.json": "679bd6170f911d5ea3e49e445d7bc449832353f97b339d43851c2058b0823a1f", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/identity-match-request.json": "9bf6d05c935ad1f611ad18524a19604e1aa06c90a6881ccfecedeed39bdd5411", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/identity-match-response.json": "04aabe11b9cc2d163096ac417db37ab32204f71c4c83a87cc1024e6d3de9d1ef", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/offer-price.json": "b25c3e29f2ef9c7e7ef4b7713b03c9ab8b88dac5db8e8d764a2e67e04e6ebba1", + "https://adcontextprotocol.org/schemas/3.0.0-rc.3/tmp/offer.json": "f54fd8378bfe7d66131fd942611c9a47f9b0451bae1dc48a2cc0f09cdab50141" +} \ No newline at end of file diff --git a/schemas/cache/a2ui/bound-value.json b/schemas/cache/a2ui/bound-value.json deleted file mode 100644 index 9ebbf859..00000000 --- a/schemas/cache/a2ui/bound-value.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "title": "A2UI Bound Value", - "description": "A value that can be a literal or bound to a path in the data model", - "oneOf": [ - { - "type": "object", - "description": "Literal string value", - "properties": { - "literalString": { - "type": "string", - "description": "Static string value" - } - }, - "required": ["literalString"], - "additionalProperties": false - }, - { - "type": "object", - "description": "Literal number value", - "properties": { - "literalNumber": { - "type": "number", - "description": "Static number value" - } - }, - "required": ["literalNumber"], - "additionalProperties": false - }, - { - "type": "object", - "description": "Literal boolean value", - "properties": { - "literalBoolean": { - "type": "boolean", - "description": "Static boolean value" - } - }, - "required": ["literalBoolean"], - "additionalProperties": false - }, - { - "type": "object", - "description": "Path to data model value", - "properties": { - "path": { - "type": "string", - "description": "JSON pointer path to value in data model (e.g., '/products/0/title')" - } - }, - "required": ["path"], - "additionalProperties": false - }, - { - "type": "object", - "description": "Literal with path binding (sets default and binds)", - "properties": { - "literalString": { - "type": "string" - }, - "path": { - "type": "string" - } - }, - "required": ["literalString", "path"], - "additionalProperties": false - } - ] -} diff --git a/schemas/cache/a2ui/component.json b/schemas/cache/a2ui/component.json index d22b6fd6..e6ceec51 100644 --- a/schemas/cache/a2ui/component.json +++ b/schemas/cache/a2ui/component.json @@ -1,29 +1,32 @@ { + "$id": "/schemas/3.0.0-rc.3/a2ui/component.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/a2ui/component.json", - "title": "A2UI Component", + "additionalProperties": true, "description": "A component in an A2UI surface", - "type": "object", "properties": { - "id": { - "type": "string", - "description": "Unique identifier for this component within the surface" - }, - "parentId": { - "type": "string", - "description": "ID of the parent component (null for root)" - }, "component": { - "type": "object", + "additionalProperties": { + "description": "Component properties", + "type": "object" + }, "description": "Component definition (keyed by component type)", - "minProperties": 1, "maxProperties": 1, - "additionalProperties": { - "type": "object", - "description": "Component properties" - } + "minProperties": 1, + "type": "object" + }, + "id": { + "description": "Unique identifier for this component within the surface", + "type": "string" + }, + "parentId": { + "description": "ID of the parent component (null for root)", + "type": "string" } }, - "required": ["id", "component"], - "additionalProperties": true -} + "required": [ + "id", + "component" + ], + "title": "A2UI Component", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/a2ui/si-catalog.json b/schemas/cache/a2ui/si-catalog.json deleted file mode 100644 index 5948934b..00000000 --- a/schemas/cache/a2ui/si-catalog.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/a2ui/si-catalog.json", - "title": "SI Component Catalog", - "description": "A2UI component catalog for Sponsored Intelligence", - "definitions": { - "Text": { - "type": "object", - "description": "Text display component", - "properties": { - "text": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Text content to display" - }, - "variant": { - "type": "string", - "enum": ["body", "heading", "caption", "label"], - "default": "body" - } - }, - "required": ["text"] - }, - "Button": { - "type": "object", - "description": "Interactive button component", - "properties": { - "label": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Button label text" - }, - "action": { - "type": "object", - "description": "Action to trigger on click", - "properties": { - "name": { - "type": "string", - "description": "Action identifier" - }, - "context": { - "type": "object", - "description": "Context data to include with action", - "additionalProperties": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json" - } - } - }, - "required": ["name"] - }, - "variant": { - "type": "string", - "enum": ["primary", "secondary", "text"], - "default": "primary" - }, - "disabled": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json" - } - }, - "required": ["label", "action"] - }, - "Link": { - "type": "object", - "description": "Hyperlink component", - "properties": { - "label": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Link text" - }, - "url": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "URL to navigate to" - }, - "external": { - "type": "boolean", - "description": "Opens in new tab if true", - "default": true - } - }, - "required": ["label", "url"] - }, - "Image": { - "type": "object", - "description": "Image display component", - "properties": { - "src": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Image source URL" - }, - "alt": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Alt text for accessibility" - }, - "width": { - "type": "integer", - "description": "Image width in pixels" - }, - "height": { - "type": "integer", - "description": "Image height in pixels" - } - }, - "required": ["src", "alt"] - }, - "Card": { - "type": "object", - "description": "Card container for grouped content", - "properties": { - "title": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Card title" - }, - "subtitle": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Card subtitle" - }, - "image": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Card image URL" - }, - "badge": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Badge text (e.g., 'New', 'Sale')" - }, - "action": { - "type": "object", - "description": "Action to trigger on card click", - "properties": { - "name": { "type": "string" }, - "context": { - "type": "object", - "additionalProperties": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json" - } - } - }, - "required": ["name"] - }, - "children": { - "type": "array", - "description": "Child component IDs", - "items": { "type": "string" } - } - }, - "required": ["title"] - }, - "ProductCard": { - "type": "object", - "description": "Product display card (SI-specific)", - "properties": { - "title": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Product name" - }, - "price": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Price display string" - }, - "image": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Product image URL" - }, - "description": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Product description" - }, - "badge": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Badge text (e.g., 'Best Seller')" - }, - "ctaLabel": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "CTA button label" - }, - "action": { - "type": "object", - "properties": { - "name": { "type": "string" }, - "context": { - "type": "object", - "additionalProperties": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json" - } - } - }, - "required": ["name"] - } - }, - "required": ["title", "price"] - }, - "List": { - "type": "object", - "description": "Data-bound list component", - "properties": { - "items": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Path to array in data model" - }, - "template": { - "type": "object", - "description": "Template for list items", - "properties": { - "componentId": { - "type": "string", - "description": "ID of component to use as template" - } - }, - "required": ["componentId"] - }, - "emptyMessage": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Message to show when list is empty" - }, - "layout": { - "type": "string", - "enum": ["vertical", "horizontal", "grid"], - "default": "vertical" - } - }, - "required": ["items", "template"] - }, - "Row": { - "type": "object", - "description": "Horizontal layout container", - "properties": { - "children": { - "type": "array", - "description": "Child component IDs", - "items": { "type": "string" } - }, - "gap": { - "type": "string", - "description": "Gap between children", - "default": "8px" - }, - "align": { - "type": "string", - "enum": ["start", "center", "end", "stretch"], - "default": "center" - }, - "justify": { - "type": "string", - "enum": ["start", "center", "end", "between", "around"], - "default": "start" - } - }, - "required": ["children"] - }, - "Column": { - "type": "object", - "description": "Vertical layout container", - "properties": { - "children": { - "type": "array", - "description": "Child component IDs", - "items": { "type": "string" } - }, - "gap": { - "type": "string", - "description": "Gap between children", - "default": "8px" - }, - "align": { - "type": "string", - "enum": ["start", "center", "end", "stretch"], - "default": "stretch" - } - }, - "required": ["children"] - }, - "IntegrationAction": { - "type": "object", - "description": "MCP/A2A integration action button (SI-specific)", - "properties": { - "type": { - "type": "string", - "enum": ["mcp", "a2a"], - "description": "Integration type" - }, - "label": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Button label" - }, - "url": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/bound-value.json", - "description": "Integration endpoint URL" - }, - "highlighted": { - "type": "boolean", - "description": "Visually emphasize this action", - "default": false - } - }, - "required": ["type", "label"] - }, - "AppHandoff": { - "type": "object", - "description": "Platform app handoff (SI-specific)", - "properties": { - "apps": { - "type": "object", - "description": "Platform-specific app configurations", - "additionalProperties": { - "type": "object", - "properties": { - "appId": { "type": "string" }, - "deepLink": { "type": "string" }, - "url": { "type": "string", "format": "uri" } - } - } - } - }, - "required": ["apps"] - } - }, - "type": "object", - "properties": { - "catalogId": { - "type": "string", - "const": "si-standard", - "description": "SI standard component catalog" - }, - "components": { - "type": "array", - "description": "Available component types", - "items": { - "type": "string", - "enum": [ - "Text", - "Button", - "Link", - "Image", - "Card", - "ProductCard", - "List", - "Row", - "Column", - "IntegrationAction", - "AppHandoff" - ] - } - } - } -} diff --git a/schemas/cache/a2ui/surface.json b/schemas/cache/a2ui/surface.json index 86acdb57..1ce464de 100644 --- a/schemas/cache/a2ui/surface.json +++ b/schemas/cache/a2ui/surface.json @@ -1,36 +1,39 @@ { + "$id": "/schemas/3.0.0-rc.3/a2ui/surface.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/a2ui/surface.json", - "title": "A2UI Surface", + "additionalProperties": true, "description": "A contiguous UI region containing components", - "type": "object", "properties": { - "surfaceId": { - "type": "string", - "description": "Unique identifier for this surface" - }, "catalogId": { - "type": "string", + "default": "standard", "description": "Component catalog to use for rendering", - "default": "standard" + "type": "string" }, "components": { - "type": "array", "description": "Flat list of components (adjacency list structure)", "items": { - "$ref": "/schemas/3.0.0-rc.2/a2ui/component.json" - } - }, - "rootId": { - "type": "string", - "description": "ID of the root component (if not specified, first component is root)" + "$ref": "/schemas/3.0.0-rc.3/a2ui/component.json" + }, + "type": "array" }, "dataModel": { - "type": "object", + "additionalProperties": true, "description": "Application data that components can bind to", - "additionalProperties": true + "type": "object" + }, + "rootId": { + "description": "ID of the root component (if not specified, first component is root)", + "type": "string" + }, + "surfaceId": { + "description": "Unique identifier for this surface", + "type": "string" } }, - "required": ["surfaceId", "components"], - "additionalProperties": true -} + "required": [ + "surfaceId", + "components" + ], + "title": "A2UI Surface", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/a2ui/user-action.json b/schemas/cache/a2ui/user-action.json deleted file mode 100644 index e93235d0..00000000 --- a/schemas/cache/a2ui/user-action.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/a2ui/user-action.json", - "title": "A2UI User Action", - "description": "User interaction event sent from client to agent", - "type": "object", - "properties": { - "surfaceId": { - "type": "string", - "description": "ID of the surface where the action occurred" - }, - "componentId": { - "type": "string", - "description": "ID of the component that triggered the action" - }, - "action": { - "type": "object", - "description": "The action that was triggered", - "properties": { - "name": { - "type": "string", - "description": "Action identifier (e.g., 'view_product', 'add_to_cart')" - }, - "context": { - "type": "object", - "description": "Context data resolved from data model bindings", - "additionalProperties": true - } - }, - "required": ["name"], - "additionalProperties": true - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "When the action occurred" - } - }, - "required": ["surfaceId", "componentId", "action"], - "additionalProperties": true -} diff --git a/schemas/cache/account/get-account-financials-request.json b/schemas/cache/account/get-account-financials-request.json index fcc3de38..db43637b 100644 --- a/schemas/cache/account/get-account-financials-request.json +++ b/schemas/cache/account/get-account-financials-request.json @@ -1,55 +1,64 @@ { + "$id": "/schemas/3.0.0-rc.3/account/get-account-financials-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/get-account-financials-request.json", - "title": "Get Account Financials Request", - "description": "Request financial status for an operator-billed account. Returns spend summary, credit/balance status, and invoice history. Only applicable when the seller declares account_financials capability.", - "type": "object", - "properties": { - "account": { - "$ref": "/schemas/3.0.0-rc.2/core/account-ref.json", - "description": "Account to query financials for. Must be an operator-billed account." - }, - "period": { - "$ref": "/schemas/3.0.0-rc.2/core/date-range.json", - "description": "Date range for the spend summary. Defaults to the current billing cycle if omitted." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["account"], "additionalProperties": true, + "description": "Request financial status for an operator-billed account. Returns spend summary, credit/balance status, and invoice history. Only applicable when the seller declares account_financials capability.", "examples": [ { - "description": "Query by account ID for current billing cycle", "data": { - "account": { "account_id": "acc_acme_001" } - } + "account": { + "account_id": "acc_acme_001" + } + }, + "description": "Query by account ID for current billing cycle" }, { - "description": "Query by natural key for a specific period", "data": { "account": { - "brand": { "domain": "acme-corp.com" }, + "brand": { + "domain": "acme-corp.com" + }, "operator": "acme-corp.com" }, "period": { - "start": "2026-01-01", - "end": "2026-01-31" + "end": "2026-01-31", + "start": "2026-01-01" } - } + }, + "description": "Query by natural key for a specific period" }, { - "description": "Agency querying financials for a client account", "data": { "account": { - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, "operator": "pinnacle-media.com" } - } + }, + "description": "Agency querying financials for a client account" } - ] -} + ], + "properties": { + "account": { + "$ref": "/schemas/3.0.0-rc.3/core/account-ref.json", + "description": "Account to query financials for. Must be an operator-billed account." + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "period": { + "$ref": "/schemas/3.0.0-rc.3/core/date-range.json", + "description": "Date range for the spend summary. Defaults to the current billing cycle if omitted." + } + }, + "required": [ + "account" + ], + "title": "Get Account Financials Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/get-account-financials-response.json b/schemas/cache/account/get-account-financials-response.json index e4888f19..a0afe252 100644 --- a/schemas/cache/account/get-account-financials-response.json +++ b/schemas/cache/account/get-account-financials-response.json @@ -1,265 +1,328 @@ { + "$id": "/schemas/3.0.0-rc.3/account/get-account-financials-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/get-account-financials-response.json", - "title": "Get Account Financials Response", - "description": "Financial status for an operator-billed account. Returns spend summary, credit/balance status, payment status, and invoice history. The level of detail varies by seller — only account, currency, and period are guaranteed on success.", - "type": "object", - "oneOf": [ + "description": "Financial status for an operator-billed account. Returns spend summary, credit/balance status, payment status, and invoice history. The level of detail varies by seller \u2014 only account, currency, and period are guaranteed on success.", + "examples": [ { - "title": "GetAccountFinancialsSuccess", - "description": "Financial data retrieved successfully", - "type": "object", - "properties": { + "data": { "account": { - "$ref": "/schemas/3.0.0-rc.2/core/account-ref.json", - "description": "Account reference, echoed from the request" + "account_id": "acc_acme_001" }, - "currency": { - "type": "string", - "pattern": "^[A-Z]{3}$", - "description": "ISO 4217 currency code for all monetary amounts in this response" + "credit": { + "available_credit": 54770.0, + "credit_limit": 100000.0, + "utilization_percent": 45.23 }, + "currency": "USD", + "invoices": [ + { + "amount": 38500.0, + "due_date": "2026-02-28", + "invoice_id": "inv_2026_01", + "paid_date": "2026-02-15", + "period": { + "end": "2026-01-31", + "start": "2026-01-01" + }, + "status": "paid" + } + ], + "payment_status": "current", + "payment_terms": "net_30", "period": { - "$ref": "/schemas/3.0.0-rc.2/core/date-range.json", - "description": "The actual period covered by spend data. May differ from the requested period if the seller adjusts to billing cycle boundaries." - }, - "timezone": { - "type": "string", - "description": "IANA timezone of the seller's billing day boundaries (e.g., 'America/New_York'). All dates in this response — period, invoice periods, due dates — are calendar dates in this timezone. Buyers in a different timezone should expect spend boundaries to differ from their own calendar day." + "end": "2026-02-28", + "start": "2026-02-01" }, "spend": { - "type": "object", - "description": "Spend summary for the period", - "properties": { - "total_spend": { - "type": "number", - "minimum": 0, - "description": "Total spend in the period, in currency" - }, - "media_buy_count": { - "type": "integer", - "minimum": 0, - "description": "Number of active media buys in the period" - } - }, - "required": ["total_spend"] + "media_buy_count": 3, + "total_spend": 45230.0 }, - "credit": { - "type": "object", - "description": "Credit status. Present for credit-based accounts (payment_terms like net_30).", - "properties": { - "credit_limit": { - "type": "number", - "minimum": 0, - "description": "Maximum outstanding balance allowed" - }, - "available_credit": { - "type": "number", - "description": "Remaining credit available (credit_limit minus outstanding balance)" - }, - "utilization_percent": { - "type": "number", - "minimum": 0, - "maximum": 100, - "description": "Credit utilization as a percentage (0-100)" - } + "timezone": "America/New_York" + }, + "description": "Credit account \u2014 current, with invoice history" + }, + { + "data": { + "account": { + "brand": { + "domain": "acme-corp.com" }, - "required": ["credit_limit", "available_credit"] + "operator": "acme-corp.com" + }, + "balance": { + "available": 1800.0, + "last_top_up": { + "amount": 10000.0, + "date": "2026-02-01" + } + }, + "currency": "USD", + "payment_status": "current", + "payment_terms": "prepay", + "period": { + "end": "2026-02-28", + "start": "2026-02-01" + }, + "spend": { + "media_buy_count": 2, + "total_spend": 8200.0 + }, + "timezone": "America/Los_Angeles" + }, + "description": "Prepay account with low balance" + }, + { + "data": { + "errors": [ + { + "code": "UNSUPPORTED_FEATURE", + "message": "Financial data is not available for agent-billed accounts. The agent's own billing system is the source of truth." + } + ] + }, + "description": "Agent-billed account \u2014 not supported" + } + ], + "oneOf": [ + { + "additionalProperties": true, + "description": "Financial data retrieved successfully", + "not": { + "required": [ + "errors" + ] + }, + "properties": { + "account": { + "$ref": "/schemas/3.0.0-rc.3/core/account-ref.json", + "description": "Account reference, echoed from the request" }, "balance": { - "type": "object", "description": "Prepay balance. Present for prepay accounts.", "properties": { "available": { - "type": "number", + "description": "Remaining prepaid balance", "minimum": 0, - "description": "Remaining prepaid balance" + "type": "number" }, "last_top_up": { - "type": "object", "description": "Most recent balance top-up", "properties": { "amount": { - "type": "number", + "description": "Top-up amount", "minimum": 0, - "description": "Top-up amount" + "type": "number" }, "date": { - "type": "string", + "description": "Date of top-up", "format": "date", - "description": "Date of top-up" + "type": "string" } }, - "required": ["amount", "date"] + "required": [ + "amount", + "date" + ], + "type": "object" } }, - "required": ["available"] + "required": [ + "available" + ], + "type": "object" }, - "payment_status": { - "type": "string", - "enum": ["current", "past_due", "suspended"], - "description": "Overall payment status. current: all obligations met. past_due: one or more invoices overdue. suspended: account suspended due to payment issues." + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, - "payment_terms": { - "type": "string", - "enum": ["net_15", "net_30", "net_45", "net_60", "net_90", "prepay"], - "description": "Payment terms in effect for this account" + "credit": { + "description": "Credit status. Present for credit-based accounts (payment_terms like net_30).", + "properties": { + "available_credit": { + "description": "Remaining credit available (credit_limit minus outstanding balance)", + "type": "number" + }, + "credit_limit": { + "description": "Maximum outstanding balance allowed", + "minimum": 0, + "type": "number" + }, + "utilization_percent": { + "description": "Credit utilization as a percentage (0-100)", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "credit_limit", + "available_credit" + ], + "type": "object" + }, + "currency": { + "description": "ISO 4217 currency code for all monetary amounts in this response", + "pattern": "^[A-Z]{3}$", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "invoices": { - "type": "array", "description": "Recent invoices. Sellers may limit the number returned.", "items": { - "type": "object", "properties": { - "invoice_id": { - "type": "string", - "description": "Seller-assigned invoice identifier" - }, - "period": { - "$ref": "/schemas/3.0.0-rc.2/core/date-range.json", - "description": "Billing period covered by this invoice" - }, "amount": { - "type": "number", + "description": "Invoice total in currency", "minimum": 0, - "description": "Invoice total in currency" - }, - "status": { - "type": "string", - "enum": ["draft", "issued", "paid", "past_due", "void"], - "description": "Invoice status" + "type": "number" }, "due_date": { - "type": "string", + "description": "Payment due date", "format": "date", - "description": "Payment due date" + "type": "string" + }, + "invoice_id": { + "description": "Seller-assigned invoice identifier", + "type": "string" }, "paid_date": { - "type": "string", + "description": "Date payment was received. Present when status is 'paid'.", "format": "date", - "description": "Date payment was received. Present when status is 'paid'." + "type": "string" + }, + "period": { + "$ref": "/schemas/3.0.0-rc.3/core/date-range.json", + "description": "Billing period covered by this invoice" + }, + "status": { + "description": "Invoice status", + "enum": [ + "draft", + "issued", + "paid", + "past_due", + "void" + ], + "type": "string" } }, - "required": ["invoice_id", "amount", "status"] - } + "required": [ + "invoice_id", + "amount", + "status" + ], + "type": "object" + }, + "type": "array" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "payment_status": { + "description": "Overall payment status. current: all obligations met. past_due: one or more invoices overdue. suspended: account suspended due to payment issues.", + "enum": [ + "current", + "past_due", + "suspended" + ], + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "payment_terms": { + "description": "Payment terms in effect for this account", + "enum": [ + "net_15", + "net_30", + "net_45", + "net_60", + "net_90", + "prepay" + ], + "type": "string" + }, + "period": { + "$ref": "/schemas/3.0.0-rc.3/core/date-range.json", + "description": "The actual period covered by spend data. May differ from the requested period if the seller adjusts to billing cycle boundaries." + }, + "spend": { + "description": "Spend summary for the period", + "properties": { + "media_buy_count": { + "description": "Number of active media buys in the period", + "minimum": 0, + "type": "integer" + }, + "total_spend": { + "description": "Total spend in the period, in currency", + "minimum": 0, + "type": "number" + } + }, + "required": [ + "total_spend" + ], + "type": "object" + }, + "timezone": { + "description": "IANA timezone of the seller's billing day boundaries (e.g., 'America/New_York'). All dates in this response \u2014 period, invoice periods, due dates \u2014 are calendar dates in this timezone. Buyers in a different timezone should expect spend boundaries to differ from their own calendar day.", + "type": "string" } }, - "required": ["account", "currency", "period", "timezone"], - "additionalProperties": true, - "not": { - "required": ["errors"] - } + "required": [ + "account", + "currency", + "period", + "timezone" + ], + "title": "GetAccountFinancialsSuccess", + "type": "object" }, { - "title": "GetAccountFinancialsError", - "description": "Operation failed — financials not available", - "type": "object", + "additionalProperties": true, + "description": "Operation failed \u2014 financials not available", + "not": { + "anyOf": [ + { + "required": [ + "account" + ] + }, + { + "required": [ + "currency" + ] + }, + { + "required": [ + "period" + ] + }, + { + "required": [ + "timezone" + ] + } + ] + }, "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, "errors": { - "type": "array", "description": "Operation-level errors", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/error.json" + "$ref": "/schemas/3.0.0-rc.3/core/error.json" }, - "minItems": 1 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "minItems": 1, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["account"] }, - { "required": ["currency"] }, - { "required": ["period"] }, - { "required": ["timezone"] } - ] - } + "required": [ + "errors" + ], + "title": "GetAccountFinancialsError", + "type": "object" } ], - "examples": [ - { - "description": "Credit account — current, with invoice history", - "data": { - "account": { "account_id": "acc_acme_001" }, - "currency": "USD", - "period": { - "start": "2026-02-01", - "end": "2026-02-28" - }, - "timezone": "America/New_York", - "spend": { - "total_spend": 45230.00, - "media_buy_count": 3 - }, - "credit": { - "credit_limit": 100000.00, - "available_credit": 54770.00, - "utilization_percent": 45.23 - }, - "payment_status": "current", - "payment_terms": "net_30", - "invoices": [ - { - "invoice_id": "inv_2026_01", - "period": { "start": "2026-01-01", "end": "2026-01-31" }, - "amount": 38500.00, - "status": "paid", - "due_date": "2026-02-28", - "paid_date": "2026-02-15" - } - ] - } - }, - { - "description": "Prepay account with low balance", - "data": { - "account": { - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com" - }, - "currency": "USD", - "period": { - "start": "2026-02-01", - "end": "2026-02-28" - }, - "timezone": "America/Los_Angeles", - "spend": { - "total_spend": 8200.00, - "media_buy_count": 2 - }, - "balance": { - "available": 1800.00, - "last_top_up": { - "amount": 10000.00, - "date": "2026-02-01" - } - }, - "payment_status": "current", - "payment_terms": "prepay" - } - }, - { - "description": "Agent-billed account — not supported", - "data": { - "errors": [ - { - "code": "UNSUPPORTED_FEATURE", - "message": "Financial data is not available for agent-billed accounts. The agent's own billing system is the source of truth." - } - ] - } - } - ] -} + "title": "Get Account Financials Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/list-accounts-request.json b/schemas/cache/account/list-accounts-request.json index 93df1365..1f1079e9 100644 --- a/schemas/cache/account/list-accounts-request.json +++ b/schemas/cache/account/list-accounts-request.json @@ -1,12 +1,24 @@ { + "$id": "/schemas/3.0.0-rc.3/account/list-accounts-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/list-accounts-request.json", - "title": "List Accounts Request", + "additionalProperties": true, "description": "Request parameters for listing accounts accessible to the authenticated agent", - "type": "object", "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "pagination": { + "$ref": "/schemas/3.0.0-rc.3/core/pagination-request.json" + }, + "sandbox": { + "description": "Filter by sandbox status. true returns only sandbox accounts, false returns only production accounts. Omit to return all accounts. Primarily used with explicit accounts (require_operator_auth: true) where sandbox accounts are pre-existing test accounts on the platform.", + "type": "boolean" + }, "status": { - "type": "string", + "description": "Filter accounts by status. Omit to return accounts in all statuses.", "enum": [ "active", "pending_approval", @@ -15,22 +27,10 @@ "suspended", "closed" ], - "description": "Filter accounts by status. Omit to return accounts in all statuses." - }, - "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-request.json" - }, - "sandbox": { - "type": "boolean", - "description": "Filter by sandbox status. true returns only sandbox accounts, false returns only production accounts. Omit to return all accounts. Primarily used with explicit accounts (require_operator_auth: true) where sandbox accounts are pre-existing test accounts on the platform." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "type": "string" } }, "required": [], - "additionalProperties": true -} + "title": "List Accounts Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/list-accounts-response.json b/schemas/cache/account/list-accounts-response.json index 9693a4c4..cd893434 100644 --- a/schemas/cache/account/list-accounts-response.json +++ b/schemas/cache/account/list-accounts-response.json @@ -1,71 +1,49 @@ { + "$id": "/schemas/3.0.0-rc.3/account/list-accounts-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/list-accounts-response.json", - "title": "List Accounts Response", - "description": "Response payload for list_accounts task", - "type": "object", - "properties": { - "accounts": { - "type": "array", - "description": "Array of accounts accessible to the authenticated agent", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/account.json" - } - }, - "errors": { - "type": "array", - "description": "Task-specific errors and warnings", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/error.json" - } - }, - "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-response.json" - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["accounts"], "additionalProperties": true, + "description": "Response payload for list_accounts task", "examples": [ { - "description": "Agency with multiple client accounts", "data": { "accounts": [ { "account_id": "acc_acme_pinnacle", - "name": "Acme c/o Pinnacle", + "account_scope": "operator_brand", "advertiser": "Acme Corp", + "billing": "operator", "billing_proxy": "Pinnacle Media", - "brand": { "domain": "acme-corp.com" }, + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme c/o Pinnacle", "operator": "pinnacle-media.com", - "billing": "operator", - "account_scope": "operator_brand", "status": "active" }, { "account_id": "acc_nova_pinnacle", - "name": "Nova c/o Pinnacle", + "account_scope": "operator_brand", "advertiser": "Nova Brands", + "billing": "operator", "billing_proxy": "Pinnacle Media", - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "name": "Nova c/o Pinnacle", "operator": "pinnacle-media.com", - "billing": "operator", - "account_scope": "operator_brand", "status": "active" }, { "account_id": "acc_pinnacle", - "name": "Pinnacle", + "account_scope": "operator", "advertiser": "Pinnacle Media", - "brand": { "domain": "pinnacle-media.com" }, - "operator": "pinnacle-media.com", "billing": "operator", - "account_scope": "operator", + "brand": { + "domain": "pinnacle-media.com" + }, + "name": "Pinnacle", + "operator": "pinnacle-media.com", "status": "active" } ], @@ -73,25 +51,58 @@ "has_more": false, "total_count": 3 } - } + }, + "description": "Agency with multiple client accounts" }, { - "description": "Direct advertiser with single account", "data": { "accounts": [ { "account_id": "acc_acme_direct", - "name": "Acme", + "account_scope": "brand", "advertiser": "Acme Corp", - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com", "billing": "operator", - "account_scope": "brand", - "status": "active", - "rate_card": "acme_vip_2024" + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme", + "operator": "acme-corp.com", + "rate_card": "acme_vip_2024", + "status": "active" } ] - } + }, + "description": "Direct advertiser with single account" + } + ], + "properties": { + "accounts": { + "description": "Array of accounts accessible to the authenticated agent", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/account.json" + }, + "type": "array" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "description": "Task-specific errors and warnings", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "pagination": { + "$ref": "/schemas/3.0.0-rc.3/core/pagination-response.json" } - ] -} + }, + "required": [ + "accounts" + ], + "title": "List Accounts Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/report-usage-request.json b/schemas/cache/account/report-usage-request.json index 60e5fb38..cad1fcf7 100644 --- a/schemas/cache/account/report-usage-request.json +++ b/schemas/cache/account/report-usage-request.json @@ -1,134 +1,144 @@ { + "$id": "/schemas/3.0.0-rc.3/account/report-usage-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/report-usage-request.json", - "title": "Report Usage Request", + "additionalProperties": true, "description": "Reports how a vendor's service was consumed after campaign delivery. Used by orchestrators (DSPs, storefronts) to inform vendor agents (signals, governance, creative) what was used so the vendor can track earned revenue and verify billing. Records can span multiple accounts and campaigns in a single request.", - "type": "object", + "examples": [ + { + "data": { + "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", + "reporting_period": { + "end": "2025-03-31T23:59:59Z", + "start": "2025-03-01T00:00:00Z" + }, + "usage": [ + { + "account": { + "account_id": "acct_pinnacle_signals" + }, + "currency": "USD", + "impressions": 4200000, + "media_spend": 21000.0, + "pricing_option_id": "po_lux_auto_cpm", + "signal_agent_segment_id": "luxury_auto_intenders", + "vendor_cost": 2100.0 + } + ] + }, + "description": "Signal usage for a single campaign" + }, + { + "data": { + "reporting_period": { + "end": "2025-03-31T23:59:59Z", + "start": "2025-03-01T00:00:00Z" + }, + "usage": [ + { + "account": { + "account_id": "acct_pinnacle_signals" + }, + "currency": "USD", + "impressions": 2100000, + "pricing_option_id": "po_lux_auto_cpm", + "signal_agent_segment_id": "luxury_auto_intenders", + "vendor_cost": 1050.0 + }, + { + "account": { + "account_id": "acct_nova" + }, + "currency": "USD", + "impressions": 800000, + "pricing_option_id": "po_eco_cpm", + "signal_agent_segment_id": "eco_conscious_shoppers", + "vendor_cost": 400.0 + } + ] + }, + "description": "Multi-account batch across two campaigns" + } + ], "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, "idempotency_key": { - "type": "string", - "description": "Client-generated unique key for this request. If a request with the same key has already been accepted, the server returns the original response without re-processing. Use a UUID or other unique identifier. Prevents duplicate billing on retries." + "description": "Client-generated unique key for this request. If a request with the same key has already been accepted, the server returns the original response without re-processing. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request. Prevents duplicate billing on retries.", + "type": "string" }, "reporting_period": { - "$ref": "/schemas/3.0.0-rc.2/core/datetime-range.json", + "$ref": "/schemas/3.0.0-rc.3/core/datetime-range.json", "description": "The time range covered by this usage report. Applies to all records in the request." }, "usage": { - "type": "array", - "description": "One or more usage records. Each record is self-contained: it carries its own account and buyer_campaign_ref, allowing a single request to span multiple accounts and campaigns.", - "minItems": 1, + "description": "One or more usage records. Each record is self-contained: it carries its own account, allowing a single request to span multiple accounts.", "items": { - "type": "object", + "additionalProperties": true, "properties": { "account": { - "$ref": "/schemas/3.0.0-rc.2/core/account-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/account-ref.json", "description": "Account for this usage record." }, - "buyer_campaign_ref": { - "type": "string", - "description": "The buyer's campaign reference (e.g., a media_buy_id). Used to group records by campaign." - }, - "vendor_cost": { - "type": "number", - "minimum": 0, - "description": "Amount owed to the vendor for this record, denominated in currency." - }, "currency": { - "type": "string", + "description": "ISO 4217 currency code.", "pattern": "^[A-Z]{3}$", - "description": "ISO 4217 currency code." - }, - "pricing_option_id": { - "type": "string", - "description": "Pricing option identifier from the vendor's discovery response (e.g., get_signals, list_content_standards). The vendor uses this to verify the correct rate was applied." + "type": "string" }, "impressions": { - "type": "integer", + "description": "Impressions delivered using this vendor service.", "minimum": 0, - "description": "Impressions delivered using this vendor service." + "type": "integer" + }, + "media_buy_id": { + "description": "Seller-assigned media buy identifier. Links this usage record to a specific media buy.", + "type": "string" }, "media_spend": { - "type": "number", + "description": "Media spend in currency for the period. Required when a percent_of_media pricing model was used, so the vendor can verify the applied rate.", "minimum": 0, - "description": "Media spend in currency for the period. Required when a percent_of_media pricing model was used, so the vendor can verify the applied rate." + "type": "number" + }, + "pricing_option_id": { + "description": "Pricing option identifier from the vendor's discovery response (e.g., get_signals, list_content_standards). The vendor uses this to verify the correct rate was applied.", + "type": "string" + }, + "rights_id": { + "description": "Rights grant identifier from acquire_rights. Required for brand/rights agents. Links usage records to specific rights grants for cap tracking, billing verification, and overage calculation.", + "type": "string" }, "signal_agent_segment_id": { - "type": "string", - "description": "Signal identifier from get_signals. Required for signals agents." + "description": "Signal identifier from get_signals. Required for signals agents.", + "type": "string" }, "standards_id": { - "type": "string", - "description": "Content standards configuration identifier. Required for governance agents." + "description": "Content standards configuration identifier. Required for governance agents.", + "type": "string" }, - "rights_id": { - "type": "string", - "description": "Rights grant identifier from acquire_rights. Required for brand/rights agents. Links usage records to specific rights grants for cap tracking, billing verification, and overage calculation." + "vendor_cost": { + "description": "Amount owed to the vendor for this record, denominated in currency.", + "minimum": 0, + "type": "number" } }, - "required": ["account", "vendor_cost", "currency"], - "additionalProperties": true - } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "required": [ + "account", + "vendor_cost", + "currency" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" } }, - "required": ["reporting_period", "usage"], - "additionalProperties": true, - "examples": [ - { - "description": "Signal usage for a single campaign", - "data": { - "idempotency_key": "550e8400-e29b-41d4-a716-446655440000", - "reporting_period": { - "start": "2025-03-01T00:00:00Z", - "end": "2025-03-31T23:59:59Z" - }, - "usage": [ - { - "account": { "account_id": "acct_pinnacle_signals" }, - "buyer_campaign_ref": "mb_spring_launch_001", - "signal_agent_segment_id": "luxury_auto_intenders", - "pricing_option_id": "po_lux_auto_cpm", - "impressions": 4200000, - "media_spend": 21000.00, - "vendor_cost": 2100.00, - "currency": "USD" - } - ] - } - }, - { - "description": "Multi-account batch across two campaigns", - "data": { - "reporting_period": { - "start": "2025-03-01T00:00:00Z", - "end": "2025-03-31T23:59:59Z" - }, - "usage": [ - { - "account": { "account_id": "acct_pinnacle_signals" }, - "buyer_campaign_ref": "mb_spring_q1_001", - "signal_agent_segment_id": "luxury_auto_intenders", - "pricing_option_id": "po_lux_auto_cpm", - "impressions": 2100000, - "vendor_cost": 1050.00, - "currency": "USD" - }, - { - "account": { "account_id": "acct_nova" }, - "buyer_campaign_ref": "mb_summer_preview_002", - "signal_agent_segment_id": "eco_conscious_shoppers", - "pricing_option_id": "po_eco_cpm", - "impressions": 800000, - "vendor_cost": 400.00, - "currency": "USD" - } - ] - } - } - ] -} + "required": [ + "reporting_period", + "usage" + ], + "title": "Report Usage Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/report-usage-response.json b/schemas/cache/account/report-usage-response.json index 6bd4ecc7..8c89d01d 100644 --- a/schemas/cache/account/report-usage-response.json +++ b/schemas/cache/account/report-usage-response.json @@ -1,54 +1,56 @@ { + "$id": "/schemas/3.0.0-rc.3/account/report-usage-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/report-usage-response.json", - "title": "Report Usage Response", - "description": "Response from report_usage. Partial acceptance is valid — records that pass validation are stored even when others fail.", - "type": "object", - "properties": { - "accepted": { - "type": "integer", - "minimum": 0, - "description": "Number of usage records successfully stored." - }, - "errors": { - "type": "array", - "description": "Validation errors for individual records. The field property identifies which record failed (e.g., 'usage[1].pricing_option_id').", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/error.json" - } - }, - "sandbox": { - "type": "boolean", - "description": "When true, the account is a sandbox account and no billing occurred." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["accepted"], "additionalProperties": true, + "description": "Response from report_usage. Partial acceptance is valid \u2014 records that pass validation are stored even when others fail.", "examples": [ { - "description": "All records accepted", "data": { "accepted": 2 - } + }, + "description": "All records accepted" }, { - "description": "Partial acceptance — one record failed validation", "data": { "accepted": 1, "errors": [ { "code": "INVALID_PRICING_OPTION", - "message": "pricing_option_id 'po_unknown' does not exist on this account", - "field": "usage[1].pricing_option_id" + "field": "usage[1].pricing_option_id", + "message": "pricing_option_id 'po_unknown' does not exist on this account" } ] - } + }, + "description": "Partial acceptance \u2014 one record failed validation" } - ] -} + ], + "properties": { + "accepted": { + "description": "Number of usage records successfully stored.", + "minimum": 0, + "type": "integer" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "description": "Validation errors for individual records. The field property identifies which record failed (e.g., 'usage[1].pricing_option_id').", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "sandbox": { + "description": "When true, the account is a sandbox account and no billing occurred.", + "type": "boolean" + } + }, + "required": [ + "accepted" + ], + "title": "Report Usage Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/sync-accounts-request.json b/schemas/cache/account/sync-accounts-request.json index 2832ad10..847c3aad 100644 --- a/schemas/cache/account/sync-accounts-request.json +++ b/schemas/cache/account/sync-accounts-request.json @@ -1,36 +1,142 @@ { + "$id": "/schemas/3.0.0-rc.3/account/sync-accounts-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/sync-accounts-request.json", - "title": "Sync Accounts Request", + "additionalProperties": true, "description": "Sync advertiser accounts with a seller using upsert semantics. The agent declares which brands it represents, who operates on each brand's behalf, and the billing model. The seller provisions or links accounts accordingly, returning per-account status.", - "type": "object", + "examples": [ + { + "data": { + "accounts": [ + { + "billing": "operator", + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "operator": "pinnacle-media.com" + }, + { + "billing": "agent", + "brand": { + "brand_id": "glow", + "domain": "nova-brands.com" + }, + "operator": "pinnacle-media.com" + } + ] + }, + "description": "Agency syncing multiple advertisers with different billing" + }, + { + "data": { + "accounts": [ + { + "billing": "operator", + "brand": { + "domain": "acme-corp.com" + }, + "operator": "acme-corp.com", + "payment_terms": "net_30" + } + ] + }, + "description": "Brand buying direct with payment terms" + }, + { + "data": { + "accounts": [ + { + "billing": "agent", + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "operator": "pinnacle-media.com", + "payment_terms": "net_60" + }, + { + "billing": "agent", + "brand": { + "brand_id": "glow", + "domain": "nova-brands.com" + }, + "operator": "pinnacle-media.com", + "payment_terms": "net_60" + } + ] + }, + "description": "Agent consolidating billing with net-60 terms" + }, + { + "data": { + "accounts": [ + { + "billing": "advertiser", + "billing_entity": { + "address": { + "city": "Munich", + "country": "DE", + "postal_code": "80331", + "street": "Hauptstrasse 42" + }, + "bank": { + "account_holder": "Acme Corporation GmbH", + "bic": "SOLADEST600", + "iban": "DE75512108001245126199" + }, + "contacts": [ + { + "email": "billing@acme-corp.com", + "name": "AP Department", + "role": "billing" + } + ], + "legal_name": "Acme Corporation GmbH", + "registration_number": "HRB 67890", + "vat_id": "DE987654321" + }, + "brand": { + "domain": "acme-corp.com" + }, + "operator": "pinnacle-media.com", + "payment_terms": "net_30" + } + ] + }, + "description": "Advertiser billed directly with structured billing entity (DACH B2B)" + } + ], "properties": { "accounts": { - "type": "array", "description": "Advertiser accounts to sync", "items": { - "type": "object", + "additionalProperties": true, "description": "An advertiser account the agent wants to operate on the seller", "properties": { + "billing": { + "description": "Who should be invoiced. operator: seller invoices the operator (agency or brand buying direct). agent: agent consolidates billing across brands. advertiser: seller invoices the advertiser directly, even when a different operator places orders on their behalf. The seller must either accept this billing model or reject the request.", + "enum": [ + "operator", + "agent", + "advertiser" + ], + "type": "string" + }, + "billing_entity": { + "$ref": "/schemas/3.0.0-rc.3/core/business-entity.json", + "description": "Business entity details for the party responsible for payment. The agent provides this so the seller has the legal name, tax IDs, address, and bank details needed for formal B2B invoicing." + }, "brand": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", "description": "Brand reference identifying the advertiser. Uses the brand's house domain and optional brand_id from brand.json." }, "operator": { - "type": "string", "description": "Domain of the entity operating on the brand's behalf (e.g., 'pinnacle-media.com'). When the brand operates directly, this is the brand's domain. Verified against the brand's authorized_operators in brand.json.", - "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" - }, - "billing": { - "type": "string", - "enum": [ - "operator", - "agent" - ], - "description": "Who should be invoiced. operator: seller invoices the operator (agency or brand buying direct). agent: agent consolidates billing across brands. The seller must either accept this billing model or reject the request." + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "type": "string" }, "payment_terms": { - "type": "string", + "description": "Payment terms for this account. The seller must either accept these terms or reject the account \u2014 terms are never silently remapped. When omitted, the seller applies its default terms.", "enum": [ "net_15", "net_30", @@ -39,52 +145,11 @@ "net_90", "prepay" ], - "description": "Payment terms for this account. The seller must either accept these terms or reject the account — terms are never silently remapped. When omitted, the seller applies its default terms." + "type": "string" }, "sandbox": { - "type": "boolean", - "description": "When true, provision this as a sandbox account with no real platform calls or billing. Only applicable to implicit accounts (require_operator_auth: false). For explicit accounts, sandbox accounts are pre-existing test accounts discovered via list_accounts." - }, - "governance_agents": { - "type": "array", - "description": "Governance agent endpoints for this account. When present, the seller MUST call these agents for governance approval before confirming media buy requests. Each agent can be scoped to specific validation categories. The seller routes check_governance calls to the appropriate agent based on the action being validated. All applicable agents must approve for the action to proceed (unanimous approval).", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "Governance agent endpoint URL." - }, - "authentication": { - "type": "object", - "description": "Authentication the seller presents when calling this governance agent.", - "properties": { - "schemes": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/auth-scheme.json" }, - "minItems": 1, - "maxItems": 1 - }, - "credentials": { - "type": "string", - "description": "Authentication credential (e.g., Bearer token).", - "minLength": 32 - } - }, - "required": ["schemes", "credentials"], - "additionalProperties": false - }, - "categories": { - "type": "array", - "items": { "type": "string" }, - "description": "Governance categories this agent handles (e.g., ['budget_authority', 'strategic_alignment']). When omitted, the agent handles all categories." - } - }, - "required": ["url", "authentication"], - "additionalProperties": false - }, - "minItems": 1 + "description": "When true, provision this as a sandbox account with no real platform calls or billing. Only applicable to implicit accounts (require_operator_auth: false). For explicit accounts, sandbox accounts are pre-existing test accounts discovered via list_accounts.", + "type": "boolean" } }, "required": [ @@ -92,84 +157,35 @@ "operator", "billing" ], - "additionalProperties": true + "type": "object" }, - "maxItems": 1000 + "maxItems": 1000, + "type": "array" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "delete_missing": { - "type": "boolean", "default": false, - "description": "When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent — does not affect accounts managed by other agents. Use with caution." + "description": "When true, accounts previously synced by this agent but not included in this request will be deactivated. Scoped to the authenticated agent \u2014 does not affect accounts managed by other agents. Use with caution.", + "type": "boolean" }, "dry_run": { - "type": "boolean", "default": false, - "description": "When true, preview what would change without applying. Returns what would be created/updated/deactivated." + "description": "When true, preview what would change without applying. Returns what would be created/updated/deactivated.", + "type": "boolean" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "push_notification_config": { - "$ref": "/schemas/3.0.0-rc.2/core/push-notification-config.json", + "$ref": "/schemas/3.0.0-rc.3/core/push-notification-config.json", "description": "Webhook for async notifications when account status changes (e.g., pending_approval transitions to active)." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" } }, "required": [ "accounts" ], - "additionalProperties": true, - "examples": [ - { - "description": "Agency syncing multiple advertisers with different billing", - "data": { - "accounts": [ - { - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, - "operator": "pinnacle-media.com", - "billing": "operator" - }, - { - "brand": { "domain": "nova-brands.com", "brand_id": "glow" }, - "operator": "pinnacle-media.com", - "billing": "agent" - } - ] - } - }, - { - "description": "Brand buying direct with payment terms", - "data": { - "accounts": [ - { - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com", - "billing": "operator", - "payment_terms": "net_30" - } - ] - } - }, - { - "description": "Agent consolidating billing with net-60 terms", - "data": { - "accounts": [ - { - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, - "operator": "pinnacle-media.com", - "billing": "agent", - "payment_terms": "net_60" - }, - { - "brand": { "domain": "nova-brands.com", "brand_id": "glow" }, - "operator": "pinnacle-media.com", - "billing": "agent", - "payment_terms": "net_60" - } - ] - } - } - ] -} + "title": "Sync Accounts Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/account/sync-accounts-response.json b/schemas/cache/account/sync-accounts-response.json index 22081028..afe84369 100644 --- a/schemas/cache/account/sync-accounts-response.json +++ b/schemas/cache/account/sync-accounts-response.json @@ -1,102 +1,236 @@ { + "$id": "/schemas/3.0.0-rc.3/account/sync-accounts-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/account/sync-accounts-response.json", - "title": "Sync Accounts Response", "description": "Response from account sync operation. Returns per-account results with status and billing, or operation-level errors on complete failure.", - "type": "object", + "examples": [ + { + "data": { + "accounts": [ + { + "account_id": "acc_spark_001", + "account_scope": "operator_brand", + "action": "created", + "billing": "operator", + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "name": "Spark (via Pinnacle)", + "operator": "pinnacle-media.com", + "status": "active" + }, + { + "account_id": "acc_glow_pending", + "account_scope": "operator_brand", + "action": "created", + "billing": "operator", + "brand": { + "brand_id": "glow", + "domain": "nova-brands.com" + }, + "name": "Glow", + "operator": "pinnacle-media.com", + "setup": { + "expires_at": "2026-03-10T00:00:00Z", + "message": "Complete advertiser registration and credit application", + "url": "https://seller.example.com/advertiser-onboard" + }, + "status": "pending_approval" + } + ] + }, + "description": "Mixed results \u2014 one active, one pending approval" + }, + { + "data": { + "accounts": [ + { + "action": "created", + "brand": { + "brand_id": "clearance", + "domain": "acme-corp.com" + }, + "operator": "acme-corp.com", + "status": "rejected", + "warnings": [ + "Account request declined: advertiser category not accepted on this platform." + ] + } + ] + }, + "description": "Rejected account \u2014 no account_id assigned" + }, + { + "data": { + "accounts": [ + { + "action": "failed", + "brand": { + "domain": "acme-corp.com" + }, + "errors": [ + { + "code": "BILLING_NOT_SUPPORTED", + "message": "Operator billing is not supported. This seller only accepts agent billing." + } + ], + "operator": "acme-corp.com", + "status": "rejected" + } + ] + }, + "description": "Unsupported billing \u2014 seller rejects the request" + }, + { + "data": { + "accounts": [ + { + "account_id": "acc_acme_direct_bill", + "account_scope": "operator_brand", + "action": "created", + "billing": "advertiser", + "billing_entity": { + "address": { + "city": "Munich", + "country": "DE", + "postal_code": "80331", + "street": "Hauptstrasse 42" + }, + "contacts": [ + { + "email": "billing@acme-corp.com", + "name": "AP Department", + "role": "billing" + } + ], + "legal_name": "Acme Corporation GmbH", + "registration_number": "HRB 67890", + "vat_id": "DE987654321" + }, + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme Corp (billed direct)", + "operator": "pinnacle-media.com", + "payment_terms": "net_30", + "status": "active" + } + ] + }, + "description": "Advertiser billed directly with billing entity (bank details omitted in response)" + }, + { + "data": { + "accounts": [ + { + "action": "failed", + "brand": { + "domain": "acme-corp.com" + }, + "errors": [ + { + "code": "PAYMENT_TERMS_NOT_SUPPORTED", + "message": "Net-60 payment terms are not available. Omit payment_terms to accept this seller's default terms (net_30)." + } + ], + "operator": "acme-corp.com", + "status": "rejected" + } + ] + }, + "description": "Unsupported payment terms \u2014 seller rejects the request" + } + ], "oneOf": [ { - "title": "SyncAccountsSuccess", + "additionalProperties": true, "description": "Sync operation processed accounts (individual accounts may be pending or have action=failed)", - "type": "object", + "not": { + "required": [ + "errors" + ] + }, "properties": { - "dry_run": { - "type": "boolean", - "description": "Whether this was a dry run (no actual changes made)" - }, "accounts": { - "type": "array", "description": "Results for each account processed", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "brand": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", - "description": "Brand reference, echoed from the request" - }, - "operator": { - "type": "string", - "description": "Operator domain, echoed from request" + "account_id": { + "description": "Seller-assigned account identifier. Use this in subsequent create_media_buy and other account-scoped operations.", + "type": "string" }, - "name": { - "type": "string", - "description": "Human-readable account name assigned by the seller" + "account_scope": { + "description": "How the seller scoped this account. operator: shared across all brands for this operator. brand: shared across all operators for this brand. operator_brand: dedicated to this operator+brand pair. agent: the agent's default account.", + "enum": [ + "operator", + "brand", + "operator_brand", + "agent" + ], + "type": "string" }, "action": { - "type": "string", + "description": "Action taken for this account. created: new account provisioned. updated: existing account modified. unchanged: no changes needed. failed: could not process (see errors).", "enum": [ "created", "updated", "unchanged", "failed" ], - "description": "Action taken for this account. created: new account provisioned. updated: existing account modified. unchanged: no changes needed. failed: could not process (see errors)." - }, - "status": { - "type": "string", - "enum": [ - "active", - "pending_approval", - "rejected", - "payment_required", - "suspended", - "closed" - ], - "description": "Account status. active: ready for use. pending_approval: seller reviewing (credit, legal). rejected: seller declined the account request. payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: was active, now terminated." + "type": "string" }, "billing": { - "type": "string", + "description": "Who is invoiced on this account. Matches the requested billing model.", "enum": [ "operator", - "agent" + "agent", + "advertiser" ], - "description": "Who is invoiced on this account. Matches the requested billing model." + "type": "string" }, - "account_scope": { - "type": "string", - "enum": ["operator", "brand", "operator_brand", "agent"], - "description": "How the seller scoped this account. operator: shared across all brands for this operator. brand: shared across all operators for this brand. operator_brand: dedicated to this operator+brand pair. agent: the agent's default account." + "billing_entity": { + "$ref": "/schemas/3.0.0-rc.3/core/business-entity.json", + "description": "Business entity details for the party responsible for payment, echoed from the request. Sellers MAY add fields the agent omitted (e.g., filling in registration_number from a credit check), but MUST NOT return data from a different entity. Bank details are omitted (write-only)." }, - "setup": { - "type": "object", - "description": "Setup information for pending accounts. Provides the agent (or human) with next steps to complete account activation.", + "brand": { + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", + "description": "Brand reference, echoed from the request" + }, + "credit_limit": { "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "URL where the human can complete the required action (credit application, legal agreement, add funds)" - }, - "message": { - "type": "string", - "description": "Human-readable description of what's needed" + "amount": { + "minimum": 0, + "type": "number" }, - "expires_at": { - "type": "string", - "format": "date-time", - "description": "When this setup link expires" + "currency": { + "pattern": "^[A-Z]{3}$", + "type": "string" } }, "required": [ - "message" + "amount", + "currency" ], - "additionalProperties": true + "type": "object" }, - "rate_card": { - "type": "string", - "description": "Rate card applied to this account" + "errors": { + "description": "Per-account errors (only present when action is 'failed')", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" + }, + "name": { + "description": "Human-readable account name assigned by the seller", + "type": "string" + }, + "operator": { + "description": "Operator domain, echoed from request", + "type": "string" }, "payment_terms": { - "type": "string", + "description": "Payment terms agreed for this account. When the account is active, these are the binding terms for all invoices on this account.", "enum": [ "net_15", "net_30", @@ -105,42 +239,58 @@ "net_90", "prepay" ], - "description": "Payment terms agreed for this account. When the account is active, these are the binding terms for all invoices on this account." + "type": "string" }, - "credit_limit": { - "type": "object", + "rate_card": { + "description": "Rate card applied to this account", + "type": "string" + }, + "sandbox": { + "description": "Whether this is a sandbox account, echoed from the request. Only present for implicit accounts.", + "type": "boolean" + }, + "setup": { + "additionalProperties": true, + "description": "Setup information for pending accounts. Provides the agent (or human) with next steps to complete account activation.", "properties": { - "amount": { - "type": "number", - "minimum": 0 + "expires_at": { + "description": "When this setup link expires", + "format": "date-time", + "type": "string" }, - "currency": { - "type": "string", - "pattern": "^[A-Z]{3}$" + "message": { + "description": "Human-readable description of what's needed", + "type": "string" + }, + "url": { + "description": "URL where the human can complete the required action (credit application, legal agreement, add funds)", + "format": "uri", + "type": "string" } }, "required": [ - "amount", - "currency" - ] + "message" + ], + "type": "object" }, - "errors": { - "type": "array", - "description": "Per-account errors (only present when action is 'failed')", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/error.json" - } + "status": { + "description": "Account status. active: ready for use. pending_approval: seller reviewing (credit, legal). rejected: seller declined the account request. payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: was active, now terminated.", + "enum": [ + "active", + "pending_approval", + "rejected", + "payment_required", + "suspended", + "closed" + ], + "type": "string" }, "warnings": { - "type": "array", "description": "Non-fatal warnings about this account", "items": { "type": "string" - } - }, - "sandbox": { - "type": "boolean", - "description": "Whether this is a sandbox account, echoed from the request. Only present for implicit accounts." + }, + "type": "array" } }, "required": [ @@ -149,50 +299,30 @@ "action", "status" ], - "additionalProperties": true - } + "type": "object" + }, + "type": "array" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "dry_run": { + "description": "Whether this was a dry run (no actual changes made)", + "type": "boolean" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, "required": [ "accounts" ], - "additionalProperties": true, - "not": { - "required": [ - "errors" - ] - } + "title": "SyncAccountsSuccess", + "type": "object" }, { - "title": "SyncAccountsError", - "description": "Operation failed completely, no accounts were processed", - "type": "object", - "properties": { - "errors": { - "type": "array", - "description": "Operation-level errors (e.g., authentication failure, service unavailable)", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/error.json" - }, - "minItems": 1 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": [ - "errors" - ], "additionalProperties": true, + "description": "Operation failed completely, no accounts were processed", "not": { "anyOf": [ { @@ -206,93 +336,30 @@ ] } ] - } - } - ], - "examples": [ - { - "description": "Mixed results — one active, one pending approval", - "data": { - "accounts": [ - { - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, - "operator": "pinnacle-media.com", - "name": "Spark (via Pinnacle)", - "action": "created", - "status": "active", - "billing": "operator", - "account_scope": "operator_brand" + }, + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "description": "Operation-level errors (e.g., authentication failure, service unavailable)", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" }, - { - "brand": { "domain": "nova-brands.com", "brand_id": "glow" }, - "operator": "pinnacle-media.com", - "name": "Glow", - "action": "created", - "status": "pending_approval", - "billing": "operator", - "account_scope": "operator_brand", - "setup": { - "url": "https://seller.example.com/advertiser-onboard", - "message": "Complete advertiser registration and credit application", - "expires_at": "2026-03-10T00:00:00Z" - } - } - ] - } - }, - { - "description": "Rejected account — no account_id assigned", - "data": { - "accounts": [ - { - "brand": { "domain": "acme-corp.com", "brand_id": "clearance" }, - "operator": "acme-corp.com", - "action": "created", - "status": "rejected", - "warnings": [ - "Account request declined: advertiser category not accepted on this platform." - ] - } - ] - } - }, - { - "description": "Unsupported billing — seller rejects the request", - "data": { - "accounts": [ - { - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com", - "action": "failed", - "status": "rejected", - "errors": [ - { - "code": "BILLING_NOT_SUPPORTED", - "message": "Operator billing is not supported. This seller only accepts agent billing." - } - ] - } - ] - } - }, - { - "description": "Unsupported payment terms — seller rejects the request", - "data": { - "accounts": [ - { - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com", - "action": "failed", - "status": "rejected", - "errors": [ - { - "code": "PAYMENT_TERMS_NOT_SUPPORTED", - "message": "Net-60 payment terms are not available. Omit payment_terms to accept this seller's default terms (net_30)." - } - ] - } - ] - } + "minItems": 1, + "type": "array" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + } + }, + "required": [ + "errors" + ], + "title": "SyncAccountsError", + "type": "object" } - ] -} + ], + "title": "Sync Accounts Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/adagents.json b/schemas/cache/adagents.json index cee42c18..61205dee 100644 --- a/schemas/cache/adagents.json +++ b/schemas/cache/adagents.json @@ -1,339 +1,973 @@ { + "$id": "/schemas/3.0.0-rc.3/adagents.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/adagents.json", - "title": "AdCP Agents Authorization", "description": "Declaration of authorized agents for advertising inventory and data signals. Hosted at /.well-known/adagents.json on publisher domains (for properties) or data provider domains (for signals). Can either contain the full structure inline or reference an authoritative URL.", - "oneOf": [ + "examples": [ { - "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" + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authoritative_location": "https://cdn.example.com/adagents/v2/adagents.json", + "last_updated": "2025-01-15T10:00:00Z" + }, + { + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "property_tags", + "authorized_for": "Official sales agent", + "countries": [ + "US", + "CA" + ], + "delegation_type": "direct", + "effective_from": "2025-01-01T00:00:00Z", + "exclusive": true, + "placement_ids": [ + "homepage_banner" + ], + "property_tags": [ + "all" + ], + "url": "https://agent.example.com" + } + ], + "last_updated": "2025-01-10T12:00:00Z", + "placement_tags": { + "display": { + "description": "Standard display placements", + "name": "Display" }, - "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." + "homepage": { + "description": "Placements that render on the homepage", + "name": "Homepage" }, - "last_updated": { - "type": "string", - "format": "date-time", - "description": "ISO 8601 timestamp indicating when this reference was last updated" + "premium": { + "description": "Premium monetization placements", + "name": "Premium" } }, - "required": [ - "authoritative_location" + "placements": [ + { + "format_ids": [ + { + "agent_url": "https://creative.example.com", + "id": "display_728x90" + } + ], + "name": "Homepage Banner", + "placement_id": "homepage_banner", + "property_ids": [ + "example_site" + ], + "tags": [ + "homepage", + "display", + "premium" + ] + } + ], + "properties": [ + { + "identifiers": [ + { + "type": "domain", + "value": "example.com" + } + ], + "name": "Example Site", + "property_id": "example_site", + "property_type": "website", + "publisher_domain": "example.com" + } ], - "additionalProperties": true + "tags": { + "all": { + "description": "All properties in this file", + "name": "All Properties" + } + } }, { - "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])?)*$" + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "property_tags", + "authorized_for": "All Meta properties", + "property_tags": [ + "meta_network" + ], + "url": "https://meta-ads.com" + } + ], + "contact": { + "domain": "meta.com", + "email": "adops@meta.com", + "name": "Meta Advertising Operations", + "privacy_policy_url": "https://www.meta.com/privacy/policy", + "seller_id": "pub-meta-12345", + "tag_id": "12345" + }, + "last_updated": "2025-01-10T15:30:00Z", + "properties": [ + { + "identifiers": [ + { + "type": "ios_bundle", + "value": "com.burbn.instagram" }, - "seller_id": { - "type": "string", - "description": "Seller ID from IAB Tech Lab sellers.json (if applicable)", - "minLength": 1, - "maxLength": 255 + { + "type": "android_package", + "value": "com.instagram.android" + } + ], + "name": "Instagram", + "property_type": "mobile_app", + "publisher_domain": "instagram.com", + "supported_channels": [ + "social", + "display", + "olv" + ], + "tags": [ + "meta_network", + "social_media" + ] + }, + { + "identifiers": [ + { + "type": "ios_bundle", + "value": "com.facebook.Facebook" }, - "tag_id": { - "type": "string", - "description": "TAG Certified Against Fraud ID for verification (if applicable)", - "minLength": 1, - "maxLength": 100 + { + "type": "android_package", + "value": "com.facebook.katana" + } + ], + "name": "Facebook", + "property_type": "mobile_app", + "publisher_domain": "facebook.com", + "supported_channels": [ + "social", + "display", + "olv" + ], + "tags": [ + "meta_network", + "social_media" + ] + }, + { + "identifiers": [ + { + "type": "ios_bundle", + "value": "net.whatsapp.WhatsApp" }, - "privacy_policy_url": { - "type": "string", - "format": "uri", - "description": "URL to the entity's privacy policy. Used for consumer consent flows when interacting with this sales agent." + { + "type": "android_package", + "value": "com.whatsapp" } - }, - "required": [ - "name" ], - "additionalProperties": true + "name": "WhatsApp", + "property_type": "mobile_app", + "publisher_domain": "whatsapp.com", + "supported_channels": [ + "social", + "display" + ], + "tags": [ + "meta_network", + "messaging" + ] + } + ], + "tags": { + "messaging": { + "description": "Messaging and communication apps", + "name": "Messaging Apps" }, - "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": "/schemas/3.0.0-rc.2/core/property.json" - }, - "minItems": 1 + "meta_network": { + "description": "All Meta-owned properties", + "name": "Meta Network" }, - "shows": { - "type": "array", - "description": "Shows produced or distributed by this publisher. Declares the content programs whose inventory is sold through authorized agents. Products in get_products responses reference these shows by show_id.", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/show.json" - } + "social_media": { + "description": "Social networking applications", + "name": "Social Media Apps" + } + } + }, + { + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "property_tags", + "authorized_for": "Tumblr corporate properties only", + "property_tags": [ + "corporate" + ], + "url": "https://tumblr-sales.com" + } + ], + "contact": { + "name": "Tumblr Advertising" + }, + "last_updated": "2025-01-10T16:00:00Z", + "properties": [ + { + "identifiers": [ + { + "type": "domain", + "value": "tumblr.com" + } + ], + "name": "Tumblr Corporate", + "property_type": "website", + "publisher_domain": "tumblr.com", + "tags": [ + "corporate" + ] + } + ], + "tags": { + "corporate": { + "description": "Tumblr-owned corporate properties (not user blogs)", + "name": "Corporate Properties" + } + } + }, + { + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "publisher_properties", + "authorized_for": "CNN CTV properties via publisher authorization", + "publisher_properties": [ + { + "property_ids": [ + "cnn_ctv_app" + ], + "publisher_domain": "cnn.com", + "selection_type": "by_id" + } + ], + "url": "https://agent.example/api" }, - "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" - } + { + "authorization_type": "publisher_properties", + "authorized_for": "All CTV properties from multiple publishers", + "publisher_properties": [ + { + "property_tags": [ + "ctv" + ], + "publisher_domain": "cnn.com", + "selection_type": "by_tag" }, - "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": "/schemas/3.0.0-rc.2/core/property-id.json" - }, - "minItems": 1 - } - }, - "required": [ - "url", - "authorized_for", - "authorization_type", - "property_ids" - ], - "additionalProperties": true - }, - { - "type": "object", + { + "property_tags": [ + "ctv" + ], + "publisher_domain": "espn.com", + "selection_type": "by_tag" + } + ], + "url": "https://agent.example/api" + } + ], + "contact": { + "domain": "agent.example", + "email": "sales@agent.example", + "name": "Example Third-Party Sales Agent" + }, + "last_updated": "2025-01-10T17:00:00Z" + }, + { + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "property_tags", + "authorized_for": "All news properties", + "property_tags": [ + "news" + ], + "url": "https://sales.news.example.com" + } + ], + "contact": { + "domain": "news.example.com", + "email": "adops@news.example.com", + "name": "Premium News Publisher" + }, + "last_updated": "2025-01-10T18:00:00Z", + "properties": [ + { + "identifiers": [ + { + "type": "domain", + "value": "news.example.com" + } + ], + "name": "News Example", + "property_type": "website", + "publisher_domain": "news.example.com", + "tags": [ + "premium", + "news" + ] + } + ], + "property_features": [ + { + "features": [ + "carbon_score", + "sustainability_grade" + ], + "name": "Scope3", + "publisher_id": "pub_news_12345", + "url": "https://api.scope3.com" + }, + { + "features": [ + "tag_certified_against_fraud", + "tag_brand_safety_certified" + ], + "name": "TAG", + "url": "https://api.tagtoday.net" + }, + { + "features": [ + "gdpr_compliant", + "tcf_registered", + "ccpa_compliant" + ], + "name": "OneTrust", + "publisher_id": "ot_news_67890", + "url": "https://api.onetrust.com" + } + ], + "tags": { + "news": { + "description": "News and journalism content", + "name": "News Properties" + }, + "premium": { + "description": "High-quality, brand-safe properties", + "name": "Premium Properties" + } + } + }, + { + "$schema": "/schemas/3.0.0-rc.3/adagents.json", + "authorized_agents": [ + { + "authorization_type": "signal_tags", + "authorized_for": "All Polk automotive signals via LiveRamp", + "signal_tags": [ + "automotive" + ], + "url": "https://liveramp.com/.well-known/adcp/signals" + }, + { + "authorization_type": "signal_ids", + "authorized_for": "Polk premium signals only", + "signal_ids": [ + "likely_tesla_buyers" + ], + "url": "https://the-trade-desk.com/.well-known/adcp/signals" + } + ], + "contact": { + "domain": "polk.com", + "email": "partnerships@polk.com", + "name": "Polk Automotive Data" + }, + "last_updated": "2025-01-15T10:00:00Z", + "signal_tags": { + "automotive": { + "description": "Vehicle-related audience segments", + "name": "Automotive Signals" + }, + "premium": { + "description": "High-value premium audience segments", + "name": "Premium Signals" + } + }, + "signals": [ + { + "category": "purchase_intent", + "description": "Consumers modeled as likely to purchase a Tesla in the next 12 months based on vehicle registration, financial, and behavioral data", + "id": "likely_tesla_buyers", + "name": "Likely Tesla Buyers", + "tags": [ + "automotive", + "premium" + ], + "value_type": "binary" + }, + { + "allowed_values": [ + "tesla", + "bmw", + "mercedes", + "audi", + "lexus", + "other_luxury", + "non_luxury" + ], + "category": "ownership", + "description": "Current vehicle make owned by the consumer", + "id": "vehicle_ownership", + "name": "Current Vehicle Ownership", + "tags": [ + "automotive" + ], + "value_type": "categorical" + }, + { + "category": "purchase_intent", + "description": "Likelihood score of purchasing any new vehicle in the next 6 months", + "id": "purchase_propensity", + "name": "Auto Purchase Propensity", + "range": { + "max": 1, + "min": 0, + "unit": "score" + }, + "tags": [ + "automotive" + ], + "value_type": "numeric" + } + ] + } + ], + "oneOf": [ + { + "additionalProperties": true, + "description": "URL reference variant - points to the authoritative location of the adagents.json file", + "properties": { + "$schema": { + "description": "JSON Schema identifier for this adagents.json file", + "type": "string" + }, + "authoritative_location": { + "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.", + "format": "uri", + "pattern": "^https://", + "type": "string" + }, + "last_updated": { + "description": "ISO 8601 timestamp indicating when this reference was last updated", + "format": "date-time", + "type": "string" + } + }, + "required": [ + "authoritative_location" + ], + "type": "object" + }, + { + "additionalProperties": true, + "description": "Inline structure variant - contains full agent authorization data", + "properties": { + "$schema": { + "description": "JSON Schema identifier for this adagents.json file", + "type": "string" + }, + "authorized_agents": { + "description": "Array of sales agents authorized to make inventory from this file available to buyers. Authorization can be scoped to specific properties, collections, countries, and time windows, with optional delegation metadata indicating whether the path is direct, delegated, or network-mediated.", + "items": { + "oneOf": [ + { + "additionalProperties": true, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The authorized agent's API endpoint URL" + "authorization_type": { + "const": "property_ids", + "description": "Discriminator indicating authorization by specific property IDs", + "type": "string" }, "authorized_for": { - "type": "string", "description": "Human-readable description of what this agent is authorized to sell", + "maxLength": 500, "minLength": 1, - "maxLength": 500 + "type": "string" }, - "authorization_type": { - "type": "string", - "const": "property_tags", - "description": "Discriminator indicating authorization by property tags" + "collections": { + "description": "Optional collection constraints. When present, authorization only applies to inventory associated with these collections.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/collection-selector.json" + }, + "minItems": 1, + "type": "array" }, - "property_tags": { + "countries": { + "description": "Optional ISO 3166-1 alpha-2 country codes limiting where this authorization applies. Omit for worldwide authorization.", + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "minItems": 1, "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", + "uniqueItems": true + }, + "delegation_type": { + "description": "Commercial relationship for this inventory path. 'direct' means the publisher treats this as a direct way to buy from them, even if a third party operates the software. 'delegated' means the agent is authorized to sell on the publisher's behalf. 'ad_network' means the inventory is sold as part of a network/package context rather than as the publisher's direct endpoint.", + "enum": [ + "direct", + "delegated", + "ad_network" + ], + "type": "string" + }, + "effective_from": { + "description": "Optional start time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "effective_until": { + "description": "Optional end time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "exclusive": { + "description": "Whether this agent is the publisher's sole authorized path for the scoped inventory slice. When false or absent, other authorized agents may also sell the same inventory.", + "type": "boolean" + }, + "placement_ids": { + "description": "Optional placement constraints. When present, authorization only applies to these placement IDs from the top-level placements array in this file.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "placement_tags": { + "description": "Optional placement tag constraints. When present, authorization only applies to placements whose tags include any of these publisher-defined values.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "property_ids": { + "description": "Property IDs this agent is authorized for. Resolved against the top-level properties array in this file", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/property-id.json" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/property-tag.json" + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "url": { + "description": "The authorized agent's API endpoint URL", + "format": "uri", + "type": "string" } }, "required": [ "url", "authorized_for", "authorization_type", - "property_tags" + "property_ids" ], - "additionalProperties": true + "type": "object" }, { - "type": "object", + "additionalProperties": true, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The authorized agent's API endpoint URL" + "authorization_type": { + "const": "property_tags", + "description": "Discriminator indicating authorization by property tags", + "type": "string" }, "authorized_for": { - "type": "string", "description": "Human-readable description of what this agent is authorized to sell", + "maxLength": 500, "minLength": 1, - "maxLength": 500 + "type": "string" }, - "authorization_type": { - "type": "string", - "const": "inline_properties", - "description": "Discriminator indicating authorization by inline property definitions" + "collections": { + "description": "Optional collection constraints. When present, authorization only applies to inventory associated with these collections.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/collection-selector.json" + }, + "minItems": 1, + "type": "array" }, - "properties": { + "countries": { + "description": "Optional ISO 3166-1 alpha-2 country codes limiting where this authorization applies. Omit for worldwide authorization.", + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "minItems": 1, "type": "array", - "description": "Specific properties this agent is authorized for (alternative to property_ids/property_tags)", + "uniqueItems": true + }, + "delegation_type": { + "description": "Commercial relationship for this inventory path. 'direct' means the publisher treats this as a direct way to buy from them, even if a third party operates the software. 'delegated' means the agent is authorized to sell on the publisher's behalf. 'ad_network' means the inventory is sold as part of a network/package context rather than as the publisher's direct endpoint.", + "enum": [ + "direct", + "delegated", + "ad_network" + ], + "type": "string" + }, + "effective_from": { + "description": "Optional start time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "effective_until": { + "description": "Optional end time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "exclusive": { + "description": "Whether this agent is the publisher's sole authorized path for the scoped inventory slice. When false or absent, other authorized agents may also sell the same inventory.", + "type": "boolean" + }, + "placement_ids": { + "description": "Optional placement constraints. When present, authorization only applies to these placement IDs from the top-level placements array in this file.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "placement_tags": { + "description": "Optional placement tag constraints. When present, authorization only applies to placements whose tags include any of these publisher-defined values.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "property_tags": { + "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": "/schemas/3.0.0-rc.3/core/property-tag.json" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/property.json" + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "url": { + "description": "The authorized agent's API endpoint URL", + "format": "uri", + "type": "string" } }, "required": [ "url", "authorized_for", "authorization_type", - "properties" + "property_tags" ], - "additionalProperties": true + "type": "object" }, { - "type": "object", + "additionalProperties": true, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The authorized agent's API endpoint URL" + "authorization_type": { + "const": "inline_properties", + "description": "Discriminator indicating authorization by inline property definitions", + "type": "string" }, "authorized_for": { - "type": "string", "description": "Human-readable description of what this agent is authorized to sell", + "maxLength": 500, "minLength": 1, - "maxLength": 500 + "type": "string" }, - "authorization_type": { - "type": "string", - "const": "publisher_properties", - "description": "Discriminator indicating authorization for properties from other publisher domains" + "collections": { + "description": "Optional collection constraints. When present, authorization only applies to inventory associated with these collections.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/collection-selector.json" + }, + "minItems": 1, + "type": "array" }, - "publisher_properties": { + "countries": { + "description": "Optional ISO 3166-1 alpha-2 country codes limiting where this authorization applies. Omit for worldwide authorization.", + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "minItems": 1, "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", + "uniqueItems": true + }, + "delegation_type": { + "description": "Commercial relationship for this inventory path. 'direct' means the publisher treats this as a direct way to buy from them, even if a third party operates the software. 'delegated' means the agent is authorized to sell on the publisher's behalf. 'ad_network' means the inventory is sold as part of a network/package context rather than as the publisher's direct endpoint.", + "enum": [ + "direct", + "delegated", + "ad_network" + ], + "type": "string" + }, + "effective_from": { + "description": "Optional start time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "effective_until": { + "description": "Optional end time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "exclusive": { + "description": "Whether this agent is the publisher's sole authorized path for the scoped inventory slice. When false or absent, other authorized agents may also sell the same inventory.", + "type": "boolean" + }, + "placement_ids": { + "description": "Optional placement constraints. When present, authorization only applies to these placement IDs from the top-level placements array in this file.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "placement_tags": { + "description": "Optional placement tag constraints. When present, authorization only applies to placements whose tags include any of these publisher-defined values.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "properties": { + "description": "Specific properties this agent is authorized for (alternative to property_ids/property_tags)", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/property.json" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/publisher-property-selector.json" + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "url": { + "description": "The authorized agent's API endpoint URL", + "format": "uri", + "type": "string" } }, "required": [ "url", "authorized_for", "authorization_type", - "publisher_properties" + "properties" ], - "additionalProperties": true + "type": "object" }, { - "type": "object", - "description": "Authorization for signals by specific signal IDs", + "additionalProperties": true, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The authorized signals agent's API endpoint URL" + "authorization_type": { + "const": "publisher_properties", + "description": "Discriminator indicating authorization for properties from other publisher domains", + "type": "string" }, "authorized_for": { - "type": "string", - "description": "Human-readable description of what signals this agent is authorized to resell", + "description": "Human-readable description of what this agent is authorized to sell", + "maxLength": 500, "minLength": 1, - "maxLength": 500 + "type": "string" }, - "authorization_type": { - "type": "string", - "const": "signal_ids", - "description": "Discriminator indicating authorization by specific signal IDs" + "collections": { + "description": "Optional collection constraints. When present, authorization only applies to inventory associated with these collections.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/collection-selector.json" + }, + "minItems": 1, + "type": "array" }, - "signal_ids": { - "type": "array", - "description": "Signal IDs this agent is authorized to resell. Resolved against the top-level signals array in this file", + "countries": { + "description": "Optional ISO 3166-1 alpha-2 country codes limiting where this authorization applies. Omit for worldwide authorization.", "items": { - "type": "string", - "pattern": "^[a-zA-Z0-9_-]+$" + "pattern": "^[A-Z]{2}$", + "type": "string" }, - "minItems": 1 - } - }, - "required": [ + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "delegation_type": { + "description": "Commercial relationship for this inventory path. 'direct' means the publisher treats this as a direct way to buy from them, even if a third party operates the software. 'delegated' means the agent is authorized to sell on the publisher's behalf. 'ad_network' means the inventory is sold as part of a network/package context rather than as the publisher's direct endpoint.", + "enum": [ + "direct", + "delegated", + "ad_network" + ], + "type": "string" + }, + "effective_from": { + "description": "Optional start time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "effective_until": { + "description": "Optional end time for this authorization window.", + "format": "date-time", + "type": "string" + }, + "exclusive": { + "description": "Whether this agent is the publisher's sole authorized path for the scoped inventory slice. When false or absent, other authorized agents may also sell the same inventory.", + "type": "boolean" + }, + "placement_ids": { + "description": "Optional placement constraints. When present, authorization only applies to these placement IDs from the top-level placements array in this file.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "placement_tags": { + "description": "Optional placement tag constraints. When present, authorization only applies to placements whose tags include any of these publisher-defined values.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "publisher_properties": { + "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": "/schemas/3.0.0-rc.3/core/publisher-property-selector.json" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" + }, + "minItems": 1, + "type": "array" + }, + "url": { + "description": "The authorized agent's API endpoint URL", + "format": "uri", + "type": "string" + } + }, + "required": [ "url", "authorized_for", "authorization_type", - "signal_ids" + "publisher_properties" ], - "additionalProperties": true + "type": "object" }, { - "type": "object", - "description": "Authorization for signals by tag membership", + "additionalProperties": true, + "description": "Authorization for signals by specific signal IDs", "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The authorized signals agent's API endpoint URL" + "authorization_type": { + "const": "signal_ids", + "description": "Discriminator indicating authorization by specific signal IDs", + "type": "string" }, "authorized_for": { - "type": "string", "description": "Human-readable description of what signals this agent is authorized to resell", + "maxLength": 500, "minLength": 1, - "maxLength": 500 + "type": "string" + }, + "signal_ids": { + "description": "Signal IDs this agent is authorized to resell. Resolved against the top-level signals array in this file", + "items": { + "pattern": "^[a-zA-Z0-9_-]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" + }, + "minItems": 1, + "type": "array" }, + "url": { + "description": "The authorized signals agent's API endpoint URL", + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "authorized_for", + "authorization_type", + "signal_ids" + ], + "type": "object" + }, + { + "additionalProperties": true, + "description": "Authorization for signals by tag membership", + "properties": { "authorization_type": { - "type": "string", "const": "signal_tags", - "description": "Discriminator indicating authorization by signal tags" + "description": "Discriminator indicating authorization by signal tags", + "type": "string" + }, + "authorized_for": { + "description": "Human-readable description of what signals this agent is authorized to resell", + "maxLength": 500, + "minLength": 1, + "type": "string" }, "signal_tags": { - "type": "array", "description": "Signal tags this agent is authorized for. Agent can resell all signals with these tags", "items": { - "type": "string", - "pattern": "^[a-z0-9_-]+$" + "pattern": "^[a-z0-9_-]+$", + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "signing_keys": { + "description": "Optional publisher-attested public signing keys for this agent. Use these as the trust anchor for verifying signed agent responses instead of relying on key discovery from the agent domain alone.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/agent-signing-key.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "url": { + "description": "The authorized signals agent's API endpoint URL", + "format": "uri", + "type": "string" } }, "required": [ @@ -342,428 +976,202 @@ "authorization_type", "signal_tags" ], - "additionalProperties": true + "type": "object" } ] }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "collections": { + "description": "Collections produced or distributed by this publisher. Declares the content programs whose inventory is sold through authorized agents. Products in get_products responses reference these collections by collection_id.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/collection.json" + }, + "type": "array" + }, + "contact": { + "additionalProperties": true, + "description": "Contact information for the entity managing this adagents.json file (may be publisher or third-party operator)", + "properties": { + "domain": { + "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])?)*$", + "type": "string" + }, + "email": { + "description": "Contact email for questions or issues with this authorization file", + "format": "email", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "name": { + "description": "Name of the entity managing this file (e.g., 'Meta Advertising Operations', 'Clear Channel Digital')", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "privacy_policy_url": { + "description": "URL to the entity's privacy policy. Used for consumer consent flows when interacting with this sales agent.", + "format": "uri", + "type": "string" + }, + "seller_id": { + "description": "Seller ID from IAB Tech Lab sellers.json (if applicable)", + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "tag_id": { + "description": "TAG Certified Against Fraud ID for verification (if applicable)", + "maxLength": 100, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" }, "last_updated": { - "type": "string", + "description": "ISO 8601 timestamp indicating when this file was last updated", "format": "date-time", - "description": "ISO 8601 timestamp indicating when this file was last updated" + "type": "string" + }, + "placement_tags": { + "additionalProperties": { + "additionalProperties": true, + "properties": { + "description": { + "description": "Description of what this placement tag represents", + "type": "string" + }, + "name": { + "description": "Human-readable name for this placement tag", + "type": "string" + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "description": "Metadata for each tag referenced by placements. Provides human-readable context for publisher-defined placement tag values used in grouping and authorization.", + "type": "object" + }, + "placements": { + "description": "Canonical placement definitions for properties in this file. Products SHOULD reuse these placement_id values when exposing inventory in get_products, and authorized agents can scope authorization to these placement IDs.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/placement-definition.json" + }, + "minItems": 1, + "type": "array" + }, + "properties": { + "description": "Array of all properties covered by this adagents.json file. Defines the canonical property list that authorized agents reference.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/property.json" + }, + "minItems": 1, + "type": "array" }, "property_features": { - "type": "array", "description": "[AdCP 3.0] Optional list of agents that provide property feature data (certifications, scores, compliance status). Used for discovery - actual data is accessed through property list filters.", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "The agent's API endpoint URL" - }, - "name": { - "type": "string", - "description": "Human-readable name of the vendor/agent (e.g., 'Scope3', 'TAG', 'OneTrust')" - }, "features": { - "type": "array", "description": "Feature IDs this agent provides (e.g., 'carbon_score', 'tag_certified_against_fraud'). Use get_adcp_capabilities on the agent for full definitions.", "items": { "type": "string" }, - "minItems": 1 + "minItems": 1, + "type": "array" + }, + "name": { + "description": "Human-readable name of the vendor/agent (e.g., 'Scope3', 'TAG', 'OneTrust')", + "type": "string" }, "publisher_id": { - "type": "string", - "description": "Optional publisher identifier at this agent (for lookup)" + "description": "Optional publisher identifier at this agent (for lookup)", + "type": "string" + }, + "url": { + "description": "The agent's API endpoint URL", + "format": "uri", + "type": "string" } }, - "required": ["url", "name", "features"], - "additionalProperties": true - } + "required": [ + "url", + "name", + "features" + ], + "type": "object" + }, + "type": "array" + }, + "signal_tags": { + "additionalProperties": { + "additionalProperties": true, + "properties": { + "description": { + "description": "Description of what this tag represents", + "type": "string" + }, + "name": { + "description": "Human-readable name for this tag", + "type": "string" + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "description": "Metadata for each tag referenced by signals. Provides human-readable context for signal tag values.", + "type": "object" }, "signals": { - "type": "array", "description": "Signal catalog published by this data provider. Signals agents reference these signals via data_provider_domain + signal_id.", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/signal-definition.json" + "$ref": "/schemas/3.0.0-rc.3/core/signal-definition.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" }, - "signal_tags": { - "type": "object", - "description": "Metadata for each tag referenced by signals. Provides human-readable context for signal tag values.", + "tags": { "additionalProperties": { - "type": "object", + "additionalProperties": true, "properties": { - "name": { - "type": "string", - "description": "Human-readable name for this tag" - }, "description": { - "type": "string", - "description": "Description of what this tag represents" + "description": "Description of what this tag represents", + "type": "string" + }, + "name": { + "description": "Human-readable name for this tag", + "type": "string" } }, "required": [ "name", "description" ], - "additionalProperties": true - } + "type": "object" + }, + "description": "Metadata for each tag referenced by properties. Provides human-readable context for property tag values.", + "type": "object" } }, "required": [ "authorized_agents" ], - "additionalProperties": true + "type": "object" } ], - "examples": [ - { - "$schema": "/schemas/3.0.0-rc.2/adagents.json", - "authoritative_location": "https://cdn.example.com/adagents/v2/adagents.json", - "last_updated": "2025-01-15T10:00:00Z" - }, - { - "$schema": "/schemas/3.0.0-rc.2/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/3.0.0-rc.2/adagents.json", - "contact": { - "name": "Meta Advertising Operations", - "email": "adops@meta.com", - "domain": "meta.com", - "seller_id": "pub-meta-12345", - "tag_id": "12345", - "privacy_policy_url": "https://www.meta.com/privacy/policy" - }, - "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" - ], - "supported_channels": ["social", "display", "olv"], - "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" - ], - "supported_channels": ["social", "display", "olv"], - "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" - ], - "supported_channels": ["social", "display"], - "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/3.0.0-rc.2/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/3.0.0-rc.2/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" - }, - { - "$schema": "/schemas/3.0.0-rc.2/adagents.json", - "contact": { - "name": "Premium News Publisher", - "email": "adops@news.example.com", - "domain": "news.example.com" - }, - "properties": [ - { - "property_type": "website", - "name": "News Example", - "identifiers": [ - { - "type": "domain", - "value": "news.example.com" - } - ], - "tags": ["premium", "news"], - "publisher_domain": "news.example.com" - } - ], - "tags": { - "premium": { - "name": "Premium Properties", - "description": "High-quality, brand-safe properties" - }, - "news": { - "name": "News Properties", - "description": "News and journalism content" - } - }, - "authorized_agents": [ - { - "url": "https://sales.news.example.com", - "authorized_for": "All news properties", - "authorization_type": "property_tags", - "property_tags": ["news"] - } - ], - "property_features": [ - { - "url": "https://api.scope3.com", - "name": "Scope3", - "features": ["carbon_score", "sustainability_grade"], - "publisher_id": "pub_news_12345" - }, - { - "url": "https://api.tagtoday.net", - "name": "TAG", - "features": ["tag_certified_against_fraud", "tag_brand_safety_certified"] - }, - { - "url": "https://api.onetrust.com", - "name": "OneTrust", - "features": ["gdpr_compliant", "tcf_registered", "ccpa_compliant"], - "publisher_id": "ot_news_67890" - } - ], - "last_updated": "2025-01-10T18:00:00Z" - }, - { - "$schema": "/schemas/3.0.0-rc.2/adagents.json", - "contact": { - "name": "Polk Automotive Data", - "email": "partnerships@polk.com", - "domain": "polk.com" - }, - "signals": [ - { - "id": "likely_tesla_buyers", - "name": "Likely Tesla Buyers", - "description": "Consumers modeled as likely to purchase a Tesla in the next 12 months based on vehicle registration, financial, and behavioral data", - "value_type": "binary", - "category": "purchase_intent", - "tags": ["automotive", "premium"] - }, - { - "id": "vehicle_ownership", - "name": "Current Vehicle Ownership", - "description": "Current vehicle make owned by the consumer", - "value_type": "categorical", - "category": "ownership", - "allowed_values": ["tesla", "bmw", "mercedes", "audi", "lexus", "other_luxury", "non_luxury"], - "tags": ["automotive"] - }, - { - "id": "purchase_propensity", - "name": "Auto Purchase Propensity", - "description": "Likelihood score of purchasing any new vehicle in the next 6 months", - "value_type": "numeric", - "category": "purchase_intent", - "range": { "min": 0, "max": 1, "unit": "score" }, - "tags": ["automotive"] - } - ], - "signal_tags": { - "automotive": { - "name": "Automotive Signals", - "description": "Vehicle-related audience segments" - }, - "premium": { - "name": "Premium Signals", - "description": "High-value premium audience segments" - } - }, - "authorized_agents": [ - { - "url": "https://liveramp.com/.well-known/adcp/signals", - "authorized_for": "All Polk automotive signals via LiveRamp", - "authorization_type": "signal_tags", - "signal_tags": ["automotive"] - }, - { - "url": "https://the-trade-desk.com/.well-known/adcp/signals", - "authorized_for": "Polk premium signals only", - "authorization_type": "signal_ids", - "signal_ids": ["likely_tesla_buyers"] - } - ], - "last_updated": "2025-01-15T10:00:00Z" - } - ] -} + "title": "AdCP Agents Authorization" +} \ No newline at end of file diff --git a/schemas/cache/brand.json b/schemas/cache/brand.json index d3a57aa4..64f82058 100644 --- a/schemas/cache/brand.json +++ b/schemas/cache/brand.json @@ -1,1425 +1,2099 @@ { + "$id": "/schemas/3.0.0-rc.3/brand.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand.json", - "title": "Brand Discovery", - "description": "Brand identity and discovery file. Hosted at /.well-known/brand.json on house domains. Contains the full brand portfolio with identity, creative assets, and digital properties. Brands are identified by house + brand_id (like properties are identified by publisher + property_id). Supports variants: house portfolio (full brand data), brand agent (agent provides brand info via MCP), house redirect (pointer to house domain), or authoritative location redirect.", "definitions": { - "domain": { - "type": "string", - "description": "A valid domain name", - "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" - }, - "brand_id": { - "type": "string", - "description": "Brand identifier within the house portfolio. Lowercase alphanumeric with underscores. House chooses this ID.", - "pattern": "^[a-z0-9_]+$" - }, - "localized_name": { - "type": "object", - "description": "A localized name with language code key and name value", - "minProperties": 1, - "maxProperties": 1, - "additionalProperties": { - "type": "string", - "minLength": 1 - } - }, - "keller_type": { - "type": "string", - "enum": ["master", "sub_brand", "endorsed", "independent"], - "description": "Brand architecture type from Keller's theory. master: primary brand of house. sub_brand: carries parent name (Nike SB). endorsed: independent identity backed by parent (Air Jordan 'by Nike'). independent: operates separately (Converse under Nike, Inc.)" - }, - "logo": { - "type": "object", - "description": "Brand logo asset with structured fields for orientation, background compatibility, and variant type", + "asset": { + "additionalProperties": true, + "description": "Brand asset (image, video, audio, text)", "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "URL to the logo asset" + "asset_id": { + "description": "Unique identifier", + "type": "string" }, - "orientation": { - "type": "string", - "enum": ["square", "horizontal", "vertical", "stacked"], - "description": "Logo aspect ratio orientation. square: ~1:1, horizontal: wide, vertical: tall, stacked: vertically arranged elements" + "asset_type": { + "$ref": "/schemas/3.0.0-rc.3/enums/asset-content-type.json", + "description": "Type of asset content" }, - "background": { - "type": "string", - "enum": ["dark-bg", "light-bg", "transparent-bg"], - "description": "Background compatibility. dark-bg: use on dark backgrounds, light-bg: use on light backgrounds, transparent-bg: has transparent background" + "description": { + "description": "Asset description or usage notes", + "type": "string" }, - "variant": { - "type": "string", - "enum": ["primary", "secondary", "icon", "wordmark", "full-lockup"], - "description": "Logo variant type. primary: main logo, secondary: alternative, icon: symbol only, wordmark: text only, full-lockup: complete logo" + "duration_seconds": { + "description": "Video/audio duration in seconds", + "type": "number" }, - "tags": { - "type": "array", - "description": "Additional semantic tags for custom categorization beyond the standard orientation, background, and variant fields", - "items": { "type": "string" } + "file_size_bytes": { + "description": "File size in bytes", + "type": "integer" }, - "usage": { - "type": "string", - "description": "Human-readable description of when to use this logo variant (e.g., 'Primary logo for use on light backgrounds')" + "format": { + "description": "File format (e.g., 'jpg', 'mp4', 'mp3')", + "type": "string" }, - "width": { "type": "integer", "description": "Width in pixels" }, - "height": { "type": "integer", "description": "Height in pixels" } - }, - "required": ["url"], - "additionalProperties": true - }, - "hex_color": { - "type": "string", - "pattern": "^#[0-9A-Fa-f]{6}$", - "description": "A single hex color value" - }, - "color_value": { - "oneOf": [ - { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, - { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 } - ] - }, - "colors": { - "type": "object", - "description": "Brand color palette. Each role accepts a single hex color or an array of hex colors for brands with multiple values per role.", - "properties": { - "primary": { "$ref": "#/definitions/color_value" }, - "secondary": { "$ref": "#/definitions/color_value" }, - "accent": { "$ref": "#/definitions/color_value" }, - "background": { "$ref": "#/definitions/color_value" }, - "text": { "$ref": "#/definitions/color_value" } - }, - "additionalProperties": true - }, - "fonts": { - "type": "object", - "description": "Brand typography", - "properties": { - "primary": { "type": "string", "description": "Primary font family" }, - "secondary": { "type": "string", "description": "Secondary font family" }, - "font_urls": { - "type": "array", - "items": { "type": "string", "format": "uri" }, - "description": "URLs to web font files" - } - }, - "additionalProperties": true - }, - "asset": { - "type": "object", - "description": "Brand asset (image, video, audio, text)", - "properties": { - "asset_id": { "type": "string", "description": "Unique identifier" }, - "asset_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/asset-content-type.json", - "description": "Type of asset content" + "height": { + "description": "Image/video height in pixels", + "type": "integer" }, - "url": { "type": "string", "format": "uri", "description": "URL to CDN-hosted asset file" }, - "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Tags for discovery (e.g., 'hero', 'lifestyle', 'product', 'holiday')" - }, - "name": { "type": "string", "description": "Human-readable name" }, - "description": { "type": "string", "description": "Asset description or usage notes" }, - "width": { "type": "integer", "description": "Image/video width in pixels" }, - "height": { "type": "integer", "description": "Image/video height in pixels" }, - "duration_seconds": { "type": "number", "description": "Video/audio duration in seconds" }, - "file_size_bytes": { "type": "integer", "description": "File size in bytes" }, - "format": { "type": "string", "description": "File format (e.g., 'jpg', 'mp4', 'mp3')" }, "metadata": { - "type": "object", + "additionalProperties": true, "description": "Additional asset-specific metadata", - "additionalProperties": true + "type": "object" + }, + "name": { + "description": "Human-readable name", + "type": "string" + }, + "tags": { + "description": "Tags for discovery (e.g., 'hero', 'lifestyle', 'product', 'holiday')", + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "description": "URL to CDN-hosted asset file", + "format": "uri", + "type": "string" + }, + "width": { + "description": "Image/video width in pixels", + "type": "integer" } }, - "required": ["asset_id", "asset_type", "url"], - "additionalProperties": true + "required": [ + "asset_id", + "asset_type", + "url" + ], + "type": "object" }, - "property": { - "type": "object", - "description": "A digital property owned by a brand", + "asset_library": { + "additionalProperties": true, + "description": "A managed asset library (icon set, illustration system, image collection). The URL is for human access; agent-facing DAM integration is under investigation.", "properties": { - "type": { - "type": "string", - "enum": ["website", "mobile_app", "ctv_app", "desktop_app", "dooh", "podcast", "radio", "streaming_audio"], - "description": "Property type" + "color_guide": { + "additionalProperties": true, + "description": "Color guide for the asset library defining roles and palettes", + "properties": { + "palettes": { + "description": "Named color palettes mapping roles to specific colors", + "items": { + "additionalProperties": true, + "properties": { + "colors": { + "additionalProperties": { + "$ref": "#/definitions/hex_color" + }, + "description": "Map of role names to hex color values", + "type": "object" + }, + "name": { + "description": "Palette name", + "type": "string" + } + }, + "required": [ + "name", + "colors" + ], + "type": "object" + }, + "type": "array" + }, + "roles": { + "description": "Named color roles used in the library (e.g., base, shadow_1, highlight_1, stroke)", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" }, - "identifier": { - "type": "string", - "description": "Property identifier - domain for websites, bundle ID for apps", - "minLength": 1 + "description": { + "description": "Description of the library contents and usage", + "type": "string" }, - "store": { - "type": "string", - "enum": ["apple", "google", "amazon", "roku", "samsung", "lg", "other"], - "description": "App store for mobile/CTV apps" + "name": { + "description": "Display name of the asset library", + "type": "string" }, - "region": { - "type": "string", - "description": "ISO 3166-1 alpha-2 country code or 'global'", - "pattern": "^([A-Z]{2}|global)$" + "type": { + "description": "Type of asset library", + "enum": [ + "icon_set", + "illustration_system", + "image_library", + "video_library", + "template_library" + ], + "type": "string" }, - "primary": { - "type": "boolean", - "default": false, - "description": "Whether this is the primary property for the brand" + "url": { + "description": "URL to the asset library (for human access)", + "format": "uri", + "type": "string" } }, - "required": ["type", "identifier"], - "additionalProperties": true + "required": [ + "name", + "url" + ], + "type": "object" }, - "product_catalog": { - "type": "object", - "description": "Product catalog for e-commerce brands", + "authorized_operator": { + "additionalProperties": true, + "description": "An entity authorized to represent brands from this house. Verified by resolving the operator's domain.", "properties": { - "feed_url": { "type": "string", "format": "uri", "description": "URL to product catalog feed" }, - "feed_format": { - "type": "string", - "enum": ["google_merchant_center", "facebook_catalog", "openai_product_feed", "custom"], - "description": "Format of the product feed" - }, - "categories": { - "type": "array", - "items": { "type": "string" }, - "description": "Product categories available in the catalog" - }, - "last_updated": { - "type": "string", - "format": "date-time", - "description": "When the product catalog was last updated" - }, - "update_frequency": { - "type": "string", - "enum": ["realtime", "hourly", "daily", "weekly"], - "description": "How frequently the product catalog is updated" + "brands": { + "description": "Brand IDs this operator is authorized for. Use ['*'] for all brands in the portfolio.", + "items": { + "pattern": "^([a-z0-9_]+|\\*)$", + "type": "string" + }, + "minItems": 1, + "type": "array" }, - "agentic_checkout": { - "type": "object", - "description": "Agentic checkout endpoint configuration", - "properties": { - "endpoint": { "type": "string", "format": "uri", "description": "Base URL for checkout session API" }, - "spec": { "type": "string", "enum": ["openai_agentic_checkout_v1"], "description": "Checkout API specification" }, - "supported_payment_providers": { - "type": "array", - "description": "Payment providers supported by this checkout endpoint", - "items": { "type": "string" } - } + "countries": { + "description": "ISO 3166-1 alpha-2 country codes where this authorization applies. Omit for global authorization.", + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" }, - "required": ["endpoint", "spec"] + "type": "array" + }, + "domain": { + "$ref": "#/definitions/domain", + "description": "Domain of the authorized operator (e.g., 'groupm.com')" } }, - "required": ["feed_url"], - "additionalProperties": true + "required": [ + "domain", + "brands" + ], + "type": "object" }, "brand": { - "type": "object", + "additionalProperties": true, "description": "A brand within a house portfolio. Combines identity (who) with creative assets (how to represent). Referenced as domain + brand_id.", "properties": { + "assets": { + "description": "Brand asset library", + "items": { + "$ref": "#/definitions/asset" + }, + "type": "array" + }, + "avatar": { + "additionalProperties": true, + "description": "Visual avatar configuration", + "properties": { + "avatar_id": { + "type": "string" + }, + "provider": { + "type": "string" + }, + "settings": { + "additionalProperties": true, + "type": "object" + } + }, + "type": "object" + }, + "brand_agent": { + "$ref": "#/definitions/brand_agent", + "description": "Brand agent that provides dynamic brand data via MCP" + }, + "collections": { + "description": "Collections this person or brand is associated with. Enables bidirectional linking: a collection's talent references brand.json via brand_url, and brand.json links back to collections.", + "items": { + "additionalProperties": true, + "properties": { + "collection_id": { + "description": "Collection identifier as used in the seller's get_products responses", + "type": "string" + }, + "name": { + "description": "Human-readable collection name", + "type": "string" + }, + "role": { + "$ref": "/schemas/3.0.0-rc.3/enums/talent-role.json", + "description": "This person's role on the collection" + }, + "seller_agent_url": { + "description": "URL of the sales agent that sells inventory for this collection. Buyer agents can query this agent for collection products.", + "format": "uri", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "type": "array" + }, + "colors": { + "$ref": "#/definitions/colors" + }, + "contact": { + "description": "Brand-level contact information", + "properties": { + "email": { + "description": "Contact email", + "format": "email", + "type": "string" + }, + "phone": { + "description": "Contact phone number", + "type": "string" + } + }, + "type": "object" + }, + "description": { + "description": "Brand description", + "type": "string" + }, + "disclaimers": { + "description": "Legal disclaimers for creatives", + "items": { + "properties": { + "context": { + "type": "string" + }, + "required": { + "default": true, + "type": "boolean" + }, + "text": { + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "type": "array" + }, + "fonts": { + "$ref": "#/definitions/fonts" + }, "id": { "$ref": "#/definitions/brand_id", "description": "Brand identifier within the house. House chooses this ID." }, - "url": { - "type": "string", - "format": "uri", - "description": "Primary brand URL for context and asset discovery" + "industries": { + "description": "Brand industries (e.g., ['automotive'] or ['healthcare.pharmaceutical', 'cpg'] for a consumer health company). Describes what the company does \u2014 not what regulatory regimes apply (use policy_categories for that). When create_media_buy omits advertiser_industry, sellers may infer from this field.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/advertiser-industry.json" + }, + "minItems": 1, + "type": "array" + }, + "keller_type": { + "$ref": "#/definitions/keller_type" + }, + "logos": { + "description": "Brand logo assets", + "items": { + "$ref": "#/definitions/logo" + }, + "type": "array" }, "names": { - "type": "array", "description": "Localized brand names. Multiple entries per language allowed for aliases.", - "items": { "$ref": "#/definitions/localized_name" }, - "minItems": 1 + "items": { + "$ref": "#/definitions/localized_name" + }, + "minItems": 1, + "type": "array" }, - "keller_type": { "$ref": "#/definitions/keller_type" }, "parent_brand": { "$ref": "#/definitions/brand_id", "description": "Parent brand ID for sub-brands and endorsed brands" }, - "description": { - "type": "string", - "description": "Brand description" + "privacy_policy_url": { + "description": "URL to the brand's privacy policy", + "format": "uri", + "type": "string" }, - "industry": { - "type": "string", - "description": "Industry or vertical (e.g., 'retail', 'automotive', 'cpg')" + "product_catalog": { + "$ref": "#/definitions/product_catalog" }, - "target_audience": { - "type": "string", - "description": "Primary target audience" + "properties": { + "description": "Digital properties owned by this brand", + "items": { + "$ref": "#/definitions/property" + }, + "type": "array" }, - "logos": { - "type": "array", - "items": { "$ref": "#/definitions/logo" }, - "description": "Brand logo assets" + "rights_agent": { + "$ref": "#/definitions/rights_agent", + "description": "Rights licensing agent for this brand" + }, + "tagline": { + "description": "Brand tagline or slogan. Accepts a plain string or a localized array matching the names pattern.", + "oneOf": [ + { + "description": "Plain tagline string for backwards compatibility", + "type": "string" + }, + { + "description": "Localized taglines with BCP 47 locale codes", + "items": { + "$ref": "#/definitions/localized_name" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "target_audience": { + "description": "Primary target audience", + "type": "string" }, - "colors": { "$ref": "#/definitions/colors" }, - "fonts": { "$ref": "#/definitions/fonts" }, "tone": { "description": "Brand voice and messaging tone guidelines", "oneOf": [ { - "type": "string", - "description": "Simple tone descriptors for backwards compatibility" + "description": "Simple tone descriptors for backwards compatibility", + "type": "string" }, { - "type": "object", "description": "Structured brand voice guidelines", "properties": { - "voice": { "type": "string", "description": "High-level voice descriptor (e.g., 'warm and inviting', 'professional and trustworthy')" }, "attributes": { - "type": "array", "description": "Personality traits that characterize the brand voice", - "items": { "type": "string" } + "items": { + "type": "string" + }, + "type": "array" + }, + "donts": { + "description": "Guardrails to avoid brand violations - what NOT to do", + "items": { + "type": "string" + }, + "type": "array" }, "dos": { - "type": "array", "description": "Guidance for copy generation - what TO do", - "items": { "type": "string" } + "items": { + "type": "string" + }, + "type": "array" }, - "donts": { - "type": "array", - "description": "Guardrails to avoid brand violations - what NOT to do", - "items": { "type": "string" } + "voice": { + "description": "High-level voice descriptor (e.g., 'warm and inviting', 'professional and trustworthy')", + "type": "string" } - } + }, + "type": "object" } ] }, - "tagline": { - "type": "string", - "description": "Brand tagline or slogan" - }, - "assets": { - "type": "array", - "items": { "$ref": "#/definitions/asset" }, - "description": "Brand asset library" - }, - "properties": { - "type": "array", - "items": { "$ref": "#/definitions/property" }, - "description": "Digital properties owned by this brand" - }, - "product_catalog": { "$ref": "#/definitions/product_catalog" }, - "privacy_policy_url": { - "type": "string", + "url": { + "description": "Primary brand URL for context and asset discovery", "format": "uri", - "description": "URL to the brand's privacy policy" - }, - "disclaimers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "text": { "type": "string" }, - "context": { "type": "string" }, - "required": { "type": "boolean", "default": true } - }, - "required": ["text"] - }, - "description": "Legal disclaimers for creatives" - }, - "voice_synthesis": { - "type": "object", - "description": "TTS voice synthesis configuration for AI-generated audio", - "properties": { - "provider": { "type": "string" }, - "voice_id": { "type": "string" }, - "settings": { "type": "object", "additionalProperties": true } - }, - "additionalProperties": true - }, - "avatar": { - "type": "object", - "description": "Visual avatar configuration", - "properties": { - "provider": { "type": "string" }, - "avatar_id": { "type": "string" }, - "settings": { "type": "object", "additionalProperties": true } - }, - "additionalProperties": true + "type": "string" }, "visual_guidelines": { "$ref": "#/definitions/visual_guidelines", "description": "Structured visual rules for generative creative systems" }, - "brand_agent": { - "$ref": "#/definitions/brand_agent", - "description": "Brand agent that provides dynamic brand data via MCP" - }, - "rights_agent": { - "$ref": "#/definitions/rights_agent", - "description": "Rights licensing agent for this brand" - }, - "contact": { - "type": "object", - "description": "Brand-level contact information", + "voice_synthesis": { + "additionalProperties": true, + "description": "TTS voice synthesis configuration for AI-generated audio", "properties": { - "email": { "type": "string", "format": "email", "description": "Contact email" }, - "phone": { "type": "string", "description": "Contact phone number" } - } - }, - "shows": { - "type": "array", - "description": "Shows this person or brand is associated with. Enables bidirectional linking: a show's talent references brand.json via brand_url, and brand.json links back to shows.", - "items": { - "type": "object", - "properties": { - "show_id": { - "type": "string", - "description": "Show identifier as used in the seller's get_products responses" - }, - "name": { - "type": "string", - "description": "Human-readable show name" - }, - "role": { - "$ref": "/schemas/3.0.0-rc.2/enums/talent-role.json", - "description": "This person's role on the show" - }, - "seller_agent_url": { - "type": "string", - "format": "uri", - "description": "URL of the sales agent that sells inventory for this show. Buyer agents can query this agent for show products." - } + "provider": { + "type": "string" }, - "required": ["name"], - "additionalProperties": true - } - } - }, - "required": ["id", "names"], - "additionalProperties": true - }, - "house": { - "type": "object", - "description": "Corporate or organizational entity that owns brands", - "properties": { - "domain": { - "$ref": "#/definitions/domain", - "description": "The house's domain where brand.json is hosted" - }, - "name": { - "type": "string", - "description": "Primary display name of the house", - "minLength": 1 - }, - "names": { - "type": "array", - "description": "Localized house names including legal name, stock symbol, etc.", - "items": { "$ref": "#/definitions/localized_name" } - }, - "architecture": { - "type": "string", - "enum": ["branded_house", "house_of_brands", "hybrid"], - "description": "Brand architecture model: branded_house (Google), house_of_brands (P&G), hybrid (Nike)" + "settings": { + "additionalProperties": true, + "type": "object" + }, + "voice_id": { + "type": "string" + } + }, + "type": "object" } }, - "required": ["domain", "name"], - "additionalProperties": true + "required": [ + "id", + "names" + ], + "type": "object" }, "brand_agent": { - "type": "object", + "additionalProperties": true, "description": "Reference to a brand agent that provides brand data via MCP", "properties": { + "id": { + "description": "Agent identifier (useful for logging, multi-tenant DAMs)", + "pattern": "^[a-z0-9_]+$", + "type": "string" + }, "url": { - "type": "string", + "description": "Brand agent MCP endpoint URL", "format": "uri", "pattern": "^https://", - "description": "Brand agent MCP endpoint URL" - }, - "id": { - "type": "string", - "description": "Agent identifier (useful for logging, multi-tenant DAMs)", - "pattern": "^[a-z0-9_]+$" + "type": "string" } }, - "required": ["url", "id"], - "additionalProperties": true + "required": [ + "url", + "id" + ], + "type": "object" }, - "rights_agent": { - "type": "object", - "description": "Rights licensing agent for this brand. Provides discovery, pricing, and acquisition of licensable rights via MCP. Use get_rights and acquire_rights tasks to interact.", + "brand_id": { + "description": "Brand identifier within the house portfolio. Lowercase alphanumeric with underscores. House chooses this ID.", + "pattern": "^[a-z0-9_]+$", + "type": "string" + }, + "brand_shapes": { + "additionalProperties": true, + "description": "Distinctive shapes used as part of brand visual identity", "properties": { - "url": { - "type": "string", - "format": "uri", - "pattern": "^https://", - "description": "Rights agent MCP endpoint URL" - }, - "id": { - "type": "string", - "description": "Agent identifier", - "pattern": "^[a-z0-9_]+$" - }, - "available_uses": { - "type": "array", - "description": "Rights uses available for licensing through this agent", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" }, - "minItems": 1 - }, - "right_types": { - "type": "array", - "description": "Types of rights available", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-type.json" }, - "minItems": 1 + "primary_shape": { + "description": "Primary brand shape (e.g., 'rounded_rectangle', 'circle', 'hexagon')", + "type": "string" }, - "countries": { - "type": "array", - "description": "Countries where rights are available (ISO 3166-1 alpha-2)", + "secondary_shapes": { + "description": "Secondary shapes in the brand vocabulary", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "type": "string" + }, + "type": "array" + }, + "usage": { + "additionalProperties": true, + "description": "Shape usage rules", + "properties": { + "max_per_layout": { + "description": "Maximum distinct shapes per layout", + "type": "integer" + }, + "overlap_allowed": { + "description": "Whether shapes may overlap", + "type": "boolean" + } + }, + "type": "object" } }, - "required": ["url", "id", "available_uses"], - "additionalProperties": true + "type": "object" }, - "authorized_operator": { - "type": "object", - "description": "An entity authorized to represent brands from this house. Verified by resolving the operator's domain.", - "properties": { - "domain": { - "$ref": "#/definitions/domain", - "description": "Domain of the authorized operator (e.g., 'groupm.com')" + "color_value": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" }, - "brands": { - "type": "array", - "description": "Brand IDs this operator is authorized for. Use ['*'] for all brands in the portfolio.", + { "items": { - "type": "string", - "pattern": "^([a-z0-9_]+|\\*)$" + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" }, - "minItems": 1 + "minItems": 1, + "type": "array" + } + ] + }, + "colors": { + "additionalProperties": true, + "description": "Brand color palette. Each role accepts a single hex color or an array of hex colors for brands with multiple values per role.", + "properties": { + "accent": { + "$ref": "#/definitions/color_value" }, - "countries": { - "type": "array", - "description": "ISO 3166-1 alpha-2 country codes where this authorization applies. Omit for global authorization.", - "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "background": { + "$ref": "#/definitions/color_value" + }, + "primary": { + "$ref": "#/definitions/color_value" + }, + "secondary": { + "$ref": "#/definitions/color_value" + }, + "text": { + "$ref": "#/definitions/color_value" } }, - "required": ["domain", "brands"], - "additionalProperties": true + "type": "object" }, - "photography_style": { - "type": "object", - "description": "Photography style rules for generative creative systems. Defines how brand photography should look when selected or generated.", + "colorway": { + "additionalProperties": true, + "description": "A named color pairing that defines how colors work together. Colorways ensure foreground/background combinations are always on-brand and accessible.", "properties": { - "realism": { - "type": "string", - "enum": ["natural", "stylized", "hyperreal", "abstract"], - "description": "Level of photographic realism" + "accent": { + "$ref": "#/definitions/hex_color" }, - "lighting": { - "type": "string", - "description": "Lighting style (e.g., 'soft daylight', 'studio', 'golden hour', 'high-key', 'low-key')" + "background": { + "$ref": "#/definitions/hex_color" }, - "color_temperature": { - "type": "string", - "enum": ["warm", "neutral", "cool"], - "description": "Overall color temperature of photography" + "border": { + "$ref": "#/definitions/hex_color" }, - "contrast": { - "type": "string", - "enum": ["low", "medium", "high"], - "description": "Contrast level in photography" + "channels": { + "description": "Channels or contexts where this colorway applies (e.g., 'online', 'print', 'pos', 'social', 'outdoor'). Omit for universal colorways.", + "items": { + "type": "string" + }, + "type": "array" }, - "depth_of_field": { - "type": "string", - "enum": ["shallow", "medium", "deep"], - "description": "Depth of field preference. shallow: blurred background with subject isolation, deep: everything in focus" + "cta_background": { + "$ref": "#/definitions/hex_color", + "description": "CTA button/container color, if different from accent" }, - "subject": { - "type": "object", - "description": "Subject matter guidelines", + "cta_foreground": { + "$ref": "#/definitions/hex_color", + "description": "CTA text/icon color, if different from foreground" + }, + "foreground": { + "$ref": "#/definitions/hex_color" + }, + "name": { + "description": "Colorway name (e.g., 'primary', 'inverted', 'subtle')", + "type": "string" + } + }, + "required": [ + "name", + "foreground", + "background" + ], + "type": "object" + }, + "composition_rules": { + "additionalProperties": true, + "description": "Layout composition rules including overlays, textures, and backgrounds", + "properties": { + "backgrounds": { + "additionalProperties": true, + "description": "Background treatment rules", "properties": { - "people": { - "type": "object", - "description": "People photography guidelines", - "properties": { - "age_range": { "type": "string", "description": "Target age range (e.g., '20-35')" }, - "diversity": { "type": "string", "description": "Diversity representation (e.g., 'mixed', 'varied')" }, - "mood": { - "type": "array", - "items": { "type": "string" }, - "description": "Mood descriptors (e.g., ['confident', 'relaxed'])" - } + "types_allowed": { + "description": "Permitted background types", + "items": { + "enum": [ + "solid_color", + "gradient", + "blurred_photo", + "image", + "video", + "pattern", + "transparent" + ], + "type": "string" }, - "additionalProperties": true + "type": "array" + } + }, + "type": "object" + }, + "overlays": { + "additionalProperties": true, + "description": "Graphic overlay rules", + "properties": { + "gradient_direction": { + "description": "Gradient direction (e.g., '45deg', 'to-bottom-right')", + "type": "string" }, - "product_focus": { - "type": "string", - "enum": ["in-use", "isolated", "lifestyle", "detail"], - "description": "How products are shown" + "gradient_style": { + "description": "Gradient type for overlays", + "enum": [ + "linear", + "radial", + "conic", + "none" + ], + "type": "string" }, - "setting": { - "type": "string", - "description": "Environmental context for photography (e.g., 'indoor', 'outdoor', 'studio', 'urban', 'nature', 'workplace')" + "opacity": { + "description": "Overlay opacity (e.g., '70%')", + "type": "string" } }, - "additionalProperties": true + "type": "object" }, - "framing": { - "type": "object", - "description": "Camera framing rules", + "texture": { + "additionalProperties": true, + "description": "Texture treatment rules", "properties": { - "subject_position": { - "type": "string", - "description": "Where the subject sits in frame (e.g., 'center', 'center-left', 'rule-of-thirds')" - }, - "crop_style": { - "type": "string", - "description": "Cropping convention (e.g., 'waist-up', 'full-body', 'close-up', 'wide')" + "intensity": { + "description": "Texture intensity", + "enum": [ + "low", + "medium", + "high" + ], + "type": "string" }, - "perspective": { - "type": "string", - "description": "Camera perspective (e.g., 'eye-level', 'overhead', 'low-angle')" + "style": { + "description": "Texture style applied to creative assets", + "enum": [ + "none", + "subtle_grain", + "noise", + "paper", + "fabric", + "concrete" + ], + "type": "string" } }, - "additionalProperties": true + "type": "object" + } + }, + "type": "object" + }, + "contact": { + "additionalProperties": true, + "description": "Contact information", + "properties": { + "domain": { + "$ref": "#/definitions/domain" + }, + "email": { + "format": "email", + "maxLength": 255, + "type": "string" + }, + "name": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "domain": { + "description": "A valid domain name", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "type": "string" + }, + "fonts": { + "additionalProperties": true, + "description": "Brand typography", + "properties": { + "font_urls": { + "description": "URLs to web font files", + "items": { + "format": "uri", + "type": "string" + }, + "type": "array" }, - "preferred_aspect_ratios": { - "type": "array", + "primary": { + "description": "Primary font family", + "type": "string" + }, + "secondary": { + "description": "Secondary font family", + "type": "string" + } + }, + "type": "object" + }, + "graphic_element": { + "additionalProperties": true, + "description": "A reusable decorative or structural visual element that is part of the brand identity (e.g., torn paper edges, watermarks, dividers, background patterns)", + "properties": { + "colors": { + "description": "Colors this element may appear in", "items": { - "type": "string", - "pattern": "^\\d+:\\d+$" + "$ref": "#/definitions/hex_color" }, - "description": "Preferred aspect ratios for brand photography (e.g., '16:9', '4:5', '1:1')" + "type": "array" }, - "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Additional style descriptors" + "description": { + "description": "How the element is used in layouts", + "type": "string" + }, + "max_per_layout": { + "description": "Maximum instances per layout", + "type": "integer" + }, + "name": { + "description": "Element name (e.g., 'Paper Tear', 'Brand Watermark', 'Section Divider')", + "type": "string" + }, + "orientation": { + "description": "Preferred orientation when used in layouts", + "enum": [ + "horizontal", + "vertical", + "any" + ], + "type": "string" + }, + "type": { + "description": "Element type", + "enum": [ + "border", + "divider", + "frame", + "watermark", + "pattern", + "texture_overlay", + "decorative" + ], + "type": "string" } }, - "additionalProperties": true + "required": [ + "name" + ], + "type": "object" }, "graphic_style": { - "type": "object", + "additionalProperties": true, "description": "Visual language for brand graphics and illustrations", "properties": { - "style_type": { - "type": "string", - "enum": ["flat_illustration", "geometric", "gradient_mesh", "editorial_collage", "hand_drawn", "minimal_line_art", "3d_render", "isometric", "photographic_composite"], - "description": "Primary graphic style" + "corner_radius": { + "description": "Default corner radius for rounded elements (e.g., '12px', '8px', 'sharp')", + "type": "string" }, "stroke_style": { - "type": "string", - "enum": ["rounded", "square", "mixed", "none"], - "description": "Stroke end/join style" + "description": "Stroke end/join style", + "enum": [ + "rounded", + "square", + "mixed", + "none" + ], + "type": "string" }, "stroke_weight": { - "type": "string", - "description": "Stroke weight (e.g., '2px', 'thin', 'bold')" + "description": "Stroke weight (e.g., '2px', 'thin', 'bold')", + "type": "string" }, - "corner_radius": { - "type": "string", - "description": "Default corner radius for rounded elements (e.g., '12px', '8px', 'sharp')" + "style_type": { + "description": "Primary graphic style", + "enum": [ + "flat_illustration", + "geometric", + "gradient_mesh", + "editorial_collage", + "hand_drawn", + "minimal_line_art", + "3d_render", + "isometric", + "photographic_composite" + ], + "type": "string" }, "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Additional style descriptors" + "description": "Additional style descriptors", + "items": { + "type": "string" + }, + "type": "array" } }, - "additionalProperties": true + "type": "object" }, - "brand_shapes": { - "type": "object", - "description": "Distinctive shapes used as part of brand visual identity", + "hex_color": { + "description": "A single hex color value", + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "house": { + "additionalProperties": true, + "description": "Corporate or organizational entity that owns brands", "properties": { - "primary_shape": { - "type": "string", - "description": "Primary brand shape (e.g., 'rounded_rectangle', 'circle', 'hexagon')" + "architecture": { + "description": "Brand architecture model: branded_house (Google), house_of_brands (P&G), hybrid (Nike)", + "enum": [ + "branded_house", + "house_of_brands", + "hybrid" + ], + "type": "string" }, - "secondary_shapes": { - "type": "array", - "items": { "type": "string" }, - "description": "Secondary shapes in the brand vocabulary" + "domain": { + "$ref": "#/definitions/domain", + "description": "The house's domain where brand.json is hosted" }, - "usage": { - "type": "object", - "description": "Shape usage rules", - "properties": { - "max_per_layout": { - "type": "integer", - "description": "Maximum distinct shapes per layout" - }, - "overlap_allowed": { - "type": "boolean", - "description": "Whether shapes may overlap" - } + "name": { + "description": "Primary display name of the house", + "minLength": 1, + "type": "string" + }, + "names": { + "description": "Localized house names including legal name, stock symbol, etc.", + "items": { + "$ref": "#/definitions/localized_name" }, - "additionalProperties": true + "type": "array" } }, - "additionalProperties": true + "required": [ + "domain", + "name" + ], + "type": "object" }, "iconography": { - "type": "object", + "additionalProperties": true, "description": "Icon style system and usage rules", "properties": { - "style": { - "type": "string", - "enum": ["outline", "filled", "duotone", "flat", "glyph", "hand_drawn"], - "description": "Icon rendering style" + "corner_style": { + "description": "Corner style for icon paths", + "enum": [ + "rounded", + "square", + "mixed" + ], + "type": "string" }, "stroke_weight": { - "type": "string", - "description": "Icon stroke weight (e.g., '2px', '1.5px')" + "description": "Icon stroke weight (e.g., '2px', '1.5px')", + "type": "string" }, - "corner_style": { - "type": "string", - "enum": ["rounded", "square", "mixed"], - "description": "Corner style for icon paths" + "style": { + "description": "Icon rendering style", + "enum": [ + "outline", + "filled", + "duotone", + "flat", + "glyph", + "hand_drawn" + ], + "type": "string" }, "usage": { - "type": "object", + "additionalProperties": true, "description": "Icon usage rules", "properties": { "max_per_frame": { - "type": "integer", - "description": "Maximum icons per creative frame" + "description": "Maximum icons per creative frame", + "type": "integer" }, "size_ratio": { - "type": "string", - "description": "Icon-to-layout size ratio (e.g., '1:8')" + "description": "Icon-to-layout size ratio (e.g., '1:8')", + "type": "string" } }, - "additionalProperties": true + "type": "object" } }, - "additionalProperties": true + "type": "object" }, - "composition_rules": { - "type": "object", - "description": "Layout composition rules including overlays, textures, and backgrounds", + "keller_type": { + "description": "Brand architecture type from Keller's theory. master: primary brand of house. sub_brand: carries parent name (Nike SB). endorsed: independent identity backed by parent (Air Jordan 'by Nike'). independent: operates separately (Converse under Nike, Inc.)", + "enum": [ + "master", + "sub_brand", + "endorsed", + "independent" + ], + "type": "string" + }, + "localized_name": { + "additionalProperties": { + "minLength": 1, + "type": "string" + }, + "description": "A localized name with BCP 47 locale code key (e.g., 'en_US', 'fr_CA', 'zh_CN') and name value. Bare language codes ('en') are accepted as wildcards for backwards compatibility.", + "maxProperties": 1, + "minProperties": 1, + "type": "object" + }, + "logo": { + "additionalProperties": true, + "description": "Brand logo asset with structured fields for orientation, background compatibility, and variant type", "properties": { - "overlays": { - "type": "object", - "description": "Graphic overlay rules", - "properties": { - "gradient_style": { - "type": "string", - "enum": ["linear", "radial", "conic", "none"], - "description": "Gradient type for overlays" - }, - "gradient_direction": { - "type": "string", - "description": "Gradient direction (e.g., '45deg', 'to-bottom-right')" - }, - "opacity": { - "type": "string", - "description": "Overlay opacity (e.g., '70%')" - } - }, - "additionalProperties": true + "background": { + "description": "Background compatibility. dark-bg: use on dark backgrounds, light-bg: use on light backgrounds, transparent-bg: has transparent background", + "enum": [ + "dark-bg", + "light-bg", + "transparent-bg" + ], + "type": "string" }, - "texture": { - "type": "object", - "description": "Texture treatment rules", - "properties": { - "style": { - "type": "string", - "enum": ["none", "subtle_grain", "noise", "paper", "fabric", "concrete"], - "description": "Texture style applied to creative assets" - }, - "intensity": { - "type": "string", - "enum": ["low", "medium", "high"], - "description": "Texture intensity" - } - }, - "additionalProperties": true + "height": { + "description": "Height in pixels", + "type": "integer" }, - "backgrounds": { - "type": "object", - "description": "Background treatment rules", - "properties": { - "types_allowed": { - "type": "array", - "items": { - "type": "string", - "enum": ["solid_color", "gradient", "blurred_photo", "image", "video", "pattern", "transparent"] - }, - "description": "Permitted background types" - } + "orientation": { + "description": "Logo aspect ratio orientation. square: ~1:1, horizontal: wide, vertical: tall, stacked: vertically arranged elements", + "enum": [ + "square", + "horizontal", + "vertical", + "stacked" + ], + "type": "string" + }, + "tags": { + "description": "Additional semantic tags for custom categorization beyond the standard orientation, background, and variant fields", + "items": { + "type": "string" }, - "additionalProperties": true - } - }, - "additionalProperties": true - }, - "colorway": { - "type": "object", - "description": "A named color pairing that defines how colors work together. Colorways ensure foreground/background combinations are always on-brand and accessible.", - "properties": { - "name": { - "type": "string", - "description": "Colorway name (e.g., 'primary', 'inverted', 'subtle')" - }, - "foreground": { "$ref": "#/definitions/hex_color" }, - "background": { "$ref": "#/definitions/hex_color" }, - "accent": { "$ref": "#/definitions/hex_color" }, - "border": { "$ref": "#/definitions/hex_color" }, - "cta_foreground": { "$ref": "#/definitions/hex_color", "description": "CTA text/icon color, if different from foreground" }, - "cta_background": { "$ref": "#/definitions/hex_color", "description": "CTA button/container color, if different from accent" }, - "channels": { - "type": "array", - "items": { "type": "string" }, - "description": "Channels or contexts where this colorway applies (e.g., 'online', 'print', 'pos', 'social', 'outdoor'). Omit for universal colorways." + "type": "array" + }, + "url": { + "description": "URL to the logo asset", + "format": "uri", + "type": "string" + }, + "usage": { + "description": "Human-readable description of when to use this logo variant (e.g., 'Primary logo for use on light backgrounds')", + "type": "string" + }, + "variant": { + "description": "Logo variant type. primary: main logo, secondary: alternative, icon: symbol only, wordmark: text only, full-lockup: complete logo", + "enum": [ + "primary", + "secondary", + "icon", + "wordmark", + "full-lockup" + ], + "type": "string" + }, + "width": { + "description": "Width in pixels", + "type": "integer" } }, - "required": ["name", "foreground", "background"], - "additionalProperties": true + "required": [ + "url" + ], + "type": "object" }, - "type_scale_entry": { - "type": "object", - "description": "A single entry in the type scale", + "logo_placement": { + "additionalProperties": true, + "description": "Logo placement and clear space rules for automated creative production", "properties": { - "font": { - "type": "string", - "description": "Font family reference (e.g., 'primary', 'secondary', or a specific family name)" + "background_contrast": { + "description": "Permitted background contrast behind logo", + "enum": [ + "light_only", + "dark_only", + "any" + ], + "type": "string" }, - "size": { "type": "string", "description": "Font size (e.g., '48px', '2rem')" }, - "weight": { "type": "string", "description": "Font weight (e.g., '700', 'bold')" }, - "line_height": { "type": "string", "description": "Line height (e.g., '1.2', '56px')" }, - "letter_spacing": { "type": "string", "description": "Letter spacing (e.g., '-0.02em', '0.5px')" }, - "text_transform": { - "type": "string", - "enum": ["none", "uppercase", "lowercase", "capitalize"], - "description": "Text transformation" + "min_clear_space": { + "description": "Minimum clear space around the logo, expressed as a multiple of logo height (e.g., '0.5x', '1x') or fixed value (e.g., '16px')", + "type": "string" + }, + "min_height": { + "description": "Minimum logo height to maintain legibility (e.g., '40px', '24px')", + "type": "string" + }, + "preferred_position": { + "description": "Preferred logo position in layouts", + "enum": [ + "top-left", + "top-center", + "top-right", + "bottom-left", + "bottom-center", + "bottom-right", + "center" + ], + "type": "string" } }, - "additionalProperties": true + "type": "object" }, "motion_guidelines": { - "type": "object", + "additionalProperties": true, "description": "Motion and animation rules for video, animated display, and interactive formats", "properties": { - "transition_style": { - "type": "string", - "enum": ["cut", "dissolve", "slide", "wipe", "zoom", "fade"], - "description": "Primary transition style between scenes" - }, "animation_speed": { - "type": "string", - "enum": ["slow", "moderate", "fast"], - "description": "Overall animation pacing" + "description": "Overall animation pacing", + "enum": [ + "slow", + "moderate", + "fast" + ], + "type": "string" }, "easing": { - "type": "string", - "description": "Default easing function (e.g., 'ease-in-out', 'spring', 'linear')" + "description": "Default easing function (e.g., 'ease-in-out', 'spring', 'linear')", + "type": "string" }, - "text_entrance": { - "type": "string", - "enum": ["fade", "typewriter", "slide_up", "slide_left", "scale", "none"], - "description": "How text enters the frame" + "kinetic_typography": { + "description": "Whether animated/kinetic typography is allowed", + "type": "boolean" }, "pacing": { - "type": "string", - "enum": ["lingering", "moderate", "fast_cuts"], - "description": "Overall editing rhythm" + "description": "Overall editing rhythm", + "enum": [ + "lingering", + "moderate", + "fast_cuts" + ], + "type": "string" }, - "kinetic_typography": { - "type": "boolean", - "description": "Whether animated/kinetic typography is allowed" + "tags": { + "description": "Additional motion style descriptors", + "items": { + "type": "string" + }, + "type": "array" + }, + "text_entrance": { + "description": "How text enters the frame", + "enum": [ + "fade", + "typewriter", + "slide_up", + "slide_left", + "scale", + "none" + ], + "type": "string" + }, + "transition_style": { + "description": "Primary transition style between scenes", + "enum": [ + "cut", + "dissolve", + "slide", + "wipe", + "zoom", + "fade" + ], + "type": "string" + } + }, + "type": "object" + }, + "photography_style": { + "additionalProperties": true, + "description": "Photography style rules for generative creative systems. Defines how brand photography should look when selected or generated.", + "properties": { + "color_temperature": { + "description": "Overall color temperature of photography", + "enum": [ + "warm", + "neutral", + "cool" + ], + "type": "string" + }, + "contrast": { + "description": "Contrast level in photography", + "enum": [ + "low", + "medium", + "high" + ], + "type": "string" + }, + "depth_of_field": { + "description": "Depth of field preference. shallow: blurred background with subject isolation, deep: everything in focus", + "enum": [ + "shallow", + "medium", + "deep" + ], + "type": "string" + }, + "framing": { + "additionalProperties": true, + "description": "Camera framing rules", + "properties": { + "crop_style": { + "description": "Cropping convention (e.g., 'waist-up', 'full-body', 'close-up', 'wide')", + "type": "string" + }, + "perspective": { + "description": "Camera perspective (e.g., 'eye-level', 'overhead', 'low-angle')", + "type": "string" + }, + "subject_position": { + "description": "Where the subject sits in frame (e.g., 'center', 'center-left', 'rule-of-thirds')", + "type": "string" + } + }, + "type": "object" + }, + "lighting": { + "description": "Lighting style (e.g., 'soft daylight', 'studio', 'golden hour', 'high-key', 'low-key')", + "type": "string" + }, + "preferred_aspect_ratios": { + "description": "Preferred aspect ratios for brand photography (e.g., '16:9', '4:5', '1:1')", + "items": { + "pattern": "^\\d+:\\d+$", + "type": "string" + }, + "type": "array" + }, + "realism": { + "description": "Level of photographic realism", + "enum": [ + "natural", + "stylized", + "hyperreal", + "abstract" + ], + "type": "string" + }, + "subject": { + "additionalProperties": true, + "description": "Subject matter guidelines", + "properties": { + "people": { + "additionalProperties": true, + "description": "People photography guidelines", + "properties": { + "age_range": { + "description": "Target age range (e.g., '20-35')", + "type": "string" + }, + "diversity": { + "description": "Diversity representation (e.g., 'mixed', 'varied')", + "type": "string" + }, + "mood": { + "description": "Mood descriptors (e.g., ['confident', 'relaxed'])", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "product_focus": { + "description": "How products are shown", + "enum": [ + "in-use", + "isolated", + "lifestyle", + "detail" + ], + "type": "string" + }, + "setting": { + "description": "Environmental context for photography (e.g., 'indoor', 'outdoor', 'studio', 'urban', 'nature', 'workplace')", + "type": "string" + } + }, + "type": "object" }, "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Additional motion style descriptors" + "description": "Additional style descriptors", + "items": { + "type": "string" + }, + "type": "array" } }, - "additionalProperties": true + "type": "object" }, - "logo_placement": { - "type": "object", - "description": "Logo placement and clear space rules for automated creative production", + "product_catalog": { + "additionalProperties": true, + "description": "Product catalog for e-commerce brands", "properties": { - "preferred_position": { - "type": "string", - "enum": ["top-left", "top-center", "top-right", "bottom-left", "bottom-center", "bottom-right", "center"], - "description": "Preferred logo position in layouts" + "agentic_checkout": { + "description": "Agentic checkout endpoint configuration", + "properties": { + "endpoint": { + "description": "Base URL for checkout session API", + "format": "uri", + "type": "string" + }, + "spec": { + "description": "Checkout API specification", + "enum": [ + "openai_agentic_checkout_v1" + ], + "type": "string" + }, + "supported_payment_providers": { + "description": "Payment providers supported by this checkout endpoint", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "endpoint", + "spec" + ], + "type": "object" + }, + "categories": { + "description": "Product categories available in the catalog", + "items": { + "type": "string" + }, + "type": "array" + }, + "feed_format": { + "description": "Format of the product feed", + "enum": [ + "google_merchant_center", + "facebook_catalog", + "openai_product_feed", + "custom" + ], + "type": "string" + }, + "feed_url": { + "description": "URL to product catalog feed", + "format": "uri", + "type": "string" + }, + "last_updated": { + "description": "When the product catalog was last updated", + "format": "date-time", + "type": "string" + }, + "update_frequency": { + "description": "How frequently the product catalog is updated", + "enum": [ + "realtime", + "hourly", + "daily", + "weekly" + ], + "type": "string" + } + }, + "required": [ + "feed_url" + ], + "type": "object" + }, + "property": { + "additionalProperties": true, + "description": "A digital property owned by a brand", + "properties": { + "identifier": { + "description": "Property identifier - domain for websites, bundle ID for apps", + "minLength": 1, + "type": "string" }, - "min_clear_space": { - "type": "string", - "description": "Minimum clear space around the logo, expressed as a multiple of logo height (e.g., '0.5x', '1x') or fixed value (e.g., '16px')" + "primary": { + "default": false, + "description": "Whether this is the primary property for the brand", + "type": "boolean" }, - "min_height": { - "type": "string", - "description": "Minimum logo height to maintain legibility (e.g., '40px', '24px')" + "region": { + "description": "ISO 3166-1 alpha-2 country code or 'global'", + "pattern": "^([A-Z]{2}|global)$", + "type": "string" }, - "background_contrast": { - "type": "string", - "enum": ["light_only", "dark_only", "any"], - "description": "Permitted background contrast behind logo" + "store": { + "description": "App store for mobile/CTV apps", + "enum": [ + "apple", + "google", + "amazon", + "roku", + "samsung", + "lg", + "other" + ], + "type": "string" + }, + "type": { + "description": "Property type", + "enum": [ + "website", + "mobile_app", + "ctv_app", + "desktop_app", + "dooh", + "podcast", + "radio", + "streaming_audio" + ], + "type": "string" } }, - "additionalProperties": true + "required": [ + "type", + "identifier" + ], + "type": "object" }, - "graphic_element": { - "type": "object", - "description": "A reusable decorative or structural visual element that is part of the brand identity (e.g., torn paper edges, watermarks, dividers, background patterns)", + "rights_agent": { + "additionalProperties": true, + "description": "Rights licensing agent for this brand. Provides discovery, pricing, and acquisition of licensable rights via MCP. Use get_rights and acquire_rights tasks to interact.", "properties": { - "name": { - "type": "string", - "description": "Element name (e.g., 'Paper Tear', 'Brand Watermark', 'Section Divider')" - }, - "type": { - "type": "string", - "enum": ["border", "divider", "frame", "watermark", "pattern", "texture_overlay", "decorative"], - "description": "Element type" + "available_uses": { + "description": "Rights uses available for licensing through this agent", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "minItems": 1, + "type": "array" }, - "description": { - "type": "string", - "description": "How the element is used in layouts" + "countries": { + "description": "Countries where rights are available (ISO 3166-1 alpha-2)", + "items": { + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, - "orientation": { - "type": "string", - "enum": ["horizontal", "vertical", "any"], - "description": "Preferred orientation when used in layouts" + "id": { + "description": "Agent identifier", + "pattern": "^[a-z0-9_]+$", + "type": "string" }, - "colors": { - "type": "array", - "items": { "$ref": "#/definitions/hex_color" }, - "description": "Colors this element may appear in" + "right_types": { + "description": "Types of rights available", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-type.json" + }, + "minItems": 1, + "type": "array" }, - "max_per_layout": { - "type": "integer", - "description": "Maximum instances per layout" + "url": { + "description": "Rights agent MCP endpoint URL", + "format": "uri", + "pattern": "^https://", + "type": "string" } }, - "required": ["name"], - "additionalProperties": true + "required": [ + "url", + "id", + "available_uses" + ], + "type": "object" }, - "asset_library": { - "type": "object", - "description": "A managed asset library (icon set, illustration system, image collection). The URL is for human access; agent-facing DAM integration is under investigation.", + "type_scale_entry": { + "additionalProperties": true, + "description": "A single entry in the type scale", "properties": { - "name": { - "type": "string", - "description": "Display name of the asset library" + "font": { + "description": "Font family reference (e.g., 'primary', 'secondary', or a specific family name)", + "type": "string" }, - "type": { - "type": "string", - "enum": ["icon_set", "illustration_system", "image_library", "video_library", "template_library"], - "description": "Type of asset library" + "letter_spacing": { + "description": "Letter spacing (e.g., '-0.02em', '0.5px')", + "type": "string" }, - "url": { - "type": "string", - "format": "uri", - "description": "URL to the asset library (for human access)" + "line_height": { + "description": "Line height (e.g., '1.2', '56px')", + "type": "string" }, - "description": { - "type": "string", - "description": "Description of the library contents and usage" + "size": { + "description": "Font size (e.g., '48px', '2rem')", + "type": "string" }, - "color_guide": { - "type": "object", - "description": "Color guide for the asset library defining roles and palettes", - "properties": { - "roles": { - "type": "array", - "items": { "type": "string" }, - "description": "Named color roles used in the library (e.g., base, shadow_1, highlight_1, stroke)" - }, - "palettes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Palette name" - }, - "colors": { - "type": "object", - "additionalProperties": { "$ref": "#/definitions/hex_color" }, - "description": "Map of role names to hex color values" - } - }, - "required": ["name", "colors"], - "additionalProperties": true - }, - "description": "Named color palettes mapping roles to specific colors" - } - }, - "additionalProperties": true + "text_transform": { + "description": "Text transformation", + "enum": [ + "none", + "uppercase", + "lowercase", + "capitalize" + ], + "type": "string" + }, + "weight": { + "description": "Font weight (e.g., '700', 'bold')", + "type": "string" } }, - "required": ["name", "url"], - "additionalProperties": true + "type": "object" }, "visual_guidelines": { - "type": "object", + "additionalProperties": true, "description": "Structured visual rules for generative creative systems. Defines how brand photography, graphics, typography, and composition should be produced to maintain brand consistency at scale.", "properties": { - "photography": { "$ref": "#/definitions/photography_style" }, - "graphic_style": { "$ref": "#/definitions/graphic_style" }, - "shapes": { "$ref": "#/definitions/brand_shapes" }, - "iconography": { "$ref": "#/definitions/iconography" }, - "composition": { "$ref": "#/definitions/composition_rules" }, - "graphic_elements": { - "type": "array", - "items": { "$ref": "#/definitions/graphic_element" }, - "description": "Reusable decorative elements that are part of the brand visual identity (e.g., torn paper edges, watermarks, dividers)" + "asset_libraries": { + "description": "References to managed asset libraries (icon sets, illustration systems, image collections). URLs are intended for human access; agent-facing DAM integration is under investigation.", + "items": { + "$ref": "#/definitions/asset_library" + }, + "type": "array" }, - "motion": { "$ref": "#/definitions/motion_guidelines" }, - "logo_placement": { "$ref": "#/definitions/logo_placement" }, "colorways": { - "type": "array", - "items": { "$ref": "#/definitions/colorway" }, - "description": "Named color pairings for consistent foreground/background combinations" - }, - "type_scale": { - "type": "object", - "description": "Typography scale defining sizes and weights for different text roles. When sizes are in px, use base_width to indicate the reference canvas.", - "properties": { - "base_width": { - "type": "string", - "description": "Reference canvas width these sizes were designed for (e.g., '1080px'). Generative systems should scale proportionally for other canvas sizes." - }, - "heading": { "$ref": "#/definitions/type_scale_entry" }, - "subheading": { "$ref": "#/definitions/type_scale_entry" }, - "body": { "$ref": "#/definitions/type_scale_entry" }, - "caption": { "$ref": "#/definitions/type_scale_entry" }, - "cta": { "$ref": "#/definitions/type_scale_entry" } + "description": "Named color pairings for consistent foreground/background combinations", + "items": { + "$ref": "#/definitions/colorway" }, - "additionalProperties": { "$ref": "#/definitions/type_scale_entry" } + "type": "array" }, - "asset_libraries": { - "type": "array", - "items": { "$ref": "#/definitions/asset_library" }, - "description": "References to managed asset libraries (icon sets, illustration systems, image collections). URLs are intended for human access; agent-facing DAM integration is under investigation." + "composition": { + "$ref": "#/definitions/composition_rules" }, - "restrictions": { - "type": "array", - "items": { "type": "string" }, - "description": "Visual prohibitions and guardrails (e.g., 'Never use black backgrounds', 'Do not crop the logo', 'No stock photography of people on phones')" - } - }, - "additionalProperties": true - }, - "contact": { - "type": "object", - "description": "Contact information", - "properties": { - "name": { "type": "string", "minLength": 1, "maxLength": 255 }, - "email": { "type": "string", "format": "email", "maxLength": 255 }, - "domain": { "$ref": "#/definitions/domain" } - }, - "required": ["name"], - "additionalProperties": true - } - }, - "oneOf": [ - { - "type": "object", - "title": "Authoritative Location Redirect", - "description": "Redirects to a hosted brand.json file at another URL", - "properties": { - "$schema": { "type": "string" }, - "authoritative_location": { - "type": "string", - "format": "uri", - "pattern": "^https://", - "description": "HTTPS URL of the authoritative brand.json file" + "graphic_elements": { + "description": "Reusable decorative elements that are part of the brand visual identity (e.g., torn paper edges, watermarks, dividers)", + "items": { + "$ref": "#/definitions/graphic_element" + }, + "type": "array" }, - "last_updated": { "type": "string", "format": "date-time" } - }, - "required": ["authoritative_location"], - "additionalProperties": false - }, - { - "type": "object", - "title": "House Redirect", - "description": "Redirects to the house domain that contains the full brand portfolio", - "properties": { - "$schema": { "type": "string" }, - "house": { - "$ref": "#/definitions/domain", - "description": "House domain to fetch brand portfolio from" + "graphic_style": { + "$ref": "#/definitions/graphic_style" }, - "region": { - "type": "string", - "pattern": "^[A-Z]{2}$", - "description": "ISO 3166-1 alpha-2 country code if this is a regional domain" + "iconography": { + "$ref": "#/definitions/iconography" }, - "note": { "type": "string" }, - "last_updated": { "type": "string", "format": "date-time" } - }, - "required": ["house"], - "additionalProperties": false - }, - { - "type": "object", - "title": "Brand Agent", - "description": "Brand with an agent that provides brand info via MCP", - "properties": { - "$schema": { "type": "string" }, - "version": { "type": "string" }, - "brand_agent": { "$ref": "#/definitions/brand_agent" }, - "contact": { "$ref": "#/definitions/contact" }, - "last_updated": { "type": "string", "format": "date-time" } - }, - "required": ["brand_agent"], - "additionalProperties": false - }, - { - "type": "object", - "title": "House Portfolio", - "description": "Full house/brand portfolio with hierarchy, creative assets, and properties", - "properties": { - "$schema": { "type": "string" }, - "version": { "type": "string" }, - "house": { "$ref": "#/definitions/house" }, - "brands": { - "type": "array", - "description": "Brands owned by this house", - "items": { "$ref": "#/definitions/brand" }, - "minItems": 1 + "logo_placement": { + "$ref": "#/definitions/logo_placement" }, - "contact": { "$ref": "#/definitions/contact" }, - "authorized_operators": { - "type": "array", - "description": "Entities authorized to represent brands from this house. Third parties (sellers, platforms) can verify an operator's authorization by checking this list. Operators are identified by domain.", - "items": { "$ref": "#/definitions/authorized_operator" } + "motion": { + "$ref": "#/definitions/motion_guidelines" }, - "trademarks": { - "type": "array", + "photography": { + "$ref": "#/definitions/photography_style" + }, + "restrictions": { + "description": "Visual prohibitions and guardrails (e.g., 'Never use black backgrounds', 'Do not crop the logo', 'No stock photography of people on phones')", "items": { - "type": "object", - "properties": { - "registry": { "type": "string" }, - "number": { "type": "string" }, - "mark": { "type": "string" } - }, - "required": ["registry", "number", "mark"], - "additionalProperties": true - } + "type": "string" + }, + "type": "array" }, - "last_updated": { "type": "string", "format": "date-time" } + "shapes": { + "$ref": "#/definitions/brand_shapes" + }, + "type_scale": { + "additionalProperties": { + "$ref": "#/definitions/type_scale_entry" + }, + "description": "Typography scale defining sizes and weights for different text roles. When sizes are in px, use base_width to indicate the reference canvas.", + "properties": { + "base_width": { + "description": "Reference canvas width these sizes were designed for (e.g., '1080px'). Generative systems should scale proportionally for other canvas sizes.", + "type": "string" + }, + "body": { + "$ref": "#/definitions/type_scale_entry" + }, + "caption": { + "$ref": "#/definitions/type_scale_entry" + }, + "cta": { + "$ref": "#/definitions/type_scale_entry" + }, + "heading": { + "$ref": "#/definitions/type_scale_entry" + }, + "subheading": { + "$ref": "#/definitions/type_scale_entry" + } + }, + "type": "object" + } }, - "required": ["house", "brands"], - "additionalProperties": false + "type": "object" } - ], + }, + "description": "Brand identity and discovery file. Hosted at /.well-known/brand.json on house domains. Contains the full brand portfolio with identity, creative assets, and digital properties. Brands are identified by house + brand_id (like properties are identified by publisher + property_id). Supports variants: house portfolio (full brand data), brand agent (agent provides brand info via MCP), house redirect (pointer to house domain), or authoritative location redirect.", "examples": [ { - "$schema": "/schemas/3.0.0-rc.2/brand.json", + "$schema": "/schemas/3.0.0-rc.3/brand.json", "authoritative_location": "https://adcontextprotocol.org/brand/abc123/brand.json" }, { - "$schema": "/schemas/3.0.0-rc.2/brand.json", + "$schema": "/schemas/3.0.0-rc.3/brand.json", "house": "nikeinc.com", "note": "Redirect to house domain for full brand portfolio" }, { - "$schema": "/schemas/3.0.0-rc.2/brand.json", - "version": "1.0", + "$schema": "/schemas/3.0.0-rc.3/brand.json", "brand_agent": { - "url": "https://agent.acme.com/mcp", - "id": "acme_brand_agent" - } + "id": "acme_brand_agent", + "url": "https://agent.acme.com/mcp" + }, + "version": "1.0" }, { - "$schema": "/schemas/3.0.0-rc.2/brand.json", - "version": "1.0", - "house": { - "domain": "pg.com", - "name": "Procter & Gamble", - "architecture": "house_of_brands" - }, + "$schema": "/schemas/3.0.0-rc.3/brand.json", "brands": [ { + "colors": { + "primary": "#FF6600", + "secondary": "#0066CC" + }, + "contact": { + "email": "brands@pg.com" + }, + "description": "Laundry detergent brand", "id": "tide", - "url": "https://tide.com", - "names": [{"en": "Tide"}, {"es": "Tide"}, {"zh": "汰渍"}], + "industries": [ + "cpg" + ], "keller_type": "master", - "industry": "cpg", - "description": "Laundry detergent brand", "logos": [ { - "url": "https://cdn.pg.com/tide/logo-square.png", - "orientation": "square", "background": "transparent-bg", - "variant": "primary", - "usage": "Primary logo for general use" + "orientation": "square", + "url": "https://cdn.pg.com/tide/logo-square.png", + "usage": "Primary logo for general use", + "variant": "primary" }, { - "url": "https://cdn.pg.com/tide/logo-horizontal-dark.png", - "orientation": "horizontal", "background": "dark-bg", - "variant": "full-lockup", - "usage": "Full lockup for dark backgrounds" + "orientation": "horizontal", + "url": "https://cdn.pg.com/tide/logo-horizontal-dark.png", + "usage": "Full lockup for dark backgrounds", + "variant": "full-lockup" + } + ], + "names": [ + { + "en_US": "Tide" + }, + { + "es_MX": "Tide" + }, + { + "zh_CN": "\u6c70\u6e0d" + } + ], + "properties": [ + { + "identifier": "tide.com", + "primary": true, + "type": "website" + }, + { + "identifier": "com.pg.tide", + "store": "apple", + "type": "mobile_app" + } + ], + "tagline": [ + { + "en_US": "Tide's In, Dirt's Out" } ], - "colors": {"primary": "#FF6600", "secondary": "#0066CC"}, "tone": { - "voice": "clean, fresh, trustworthy", - "attributes": ["reliable", "family-friendly", "confident"], - "dos": ["Use simple, direct language", "Emphasize cleaning power"], - "donts": ["Avoid technical jargon", "Don't be overly serious"] + "attributes": [ + "reliable", + "family-friendly", + "confident" + ], + "donts": [ + "Avoid technical jargon", + "Don't be overly serious" + ], + "dos": [ + "Use simple, direct language", + "Emphasize cleaning power" + ], + "voice": "clean, fresh, trustworthy" }, - "tagline": "Tide's In, Dirt's Out", + "url": "https://tide.com", "visual_guidelines": { - "photography": { - "realism": "natural", - "lighting": "soft daylight", - "color_temperature": "warm", - "contrast": "medium", - "depth_of_field": "medium", - "subject": { - "people": { - "age_range": "25-45", - "diversity": "mixed", - "mood": ["confident", "relaxed", "happy"] - }, - "product_focus": "in-use", - "setting": "indoor" + "colorways": [ + { + "accent": "#0066CC", + "background": "#FF6600", + "foreground": "#FFFFFF", + "name": "primary" }, - "framing": { - "subject_position": "center", - "crop_style": "waist-up", - "perspective": "eye-level" + { + "accent": "#0066CC", + "background": "#FFFFFF", + "border": "#FF6600", + "foreground": "#FF6600", + "name": "inverted" + } + ], + "composition": { + "backgrounds": { + "types_allowed": [ + "solid_color", + "gradient", + "blurred_photo" + ] + }, + "overlays": { + "gradient_direction": "180deg", + "gradient_style": "linear", + "opacity": "60%" }, - "preferred_aspect_ratios": ["16:9", "4:5", "1:1"] + "texture": { + "style": "none" + } }, "graphic_style": { - "style_type": "flat_illustration", + "corner_radius": "12px", "stroke_style": "rounded", "stroke_weight": "2px", - "corner_radius": "12px" - }, - "shapes": { - "primary_shape": "circle", - "secondary_shapes": ["rounded_rectangle"], - "usage": { - "max_per_layout": 2, - "overlap_allowed": false - } + "style_type": "flat_illustration" }, "iconography": { - "style": "outline", - "stroke_weight": "2px", "corner_style": "rounded", + "stroke_weight": "2px", + "style": "outline", "usage": { "max_per_frame": 3, "size_ratio": "1:8" } }, - "composition": { - "overlays": { - "gradient_style": "linear", - "gradient_direction": "180deg", - "opacity": "60%" - }, - "texture": { - "style": "none" - }, - "backgrounds": { - "types_allowed": ["solid_color", "gradient", "blurred_photo"] - } + "logo_placement": { + "background_contrast": "any", + "min_clear_space": "0.5x", + "min_height": "32px", + "preferred_position": "bottom-right" }, "motion": { - "transition_style": "dissolve", "animation_speed": "moderate", "easing": "ease-in-out", - "text_entrance": "fade", + "kinetic_typography": false, "pacing": "moderate", - "kinetic_typography": false - }, - "logo_placement": { - "preferred_position": "bottom-right", - "min_clear_space": "0.5x", - "min_height": "32px", - "background_contrast": "any" + "text_entrance": "fade", + "transition_style": "dissolve" }, - "colorways": [ - { - "name": "primary", - "foreground": "#FFFFFF", - "background": "#FF6600", - "accent": "#0066CC" + "photography": { + "color_temperature": "warm", + "contrast": "medium", + "depth_of_field": "medium", + "framing": { + "crop_style": "waist-up", + "perspective": "eye-level", + "subject_position": "center" }, - { - "name": "inverted", - "foreground": "#FF6600", - "background": "#FFFFFF", - "accent": "#0066CC", - "border": "#FF6600" + "lighting": "soft daylight", + "preferred_aspect_ratios": [ + "16:9", + "4:5", + "1:1" + ], + "realism": "natural", + "subject": { + "people": { + "age_range": "25-45", + "diversity": "mixed", + "mood": [ + "confident", + "relaxed", + "happy" + ] + }, + "product_focus": "in-use", + "setting": "indoor" } + }, + "restrictions": [ + "Never place text over the product", + "Do not use black backgrounds", + "No stock photography of people on phones" ], + "shapes": { + "primary_shape": "circle", + "secondary_shapes": [ + "rounded_rectangle" + ], + "usage": { + "max_per_layout": 2, + "overlap_allowed": false + } + }, "type_scale": { "base_width": "1080px", - "heading": { - "font": "primary", - "size": "48px", - "weight": "700", - "line_height": "1.1", - "text_transform": "none" - }, - "subheading": { - "font": "primary", - "size": "24px", - "weight": "600", - "line_height": "1.3" - }, "body": { "font": "secondary", + "line_height": "1.5", "size": "16px", - "weight": "400", - "line_height": "1.5" + "weight": "400" }, "cta": { "font": "primary", + "letter_spacing": "0.05em", "size": "18px", - "weight": "700", "text_transform": "uppercase", - "letter_spacing": "0.05em" + "weight": "700" + }, + "heading": { + "font": "primary", + "line_height": "1.1", + "size": "48px", + "text_transform": "none", + "weight": "700" + }, + "subheading": { + "font": "primary", + "line_height": "1.3", + "size": "24px", + "weight": "600" } - }, - "restrictions": [ - "Never place text over the product", - "Do not use black backgrounds", - "No stock photography of people on phones" - ] - }, - "properties": [ - {"type": "website", "identifier": "tide.com", "primary": true}, - {"type": "mobile_app", "store": "apple", "identifier": "com.pg.tide"} - ], - "contact": { - "email": "brands@pg.com" + } } }, { + "colors": { + "primary": "#00A0D2" + }, "id": "pampers", - "url": "https://pampers.com", - "names": [{"en": "Pampers"}], + "industries": [ + "cpg" + ], "keller_type": "master", - "industry": "cpg", "logos": [ { - "url": "https://cdn.pg.com/pampers/logo.png", "orientation": "horizontal", + "url": "https://cdn.pg.com/pampers/logo.png", "variant": "primary" } ], - "colors": {"primary": "#00A0D2"}, + "names": [ + { + "en_US": "Pampers" + } + ], "properties": [ - {"type": "website", "identifier": "pampers.com", "primary": true} - ] + { + "identifier": "pampers.com", + "primary": true, + "type": "website" + } + ], + "url": "https://pampers.com" } ], "contact": { - "name": "P&G Brand Team", - "email": "brands@pg.com" + "email": "brands@pg.com", + "name": "P&G Brand Team" }, - "last_updated": "2026-01-15T10:00:00Z" - }, - { - "$schema": "/schemas/3.0.0-rc.2/brand.json", - "version": "1.0", "house": { - "domain": "nikeinc.com", - "name": "Nike, Inc.", - "architecture": "hybrid" + "architecture": "house_of_brands", + "domain": "pg.com", + "name": "Procter & Gamble" }, + "last_updated": "2026-01-15T10:00:00Z", + "version": "1.0" + }, + { + "$schema": "/schemas/3.0.0-rc.3/brand.json", + "authorized_operators": [ + { + "brands": [ + "nike", + "air_jordan" + ], + "countries": [ + "US", + "GB", + "DE", + "FR" + ], + "domain": "wpp.com" + }, + { + "brands": [ + "nike" + ], + "countries": [ + "JP" + ], + "domain": "dentsu.co.jp" + }, + { + "brands": [ + "*" + ], + "domain": "nike.com" + } + ], "brands": [ { + "colors": { + "accent": "#FF6600", + "primary": "#111111" + }, "id": "nike", - "url": "https://nike.com", - "names": [{"en": "Nike"}, {"zh": "耐克"}, {"ja": "ナイキ"}], "keller_type": "master", "logos": [ { - "url": "https://cdn.nike.com/swoosh-dark.svg", - "orientation": "horizontal", "background": "dark-bg", - "variant": "icon", - "usage": "Swoosh icon for dark backgrounds" + "orientation": "horizontal", + "url": "https://cdn.nike.com/swoosh-dark.svg", + "usage": "Swoosh icon for dark backgrounds", + "variant": "icon" }, { - "url": "https://cdn.nike.com/logo-full.svg", - "orientation": "horizontal", "background": "light-bg", - "variant": "full-lockup", - "usage": "Full logo with wordmark for light backgrounds" + "orientation": "horizontal", + "url": "https://cdn.nike.com/logo-full.svg", + "usage": "Full logo with wordmark for light backgrounds", + "variant": "full-lockup" + } + ], + "names": [ + { + "en_US": "Nike" + }, + { + "zh_CN": "\u8010\u514b" + }, + { + "ja_JP": "\u30ca\u30a4\u30ad" } ], - "colors": {"primary": "#111111", "accent": "#FF6600"}, - "tone": "inspirational, bold, athletic", - "tagline": "Just Do It", "properties": [ - {"type": "website", "identifier": "nike.com", "primary": true}, - {"type": "website", "identifier": "nike.cn", "region": "CN"}, - {"type": "mobile_app", "store": "apple", "identifier": "com.nike.omega"} - ] + { + "identifier": "nike.com", + "primary": true, + "type": "website" + }, + { + "identifier": "nike.cn", + "region": "CN", + "type": "website" + }, + { + "identifier": "com.nike.omega", + "store": "apple", + "type": "mobile_app" + } + ], + "tagline": [ + { + "en_US": "Just Do It" + } + ], + "tone": "inspirational, bold, athletic", + "url": "https://nike.com" }, { + "brand_agent": { + "id": "nike_dam", + "url": "https://dam.nike.com/mcp" + }, + "colors": { + "primary": "#CE1141", + "secondary": "#111111" + }, "id": "air_jordan", - "url": "https://jordan.com", - "names": [{"en": "Air Jordan"}, {"en": "Jordan"}, {"en": "Jumpman"}], "keller_type": "endorsed", - "parent_brand": "nike", "logos": [ { - "url": "https://cdn.nike.com/jumpman.svg", - "orientation": "square", "background": "transparent-bg", + "orientation": "square", + "url": "https://cdn.nike.com/jumpman.svg", "variant": "icon" } ], - "colors": {"primary": "#CE1141", "secondary": "#111111"}, + "names": [ + { + "en_US": "Air Jordan" + }, + { + "en_US": "Jordan" + }, + { + "en_US": "Jumpman" + } + ], + "parent_brand": "nike", "properties": [ - {"type": "website", "identifier": "jordan.com", "primary": true}, - {"type": "website", "identifier": "jumpman23.com"} + { + "identifier": "jordan.com", + "primary": true, + "type": "website" + }, + { + "identifier": "jumpman23.com", + "type": "website" + } ], - "brand_agent": { - "url": "https://dam.nike.com/mcp", - "id": "nike_dam" - } + "url": "https://jordan.com" }, { "id": "converse", - "url": "https://converse.com", - "names": [{"en": "Converse"}], "keller_type": "independent", "logos": [ { - "url": "https://cdn.converse.com/star.svg", "orientation": "square", + "url": "https://cdn.converse.com/star.svg", "variant": "icon" } ], + "names": [ + { + "en_US": "Converse" + } + ], "properties": [ - {"type": "website", "identifier": "converse.com", "primary": true} - ] + { + "identifier": "converse.com", + "primary": true, + "type": "website" + } + ], + "url": "https://converse.com" } ], - "authorized_operators": [ - { - "domain": "wpp.com", - "brands": ["nike", "air_jordan"], - "countries": ["US", "GB", "DE", "FR"] + "house": { + "architecture": "hybrid", + "domain": "nikeinc.com", + "name": "Nike, Inc." + }, + "last_updated": "2026-01-15T10:00:00Z", + "version": "1.0" + } + ], + "oneOf": [ + { + "additionalProperties": false, + "description": "Redirects to a hosted brand.json file at another URL", + "properties": { + "$schema": { + "type": "string" }, - { - "domain": "dentsu.co.jp", - "brands": ["nike"], - "countries": ["JP"] + "authoritative_location": { + "description": "HTTPS URL of the authoritative brand.json file", + "format": "uri", + "pattern": "^https://", + "type": "string" }, - { - "domain": "nike.com", - "brands": ["*"] + "last_updated": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "authoritative_location" + ], + "title": "Authoritative Location Redirect", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Redirects to the house domain that contains the full brand portfolio", + "properties": { + "$schema": { + "type": "string" + }, + "house": { + "$ref": "#/definitions/domain", + "description": "House domain to fetch brand portfolio from" + }, + "last_updated": { + "format": "date-time", + "type": "string" + }, + "note": { + "type": "string" + }, + "region": { + "description": "ISO 3166-1 alpha-2 country code if this is a regional domain", + "pattern": "^[A-Z]{2}$", + "type": "string" + } + }, + "required": [ + "house" + ], + "title": "House Redirect", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Brand with an agent that provides brand info via MCP", + "properties": { + "$schema": { + "type": "string" + }, + "brand_agent": { + "$ref": "#/definitions/brand_agent" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "last_updated": { + "format": "date-time", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "brand_agent" + ], + "title": "Brand Agent", + "type": "object" + }, + { + "additionalProperties": false, + "description": "Full house/brand portfolio with hierarchy, creative assets, and properties", + "properties": { + "$schema": { + "type": "string" + }, + "authorized_operators": { + "description": "Entities authorized to represent brands from this house. Third parties (sellers, platforms) can verify an operator's authorization by checking this list. Operators are identified by domain.", + "items": { + "$ref": "#/definitions/authorized_operator" + }, + "type": "array" + }, + "brands": { + "description": "Brands owned by this house", + "items": { + "$ref": "#/definitions/brand" + }, + "minItems": 1, + "type": "array" + }, + "contact": { + "$ref": "#/definitions/contact" + }, + "house": { + "$ref": "#/definitions/house" + }, + "last_updated": { + "format": "date-time", + "type": "string" + }, + "trademarks": { + "items": { + "additionalProperties": true, + "properties": { + "mark": { + "type": "string" + }, + "number": { + "type": "string" + }, + "registry": { + "type": "string" + } + }, + "required": [ + "registry", + "number", + "mark" + ], + "type": "object" + }, + "type": "array" + }, + "version": { + "type": "string" } + }, + "required": [ + "house", + "brands" ], - "last_updated": "2026-01-15T10:00:00Z" + "title": "House Portfolio", + "type": "object" } - ] -} + ], + "title": "Brand Discovery" +} \ No newline at end of file diff --git a/schemas/cache/brand/acquire-rights-request.json b/schemas/cache/brand/acquire-rights-request.json index 78bad666..7b6843a7 100644 --- a/schemas/cache/brand/acquire-rights-request.json +++ b/schemas/cache/brand/acquire-rights-request.json @@ -1,89 +1,102 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/acquire-rights-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/acquire-rights-request.json", - "title": "Acquire Rights Request", - "description": "Binding contractual request to acquire rights from a brand agent. Parallels create_media_buy — the buyer selects a pricing_option_id from a get_rights response and provides campaign details. The agent clears against existing contracts and returns terms, generation credentials, and disclosure requirements.", - "type": "object", + "additionalProperties": true, + "description": "Binding contractual request to acquire rights from a brand agent. Parallels create_media_buy \u2014 the buyer selects a pricing_option_id from a get_rights response and provides campaign details. The agent clears against existing contracts and returns terms, generation credentials, and disclosure requirements.", "properties": { - "rights_id": { - "type": "string", - "description": "Rights offering identifier from get_rights response" - }, - "pricing_option_id": { - "type": "string", - "description": "Selected pricing option from the rights offering" - }, "buyer": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", "description": "The buyer's brand identity" }, "campaign": { - "type": "object", + "additionalProperties": true, "description": "Campaign details for rights clearance", "properties": { - "description": { - "type": "string", - "description": "Description of how the rights will be used" - }, - "uses": { - "type": "array", - "description": "Specific rights uses for this campaign", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" }, - "minItems": 1 - }, "countries": { - "type": "array", "description": "Countries where the campaign will run (ISO 3166-1 alpha-2)", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, - "format_ids": { - "type": "array", - "description": "Creative formats that will be produced", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/format-id.json" } + "description": { + "description": "Description of how the rights will be used", + "type": "string" + }, + "end_date": { + "description": "Campaign end date (ISO 8601)", + "format": "date", + "type": "string" }, "estimated_impressions": { - "type": "integer", + "description": "Estimated total impressions for the campaign", "minimum": 0, - "description": "Estimated total impressions for the campaign" + "type": "integer" + }, + "format_ids": { + "description": "Creative formats that will be produced", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/format-id.json" + }, + "type": "array" }, "start_date": { - "type": "string", + "description": "Campaign start date (ISO 8601)", "format": "date", - "description": "Campaign start date (ISO 8601)" + "type": "string" }, - "end_date": { - "type": "string", - "format": "date", - "description": "Campaign end date (ISO 8601)" + "uses": { + "description": "Specific rights uses for this campaign", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "minItems": 1, + "type": "array" } }, - "required": ["description", "uses"], - "additionalProperties": true + "required": [ + "description", + "uses" + ], + "type": "object" }, - "revocation_webhook": { - "$ref": "/schemas/3.0.0-rc.2/core/push-notification-config.json", - "description": "Webhook for rights revocation notifications. If the rights holder needs to revoke rights (talent scandal, contract violation, etc.), they POST a revocation-notification to this URL. The buyer is responsible for stopping creative delivery upon receipt." + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, - "push_notification_config": { - "$ref": "/schemas/3.0.0-rc.2/core/push-notification-config.json", - "description": "Webhook for async status updates if the acquisition requires approval. The rights agent sends a webhook notification when the status transitions to acquired or rejected." + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "idempotency_key": { - "type": "string", - "description": "Client-generated key for safe retries. Resubmitting with the same key returns the original response rather than creating a duplicate acquisition.", - "minLength": 8, - "maxLength": 255 + "description": "Client-generated key for safe retries. Resubmitting with the same key returns the original response rather than creating a duplicate acquisition. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.", + "maxLength": 255, + "minLength": 16, + "type": "string" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "pricing_option_id": { + "description": "Selected pricing option from the rights offering", + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "push_notification_config": { + "$ref": "/schemas/3.0.0-rc.3/core/push-notification-config.json", + "description": "Webhook for async status updates if the acquisition requires approval. The rights agent sends a webhook notification when the status transitions to acquired or rejected." + }, + "revocation_webhook": { + "$ref": "/schemas/3.0.0-rc.3/core/push-notification-config.json", + "description": "Webhook for rights revocation notifications. If the rights holder needs to revoke rights (talent scandal, contract violation, etc.), they POST a revocation-notification to this URL. The buyer is responsible for stopping creative delivery upon receipt." + }, + "rights_id": { + "description": "Rights offering identifier from get_rights response", + "type": "string" } }, - "required": ["rights_id", "pricing_option_id", "buyer", "campaign", "revocation_webhook"], - "additionalProperties": true -} + "required": [ + "rights_id", + "pricing_option_id", + "buyer", + "campaign", + "revocation_webhook" + ], + "title": "Acquire Rights Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/acquire-rights-response.json b/schemas/cache/brand/acquire-rights-response.json index e3912a92..020cb79e 100644 --- a/schemas/cache/brand/acquire-rights-response.json +++ b/schemas/cache/brand/acquire-rights-response.json @@ -1,171 +1,213 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/acquire-rights-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/acquire-rights-response.json", - "title": "Acquire Rights Response", "description": "Result of a rights acquisition request. Returns one of three statuses: acquired (with terms and generation credentials), pending_approval (requires rights holder review), or rejected (with reason). Uses discriminated union on status field.", - "type": "object", "oneOf": [ { - "title": "AcquireRightsAcquired", + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + }, "properties": { - "rights_id": { - "type": "string", - "description": "Rights grant identifier" - }, - "status": { - "type": "string", - "const": "acquired", - "description": "Rights have been cleared and credentials issued" + "approval_webhook": { + "$ref": "/schemas/3.0.0-rc.3/core/push-notification-config.json", + "description": "Authenticated webhook for submitting creatives for approval. POST a creative-approval-request to the URL using the provided authentication. The response is a creative-approval-response." }, "brand_id": { - "type": "string", - "description": "Brand identifier of the rights subject" - }, - "terms": { - "$ref": "/schemas/3.0.0-rc.2/brand/rights-terms.json", - "description": "Agreed contractual terms" - }, - "generation_credentials": { - "type": "array", - "description": "Scoped credentials for generating rights-cleared content", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/generation-credential.json" - } + "description": "Brand identifier of the rights subject", + "type": "string" }, - "restrictions": { - "type": "array", - "description": "Usage restrictions and requirements", - "items": { "type": "string" } + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "disclosure": { - "type": "object", + "additionalProperties": true, "description": "Required disclosure for creatives using these rights", "properties": { "required": { - "type": "boolean", - "description": "Whether disclosure is required" + "description": "Whether disclosure is required", + "type": "boolean" }, "text": { - "type": "string", - "description": "Disclosure text to include with the creative" + "description": "Disclosure text to include with the creative", + "type": "string" } }, - "required": ["required"], - "additionalProperties": true + "required": [ + "required" + ], + "type": "object" }, - "approval_webhook": { - "$ref": "/schemas/3.0.0-rc.2/core/push-notification-config.json", - "description": "Authenticated webhook for submitting creatives for approval. POST a creative-approval-request to the URL using the provided authentication. The response is a creative-approval-response." + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, - "usage_reporting_url": { - "type": "string", - "format": "uri", - "description": "Endpoint for reporting usage against these rights" + "generation_credentials": { + "description": "Scoped credentials for generating rights-cleared content", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/generation-credential.json" + }, + "type": "array" + }, + "restrictions": { + "description": "Usage restrictions and requirements", + "items": { + "type": "string" + }, + "type": "array" }, "rights_constraint": { - "$ref": "/schemas/3.0.0-rc.2/core/rights-constraint.json", - "description": "Pre-built rights constraint for embedding in creative manifests. Populated from the agreed terms — the buyer does not need to construct it manually." + "$ref": "/schemas/3.0.0-rc.3/core/rights-constraint.json", + "description": "Pre-built rights constraint for embedding in creative manifests. Populated from the agreed terms \u2014 the buyer does not need to construct it manually." }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "rights_id": { + "description": "Rights grant identifier", + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "status": { + "const": "acquired", + "description": "Rights have been cleared and credentials issued", + "type": "string" + }, + "terms": { + "$ref": "/schemas/3.0.0-rc.3/brand/rights-terms.json", + "description": "Agreed contractual terms" + }, + "usage_reporting_url": { + "description": "Endpoint for reporting usage against these rights", + "format": "uri", + "type": "string" } }, - "required": ["rights_id", "status", "brand_id", "terms", "generation_credentials", "rights_constraint"], - "additionalProperties": true, - "not": { "required": ["errors"] } + "required": [ + "rights_id", + "status", + "brand_id", + "terms", + "generation_credentials", + "rights_constraint" + ], + "title": "AcquireRightsAcquired" }, { - "title": "AcquireRightsPendingApproval", + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + }, "properties": { - "rights_id": { - "type": "string" - }, - "status": { - "type": "string", - "const": "pending_approval", - "description": "Rights require approval from the rights holder" - }, "brand_id": { "type": "string" }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, "detail": { - "type": "string", - "description": "Explanation of what requires approval" + "description": "Explanation of what requires approval", + "type": "string" }, "estimated_response_time": { - "type": "string", - "description": "Expected time for approval decision (e.g., '48h', '3 business days')" - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "description": "Expected time for approval decision (e.g., '48h', '3 business days')", + "type": "string" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "rights_id": { + "type": "string" + }, + "status": { + "const": "pending_approval", + "description": "Rights require approval from the rights holder", + "type": "string" } }, - "required": ["rights_id", "status", "brand_id"], - "additionalProperties": true, - "not": { "required": ["errors"] } + "required": [ + "rights_id", + "status", + "brand_id" + ], + "title": "AcquireRightsPendingApproval" }, { - "title": "AcquireRightsRejected", + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + }, "properties": { - "rights_id": { + "brand_id": { "type": "string" }, - "status": { - "type": "string", - "const": "rejected", - "description": "Rights request was rejected" + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, - "brand_id": { - "type": "string" + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "reason": { - "type": "string", - "description": "Why the rights request was rejected. May be sanitized to protect confidential brand rules — e.g., 'This violates our public figures brand guidelines' rather than naming the specific rule." + "description": "Why the rights request was rejected. May be sanitized to protect confidential brand rules \u2014 e.g., 'This violates our public figures brand guidelines' rather than naming the specific rule.", + "type": "string" }, - "suggestions": { - "type": "array", - "description": "Actionable alternatives the buyer can try. If present, the rejection is fixable — the buyer can adjust their request. If absent, the rejection is final for this talent/rights combination.", - "items": { "type": "string" } + "rights_id": { + "type": "string" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "status": { + "const": "rejected", + "description": "Rights request was rejected", + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "suggestions": { + "description": "Actionable alternatives the buyer can try. If present, the rejection is fixable \u2014 the buyer can adjust their request. If absent, the rejection is final for this talent/rights combination.", + "items": { + "type": "string" + }, + "type": "array" } }, - "required": ["rights_id", "status", "brand_id", "reason"], - "additionalProperties": true, - "not": { "required": ["errors"] } + "required": [ + "rights_id", + "status", + "brand_id", + "reason" + ], + "title": "AcquireRightsRejected" }, { - "title": "AcquireRightsError", + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "status" + ] + } + ] + }, "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "minItems": 1 - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "minItems": 1, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["status"] } - ] - } + "required": [ + "errors" + ], + "title": "AcquireRightsError" } - ] -} + ], + "title": "Acquire Rights Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/creative-approval-request.json b/schemas/cache/brand/creative-approval-request.json deleted file mode 100644 index 6412ed90..00000000 --- a/schemas/cache/brand/creative-approval-request.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/creative-approval-request.json", - "title": "Creative Approval Request", - "description": "Payload submitted by the buyer to the approval_webhook URL from acquire_rights. Contains the creative for rights holder review before distribution.", - "type": "object", - "properties": { - "rights_id": { - "type": "string", - "description": "Rights grant this creative was produced under" - }, - "creative_id": { - "type": "string", - "description": "Buyer-assigned creative identifier. Equivalent to OpenRTB crid. Used to track approval status across resubmissions." - }, - "creative_url": { - "type": "string", - "format": "uri", - "description": "URL where the creative asset can be retrieved for review" - }, - "creative_format": { - "$ref": "/schemas/3.0.0-rc.2/core/format-id.json", - "description": "Format of the creative being submitted" - }, - "description": { - "type": "string", - "description": "Description of the creative for reviewer context" - }, - "metadata": { - "type": "object", - "description": "Additional creative metadata (duration, dimensions, target audience, etc.)", - "additionalProperties": true - }, - "idempotency_key": { - "type": "string", - "description": "Client-generated key for safe retries. Resubmitting with the same key returns the original response.", - "minLength": 8, - "maxLength": 255 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["rights_id", "creative_url"], - "additionalProperties": true -} diff --git a/schemas/cache/brand/creative-approval-response.json b/schemas/cache/brand/creative-approval-response.json deleted file mode 100644 index 777773e3..00000000 --- a/schemas/cache/brand/creative-approval-response.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/creative-approval-response.json", - "title": "Creative Approval Response", - "description": "Response from the approval_webhook after reviewing a submitted creative. Uses discriminated union on status field: approved, rejected, or pending_review.", - "type": "object", - "oneOf": [ - { - "title": "CreativeApproved", - "properties": { - "status": { - "type": "string", - "const": "approved", - "description": "Creative has been approved for distribution" - }, - "rights_id": { - "type": "string" - }, - "creative_id": { - "type": "string", - "description": "Echo of the buyer's creative identifier" - }, - "creative_url": { - "type": "string", - "format": "uri" - }, - "approved_at": { - "type": "string", - "format": "date-time" - }, - "conditions": { - "type": "array", - "description": "Conditions on the approval (e.g., 'approved for NL market only')", - "items": { "type": "string" } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["status", "rights_id"], - "additionalProperties": true, - "not": { "required": ["errors"] } - }, - { - "title": "CreativeRejected", - "properties": { - "status": { - "type": "string", - "const": "rejected", - "description": "Creative was rejected" - }, - "rights_id": { - "type": "string" - }, - "creative_id": { - "type": "string", - "description": "Echo of the buyer's creative identifier" - }, - "creative_url": { - "type": "string", - "format": "uri" - }, - "reason": { - "type": "string", - "description": "Why the creative was rejected" - }, - "suggestions": { - "type": "array", - "description": "Actionable feedback for revision. If present, the buyer can revise and resubmit the creative. If absent, the rejection is final for this creative concept.", - "items": { "type": "string" } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["status", "rights_id", "reason"], - "additionalProperties": true, - "not": { "required": ["errors"] } - }, - { - "title": "CreativePendingReview", - "properties": { - "status": { - "type": "string", - "const": "pending_review", - "description": "Creative is queued for review" - }, - "rights_id": { - "type": "string" - }, - "creative_id": { - "type": "string", - "description": "Echo of the buyer's creative identifier" - }, - "creative_url": { - "type": "string", - "format": "uri" - }, - "estimated_response_time": { - "type": "string", - "description": "Expected time for review (e.g., '24h', '2 business days')" - }, - "status_url": { - "type": "string", - "format": "uri", - "description": "URL to poll for updated approval status. GET this URL to receive a creative-approval-response. Poll at reasonable intervals (suggested: every 5 minutes, back off after 1 hour to every 30 minutes). Stop polling after estimated_response_time has elapsed and the status is still pending_review." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["status", "rights_id"], - "additionalProperties": true, - "not": { "required": ["errors"] } - }, - { - "title": "CreativeApprovalError", - "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "minItems": 1 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["status"] } - ] - } - } - ] -} diff --git a/schemas/cache/brand/get-brand-identity-request.json b/schemas/cache/brand/get-brand-identity-request.json index 4cafda55..c0c4d7cd 100644 --- a/schemas/cache/brand/get-brand-identity-request.json +++ b/schemas/cache/brand/get-brand-identity-request.json @@ -1,23 +1,25 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/get-brand-identity-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/get-brand-identity-request.json", - "title": "Get Brand Identity Request", + "additionalProperties": true, "description": "Request brand identity data from a brand agent. Core identity (house, names, description, logos) is always public. Linked accounts get deeper data: high-res assets, voice configs, tone guidelines, and rights availability.", - "type": "object", "properties": { "brand_id": { - "type": "string", - "description": "Brand identifier from brand.json brands array" + "description": "Brand identifier from brand.json brands array", + "type": "string" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "fields": { - "type": "array", "description": "Optional identity sections to include in the response. When omitted, all sections the caller is authorized to see are returned. Core fields (brand_id, house, names) are always returned and do not need to be requested.", - "minItems": 1, "items": { - "type": "string", "enum": [ "description", - "industry", + "industries", "keller_type", "logos", "colors", @@ -28,20 +30,20 @@ "voice_synthesis", "assets", "rights" - ] - } + ], + "type": "string" + }, + "minItems": 1, + "type": "array" }, "use_case": { - "type": "string", - "description": "Intended use case, so the agent can tailor the response. A 'voice_synthesis' use case returns voice configs; a 'likeness' use case returns high-res photos and appearance guidelines." - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "description": "Intended use case, so the agent can tailor the response. A 'voice_synthesis' use case returns voice configs; a 'likeness' use case returns high-res photos and appearance guidelines.", + "type": "string" } }, - "required": ["brand_id"], - "additionalProperties": true -} + "required": [ + "brand_id" + ], + "title": "Get Brand Identity Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/get-brand-identity-response.json b/schemas/cache/brand/get-brand-identity-response.json index 063e8ed1..bf151b11 100644 --- a/schemas/cache/brand/get-brand-identity-response.json +++ b/schemas/cache/brand/get-brand-identity-response.json @@ -1,280 +1,504 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/get-brand-identity-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/get-brand-identity-response.json", - "title": "Get Brand Identity Response", "description": "Brand identity data from a brand agent. Core identity (house, names, description, logos) is always public. Authorized callers receive richer data (high-res assets, voice synthesis, tone guidelines, rights availability). Includes available_fields to signal what the caller could unlock by linking their account.", - "type": "object", "oneOf": [ { - "title": "GetBrandIdentitySuccess", + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + }, "properties": { - "brand_id": { - "type": "string", - "description": "Brand identifier" - }, - "house": { - "type": "object", - "description": "The house (corporate entity) this brand belongs to. Always returned regardless of authorization level.", - "properties": { - "domain": { - "type": "string", - "description": "House domain (e.g., nikeinc.com)" - }, - "name": { - "type": "string", - "description": "House display name" - } - }, - "required": ["domain", "name"], - "additionalProperties": true - }, - "names": { - "type": "array", - "description": "Localized brand names", - "items": { - "type": "object", - "minProperties": 1, - "additionalProperties": { - "type": "string" - } - } - }, - "description": { - "type": "string", - "description": "Brand description" - }, - "industry": { - "type": "string", - "description": "Industry or category" - }, - "keller_type": { - "type": "string", - "enum": ["master", "sub_brand", "endorsed", "independent"], - "description": "Brand architecture type: master (primary brand of house), sub_brand (carries parent name), endorsed (independent identity backed by parent), independent (operates separately)" - }, - "logos": { - "type": "array", - "description": "Brand logos. Public callers get standard logos; authorized callers also receive high-res variants. Shape matches brand.json logo definition.", + "assets": { + "description": "Available brand assets (images, audio, video). Authorized callers only. Shape matches brand.json asset definition.", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "url": { "type": "string", "format": "uri", "description": "URL to the logo asset" }, - "orientation": { - "type": "string", - "enum": ["square", "horizontal", "vertical", "stacked"], - "description": "Logo aspect ratio orientation" + "asset_id": { + "description": "Unique identifier", + "type": "string" }, - "background": { - "type": "string", - "enum": ["dark-bg", "light-bg", "transparent-bg"], - "description": "Background compatibility" + "asset_type": { + "$ref": "/schemas/3.0.0-rc.3/enums/asset-content-type.json", + "description": "Type of asset content" }, - "variant": { - "type": "string", - "enum": ["primary", "secondary", "icon", "wordmark", "full-lockup"], - "description": "Logo variant type" + "description": { + "description": "Asset description or usage notes", + "type": "string" + }, + "duration_seconds": { + "description": "Video/audio duration in seconds", + "type": "number" + }, + "file_size_bytes": { + "description": "File size in bytes", + "type": "integer" + }, + "format": { + "description": "File format (e.g., 'jpg', 'mp4')", + "type": "string" + }, + "height": { + "description": "Image/video height in pixels", + "type": "integer" + }, + "name": { + "description": "Human-readable name", + "type": "string" }, "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Additional semantic tags" + "description": "Tags for discovery", + "items": { + "type": "string" + }, + "type": "array" }, - "usage": { "type": "string", "description": "When to use this logo variant" }, - "width": { "type": "integer", "description": "Width in pixels" }, - "height": { "type": "integer", "description": "Height in pixels" } + "url": { + "description": "URL to CDN-hosted asset file", + "format": "uri", + "type": "string" + }, + "width": { + "description": "Image/video width in pixels", + "type": "integer" + } }, - "required": ["url"], - "additionalProperties": true - } + "required": [ + "asset_id", + "asset_type", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "available_fields": { + "description": "Fields available but not returned in this response due to authorization level. Tells the caller what they would gain by linking their account via sync_accounts. Values match the request fields enum.", + "items": { + "enum": [ + "description", + "industries", + "keller_type", + "logos", + "colors", + "fonts", + "visual_guidelines", + "tone", + "tagline", + "voice_synthesis", + "assets", + "rights" + ], + "type": "string" + }, + "type": "array" + }, + "brand_id": { + "description": "Brand identifier", + "type": "string" }, "colors": { - "type": "object", + "additionalProperties": true, "description": "Brand color palette. Each role accepts a single hex color or an array of hex colors. Shape matches brand.json colors definition.", "properties": { - "primary": { "oneOf": [{ "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 }] }, - "secondary": { "oneOf": [{ "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 }] }, - "accent": { "oneOf": [{ "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 }] }, - "background": { "oneOf": [{ "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 }] }, - "text": { "oneOf": [{ "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, { "type": "array", "items": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "minItems": 1 }] } + "accent": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "items": { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "background": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "items": { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "primary": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "items": { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "secondary": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "items": { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ] + }, + "text": { + "oneOf": [ + { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + { + "items": { + "pattern": "^#[0-9A-Fa-f]{6}$", + "type": "string" + }, + "minItems": 1, + "type": "array" + } + ] + } }, - "additionalProperties": true + "type": "object" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "description": { + "description": "Brand description", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "fonts": { - "type": "object", + "additionalProperties": true, "description": "Brand typography. Shape matches brand.json fonts definition.", "properties": { - "primary": { "type": "string", "description": "Primary font family" }, - "secondary": { "type": "string", "description": "Secondary font family" }, "font_urls": { - "type": "array", - "items": { "type": "string", "format": "uri" }, - "description": "URLs to web font files" + "description": "URLs to web font files", + "items": { + "format": "uri", + "type": "string" + }, + "type": "array" + }, + "primary": { + "description": "Primary font family", + "type": "string" + }, + "secondary": { + "description": "Secondary font family", + "type": "string" } }, - "additionalProperties": true + "type": "object" }, - "visual_guidelines": { - "type": "object", + "house": { "additionalProperties": true, - "description": "Structured visual rules for generative creative systems (photography, graphic_style, colorways, type_scale, motion). Matches brand.json visual_guidelines definition. Authorized callers only." - }, - "tone": { - "type": "object", - "description": "Brand voice and messaging guidelines", + "description": "The house (corporate entity) this brand belongs to. Always returned regardless of authorization level.", "properties": { - "voice": { "type": "string", "description": "Brand personality described as comma-separated adjectives (e.g., 'enthusiastic, warm, competitive')" }, - "attributes": { - "type": "array", - "items": { "type": "string" }, - "description": "Personality traits that characterize the brand voice, used as prompt guidance" - }, - "dos": { - "type": "array", - "items": { "type": "string" }, - "description": "Approved messaging approaches, content themes, and reference points" + "domain": { + "description": "House domain (e.g., nikeinc.com)", + "type": "string" }, - "donts": { - "type": "array", - "items": { "type": "string" }, - "description": "Prohibited topics, competitor references, and phrasings to avoid" + "name": { + "description": "House display name", + "type": "string" } }, - "additionalProperties": true - }, - "tagline": { - "type": "string", - "description": "Brand tagline or slogan" + "required": [ + "domain", + "name" + ], + "type": "object" }, - "voice_synthesis": { - "type": "object", - "description": "Voice synthesis configuration for AI-generated audio", - "properties": { - "provider": { "type": "string" }, - "voice_id": { "type": "string" }, - "settings": { - "type": "object", - "additionalProperties": true - } + "industries": { + "description": "Brand industries.", + "items": { + "type": "string" }, - "additionalProperties": true + "minItems": 1, + "type": "array" }, - "assets": { - "type": "array", - "description": "Available brand assets (images, audio, video). Authorized callers only. Shape matches brand.json asset definition.", + "keller_type": { + "description": "Brand architecture type: master (primary brand of house), sub_brand (carries parent name), endorsed (independent identity backed by parent), independent (operates separately)", + "enum": [ + "master", + "sub_brand", + "endorsed", + "independent" + ], + "type": "string" + }, + "logos": { + "description": "Brand logos. Public callers get standard logos; authorized callers also receive high-res variants. Shape matches brand.json logo definition.", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "asset_id": { "type": "string", "description": "Unique identifier" }, - "asset_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/asset-content-type.json", - "description": "Type of asset content" + "background": { + "description": "Background compatibility", + "enum": [ + "dark-bg", + "light-bg", + "transparent-bg" + ], + "type": "string" + }, + "height": { + "description": "Height in pixels", + "type": "integer" + }, + "orientation": { + "description": "Logo aspect ratio orientation", + "enum": [ + "square", + "horizontal", + "vertical", + "stacked" + ], + "type": "string" }, - "url": { "type": "string", "format": "uri", "description": "URL to CDN-hosted asset file" }, "tags": { - "type": "array", - "items": { "type": "string" }, - "description": "Tags for discovery" + "description": "Additional semantic tags", + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "description": "URL to the logo asset", + "format": "uri", + "type": "string" }, - "name": { "type": "string", "description": "Human-readable name" }, - "description": { "type": "string", "description": "Asset description or usage notes" }, - "width": { "type": "integer", "description": "Image/video width in pixels" }, - "height": { "type": "integer", "description": "Image/video height in pixels" }, - "duration_seconds": { "type": "number", "description": "Video/audio duration in seconds" }, - "file_size_bytes": { "type": "integer", "description": "File size in bytes" }, - "format": { "type": "string", "description": "File format (e.g., 'jpg', 'mp4')" } + "usage": { + "description": "When to use this logo variant", + "type": "string" + }, + "variant": { + "description": "Logo variant type", + "enum": [ + "primary", + "secondary", + "icon", + "wordmark", + "full-lockup" + ], + "type": "string" + }, + "width": { + "description": "Width in pixels", + "type": "integer" + } }, - "required": ["asset_id", "asset_type", "url"], - "additionalProperties": true - } + "required": [ + "url" + ], + "type": "object" + }, + "type": "array" + }, + "names": { + "description": "Localized brand names with BCP 47 locale code keys (e.g., 'en_US', 'fr_CA'). Bare language codes ('en') are accepted as wildcards for backwards compatibility.", + "items": { + "additionalProperties": { + "type": "string" + }, + "minProperties": 1, + "type": "object" + }, + "type": "array" }, "rights": { - "type": "object", + "additionalProperties": true, "description": "Rights availability summary. For detailed pricing, use get_rights.", "properties": { "available_uses": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" } + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "type": "array" + }, + "content_restrictions": { + "items": { + "type": "string" + }, + "type": "array" }, "countries": { - "type": "array", "description": "Countries where rights are available (ISO 3166-1 alpha-2). If omitted, rights are available worldwide.", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, "excluded_countries": { - "type": "array", "description": "Countries excluded from availability (ISO 3166-1 alpha-2)", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, - "exclusivity_model": { "type": "string" }, - "content_restrictions": { - "type": "array", - "items": { "type": "string" } + "exclusivity_model": { + "type": "string" } }, - "additionalProperties": true + "type": "object" }, - "available_fields": { - "type": "array", - "description": "Fields available but not returned in this response due to authorization level. Tells the caller what they would gain by linking their account via sync_accounts. Values match the request fields enum.", - "items": { - "type": "string", - "enum": [ - "description", - "industry", - "keller_type", - "logos", - "colors", - "fonts", - "visual_guidelines", - "tone", - "tagline", - "voice_synthesis", - "assets", - "rights" - ] - } + "tagline": { + "description": "Brand tagline or slogan. Accepts a plain string or a localized array matching the names pattern.", + "oneOf": [ + { + "description": "Plain tagline string for backwards compatibility", + "type": "string" + }, + { + "description": "Localized taglines with BCP 47 locale codes", + "items": { + "additionalProperties": { + "minLength": 1, + "type": "string" + }, + "maxProperties": 1, + "minProperties": 1, + "type": "object" + }, + "minItems": 1, + "type": "array" + } + ] }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "tone": { + "additionalProperties": true, + "description": "Brand voice and messaging guidelines", + "properties": { + "attributes": { + "description": "Personality traits that characterize the brand voice, used as prompt guidance", + "items": { + "type": "string" + }, + "type": "array" + }, + "donts": { + "description": "Prohibited topics, competitor references, and phrasings to avoid", + "items": { + "type": "string" + }, + "type": "array" + }, + "dos": { + "description": "Approved messaging approaches, content themes, and reference points", + "items": { + "type": "string" + }, + "type": "array" + }, + "voice": { + "description": "Brand personality described as comma-separated adjectives (e.g., 'enthusiastic, warm, competitive')", + "type": "string" + } + }, + "type": "object" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "visual_guidelines": { + "additionalProperties": true, + "description": "Structured visual rules for generative creative systems (photography, graphic_style, colorways, type_scale, motion). Matches brand.json visual_guidelines definition. Authorized callers only.", + "type": "object" + }, + "voice_synthesis": { + "additionalProperties": true, + "description": "Voice synthesis configuration for AI-generated audio", + "properties": { + "provider": { + "type": "string" + }, + "settings": { + "additionalProperties": true, + "type": "object" + }, + "voice_id": { + "type": "string" + } + }, + "type": "object" } }, - "required": ["brand_id", "house", "names"], - "additionalProperties": true, - "not": { "required": ["errors"] } + "required": [ + "brand_id", + "house", + "names" + ], + "title": "GetBrandIdentitySuccess" }, { - "title": "GetBrandIdentityError", + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "brand_id" + ] + }, + { + "required": [ + "house" + ] + }, + { + "required": [ + "names" + ] + } + ] + }, "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "minItems": 1 - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "minItems": 1, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["brand_id"] }, - { "required": ["house"] }, - { "required": ["names"] } - ] - } + "required": [ + "errors" + ], + "title": "GetBrandIdentityError" } - ] -} + ], + "title": "Get Brand Identity Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/get-rights-request.json b/schemas/cache/brand/get-rights-request.json index 8c924ee7..7ffcdfa2 100644 --- a/schemas/cache/brand/get-rights-request.json +++ b/schemas/cache/brand/get-rights-request.json @@ -1,59 +1,62 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/get-rights-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/get-rights-request.json", - "title": "Get Rights Request", - "description": "Search for licensable rights across a brand agent's roster. Returns matches with pricing. Discovery is natural-language-first — no taxonomy for categories. The agent interprets intent from the query and filters based on the buyer's brand compatibility.", - "type": "object", + "additionalProperties": true, + "description": "Search for licensable rights across a brand agent's roster. Returns matches with pricing. Discovery is natural-language-first \u2014 no taxonomy for categories. The agent interprets intent from the query and filters based on the buyer's brand compatibility.", "properties": { - "query": { - "type": "string", - "description": "Natural language description of desired rights. The agent interprets intent, budget signals, and compatibility from this text.", - "maxLength": 2000 - }, - "uses": { - "type": "array", - "description": "Rights uses being requested. The agent returns options covering these uses, potentially bundled into composite pricing.", - "items": { - "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" - }, - "minItems": 1 + "brand_id": { + "description": "Search within a specific brand's rights. If omitted, searches across the agent's full roster.", + "type": "string" }, "buyer_brand": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", "description": "The buyer's brand. The agent fetches the buyer's brand.json for compatibility filtering (e.g., dietary conflicts, competitor exclusions)." }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, "countries": { - "type": "array", "description": "Countries where rights are needed (ISO 3166-1 alpha-2). Filters to rights available in these markets.", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } - }, - "brand_id": { - "type": "string", - "description": "Search within a specific brand's rights. If omitted, searches across the agent's full roster." + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, - "right_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/right-type.json", - "description": "Filter by type of rights (talent, music, stock_media, etc.)" + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "include_excluded": { - "type": "boolean", + "default": false, "description": "Include filtered-out results in the excluded array with reasons. Defaults to false.", - "default": false + "type": "boolean" }, "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-request.json", + "$ref": "/schemas/3.0.0-rc.3/core/pagination-request.json", "description": "Pagination parameters for large result sets" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "query": { + "description": "Natural language description of desired rights. The agent interprets intent, budget signals, and compatibility from this text.", + "maxLength": 2000, + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "right_type": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-type.json", + "description": "Filter by type of rights (talent, music, stock_media, etc.)" + }, + "uses": { + "description": "Rights uses being requested. The agent returns options covering these uses, potentially bundled into composite pricing.", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "minItems": 1, + "type": "array" } }, - "required": ["query", "uses"], - "additionalProperties": true -} + "required": [ + "query", + "uses" + ], + "title": "Get Rights Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/get-rights-response.json b/schemas/cache/brand/get-rights-response.json index fb24302f..58477f42 100644 --- a/schemas/cache/brand/get-rights-response.json +++ b/schemas/cache/brand/get-rights-response.json @@ -1,172 +1,216 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/get-rights-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/get-rights-response.json", - "title": "Get Rights Response", "description": "Licensable rights matching the search criteria, with pricing options. Each result is a complete snapshot of current availability (stateless, DDEX PIE pattern). Excluded results explain why they were filtered out.", - "type": "object", "oneOf": [ { - "title": "GetRightsSuccess", + "additionalProperties": true, + "not": { + "required": [ + "errors" + ] + }, "properties": { - "rights": { - "type": "array", - "description": "Matching rights with pricing options, ranked by relevance", + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "excluded": { + "description": "Results that matched but were filtered out, with reasons", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "rights_id": { - "type": "string", - "description": "Identifier for this rights offering. Referenced in acquire_rights." - }, "brand_id": { - "type": "string", - "description": "Brand identifier from the agent's roster" + "type": "string" }, "name": { - "type": "string", - "description": "Display name of the rights subject" + "type": "string" }, - "description": { - "type": "string", - "description": "Description of the rights subject" - }, - "right_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/right-type.json" - }, - "match_score": { - "type": "number", - "minimum": 0, - "maximum": 1, - "description": "Relevance score from 0 to 1" - }, - "match_reasons": { - "type": "array", - "description": "Human-readable reasons for the match", - "items": { "type": "string" } + "reason": { + "description": "Why this result was excluded. May be sanitized to protect confidential brand rules.", + "type": "string" }, + "suggestions": { + "description": "Actionable alternatives if the exclusion is fixable (e.g., 'Available in BE and DE markets'). Absent if the exclusion is final.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "brand_id", + "reason" + ], + "type": "object" + }, + "type": "array" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "rights": { + "description": "Matching rights with pricing options, ranked by relevance", + "items": { + "additionalProperties": true, + "properties": { "available_uses": { - "type": "array", "description": "Rights uses available for licensing", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" } + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "type": "array" + }, + "brand_id": { + "description": "Brand identifier from the agent's roster", + "type": "string" + }, + "content_restrictions": { + "description": "Content restrictions or approval requirements", + "items": { + "type": "string" + }, + "type": "array" }, "countries": { - "type": "array", "description": "Countries where rights are available (ISO 3166-1 alpha-2). When both countries and excluded_countries are present, the effective set is countries minus excluded_countries. If neither is present, all countries are available.", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Description of the rights subject", + "type": "string" }, "excluded_countries": { - "type": "array", "description": "Countries excluded from availability", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" }, "exclusivity_status": { - "type": "object", + "additionalProperties": true, "description": "Current exclusivity availability", "properties": { "available": { - "type": "boolean", - "description": "Whether exclusivity is available" + "description": "Whether exclusivity is available", + "type": "boolean" }, "existing_exclusives": { - "type": "array", "description": "Active exclusivity commitments that may affect availability. Implementers should use vague descriptions ('exclusive commitment in this category') rather than specific deal terms to protect confidential business relationships.", - "items": { "type": "string" } + "items": { + "type": "string" + }, + "type": "array" } }, - "additionalProperties": true + "type": "object" }, - "pricing_options": { - "type": "array", - "description": "Available pricing options for these rights", + "match_reasons": { + "description": "Human-readable reasons for the match", "items": { - "$ref": "/schemas/3.0.0-rc.2/brand/rights-pricing-option.json" + "type": "string" }, - "minItems": 1 + "type": "array" }, - "content_restrictions": { - "type": "array", - "description": "Content restrictions or approval requirements", - "items": { "type": "string" } + "match_score": { + "description": "Relevance score from 0 to 1", + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "name": { + "description": "Display name of the rights subject", + "type": "string" }, "preview_assets": { - "type": "array", "description": "Preview-only assets for evaluation", "items": { - "type": "object", + "additionalProperties": true, "properties": { - "url": { "type": "string", "format": "uri" }, - "usage": { "type": "string" } + "url": { + "format": "uri", + "type": "string" + }, + "usage": { + "type": "string" + } }, - "required": ["url"], - "additionalProperties": true - } - } - }, - "required": ["rights_id", "brand_id", "name", "available_uses", "pricing_options"], - "additionalProperties": true - } - }, - "excluded": { - "type": "array", - "description": "Results that matched but were filtered out, with reasons", - "items": { - "type": "object", - "properties": { - "brand_id": { "type": "string" }, - "name": { "type": "string" }, - "reason": { - "type": "string", - "description": "Why this result was excluded. May be sanitized to protect confidential brand rules." + "required": [ + "url" + ], + "type": "object" + }, + "type": "array" }, - "suggestions": { - "type": "array", - "description": "Actionable alternatives if the exclusion is fixable (e.g., 'Available in BE and DE markets'). Absent if the exclusion is final.", - "items": { "type": "string" } + "pricing_options": { + "description": "Available pricing options for these rights", + "items": { + "$ref": "/schemas/3.0.0-rc.3/brand/rights-pricing-option.json" + }, + "minItems": 1, + "type": "array" + }, + "right_type": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-type.json" + }, + "rights_id": { + "description": "Identifier for this rights offering. Referenced in acquire_rights.", + "type": "string" } }, - "required": ["brand_id", "reason"], - "additionalProperties": true - } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "required": [ + "rights_id", + "brand_id", + "name", + "available_uses", + "pricing_options" + ], + "type": "object" + }, + "type": "array" } }, - "required": ["rights"], - "additionalProperties": true, - "not": { "required": ["errors"] } + "required": [ + "rights" + ], + "title": "GetRightsSuccess" }, { - "title": "GetRightsError", + "additionalProperties": true, + "not": { + "anyOf": [ + { + "required": [ + "rights" + ] + } + ] + }, "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "minItems": 1 - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "minItems": 1, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["rights"] } - ] - } + "required": [ + "errors" + ], + "title": "GetRightsError" } - ] -} + ], + "title": "Get Rights Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/revocation-notification.json b/schemas/cache/brand/revocation-notification.json deleted file mode 100644 index 89ebd0be..00000000 --- a/schemas/cache/brand/revocation-notification.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/revocation-notification.json", - "title": "Revocation Notification", - "description": "Payload sent by a rights holder to a buyer's revocation_webhook when rights are revoked. The buyer must cease creative delivery by effective_at. Partial revocation is supported — if revoked_uses is present, only those uses are revoked.", - "type": "object", - "properties": { - "notification_id": { - "type": "string", - "description": "Unique identifier for this notification. Buyers use this for deduplication — the same revocation may be delivered multiple times." - }, - "rights_id": { - "type": "string", - "description": "The revoked rights grant identifier" - }, - "brand_id": { - "type": "string", - "description": "Brand identifier of the rights subject" - }, - "reason": { - "type": "string", - "description": "Human-readable reason for revocation" - }, - "effective_at": { - "type": "string", - "format": "date-time", - "description": "When the revocation takes effect. Immediate revocations use current time. Grace periods use a future time. The buyer must stop serving creative using these rights by this time." - }, - "revoked_uses": { - "type": "array", - "description": "If present, only these uses are revoked (partial revocation). If absent, all uses under the grant are revoked.", - "items": { - "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" - }, - "minItems": 1 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["notification_id", "rights_id", "brand_id", "reason", "effective_at"], - "additionalProperties": true -} diff --git a/schemas/cache/brand/rights-pricing-option.json b/schemas/cache/brand/rights-pricing-option.json index 3f50982f..f4806810 100644 --- a/schemas/cache/brand/rights-pricing-option.json +++ b/schemas/cache/brand/rights-pricing-option.json @@ -1,59 +1,72 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/rights-pricing-option.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/rights-pricing-option.json", - "title": "Rights Pricing Option", - "description": "A pricing option for licensable rights. Separate from media-buy pricing options — rights pricing includes period, impression caps, overage rates, and use-type scoping.", - "type": "object", + "additionalProperties": true, + "description": "A pricing option for licensable rights. Separate from media-buy pricing options \u2014 rights pricing includes period, impression caps, overage rates, and use-type scoping.", "properties": { - "pricing_option_id": { - "type": "string", - "description": "Unique identifier for this pricing option. Referenced in acquire_rights and report_usage." - }, - "model": { - "$ref": "/schemas/3.0.0-rc.2/enums/pricing-model.json", - "description": "Pricing model (cpm, flat_rate, etc.)" - }, - "price": { - "type": "number", - "minimum": 0, - "description": "Price amount. Interpretation depends on model: CPM = cost per 1,000 impressions, flat_rate = fixed cost per period." - }, "currency": { - "type": "string", + "description": "ISO 4217 currency code", "pattern": "^[A-Z]{3}$", - "description": "ISO 4217 currency code" + "type": "string" }, - "uses": { - "type": "array", - "description": "Which rights uses this pricing option covers. A single option can bundle multiple uses (e.g., likeness + voice).", - "items": { - "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" - }, - "minItems": 1 + "description": { + "description": "Human-readable description of this pricing option", + "type": "string" }, - "period": { - "type": "string", - "enum": ["daily", "weekly", "monthly", "quarterly", "annual", "one_time"], - "description": "Billing period for flat_rate and time-based models" + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "impression_cap": { - "type": "integer", + "description": "Maximum impressions included in this pricing option per period", "minimum": 1, - "description": "Maximum impressions included in this pricing option per period" + "type": "integer" + }, + "model": { + "$ref": "/schemas/3.0.0-rc.3/enums/pricing-model.json", + "description": "Pricing model (cpm, flat_rate, etc.)" }, "overage_cpm": { - "type": "number", + "description": "CPM rate applied to impressions exceeding the impression_cap", "minimum": 0, - "description": "CPM rate applied to impressions exceeding the impression_cap" + "type": "number" }, - "description": { - "type": "string", - "description": "Human-readable description of this pricing option" + "period": { + "description": "Billing period for flat_rate and time-based models", + "enum": [ + "daily", + "weekly", + "monthly", + "quarterly", + "annual", + "one_time" + ], + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "price": { + "description": "Price amount. Interpretation depends on model: CPM = cost per 1,000 impressions, flat_rate = fixed cost per period.", + "minimum": 0, + "type": "number" + }, + "pricing_option_id": { + "description": "Unique identifier for this pricing option. Referenced in acquire_rights and report_usage.", + "type": "string" + }, + "uses": { + "description": "Which rights uses this pricing option covers. A single option can bundle multiple uses (e.g., likeness + voice).", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "minItems": 1, + "type": "array" } }, - "required": ["pricing_option_id", "model", "price", "currency", "uses"], - "additionalProperties": true -} + "required": [ + "pricing_option_id", + "model", + "price", + "currency", + "uses" + ], + "title": "Rights Pricing Option", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/rights-terms.json b/schemas/cache/brand/rights-terms.json index 8c6cb80c..74ebfd6d 100644 --- a/schemas/cache/brand/rights-terms.json +++ b/schemas/cache/brand/rights-terms.json @@ -1,56 +1,77 @@ { + "$id": "/schemas/3.0.0-rc.3/brand/rights-terms.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/rights-terms.json", - "title": "Rights Terms", + "additionalProperties": true, "description": "Contractual terms for a rights grant. Shared between acquire_rights and update_rights responses.", - "type": "object", "properties": { - "pricing_option_id": { "type": "string" }, - "amount": { "type": "number", "minimum": 0 }, - "currency": { - "type": "string", - "pattern": "^[A-Z]{3}$" - }, - "period": { - "type": "string", - "enum": ["daily", "weekly", "monthly", "quarterly", "annual", "one_time"] + "amount": { + "minimum": 0, + "type": "number" }, - "uses": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/right-use.json" } - }, - "impression_cap": { - "type": "integer", - "minimum": 1 - }, - "overage_cpm": { - "type": "number", - "minimum": 0 - }, - "start_date": { - "type": "string", - "format": "date" + "currency": { + "pattern": "^[A-Z]{3}$", + "type": "string" }, "end_date": { - "type": "string", - "format": "date" + "format": "date", + "type": "string" }, "exclusivity": { - "type": "object", + "additionalProperties": true, "description": "Exclusivity terms if applicable", "properties": { - "scope": { "type": "string" }, "countries": { - "type": "array", "items": { - "type": "string", - "pattern": "^[A-Z]{2}$" - } + "pattern": "^[A-Z]{2}$", + "type": "string" + }, + "type": "array" + }, + "scope": { + "type": "string" } }, - "additionalProperties": true + "type": "object" + }, + "impression_cap": { + "minimum": 1, + "type": "integer" + }, + "overage_cpm": { + "minimum": 0, + "type": "number" + }, + "period": { + "enum": [ + "daily", + "weekly", + "monthly", + "quarterly", + "annual", + "one_time" + ], + "type": "string" + }, + "pricing_option_id": { + "type": "string" + }, + "start_date": { + "format": "date", + "type": "string" + }, + "uses": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/right-use.json" + }, + "type": "array" } }, - "required": ["pricing_option_id", "amount", "currency", "uses"], - "additionalProperties": true -} + "required": [ + "pricing_option_id", + "amount", + "currency", + "uses" + ], + "title": "Rights Terms", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/brand/update-rights-request.json b/schemas/cache/brand/update-rights-request.json deleted file mode 100644 index bb73e161..00000000 --- a/schemas/cache/brand/update-rights-request.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/update-rights-request.json", - "title": "Update Rights Request", - "description": "Modify an existing rights grant — extend dates, adjust impression caps, change pricing, or pause/resume. Parallels update_media_buy. Only the fields provided are updated; omitted fields remain unchanged.", - "type": "object", - "properties": { - "rights_id": { - "type": "string", - "description": "Rights grant identifier from acquire_rights response" - }, - "end_date": { - "type": "string", - "format": "date", - "description": "New end date for the rights grant (must be >= current end_date). Extending the grant may re-issue generation credentials with updated expiration." - }, - "impression_cap": { - "type": "integer", - "minimum": 1, - "description": "New impression cap for the grant. Must be >= impressions already delivered." - }, - "pricing_option_id": { - "type": "string", - "description": "Switch to a different pricing option from the original get_rights offering. The new option must be compatible with the existing grant's uses and countries." - }, - "paused": { - "type": "boolean", - "description": "Pause or resume the rights grant. When paused, generation credentials are suspended and creative delivery should stop. When resumed, credentials are re-activated." - }, - "push_notification_config": { - "$ref": "/schemas/3.0.0-rc.2/core/push-notification-config.json", - "description": "Webhook for async update notifications if the update requires approval" - }, - "idempotency_key": { - "type": "string", - "description": "Client-generated idempotency key for safe retries", - "minLength": 8, - "maxLength": 255 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["rights_id"], - "additionalProperties": true -} diff --git a/schemas/cache/brand/update-rights-response.json b/schemas/cache/brand/update-rights-response.json deleted file mode 100644 index 09f649fe..00000000 --- a/schemas/cache/brand/update-rights-response.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/brand/update-rights-response.json", - "title": "Update Rights Response", - "description": "Result of a rights update request. Returns updated terms and re-issued credentials on success, or errors if the update cannot be applied.", - "type": "object", - "oneOf": [ - { - "title": "UpdateRightsSuccess", - "properties": { - "rights_id": { - "type": "string", - "description": "Rights grant identifier" - }, - "terms": { - "$ref": "/schemas/3.0.0-rc.2/brand/rights-terms.json", - "description": "Updated contractual terms (same shape as acquire_rights acquired response)" - }, - "generation_credentials": { - "type": "array", - "description": "Re-issued credentials reflecting updated terms (new expiration dates, adjusted caps)", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/generation-credential.json" - } - }, - "rights_constraint": { - "$ref": "/schemas/3.0.0-rc.2/core/rights-constraint.json", - "description": "Updated rights constraint for re-embedding in creative manifests" - }, - "paused": { - "type": "boolean", - "description": "Whether the grant is currently paused. Included when the update changes pause state." - }, - "implementation_date": { - "type": ["string", "null"], - "format": "date-time", - "description": "When changes take effect (null if pending approval from rights holder)" - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["rights_id", "terms"], - "additionalProperties": true, - "not": { "required": ["errors"] } - }, - { - "title": "UpdateRightsError", - "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "minItems": 1 - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["errors"], - "additionalProperties": true, - "not": { - "anyOf": [ - { "required": ["rights_id"] }, - { "required": ["terms"] } - ] - } - } - ] -} diff --git a/schemas/cache/compliance/comply-test-controller-request.json b/schemas/cache/compliance/comply-test-controller-request.json new file mode 100644 index 00000000..67b25753 --- /dev/null +++ b/schemas/cache/compliance/comply-test-controller-request.json @@ -0,0 +1,393 @@ +{ + "$id": "/schemas/3.0.0-rc.3/compliance/comply-test-controller-request.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Request payload for the comply_test_controller tool. Triggers seller-side state transitions for compliance testing. Sandbox only \u2014 sellers MUST NOT expose this tool in production.", + "examples": [ + { + "data": { + "scenario": "list_scenarios" + }, + "description": "List supported scenarios" + }, + { + "data": { + "params": { + "creative_id": "cr-123", + "rejection_reason": "Brand safety policy violation", + "status": "rejected" + }, + "scenario": "force_creative_status" + }, + "description": "Force a creative to rejected status" + }, + { + "data": { + "params": { + "account_id": "acct-456", + "status": "suspended" + }, + "scenario": "force_account_status" + }, + "description": "Force account suspension" + }, + { + "data": { + "params": { + "session_id": "sess-abc", + "status": "terminated", + "termination_reason": "session_timeout" + }, + "scenario": "force_session_status" + }, + "description": "Simulate session timeout" + }, + { + "data": { + "params": { + "clicks": 150, + "impressions": 10000, + "media_buy_id": "mb-789", + "reported_spend": { + "amount": 150.0, + "currency": "USD" + } + }, + "scenario": "simulate_delivery" + }, + "description": "Simulate delivery data" + }, + { + "data": { + "params": { + "media_buy_id": "mb-789", + "spend_percentage": 95 + }, + "scenario": "simulate_budget_spend" + }, + "description": "Simulate budget consumption to 95%" + } + ], + "oneOf": [ + { + "additionalProperties": true, + "description": "Discover which scenarios this seller supports", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "scenario": { + "const": "list_scenarios", + "type": "string" + } + }, + "required": [ + "scenario" + ], + "title": "ListScenarios", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Transition a creative to the specified status", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "properties": { + "creative_id": { + "description": "Creative to transition", + "type": "string" + }, + "rejection_reason": { + "description": "Reason for rejection. Required when status = rejected.", + "type": "string" + }, + "status": { + "$ref": "/schemas/3.0.0-rc.3/enums/creative-status.json" + } + }, + "required": [ + "creative_id", + "status" + ], + "type": "object" + }, + "scenario": { + "const": "force_creative_status", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "ForceCreativeStatus", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Transition an account to the specified status", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "properties": { + "account_id": { + "description": "Account to transition", + "type": "string" + }, + "status": { + "$ref": "/schemas/3.0.0-rc.3/enums/account-status.json" + } + }, + "required": [ + "account_id", + "status" + ], + "type": "object" + }, + "scenario": { + "const": "force_account_status", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "ForceAccountStatus", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Transition a media buy to the specified status", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "properties": { + "media_buy_id": { + "description": "Media buy to transition", + "type": "string" + }, + "rejection_reason": { + "description": "Reason for rejection. Required when status = rejected.", + "type": "string" + }, + "status": { + "$ref": "/schemas/3.0.0-rc.3/enums/media-buy-status.json" + } + }, + "required": [ + "media_buy_id", + "status" + ], + "type": "object" + }, + "scenario": { + "const": "force_media_buy_status", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "ForceMediaBuyStatus", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Transition an SI session to a terminal status", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "properties": { + "session_id": { + "description": "Session to transition", + "type": "string" + }, + "status": { + "description": "Target terminal status. Only terminal statuses are valid \u2014 active and pending_handoff are session-internal transitions.", + "enum": [ + "complete", + "terminated" + ], + "type": "string" + }, + "termination_reason": { + "description": "Reason for termination (e.g., session_timeout, host_terminated, policy_violation). Required when status = terminated.", + "type": "string" + } + }, + "required": [ + "session_id", + "status" + ], + "type": "object" + }, + "scenario": { + "const": "force_session_status", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "ForceSessionStatus", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Inject synthetic delivery data for a media buy", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "properties": { + "clicks": { + "description": "Clicks to simulate", + "minimum": 0, + "type": "integer" + }, + "conversions": { + "description": "Conversions to simulate", + "minimum": 0, + "type": "integer" + }, + "impressions": { + "description": "Impressions to simulate", + "minimum": 0, + "type": "integer" + }, + "media_buy_id": { + "description": "Media buy to add delivery to", + "type": "string" + }, + "reported_spend": { + "description": "Spend as reported in delivery data. Does not affect budget.", + "properties": { + "amount": { + "minimum": 0, + "type": "number" + }, + "currency": { + "pattern": "^[A-Z]{3}$", + "type": "string" + } + }, + "required": [ + "amount", + "currency" + ], + "type": "object" + } + }, + "required": [ + "media_buy_id" + ], + "type": "object" + }, + "scenario": { + "const": "simulate_delivery", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "SimulateDelivery", + "type": "object" + }, + { + "additionalProperties": true, + "description": "Simulate budget consumption to a specified percentage", + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "params": { + "additionalProperties": true, + "anyOf": [ + { + "required": [ + "account_id" + ] + }, + { + "required": [ + "media_buy_id" + ] + } + ], + "properties": { + "account_id": { + "description": "Account (for account-level budget)", + "type": "string" + }, + "media_buy_id": { + "description": "Media buy (for buy-level budget)", + "type": "string" + }, + "spend_percentage": { + "description": "Spend to this percentage of budget (0\u2013100)", + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "spend_percentage" + ], + "type": "object" + }, + "scenario": { + "const": "simulate_budget_spend", + "type": "string" + } + }, + "required": [ + "scenario", + "params" + ], + "title": "SimulateBudgetSpend", + "type": "object" + } + ], + "title": "Comply Test Controller Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/compliance/comply-test-controller-response.json b/schemas/cache/compliance/comply-test-controller-response.json new file mode 100644 index 00000000..1925a151 --- /dev/null +++ b/schemas/cache/compliance/comply-test-controller-response.json @@ -0,0 +1,319 @@ +{ + "$id": "/schemas/3.0.0-rc.3/compliance/comply-test-controller-response.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "description": "Response from the comply_test_controller tool. Shape varies by scenario type: list_scenarios returns available scenarios, force_* returns state transition results, simulate_* returns simulation results.", + "examples": [ + { + "data": { + "scenarios": [ + "force_creative_status", + "force_account_status", + "force_media_buy_status" + ], + "success": true + }, + "description": "List scenarios response" + }, + { + "data": { + "current_state": "approved", + "message": "Creative cr-123 transitioned from processing to approved", + "previous_state": "processing", + "success": true + }, + "description": "Successful state transition" + }, + { + "data": { + "cumulative": { + "clicks": 380, + "impressions": 25000, + "reported_spend": { + "amount": 375.0, + "currency": "USD" + } + }, + "message": "Delivery simulated for mb-789: 10000 impressions, 150 clicks, $150.00 spend", + "simulated": { + "clicks": 150, + "impressions": 10000, + "reported_spend": { + "amount": 150.0, + "currency": "USD" + } + }, + "success": true + }, + "description": "Delivery simulation with cumulative totals" + }, + { + "data": { + "message": "Budget for mb-789 set to 95% consumed ($950.00 of $1000.00)", + "simulated": { + "budget": { + "amount": 1000.0, + "currency": "USD" + }, + "computed_spend": { + "amount": 950.0, + "currency": "USD" + }, + "spend_percentage": 95 + }, + "success": true + }, + "description": "Budget spend simulation" + }, + { + "data": { + "current_state": "archived", + "error": "INVALID_TRANSITION", + "error_detail": "Cannot transition from archived to processing \u2014 archived is terminal", + "success": false + }, + "description": "Invalid transition error" + }, + { + "data": { + "current_state": null, + "error": "NOT_FOUND", + "error_detail": "Creative cr-unknown not found", + "success": false + }, + "description": "Entity not found" + } + ], + "oneOf": [ + { + "additionalProperties": true, + "description": "Lists which scenarios this seller's test controller supports", + "not": { + "anyOf": [ + { + "required": [ + "error" + ] + }, + { + "required": [ + "previous_state" + ] + }, + { + "required": [ + "simulated" + ] + } + ] + }, + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "scenarios": { + "description": "Scenarios this seller has implemented", + "items": { + "enum": [ + "force_creative_status", + "force_account_status", + "force_media_buy_status", + "force_session_status", + "simulate_delivery", + "simulate_budget_spend" + ], + "type": "string" + }, + "type": "array" + }, + "success": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "success", + "scenarios" + ], + "title": "ListScenariosSuccess", + "type": "object" + }, + { + "additionalProperties": true, + "description": "A force_* scenario successfully transitioned the entity to the target state", + "not": { + "anyOf": [ + { + "required": [ + "error" + ] + }, + { + "required": [ + "scenarios" + ] + }, + { + "required": [ + "simulated" + ] + } + ] + }, + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "current_state": { + "description": "State after this transition", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "message": { + "description": "Human-readable description of the transition", + "type": "string" + }, + "previous_state": { + "description": "State before this transition", + "type": "string" + }, + "success": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "success", + "previous_state", + "current_state" + ], + "title": "StateTransitionSuccess", + "type": "object" + }, + { + "additionalProperties": true, + "description": "A simulate_delivery or simulate_budget_spend scenario succeeded. For delivery: simulated contains impressions/clicks/reported_spend/conversions and cumulative contains running totals. For budget: simulated contains spend_percentage/computed_spend/budget.", + "not": { + "anyOf": [ + { + "required": [ + "error" + ] + }, + { + "required": [ + "scenarios" + ] + }, + { + "required": [ + "previous_state" + ] + } + ] + }, + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "cumulative": { + "additionalProperties": true, + "description": "Running totals across all simulation calls (simulate_delivery only)", + "type": "object" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "message": { + "type": "string" + }, + "simulated": { + "additionalProperties": true, + "description": "Values injected or applied by this call. Shape depends on scenario.", + "type": "object" + }, + "success": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "success", + "simulated" + ], + "title": "SimulationSuccess", + "type": "object" + }, + { + "additionalProperties": true, + "description": "The scenario failed \u2014 invalid transition, unknown entity, unsupported scenario, or invalid params", + "not": { + "anyOf": [ + { + "required": [ + "scenarios" + ] + }, + { + "required": [ + "simulated" + ] + }, + { + "required": [ + "previous_state" + ] + } + ] + }, + "properties": { + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "current_state": { + "description": "Current state of the entity, or null if not found", + "type": [ + "string", + "null" + ] + }, + "error": { + "description": "Structured error code", + "enum": [ + "INVALID_TRANSITION", + "INVALID_STATE", + "NOT_FOUND", + "UNKNOWN_SCENARIO", + "INVALID_PARAMS", + "FORBIDDEN", + "INTERNAL_ERROR" + ], + "type": "string" + }, + "error_detail": { + "description": "Human-readable explanation of the failure", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "success": { + "const": false, + "type": "boolean" + } + }, + "required": [ + "success", + "error" + ], + "title": "ControllerError", + "type": "object" + } + ], + "title": "Comply Test Controller Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/artifact-webhook-payload.json b/schemas/cache/content-standards/artifact-webhook-payload.json index 51173a94..18094685 100644 --- a/schemas/cache/content-standards/artifact-webhook-payload.json +++ b/schemas/cache/content-standards/artifact-webhook-payload.json @@ -1,72 +1,80 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/artifact-webhook-payload.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/artifact-webhook-payload.json", - "title": "Artifact Webhook Payload", + "additionalProperties": true, "description": "Payload sent by sales agents to orchestrators when pushing content artifacts for governance validation. Complements get_media_buy_artifacts for push-based artifact delivery.", - "type": "object", "properties": { - "media_buy_id": { - "type": "string", - "description": "Media buy identifier these artifacts belong to" - }, - "batch_id": { - "type": "string", - "description": "Unique identifier for this batch of artifacts. Use for deduplication and acknowledgment." - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "When this batch was generated (ISO 8601)" - }, "artifacts": { - "type": "array", "description": "Content artifacts from delivered impressions", "items": { - "type": "object", "properties": { "artifact": { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "The content artifact" }, "delivered_at": { - "type": "string", + "description": "When the impression was delivered (ISO 8601)", "format": "date-time", - "description": "When the impression was delivered (ISO 8601)" + "type": "string" }, "impression_id": { - "type": "string", - "description": "Optional impression identifier for correlation with delivery reports" + "description": "Optional impression identifier for correlation with delivery reports", + "type": "string" }, "package_id": { - "type": "string", - "description": "Package within the media buy this artifact relates to" + "description": "Package within the media buy this artifact relates to", + "type": "string" } }, - "required": ["artifact", "delivered_at"] - } + "required": [ + "artifact", + "delivered_at" + ], + "type": "object" + }, + "type": "array" + }, + "batch_id": { + "description": "Unique identifier for this batch of artifacts. Use for deduplication and acknowledgment.", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "media_buy_id": { + "description": "Media buy identifier these artifacts belong to", + "type": "string" }, "pagination": { - "type": "object", "description": "Pagination info when batching large artifact sets", "properties": { - "total_artifacts": { - "type": "integer", - "description": "Total artifacts in the delivery period" - }, "batch_number": { - "type": "integer", - "description": "Current batch number (1-indexed)" + "description": "Current batch number (1-indexed)", + "type": "integer" + }, + "total_artifacts": { + "description": "Total artifacts in the delivery period", + "type": "integer" }, "total_batches": { - "type": "integer", - "description": "Total batches for this delivery period" + "description": "Total batches for this delivery period", + "type": "integer" } - } + }, + "type": "object" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "timestamp": { + "description": "When this batch was generated (ISO 8601)", + "format": "date-time", + "type": "string" } }, - "required": ["media_buy_id", "batch_id", "timestamp", "artifacts"], - "additionalProperties": true -} + "required": [ + "media_buy_id", + "batch_id", + "timestamp", + "artifacts" + ], + "title": "Artifact Webhook Payload", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/artifact.json b/schemas/cache/content-standards/artifact.json index fb4aba70..bc9589d3 100644 --- a/schemas/cache/content-standards/artifact.json +++ b/schemas/cache/content-standards/artifact.json @@ -1,304 +1,407 @@ { + "$defs": { + "asset_access": { + "description": "Authentication for accessing secured asset URLs", + "oneOf": [ + { + "description": "Bearer token authentication", + "properties": { + "method": { + "const": "bearer_token", + "type": "string" + }, + "token": { + "description": "OAuth2 bearer token for Authorization header", + "type": "string" + } + }, + "required": [ + "method", + "token" + ], + "type": "object" + }, + { + "description": "Service account authentication (GCP, AWS)", + "properties": { + "credentials": { + "additionalProperties": true, + "description": "Service account credentials", + "type": "object" + }, + "method": { + "const": "service_account", + "type": "string" + }, + "provider": { + "description": "Cloud provider", + "enum": [ + "gcp", + "aws" + ], + "type": "string" + } + }, + "required": [ + "method", + "provider" + ], + "type": "object" + }, + { + "description": "Pre-signed URL (credentials embedded in URL)", + "properties": { + "method": { + "const": "signed_url", + "type": "string" + } + }, + "required": [ + "method" + ], + "type": "object" + } + ], + "type": "object" + } + }, + "$id": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/artifact.json", - "title": "Artifact", + "additionalProperties": true, "description": "Content artifact for safety and suitability evaluation. An artifact represents content adjacent to an ad placement - a news article, podcast segment, video chapter, or social post. Artifacts are collections of assets (text, images, video, audio) plus metadata and signals.", - "type": "object", "properties": { - "property_id": { - "$ref": "/schemas/3.0.0-rc.2/core/identifier.json", - "description": "Identifier for the property where this artifact appears" - }, "artifact_id": { - "type": "string", - "description": "Identifier for this artifact within the property. The property owner defines the scheme (e.g., 'article_12345', 'episode_42_segment_3', 'post_abc123')." - }, - "variant_id": { - "type": "string", - "description": "Identifies a specific variant of this artifact. Use for A/B tests, translations, or temporal versions. Examples: 'en', 'es-MX', 'v2', 'headline_test_b'. The combination of artifact_id + variant_id must be unique." - }, - "format_id": { - "$ref": "/schemas/3.0.0-rc.2/core/format-id.json", - "description": "Optional reference to a format definition. Uses the same format registry as creative formats." - }, - "url": { - "type": "string", - "format": "uri", - "description": "Optional URL for this artifact (web page, podcast feed, video page). Not all artifacts have URLs (e.g., Instagram content, podcast segments, TV scenes)." - }, - "published_time": { - "type": "string", - "format": "date-time", - "description": "When the artifact was published (ISO 8601 format)" - }, - "last_update_time": { - "type": "string", - "format": "date-time", - "description": "When the artifact was last modified (ISO 8601 format)" + "description": "Identifier for this artifact within the property. The property owner defines the scheme (e.g., 'article_12345', 'episode_42_segment_3', 'post_abc123').", + "type": "string" }, "assets": { - "type": "array", "description": "Artifact assets in document flow order - text blocks, images, video, audio", "items": { "oneOf": [ { - "type": "object", "description": "Text block (paragraph, heading, etc.)", "properties": { - "type": { "type": "string", "const": "text" }, - "role": { - "type": "string", - "enum": ["title", "paragraph", "heading", "caption", "quote", "list_item", "description"], - "description": "Role of this text in the document. Use 'title' for the main artifact title, 'description' for summaries." - }, "content": { - "type": "string", - "description": "Text content" + "description": "Text content. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.", + "maxLength": 100000, + "type": "string" }, - "language": { - "type": "string", - "description": "BCP 47 language tag for this text (e.g., 'en', 'es-MX'). Useful when artifact contains mixed-language content." + "content_format": { + "default": "text/plain", + "description": "MIME type indicating how to parse the content field. Default: text/plain.", + "enum": [ + "text/plain", + "text/markdown", + "text/html", + "application/json" + ], + "type": "string" }, "heading_level": { - "type": "integer", - "minimum": 1, + "description": "Heading level (1-6), only for role=heading", "maximum": 6, - "description": "Heading level (1-6), only for role=heading" + "minimum": 1, + "type": "integer" + }, + "language": { + "description": "BCP 47 language tag for this text (e.g., 'en', 'es-MX'). Useful when artifact contains mixed-language content.", + "type": "string" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance for this text block, overrides artifact-level provenance" + }, + "role": { + "description": "Role of this text in the document. Use 'title' for the main artifact title, 'description' for summaries.", + "enum": [ + "title", + "paragraph", + "heading", + "caption", + "quote", + "list_item", + "description" + ], + "type": "string" + }, + "type": { + "const": "text", + "type": "string" } }, - "required": ["type", "content"] + "required": [ + "type", + "content" + ], + "type": "object" }, { - "type": "object", "description": "Image asset", "properties": { - "type": { "type": "string", "const": "image" }, - "url": { - "type": "string", - "format": "uri", - "description": "Image URL" - }, "access": { "$ref": "#/$defs/asset_access", "description": "Authentication for secured URLs" }, "alt_text": { - "type": "string", - "description": "Alt text or image description" + "description": "Alt text or image description", + "type": "string" }, "caption": { - "type": "string", - "description": "Image caption" - }, - "width": { - "type": "integer", - "description": "Image width in pixels" + "description": "Image caption", + "type": "string" }, "height": { - "type": "integer", - "description": "Image height in pixels" + "description": "Image height in pixels", + "type": "integer" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance for this image, overrides artifact-level provenance" + }, + "type": { + "const": "image", + "type": "string" + }, + "url": { + "description": "Image URL", + "format": "uri", + "type": "string" + }, + "width": { + "description": "Image width in pixels", + "type": "integer" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ], + "type": "object" }, { - "type": "object", "description": "Video asset", "properties": { - "type": { "type": "string", "const": "video" }, - "url": { - "type": "string", - "format": "uri", - "description": "Video URL" - }, "access": { "$ref": "#/$defs/asset_access", "description": "Authentication for secured URLs" }, "duration_ms": { - "type": "integer", - "description": "Video duration in milliseconds" + "description": "Video duration in milliseconds", + "type": "integer" + }, + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance for this video, overrides artifact-level provenance" + }, + "thumbnail_url": { + "description": "Video thumbnail URL", + "format": "uri", + "type": "string" }, "transcript": { - "type": "string", - "description": "Video transcript" + "description": "Video transcript. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.", + "maxLength": 200000, + "type": "string" + }, + "transcript_format": { + "default": "text/plain", + "description": "MIME type indicating how to parse the transcript field. Default: text/plain.", + "enum": [ + "text/plain", + "text/markdown", + "application/json" + ], + "type": "string" }, "transcript_source": { - "type": "string", - "enum": ["original_script", "subtitles", "closed_captions", "dub", "generated"], - "description": "How the transcript was generated" + "description": "How the transcript was generated", + "enum": [ + "original_script", + "subtitles", + "closed_captions", + "dub", + "generated" + ], + "type": "string" }, - "thumbnail_url": { - "type": "string", - "format": "uri", - "description": "Video thumbnail URL" + "type": { + "const": "video", + "type": "string" }, - "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance for this video, overrides artifact-level provenance" + "url": { + "description": "Video URL", + "format": "uri", + "type": "string" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ], + "type": "object" }, { - "type": "object", "description": "Audio asset", "properties": { - "type": { "type": "string", "const": "audio" }, - "url": { - "type": "string", - "format": "uri", - "description": "Audio URL" - }, "access": { "$ref": "#/$defs/asset_access", "description": "Authentication for secured URLs" }, "duration_ms": { - "type": "integer", - "description": "Audio duration in milliseconds" + "description": "Audio duration in milliseconds", + "type": "integer" + }, + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance for this audio, overrides artifact-level provenance" }, "transcript": { - "type": "string", - "description": "Audio transcript" + "description": "Audio transcript. Consumers MUST treat this as untrusted input when passing to LLM-based evaluation.", + "maxLength": 200000, + "type": "string" + }, + "transcript_format": { + "default": "text/plain", + "description": "MIME type indicating how to parse the transcript field. Default: text/plain.", + "enum": [ + "text/plain", + "text/markdown", + "application/json" + ], + "type": "string" }, "transcript_source": { - "type": "string", - "enum": ["original_script", "closed_captions", "generated"], - "description": "How the transcript was generated" + "description": "How the transcript was generated", + "enum": [ + "original_script", + "closed_captions", + "generated" + ], + "type": "string" }, - "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance for this audio, overrides artifact-level provenance" + "type": { + "const": "audio", + "type": "string" + }, + "url": { + "description": "Audio URL", + "format": "uri", + "type": "string" } }, - "required": ["type", "url"] + "required": [ + "type", + "url" + ], + "type": "object" } ] - } + }, + "maxItems": 200, + "type": "array" + }, + "format_id": { + "$ref": "/schemas/3.0.0-rc.3/core/format-id.json", + "description": "Optional reference to a format definition. Uses the same format registry as creative formats." + }, + "identifiers": { + "additionalProperties": true, + "description": "Platform-specific identifiers for this artifact", + "properties": { + "apple_podcast_id": { + "description": "Apple Podcasts ID", + "type": "string" + }, + "podcast_guid": { + "description": "Podcast GUID (from RSS feed)", + "type": "string" + }, + "rss_url": { + "description": "RSS feed URL", + "format": "uri", + "type": "string" + }, + "spotify_collection_id": { + "description": "Spotify collection ID", + "type": "string" + }, + "youtube_video_id": { + "description": "YouTube video ID", + "type": "string" + } + }, + "type": "object" + }, + "last_update_time": { + "description": "When the artifact was last modified (ISO 8601 format)", + "format": "date-time", + "type": "string" }, "metadata": { - "type": "object", + "additionalProperties": true, "description": "Rich metadata extracted from the artifact", "properties": { + "author": { + "description": "Artifact author name", + "type": "string" + }, "canonical": { - "type": "string", + "description": "Canonical URL", "format": "uri", - "description": "Canonical URL" + "type": "string" }, - "author": { - "type": "string", - "description": "Artifact author name" + "json_ld": { + "description": "JSON-LD structured data (schema.org)", + "items": { + "type": "object" + }, + "type": "array" }, "keywords": { - "type": "string", - "description": "Artifact keywords" + "description": "Artifact keywords", + "type": "string" }, "open_graph": { - "type": "object", + "additionalProperties": true, "description": "Open Graph protocol metadata", - "additionalProperties": true + "type": "object" }, "twitter_card": { - "type": "object", + "additionalProperties": true, "description": "Twitter Card metadata", - "additionalProperties": true - }, - "json_ld": { - "type": "array", - "description": "JSON-LD structured data (schema.org)", - "items": { "type": "object" } + "type": "object" } }, - "additionalProperties": true + "type": "object" + }, + "property_rid": { + "description": "Stable property identifier from the property catalog. Globally unique across the ecosystem.", + "type": "string" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance metadata for this artifact. Serves as the default provenance for all assets within this artifact — individual assets can override with their own provenance." + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance metadata for this artifact. Serves as the default provenance for all assets within this artifact \u2014 individual assets can override with their own provenance." }, - "identifiers": { - "type": "object", - "description": "Platform-specific identifiers for this artifact", - "properties": { - "apple_podcast_id": { - "type": "string", - "description": "Apple Podcasts ID" - }, - "spotify_show_id": { - "type": "string", - "description": "Spotify show ID" - }, - "podcast_guid": { - "type": "string", - "description": "Podcast GUID (from RSS feed)" - }, - "youtube_video_id": { - "type": "string", - "description": "YouTube video ID" - }, - "rss_url": { - "type": "string", - "format": "uri", - "description": "RSS feed URL" - } - }, - "additionalProperties": true + "published_time": { + "description": "When the artifact was published (ISO 8601 format)", + "format": "date-time", + "type": "string" + }, + "url": { + "description": "Optional URL for this artifact (web page, podcast feed, video page). Not all artifacts have URLs (e.g., Instagram content, podcast segments, TV scenes).", + "format": "uri", + "type": "string" + }, + "variant_id": { + "description": "Identifies a specific variant of this artifact. Use for A/B tests, translations, or temporal versions. Examples: 'en', 'es-MX', 'v2', 'headline_test_b'. The combination of artifact_id + variant_id must be unique.", + "type": "string" } }, - "required": ["property_id", "artifact_id", "assets"], - "additionalProperties": true, - "$defs": { - "asset_access": { - "type": "object", - "description": "Authentication for accessing secured asset URLs", - "oneOf": [ - { - "type": "object", - "description": "Bearer token authentication", - "properties": { - "method": { "type": "string", "const": "bearer_token" }, - "token": { - "type": "string", - "description": "OAuth2 bearer token for Authorization header" - } - }, - "required": ["method", "token"] - }, - { - "type": "object", - "description": "Service account authentication (GCP, AWS)", - "properties": { - "method": { "type": "string", "const": "service_account" }, - "provider": { - "type": "string", - "enum": ["gcp", "aws"], - "description": "Cloud provider" - }, - "credentials": { - "type": "object", - "description": "Service account credentials", - "additionalProperties": true - } - }, - "required": ["method", "provider"] - }, - { - "type": "object", - "description": "Pre-signed URL (credentials embedded in URL)", - "properties": { - "method": { "type": "string", "const": "signed_url" } - }, - "required": ["method"] - } - ] - } - } -} + "required": [ + "property_rid", + "artifact_id", + "assets" + ], + "title": "Artifact", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/calibrate-content-request.json b/schemas/cache/content-standards/calibrate-content-request.json index cb8f222a..c451ef9f 100644 --- a/schemas/cache/content-standards/calibrate-content-request.json +++ b/schemas/cache/content-standards/calibrate-content-request.json @@ -1,18 +1,27 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/calibrate-content-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/calibrate-content-request.json", - "title": "Calibrate Content Request", "description": "Request parameters for evaluating content during calibration. Multi-turn dialogue is handled at the protocol layer via contextId.", - "type": "object", "properties": { - "standards_id": { - "type": "string", - "description": "Standards configuration to calibrate against" - }, "artifact": { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Artifact to evaluate" + }, + "idempotency_key": { + "description": "Client-generated unique key for at-most-once execution. If a request with the same key has already been processed, the server returns the original response without re-processing. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.", + "maxLength": 255, + "minLength": 16, + "type": "string" + }, + "standards_id": { + "description": "Standards configuration to calibrate against", + "type": "string" } }, - "required": ["standards_id", "artifact"] -} + "required": [ + "standards_id", + "artifact" + ], + "title": "Calibrate Content Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/calibrate-content-response.json b/schemas/cache/content-standards/calibrate-content-response.json index e211faa3..2b909e0d 100644 --- a/schemas/cache/content-standards/calibrate-content-response.json +++ b/schemas/cache/content-standards/calibrate-content-response.json @@ -1,77 +1,94 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/calibrate-content-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/calibrate-content-response.json", - "title": "Calibrate Content Response", "description": "Response payload with verdict and detailed explanations for collaborative calibration", - "type": "object", "oneOf": [ { - "type": "object", "description": "Success response with detailed calibration feedback", "properties": { - "verdict": { - "type": "string", - "enum": ["pass", "fail"], - "description": "Overall pass/fail verdict for the content evaluation" - }, "confidence": { - "type": "number", - "minimum": 0, + "description": "Model confidence in the verdict (0-1)", "maximum": 1, - "description": "Model confidence in the verdict (0-1)" + "minimum": 0, + "type": "number" + }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "explanation": { - "type": "string", - "description": "Detailed natural language explanation of the decision" + "description": "Detailed natural language explanation of the decision", + "type": "string" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "features": { - "type": "array", "description": "Per-feature breakdown with explanations", "items": { - "type": "object", "properties": { + "explanation": { + "description": "Human-readable explanation of why this feature passed or failed", + "type": "string" + }, "feature_id": { - "type": "string", - "description": "Which feature was evaluated (e.g., brand_safety, brand_suitability, competitor_adjacency)" + "description": "Which feature was evaluated (e.g., brand_safety, brand_suitability, competitor_adjacency)", + "type": "string" }, "status": { - "type": "string", - "enum": ["passed", "failed", "warning", "unevaluated"], - "description": "Evaluation status for this feature" - }, - "explanation": { - "type": "string", - "description": "Human-readable explanation of why this feature passed or failed" + "description": "Evaluation status for this feature", + "enum": [ + "passed", + "failed", + "warning", + "unevaluated" + ], + "type": "string" } }, - "required": ["feature_id", "status"] - } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "required": [ + "feature_id", + "status" + ], + "type": "object" + }, + "type": "array" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "verdict": { + "description": "Overall pass/fail verdict for the content evaluation", + "enum": [ + "pass", + "fail" + ], + "type": "string" } }, - "required": ["verdict"] + "required": [ + "verdict" + ], + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "Calibrate Content Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/content-standards.json b/schemas/cache/content-standards/content-standards.json index 64495de0..808515d0 100644 --- a/schemas/cache/content-standards/content-standards.json +++ b/schemas/cache/content-standards/content-standards.json @@ -1,67 +1,79 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/content-standards.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/content-standards.json", - "title": "Content Standards", "description": "A content standards configuration defining brand safety and suitability policies. Standards are scoped by brand, geography, and channel. Multiple standards can be active simultaneously for different scopes.", - "type": "object", "properties": { - "standards_id": { - "type": "string", - "description": "Unique identifier for this standards configuration" + "calibration_exemplars": { + "description": "Training/test set to calibrate policy interpretation. Provides concrete examples of pass/fail decisions.", + "properties": { + "fail": { + "description": "Artifacts that fail the content standards", + "items": { + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json" + }, + "type": "array" + }, + "pass": { + "description": "Artifacts that pass the content standards", + "items": { + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json" + }, + "type": "array" + } + }, + "type": "object" }, - "name": { - "type": "string", - "description": "Human-readable name for this standards configuration" + "channels_any": { + "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic).", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/channels.json" + }, + "minItems": 1, + "type": "array" }, "countries_all": { - "type": "array", - "items": { "type": "string" }, + "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic).", + "items": { + "type": "string" + }, "minItems": 1, - "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic)." + "type": "array" }, - "channels_any": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/channels.json" }, - "minItems": 1, - "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic)." + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "languages_any": { - "type": "array", - "items": { "type": "string" }, + "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards.", + "items": { + "type": "string" + }, "minItems": 1, - "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards." + "type": "array" }, - "policy": { - "type": "string", - "description": "Natural language policy describing acceptable and unacceptable content contexts. Used by LLMs and human reviewers to make judgments." + "name": { + "description": "Human-readable name for this standards configuration", + "type": "string" }, - "calibration_exemplars": { - "type": "object", - "description": "Training/test set to calibrate policy interpretation. Provides concrete examples of pass/fail decisions.", - "properties": { - "pass": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json" }, - "description": "Artifacts that pass the content standards" - }, - "fail": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json" }, - "description": "Artifacts that fail the content standards" - } - } + "policy": { + "description": "Natural language policy describing acceptable and unacceptable content contexts. Used by LLMs and human reviewers to make judgments.", + "type": "string" }, "pricing_options": { - "type": "array", "description": "Pricing options for this content standards service. The buyer passes the selected pricing_option_id in report_usage for billing verification.", "items": { - "$ref": "/schemas/3.0.0-rc.2/core/pricing-option.json" + "$ref": "/schemas/3.0.0-rc.3/core/pricing-option.json" }, - "minItems": 1 + "minItems": 1, + "type": "array" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "standards_id": { + "description": "Unique identifier for this standards configuration", + "type": "string" } }, - "required": ["standards_id"] -} + "required": [ + "standards_id" + ], + "title": "Content Standards", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/create-content-standards-request.json b/schemas/cache/content-standards/create-content-standards-request.json index 43e65dc7..7ceb7148 100644 --- a/schemas/cache/content-standards/create-content-standards-request.json +++ b/schemas/cache/content-standards/create-content-standards-request.json @@ -1,127 +1,152 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/create-content-standards-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/create-content-standards-request.json", - "title": "Create Content Standards Request", + "additionalProperties": true, "description": "Request parameters for creating a new content standards configuration", - "type": "object", "properties": { - "scope": { - "type": "object", - "description": "Where this standards configuration applies", - "properties": { - "countries_all": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic)." - }, - "channels_any": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/channels.json" }, - "minItems": 1, - "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic)." - }, - "languages_any": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards." - }, - "description": { - "type": "string", - "description": "Human-readable description of this scope" - } - }, - "required": ["languages_any"] - }, - "registry_policy_ids": { - "type": "array", - "items": { "type": "string" }, - "description": "Registry policy IDs to use as the evaluation basis for this content standard. When provided, the agent resolves policies from the registry and uses their policy text and exemplars as the evaluation criteria. The 'policy' field becomes optional when registry_policy_ids is provided." - }, - "policy": { - "type": "string", - "description": "Natural language policy describing acceptable and unacceptable content contexts. Used by LLMs and human reviewers to make judgments. Optional when registry_policy_ids is provided." - }, "calibration_exemplars": { - "type": "object", "description": "Training/test set to calibrate policy interpretation. Use URL references for pages to be fetched and analyzed, or full artifacts for pre-extracted content.", "properties": { - "pass": { - "type": "array", + "fail": { + "description": "Content that fails the standards", "items": { "oneOf": [ { - "type": "object", "description": "URL reference - specific page to fetch and evaluate", "properties": { + "language": { + "description": "BCP 47 language tag for content at this URL", + "type": "string" + }, "type": { - "type": "string", "const": "url", - "description": "Indicates this is a URL reference" + "description": "Indicates this is a URL reference", + "type": "string" }, "value": { - "type": "string", + "description": "Full URL to a specific page (e.g., 'https://news.example.com/controversial-article')", "format": "uri", - "description": "Full URL to a specific page (e.g., 'https://espn.com/nba/story/_/id/12345/lakers-win')" - }, - "language": { - "type": "string", - "description": "BCP 47 language tag for content at this URL" + "type": "string" } }, - "required": ["type", "value"] + "required": [ + "type", + "value" + ], + "type": "object" }, { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Full artifact with pre-extracted content (text, images, video, audio)" } ] }, - "description": "Content that passes the standards" + "type": "array" }, - "fail": { - "type": "array", + "pass": { + "description": "Content that passes the standards", "items": { "oneOf": [ { - "type": "object", "description": "URL reference - specific page to fetch and evaluate", "properties": { + "language": { + "description": "BCP 47 language tag for content at this URL", + "type": "string" + }, "type": { - "type": "string", "const": "url", - "description": "Indicates this is a URL reference" + "description": "Indicates this is a URL reference", + "type": "string" }, "value": { - "type": "string", + "description": "Full URL to a specific page (e.g., 'https://espn.com/nba/story/_/id/12345/lakers-win')", "format": "uri", - "description": "Full URL to a specific page (e.g., 'https://news.example.com/controversial-article')" - }, - "language": { - "type": "string", - "description": "BCP 47 language tag for content at this URL" + "type": "string" } }, - "required": ["type", "value"] + "required": [ + "type", + "value" + ], + "type": "object" }, { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Full artifact with pre-extracted content (text, images, video, audio)" } ] }, - "description": "Content that fails the standards" + "type": "array" } - } + }, + "type": "object" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "idempotency_key": { + "description": "Client-generated unique key for this request. Prevents duplicate content standards creation on retries. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.", + "maxLength": 255, + "minLength": 16, + "type": "string" + }, + "policy": { + "description": "Natural language policy describing acceptable and unacceptable content contexts. Used by LLMs and human reviewers to make judgments. Optional when registry_policy_ids is provided.", + "type": "string" + }, + "registry_policy_ids": { + "description": "Registry policy IDs to use as the evaluation basis for this content standard. When provided, the agent resolves policies from the registry and uses their policy text and exemplars as the evaluation criteria. The 'policy' field becomes optional when registry_policy_ids is provided.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scope": { + "description": "Where this standards configuration applies", + "properties": { + "channels_any": { + "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic).", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/channels.json" + }, + "minItems": 1, + "type": "array" + }, + "countries_all": { + "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic).", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "description": { + "description": "Human-readable description of this scope", + "type": "string" + }, + "languages_any": { + "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "languages_any" + ], + "type": "object" } }, - "required": ["scope", "policy"], - "additionalProperties": true -} + "required": [ + "scope", + "policy" + ], + "title": "Create Content Standards Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/create-content-standards-response.json b/schemas/cache/content-standards/create-content-standards-response.json index d1992857..68fd4363 100644 --- a/schemas/cache/content-standards/create-content-standards-response.json +++ b/schemas/cache/content-standards/create-content-standards-response.json @@ -1,47 +1,53 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/create-content-standards-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/create-content-standards-response.json", - "title": "Create Content Standards Response", "description": "Response payload for creating a content standards configuration", - "type": "object", "oneOf": [ { - "type": "object", "description": "Success response - returns the created standards identifier", "properties": { - "standards_id": { - "type": "string", - "description": "Unique identifier for the created standards configuration" - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "standards_id": { + "description": "Unique identifier for the created standards configuration", + "type": "string" } }, - "required": ["standards_id"] + "required": [ + "standards_id" + ], + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "conflicting_standards_id": { - "type": "string", - "description": "If the error is a scope conflict, the ID of the existing standards that conflict" + "description": "If the error is a scope conflict, the ID of the existing standards that conflict", + "type": "string" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "Create Content Standards Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/get-content-standards-request.json b/schemas/cache/content-standards/get-content-standards-request.json index 87310d8a..df3ab1c2 100644 --- a/schemas/cache/content-standards/get-content-standards-request.json +++ b/schemas/cache/content-standards/get-content-standards-request.json @@ -1,20 +1,22 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/get-content-standards-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/get-content-standards-request.json", - "title": "Get Content Standards Request", "description": "Request parameters for retrieving content safety policies", - "type": "object", "properties": { - "standards_id": { - "type": "string", - "description": "Identifier for the standards configuration to retrieve" - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "standards_id": { + "description": "Identifier for the standards configuration to retrieve", + "type": "string" } }, - "required": ["standards_id"] -} + "required": [ + "standards_id" + ], + "title": "Get Content Standards Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/get-content-standards-response.json b/schemas/cache/content-standards/get-content-standards-response.json index a3d150f4..aad62bab 100644 --- a/schemas/cache/content-standards/get-content-standards-response.json +++ b/schemas/cache/content-standards/get-content-standards-response.json @@ -1,38 +1,44 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/get-content-standards-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/get-content-standards-response.json", - "title": "Get Content Standards Response", "description": "Response payload with content safety policies", - "type": "object", "oneOf": [ { - "type": "object", - "description": "Success response - returns the content standards configuration", "allOf": [ - { "$ref": "/schemas/3.0.0-rc.2/content-standards/content-standards.json" } + { + "$ref": "/schemas/3.0.0-rc.3/content-standards/content-standards.json" + } ], + "description": "Success response - returns the content standards configuration", "properties": { "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" } - } + }, + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "Get Content Standards Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/get-media-buy-artifacts-request.json b/schemas/cache/content-standards/get-media-buy-artifacts-request.json index d86100c5..ab5cec7e 100644 --- a/schemas/cache/content-standards/get-media-buy-artifacts-request.json +++ b/schemas/cache/content-standards/get-media-buy-artifacts-request.json @@ -1,81 +1,73 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/get-media-buy-artifacts-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/get-media-buy-artifacts-request.json", - "title": "Get Media Buy Artifacts Request", "description": "Request parameters for retrieving content artifacts from a media buy for validation", - "type": "object", "properties": { "account": { - "$ref": "/schemas/3.0.0-rc.2/core/account-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/account-ref.json", "description": "Filter artifacts to a specific account. When omitted, returns artifacts across all accessible accounts." }, + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "failures_only": { + "default": false, + "description": "When true, only return artifacts where the seller's local model returned local_verdict: 'fail'. Useful for auditing false positives. Not useful when the seller does not run a local evaluation model (all verdicts are 'unevaluated').", + "type": "boolean" + }, "media_buy_id": { - "type": "string", - "description": "Media buy to get artifacts from" + "description": "Media buy to get artifacts from", + "type": "string" }, "package_ids": { - "type": "array", - "items": { "type": "string" }, + "description": "Filter to specific packages within the media buy", + "items": { + "type": "string" + }, "minItems": 1, - "description": "Filter to specific packages within the media buy" + "type": "array" }, - "sampling": { - "type": "object", - "description": "Sampling parameters. Defaults to the sampling rate agreed in the media buy.", + "pagination": { + "additionalProperties": false, + "description": "Pagination parameters. Uses higher limits than standard pagination because artifact result sets can be very large.", "properties": { - "rate": { - "type": "number", - "minimum": 0, - "maximum": 1, - "description": "Sampling rate (0-1). 1.0 = all deliveries, 0.25 = 25% sample." + "cursor": { + "description": "Opaque cursor from a previous response to fetch the next page", + "type": "string" }, - "method": { - "type": "string", - "enum": ["random", "stratified", "recent", "failures_only"], - "description": "How to select the sample" + "max_results": { + "default": 1000, + "description": "Maximum number of artifacts to return per page", + "maximum": 10000, + "minimum": 1, + "type": "integer" } - } + }, + "type": "object" }, "time_range": { - "type": "object", "description": "Filter to specific time period", "properties": { - "start": { - "type": "string", - "format": "date-time", - "description": "Start of time range (inclusive)" - }, "end": { - "type": "string", + "description": "End of time range (exclusive)", "format": "date-time", - "description": "End of time range (exclusive)" - } - } - }, - "pagination": { - "type": "object", - "description": "Pagination parameters. Uses higher limits than standard pagination because artifact result sets can be very large.", - "properties": { - "max_results": { - "type": "integer", - "minimum": 1, - "maximum": 10000, - "default": 1000, - "description": "Maximum number of artifacts to return per page" + "type": "string" }, - "cursor": { - "type": "string", - "description": "Opaque cursor from a previous response to fetch the next page" + "start": { + "description": "Start of time range (inclusive)", + "format": "date-time", + "type": "string" } }, - "additionalProperties": false - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "type": "object" } }, - "required": ["media_buy_id"] -} + "required": [ + "media_buy_id" + ], + "title": "Get Media Buy Artifacts Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/get-media-buy-artifacts-response.json b/schemas/cache/content-standards/get-media-buy-artifacts-response.json index 1699e0d1..185d7998 100644 --- a/schemas/cache/content-standards/get-media-buy-artifacts-response.json +++ b/schemas/cache/content-standards/get-media-buy-artifacts-response.json @@ -1,123 +1,136 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/get-media-buy-artifacts-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/get-media-buy-artifacts-response.json", - "title": "Get Media Buy Artifacts Response", "description": "Response containing content artifacts from a media buy for validation", - "type": "object", "oneOf": [ { - "type": "object", "description": "Success response with artifacts", "properties": { - "media_buy_id": { - "type": "string", - "description": "Media buy these artifacts belong to" - }, "artifacts": { - "type": "array", "description": "Delivery records with full artifact content", "items": { - "type": "object", "properties": { - "record_id": { - "type": "string", - "description": "Unique identifier for this delivery record" - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "When the delivery occurred" - }, - "package_id": { - "type": "string", - "description": "Which package this delivery belongs to" - }, "artifact": { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Full artifact with content assets" }, - "country": { - "type": "string", - "description": "ISO 3166-1 alpha-2 country code where delivery occurred" - }, - "channel": { - "type": "string", - "description": "Channel type (e.g., display, video, audio, social)" - }, "brand_context": { - "type": "object", "description": "Brand information for policy evaluation. Schema TBD - placeholder for brand identifiers.", "properties": { "brand_id": { - "type": "string", - "description": "Brand identifier" + "description": "Brand identifier", + "type": "string" }, "sku_id": { - "type": "string", - "description": "Product/SKU identifier if applicable" + "description": "Product/SKU identifier if applicable", + "type": "string" } - } + }, + "type": "object" + }, + "channel": { + "description": "Channel type (e.g., display, video, audio, social)", + "type": "string" + }, + "country": { + "description": "ISO 3166-1 alpha-2 country code where delivery occurred", + "type": "string" }, "local_verdict": { - "type": "string", - "enum": ["pass", "fail", "unevaluated"], - "description": "Seller's local model verdict for this artifact" + "description": "Seller's local model verdict for this artifact", + "enum": [ + "pass", + "fail", + "unevaluated" + ], + "type": "string" + }, + "package_id": { + "description": "Which package this delivery belongs to", + "type": "string" + }, + "record_id": { + "description": "Unique identifier for this delivery record", + "type": "string" + }, + "timestamp": { + "description": "When the delivery occurred", + "format": "date-time", + "type": "string" } }, - "required": ["record_id", "artifact"] - } + "required": [ + "record_id", + "artifact" + ], + "type": "object" + }, + "type": "array" }, - "sampling_info": { - "type": "object", - "description": "Information about how the sample was generated", + "collection_info": { + "description": "Information about artifact collection for this media buy. Sampling is configured at buy creation time \u2014 this reports what was actually collected.", "properties": { - "total_deliveries": { - "type": "integer", - "description": "Total deliveries in the time range" + "effective_rate": { + "description": "Actual collection rate achieved (total_collected / total_deliveries)", + "type": "number" }, - "sampled_count": { - "type": "integer", - "description": "Number of artifacts in this response" + "returned_count": { + "description": "Number of artifacts in this response (may be less than total_collected due to pagination or filters)", + "type": "integer" }, - "effective_rate": { - "type": "number", - "description": "Actual sampling rate achieved" + "total_collected": { + "description": "Total artifacts collected (per the buy's sampling configuration)", + "type": "integer" }, - "method": { - "type": "string", - "enum": ["random", "stratified", "recent", "failures_only"], - "description": "Sampling method used" + "total_deliveries": { + "description": "Total deliveries in the requested time range", + "type": "integer" } - } - }, - "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-response.json" + }, + "type": "object" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "media_buy_id": { + "description": "Media buy these artifacts belong to", + "type": "string" + }, + "pagination": { + "$ref": "/schemas/3.0.0-rc.3/core/pagination-response.json" } }, - "required": ["media_buy_id", "artifacts"] + "required": [ + "media_buy_id", + "artifacts" + ], + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "Get Media Buy Artifacts Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/list-content-standards-request.json b/schemas/cache/content-standards/list-content-standards-request.json index ae286ffe..b38c91ad 100644 --- a/schemas/cache/content-standards/list-content-standards-request.json +++ b/schemas/cache/content-standards/list-content-standards-request.json @@ -1,37 +1,43 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/list-content-standards-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/list-content-standards-request.json", - "title": "List Content Standards Request", + "additionalProperties": true, "description": "Request parameters for listing content standards configurations", - "type": "object", "properties": { "channels": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/channels.json" }, + "description": "Filter by channel", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/channels.json" + }, "minItems": 1, - "description": "Filter by channel" + "type": "array" }, - "languages": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "description": "Filter by BCP 47 language tags" + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "countries": { - "type": "array", - "items": { "type": "string" }, + "description": "Filter by ISO 3166-1 alpha-2 country codes", + "items": { + "type": "string" + }, "minItems": 1, - "description": "Filter by ISO 3166-1 alpha-2 country codes" + "type": "array" }, - "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-request.json" + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "languages": { + "description": "Filter by BCP 47 language tags", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "pagination": { + "$ref": "/schemas/3.0.0-rc.3/core/pagination-request.json" } }, - "additionalProperties": true -} + "title": "List Content Standards Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/list-content-standards-response.json b/schemas/cache/content-standards/list-content-standards-response.json index 8e625e47..26624133 100644 --- a/schemas/cache/content-standards/list-content-standards-response.json +++ b/schemas/cache/content-standards/list-content-standards-response.json @@ -1,47 +1,55 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/list-content-standards-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/list-content-standards-response.json", - "title": "List Content Standards Response", "description": "Response payload with list of content standards configurations", - "type": "object", "oneOf": [ { - "type": "object", "description": "Success response - returns array of content standards", "properties": { - "standards": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/content-standards/content-standards.json" }, - "description": "Array of content standards configurations matching the filter criteria" - }, - "pagination": { - "$ref": "/schemas/3.0.0-rc.2/core/pagination-response.json" - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "pagination": { + "$ref": "/schemas/3.0.0-rc.3/core/pagination-response.json" + }, + "standards": { + "description": "Array of content standards configurations matching the filter criteria", + "items": { + "$ref": "/schemas/3.0.0-rc.3/content-standards/content-standards.json" + }, + "type": "array" } }, - "required": ["standards"] + "required": [ + "standards" + ], + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "List Content Standards Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/update-content-standards-request.json b/schemas/cache/content-standards/update-content-standards-request.json index bbb137d9..20aa567a 100644 --- a/schemas/cache/content-standards/update-content-standards-request.json +++ b/schemas/cache/content-standards/update-content-standards-request.json @@ -1,130 +1,152 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/update-content-standards-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/update-content-standards-request.json", - "title": "Update Content Standards Request", + "additionalProperties": true, "description": "Request parameters for updating an existing content standards configuration. Creates a new version.", - "type": "object", "properties": { - "standards_id": { - "type": "string", - "description": "ID of the standards configuration to update" - }, - "scope": { - "type": "object", - "description": "Updated scope for where this standards configuration applies", - "properties": { - "countries_all": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic)." - }, - "channels_any": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/channels.json" }, - "minItems": 1, - "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic)." - }, - "languages_any": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards." - }, - "description": { - "type": "string", - "description": "Human-readable description of this scope" - } - } - }, - "registry_policy_ids": { - "type": "array", - "items": { "type": "string" }, - "description": "Registry policy IDs to use as the evaluation basis. When provided, the agent resolves policies from the registry and uses their policy text and exemplars as the evaluation criteria." - }, - "policy": { - "type": "string", - "description": "Updated natural language policy describing acceptable and unacceptable content contexts." - }, "calibration_exemplars": { - "type": "object", "description": "Updated training/test set to calibrate policy interpretation. Use URL references for pages to be fetched and analyzed, or full artifacts for pre-extracted content.", "properties": { - "pass": { - "type": "array", + "fail": { + "description": "Content that fails the standards", "items": { "oneOf": [ { - "type": "object", "description": "URL reference - specific page to fetch and evaluate", "properties": { + "language": { + "description": "BCP 47 language tag for content at this URL", + "type": "string" + }, "type": { - "type": "string", "const": "url", - "description": "Indicates this is a URL reference" + "description": "Indicates this is a URL reference", + "type": "string" }, "value": { - "type": "string", + "description": "Full URL to a specific page (e.g., 'https://news.example.com/controversial-article')", "format": "uri", - "description": "Full URL to a specific page (e.g., 'https://espn.com/nba/story/_/id/12345/lakers-win')" - }, - "language": { - "type": "string", - "description": "BCP 47 language tag for content at this URL" + "type": "string" } }, - "required": ["type", "value"] + "required": [ + "type", + "value" + ], + "type": "object" }, { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Full artifact with pre-extracted content (text, images, video, audio)" } ] }, - "description": "Content that passes the standards" + "type": "array" }, - "fail": { - "type": "array", + "pass": { + "description": "Content that passes the standards", "items": { "oneOf": [ { - "type": "object", "description": "URL reference - specific page to fetch and evaluate", "properties": { + "language": { + "description": "BCP 47 language tag for content at this URL", + "type": "string" + }, "type": { - "type": "string", "const": "url", - "description": "Indicates this is a URL reference" + "description": "Indicates this is a URL reference", + "type": "string" }, "value": { - "type": "string", + "description": "Full URL to a specific page (e.g., 'https://espn.com/nba/story/_/id/12345/lakers-win')", "format": "uri", - "description": "Full URL to a specific page (e.g., 'https://news.example.com/controversial-article')" - }, - "language": { - "type": "string", - "description": "BCP 47 language tag for content at this URL" + "type": "string" } }, - "required": ["type", "value"] + "required": [ + "type", + "value" + ], + "type": "object" }, { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Full artifact with pre-extracted content (text, images, video, audio)" } ] }, - "description": "Content that fails the standards" + "type": "array" } - } + }, + "type": "object" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "idempotency_key": { + "description": "Client-generated unique key for at-most-once execution. If a request with the same key has already been processed, the server returns the original response without re-processing. MUST be unique per (seller, request) pair to prevent cross-seller correlation. Use a fresh UUID v4 for each request.", + "maxLength": 255, + "minLength": 16, + "type": "string" + }, + "policy": { + "description": "Updated natural language policy describing acceptable and unacceptable content contexts.", + "type": "string" + }, + "registry_policy_ids": { + "description": "Registry policy IDs to use as the evaluation basis. When provided, the agent resolves policies from the registry and uses their policy text and exemplars as the evaluation criteria.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scope": { + "description": "Updated scope for where this standards configuration applies", + "properties": { + "channels_any": { + "description": "Advertising channels. Standards apply to ANY of the listed channels (OR logic).", + "items": { + "$ref": "/schemas/3.0.0-rc.3/enums/channels.json" + }, + "minItems": 1, + "type": "array" + }, + "countries_all": { + "description": "ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic).", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "description": { + "description": "Human-readable description of this scope", + "type": "string" + }, + "languages_any": { + "description": "BCP 47 language tags (e.g., 'en', 'de', 'fr'). Standards apply to content in ANY of these languages (OR logic). Content in unlisted languages is not covered by these standards.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "standards_id": { + "description": "ID of the standards configuration to update", + "type": "string" } }, - "required": ["standards_id"], - "additionalProperties": true -} + "required": [ + "standards_id" + ], + "title": "Update Content Standards Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/update-content-standards-response.json b/schemas/cache/content-standards/update-content-standards-response.json index 2e369286..476d21d1 100644 --- a/schemas/cache/content-standards/update-content-standards-response.json +++ b/schemas/cache/content-standards/update-content-standards-response.json @@ -1,60 +1,68 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/update-content-standards-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/update-content-standards-response.json", - "title": "Update Content Standards Response", "description": "Response from updating a content standards configuration", "oneOf": [ { - "title": "UpdateContentStandardsSuccess", - "type": "object", + "additionalProperties": true, "properties": { - "success": { - "type": "boolean", - "const": true, - "description": "Indicates the update was applied successfully" - }, - "standards_id": { - "type": "string", - "description": "ID of the updated standards configuration" - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "standards_id": { + "description": "ID of the updated standards configuration", + "type": "string" + }, + "success": { + "const": true, + "description": "Indicates the update was applied successfully", + "type": "boolean" } }, - "required": ["success", "standards_id"], - "additionalProperties": true + "required": [ + "success", + "standards_id" + ], + "title": "UpdateContentStandardsSuccess", + "type": "object" }, { - "title": "UpdateContentStandardsError", - "type": "object", + "additionalProperties": true, "properties": { - "success": { - "type": "boolean", - "const": false, - "description": "Indicates the update failed" - }, - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" }, - "description": "Errors that occurred during the update", - "minItems": 1 - }, "conflicting_standards_id": { - "type": "string", - "description": "If scope change conflicts with another configuration, the ID of the conflicting standards" + "description": "If scope change conflicts with another configuration, the ID of the conflicting standards", + "type": "string" }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "description": "Errors that occurred during the update", + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "minItems": 1, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "success": { + "const": false, + "description": "Indicates the update failed", + "type": "boolean" } }, - "required": ["success", "errors"], - "additionalProperties": true + "required": [ + "success", + "errors" + ], + "title": "UpdateContentStandardsError", + "type": "object" } - ] -} + ], + "title": "Update Content Standards Response" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/validate-content-delivery-request.json b/schemas/cache/content-standards/validate-content-delivery-request.json index b6728830..0e807e8a 100644 --- a/schemas/cache/content-standards/validate-content-delivery-request.json +++ b/schemas/cache/content-standards/validate-content-delivery-request.json @@ -1,82 +1,90 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/validate-content-delivery-request.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/validate-content-delivery-request.json", - "title": "Validate Content Delivery Request", "description": "Request parameters for batch validating delivery records against content safety policies", - "type": "object", "properties": { - "standards_id": { - "type": "string", - "description": "Standards configuration to validate against" + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" + }, + "feature_ids": { + "description": "Specific features to evaluate (defaults to all)", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "include_passed": { + "default": true, + "description": "Include passed records in results", + "type": "boolean" }, "records": { - "type": "array", "description": "Delivery records to validate (max 10,000)", - "minItems": 1, - "maxItems": 10000, "items": { - "type": "object", "properties": { - "record_id": { - "type": "string", - "description": "Unique identifier for this delivery record" - }, - "media_buy_id": { - "type": "string", - "description": "Media buy this record belongs to (when batching across multiple buys)" - }, - "timestamp": { - "type": "string", - "format": "date-time", - "description": "When the delivery occurred" - }, "artifact": { - "$ref": "/schemas/3.0.0-rc.2/content-standards/artifact.json", + "$ref": "/schemas/3.0.0-rc.3/content-standards/artifact.json", "description": "Artifact where ad was delivered" }, - "country": { - "type": "string", - "description": "ISO 3166-1 alpha-2 country code where delivery occurred" - }, - "channel": { - "type": "string", - "description": "Channel type (e.g., display, video, audio, social)" - }, "brand_context": { - "type": "object", "description": "Brand information for policy evaluation. Schema TBD - placeholder for brand identifiers.", "properties": { "brand_id": { - "type": "string", - "description": "Brand identifier" + "description": "Brand identifier", + "type": "string" }, "sku_id": { - "type": "string", - "description": "Product/SKU identifier if applicable" + "description": "Product/SKU identifier if applicable", + "type": "string" } - } + }, + "type": "object" + }, + "channel": { + "description": "Channel type (e.g., display, video, audio, social)", + "type": "string" + }, + "country": { + "description": "ISO 3166-1 alpha-2 country code where delivery occurred", + "type": "string" + }, + "media_buy_id": { + "description": "Media buy this record belongs to (when batching across multiple buys)", + "type": "string" + }, + "record_id": { + "description": "Unique identifier for this delivery record", + "type": "string" + }, + "timestamp": { + "description": "When the delivery occurred", + "format": "date-time", + "type": "string" } }, - "required": ["record_id", "artifact"] - } - }, - "feature_ids": { - "type": "array", - "items": { "type": "string" }, + "required": [ + "record_id", + "artifact" + ], + "type": "object" + }, + "maxItems": 10000, "minItems": 1, - "description": "Specific features to evaluate (defaults to all)" - }, - "include_passed": { - "type": "boolean", - "default": true, - "description": "Include passed records in results" + "type": "array" }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "standards_id": { + "description": "Standards configuration to validate against", + "type": "string" } }, - "required": ["standards_id", "records"] -} + "required": [ + "standards_id", + "records" + ], + "title": "Validate Content Delivery Request", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/content-standards/validate-content-delivery-response.json b/schemas/cache/content-standards/validate-content-delivery-response.json index 42355a2d..419a2bdf 100644 --- a/schemas/cache/content-standards/validate-content-delivery-response.json +++ b/schemas/cache/content-standards/validate-content-delivery-response.json @@ -1,89 +1,124 @@ { + "$id": "/schemas/3.0.0-rc.3/content-standards/validate-content-delivery-response.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/content-standards/validate-content-delivery-response.json", - "title": "Validate Content Delivery Response", "description": "Response payload with per-record verdicts and optional feature breakdown", - "type": "object", "oneOf": [ { - "type": "object", "description": "Success response", "properties": { - "summary": { - "type": "object", - "description": "Summary counts across all records", - "properties": { - "total_records": { "type": "integer" }, - "passed_records": { "type": "integer" }, - "failed_records": { "type": "integer" } - }, - "required": ["total_records", "passed_records", "failed_records"] + "context": { + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "results": { - "type": "array", "description": "Per-record evaluation results", "items": { - "type": "object", "properties": { - "record_id": { - "type": "string", - "description": "Which delivery record was evaluated" - }, - "verdict": { - "type": "string", - "enum": ["pass", "fail"], - "description": "Overall pass/fail verdict for this record" - }, "features": { - "type": "array", "description": "Optional feature-level breakdown", "items": { - "type": "object", "properties": { - "feature_id": { "type": "string" }, - "status": { - "type": "string", - "enum": ["passed", "failed", "warning", "unevaluated"] + "feature_id": { + "type": "string" + }, + "message": { + "type": "string" }, - "value": {}, - "message": { "type": "string" }, "rule_id": { - "type": "string", - "description": "Which rule triggered this result (e.g., GARM category, Scope3 standard)" - } + "description": "Which rule triggered this result (e.g., GARM category, Scope3 standard)", + "type": "string" + }, + "status": { + "enum": [ + "passed", + "failed", + "warning", + "unevaluated" + ], + "type": "string" + }, + "value": {} }, - "required": ["feature_id", "status"] - } + "required": [ + "feature_id", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "record_id": { + "description": "Which delivery record was evaluated", + "type": "string" + }, + "verdict": { + "description": "Overall pass/fail verdict for this record", + "enum": [ + "pass", + "fail" + ], + "type": "string" } }, - "required": ["record_id", "verdict"] - } - }, - "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "required": [ + "record_id", + "verdict" + ], + "type": "object" + }, + "type": "array" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "summary": { + "description": "Summary counts across all records", + "properties": { + "failed_records": { + "type": "integer" + }, + "passed_records": { + "type": "integer" + }, + "total_records": { + "type": "integer" + } + }, + "required": [ + "total_records", + "passed_records", + "failed_records" + ], + "type": "object" } }, - "required": ["summary", "results"] + "required": [ + "summary", + "results" + ], + "type": "object" }, { - "type": "object", "description": "Error response", "properties": { - "errors": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/core/error.json" } - }, "context": { - "$ref": "/schemas/3.0.0-rc.2/core/context.json" + "$ref": "/schemas/3.0.0-rc.3/core/context.json" + }, + "errors": { + "items": { + "$ref": "/schemas/3.0.0-rc.3/core/error.json" + }, + "type": "array" }, "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" } }, - "required": ["errors"] + "required": [ + "errors" + ], + "type": "object" } - ] -} + ], + "title": "Validate Content Delivery Response", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/account-ref.json b/schemas/cache/core/account-ref.json index 1f429449..258283f4 100644 --- a/schemas/cache/core/account-ref.json +++ b/schemas/cache/core/account-ref.json @@ -1,45 +1,69 @@ { + "$id": "/schemas/3.0.0-rc.3/core/account-ref.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/account-ref.json", - "title": "Account Reference", "description": "Reference to an account by seller-assigned ID or natural key. Use account_id for explicit accounts (require_operator_auth: true, discovered via list_accounts). Use the natural key (brand + operator) for implicit accounts (require_operator_auth: false, declared via sync_accounts). For sandbox: explicit accounts use account_id (pre-existing test account), implicit accounts use the natural key with sandbox: true.", - "type": "object", + "examples": [ + { + "account_id": "acc_acme_001" + }, + { + "brand": { + "domain": "acme-corp.com" + }, + "operator": "acme-corp.com" + }, + { + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "operator": "pinnacle-media.com" + }, + { + "brand": { + "domain": "acme-corp.com" + }, + "operator": "acme-corp.com", + "sandbox": true + } + ], "oneOf": [ { + "additionalProperties": false, "properties": { "account_id": { - "type": "string", - "description": "Seller-assigned account identifier (from sync_accounts or list_accounts)" + "description": "Seller-assigned account identifier (from sync_accounts or list_accounts)", + "type": "string" } }, - "required": ["account_id"], - "additionalProperties": false + "required": [ + "account_id" + ] }, { + "additionalProperties": false, "properties": { "brand": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", "description": "Brand reference identifying the advertiser" }, "operator": { - "type": "string", "description": "Domain of the entity operating on the brand's behalf. When the brand operates directly, this is the brand's domain.", - "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "type": "string" }, "sandbox": { - "type": "boolean", + "default": false, "description": "When true, references the sandbox account for this brand/operator pair. Defaults to false (production account).", - "default": false + "type": "boolean" } }, - "required": ["brand", "operator"], - "additionalProperties": false + "required": [ + "brand", + "operator" + ] } ], - "examples": [ - { "account_id": "acc_acme_001" }, - { "brand": { "domain": "acme-corp.com" }, "operator": "acme-corp.com" }, - { "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, "operator": "pinnacle-media.com" }, - { "brand": { "domain": "acme-corp.com" }, "operator": "acme-corp.com", "sandbox": true } - ] -} + "title": "Account Reference", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/account.json b/schemas/cache/core/account.json index efbdd752..4a05cbdb 100644 --- a/schemas/cache/core/account.json +++ b/schemas/cache/core/account.json @@ -1,219 +1,282 @@ { + "$id": "/schemas/3.0.0-rc.3/core/account.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/account.json", - "title": "Account", + "additionalProperties": true, "description": "A billing account representing the relationship between a buyer and seller. The account determines rate cards, payment terms, and billing entity.", - "type": "object", - "properties": { - "account_id": { - "type": "string", - "description": "Unique identifier for this account" + "examples": [ + { + "data": { + "account_id": "acc_acme_direct", + "account_scope": "brand", + "advertiser": "Acme Corp", + "billing": "operator", + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme", + "operator": "acme-corp.com", + "payment_terms": "net_30", + "rate_card": "acme_vip_2024", + "status": "active" + }, + "description": "Direct advertiser account" }, - "name": { - "type": "string", - "description": "Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')" + { + "data": { + "account_id": "acc_acme_pinnacle", + "account_scope": "operator_brand", + "advertiser": "Acme Corp", + "billing": "operator", + "billing_proxy": "Pinnacle Media", + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme c/o Pinnacle", + "operator": "pinnacle-media.com", + "payment_terms": "net_60", + "rate_card": "acme_vip_2024", + "status": "active" + }, + "description": "Advertiser account with agency billing proxy" }, - "advertiser": { - "type": "string", - "description": "The advertiser whose rates apply to this account" + { + "data": { + "account_id": "acc_pinnacle", + "account_scope": "operator", + "advertiser": "Pinnacle Media", + "billing": "operator", + "brand": { + "domain": "pinnacle-media.com" + }, + "name": "Pinnacle", + "operator": "pinnacle-media.com", + "payment_terms": "net_45", + "rate_card": "agency_standard", + "status": "active" + }, + "description": "Agency as direct buyer" }, - "billing_proxy": { - "type": "string", - "description": "Optional intermediary who receives invoices on behalf of the advertiser (e.g., agency)" + { + "data": { + "account_id": "acc_spark_001", + "account_scope": "operator_brand", + "advertiser": "Nova Brands", + "billing": "agent", + "brand": { + "brand_id": "spark", + "domain": "nova-brands.com" + }, + "name": "Spark (via Pinnacle)", + "operator": "pinnacle-media.com", + "payment_terms": "net_30", + "status": "active" + }, + "description": "Account with brand identity and operator (via sync_accounts)" }, - "status": { - "type": "string", - "enum": ["active", "pending_approval", "rejected", "payment_required", "suspended", "closed"], - "description": "Account status. pending_approval: seller reviewing (credit, contracts). rejected: seller declined the account request. payment_required: credit limit reached or funds depleted. suspended: was active, now paused. closed: was active, now terminated." + { + "data": { + "account_id": "acc_glow_pending", + "account_scope": "brand", + "advertiser": "Nova Brands", + "billing": "operator", + "brand": { + "brand_id": "glow", + "domain": "nova-brands.com" + }, + "name": "Glow", + "operator": "pinnacle-media.com", + "status": "pending_approval" + }, + "description": "Pending account awaiting seller approval" }, - "brand": { - "$ref": "/schemas/3.0.0-rc.2/core/brand-ref.json", - "description": "Brand reference identifying the advertiser" + { + "data": { + "account_id": "acc_acme_direct_bill", + "account_scope": "operator_brand", + "advertiser": "Acme Corp", + "billing": "advertiser", + "billing_entity": { + "address": { + "city": "Munich", + "country": "DE", + "postal_code": "80331", + "street": "Hauptstrasse 42" + }, + "contacts": [ + { + "email": "billing@acme-corp.com", + "name": "AP Department", + "role": "billing" + } + ], + "legal_name": "Acme Corporation GmbH", + "vat_id": "DE987654321" + }, + "brand": { + "domain": "acme-corp.com" + }, + "name": "Acme (billed direct)", + "operator": "pinnacle-media.com", + "payment_terms": "net_30", + "status": "active" + }, + "description": "Agency operates but advertiser is billed directly with structured billing entity" + } + ], + "properties": { + "account_id": { + "description": "Unique identifier for this account", + "type": "string" }, - "operator": { - "type": "string", - "description": "Domain of the entity operating this account. When the brand operates directly, this is the brand's domain.", - "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$" + "account_scope": { + "description": "How the seller scoped this account. operator: shared across all brands for this operator. brand: shared across all operators for this brand. operator_brand: dedicated to a specific operator+brand combination. agent: the agent's default account with no brand or operator association.", + "enum": [ + "operator", + "brand", + "operator_brand", + "agent" + ], + "type": "string" + }, + "advertiser": { + "description": "The advertiser whose rates apply to this account", + "type": "string" }, "billing": { - "type": "string", - "enum": ["operator", "agent"], - "description": "Who is invoiced on this account. operator: seller invoices the operator (agency or brand buying direct). agent: agent consolidates billing." + "description": "Who is invoiced on this account. operator: seller invoices the operator (agency or brand buying direct). agent: agent consolidates billing. advertiser: seller invoices the advertiser directly, even when a different operator places orders on their behalf. See billing_entity for the invoiced party's business details.", + "enum": [ + "operator", + "agent", + "advertiser" + ], + "type": "string" }, - "rate_card": { - "type": "string", - "description": "Identifier for the rate card applied to this account" + "billing_entity": { + "$ref": "/schemas/3.0.0-rc.3/core/business-entity.json", + "description": "Business entity details for the party responsible for payment. Contains the legal name, tax IDs, address, and bank details needed for formal B2B invoicing. Corresponds to whoever billing points to (operator, agent, or advertiser). When this account appears in a response, bank details MUST be omitted (write-only)." }, - "payment_terms": { - "type": "string", - "enum": ["net_15", "net_30", "net_45", "net_60", "net_90", "prepay"], - "description": "Payment terms agreed for this account. Binding for all invoices when the account is active." + "billing_proxy": { + "description": "Optional intermediary who receives invoices on behalf of the advertiser (e.g., agency)", + "type": "string" + }, + "brand": { + "$ref": "/schemas/3.0.0-rc.3/core/brand-ref.json", + "description": "Brand reference identifying the advertiser" }, "credit_limit": { - "type": "object", "description": "Maximum outstanding balance allowed", "properties": { "amount": { - "type": "number", - "minimum": 0 + "minimum": 0, + "type": "number" }, "currency": { - "type": "string", - "pattern": "^[A-Z]{3}$" + "pattern": "^[A-Z]{3}$", + "type": "string" } }, - "required": ["amount", "currency"] + "required": [ + "amount", + "currency" + ], + "type": "object" }, - "setup": { - "type": "object", - "description": "Present when status is 'pending_approval'. Contains next steps for completing account activation.", - "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "URL where the human can complete the required action (credit application, legal agreement, add funds)." - }, - "message": { - "type": "string", - "description": "Human-readable description of what's needed." - }, - "expires_at": { - "type": "string", - "format": "date-time", - "description": "When this setup link expires." - } - }, - "required": ["message"], - "additionalProperties": true - }, - "account_scope": { - "type": "string", - "enum": ["operator", "brand", "operator_brand", "agent"], - "description": "How the seller scoped this account. operator: shared across all brands for this operator. brand: shared across all operators for this brand. operator_brand: dedicated to a specific operator+brand combination. agent: the agent's default account with no brand or operator association." + "ext": { + "$ref": "/schemas/3.0.0-rc.3/core/ext.json" }, "governance_agents": { - "type": "array", - "description": "Governance agent endpoints for this account. When present, the seller MUST call these agents for governance approval before confirming media buy requests. Each agent can be scoped to specific validation categories. All applicable agents must approve for the action to proceed (unanimous approval).", + "description": "Governance agent endpoints registered on this account. Authentication credentials are write-only and not included in responses \u2014 use sync_governance to set or update credentials.", "items": { - "type": "object", + "additionalProperties": false, "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "Governance agent endpoint URL." - }, - "authentication": { - "type": "object", - "properties": { - "schemes": { - "type": "array", - "items": { "$ref": "/schemas/3.0.0-rc.2/enums/auth-scheme.json" }, - "minItems": 1, - "maxItems": 1 - }, - "credentials": { - "type": "string", - "description": "Authentication credential (e.g., Bearer token).", - "minLength": 32 - } + "categories": { + "description": "Governance categories this agent handles (e.g., ['budget_authority', 'strategic_alignment']). When omitted, the agent handles all categories.", + "items": { + "maxLength": 64, + "pattern": "^[a-z][a-z0-9_]*$", + "type": "string" }, - "required": ["schemes", "credentials"], - "additionalProperties": false + "maxItems": 20, + "type": "array" }, - "categories": { - "type": "array", - "items": { "type": "string" }, - "description": "Governance categories this agent handles (e.g., ['budget_authority', 'strategic_alignment']). When omitted, the agent handles all categories." + "url": { + "description": "Governance agent endpoint URL. Must use HTTPS.", + "format": "uri", + "pattern": "^https://", + "type": "string" } }, - "required": ["url", "authentication"], - "additionalProperties": false + "required": [ + "url" + ], + "type": "object" }, - "minItems": 1 + "maxItems": 10, + "type": "array" }, - "sandbox": { - "type": "boolean", - "description": "When true, this is a sandbox account — no real platform calls, no real spend. For explicit accounts (require_operator_auth: true), sandbox accounts are pre-existing test accounts on the platform discovered via list_accounts. For implicit accounts, sandbox is part of the natural key: the same brand/operator pair can have both a production and sandbox account." + "name": { + "description": "Human-readable account name (e.g., 'Acme', 'Acme c/o Pinnacle')", + "type": "string" }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["account_id", "name", "status"], - "additionalProperties": true, - "examples": [ - { - "description": "Direct advertiser account", - "data": { - "account_id": "acc_acme_direct", - "name": "Acme", - "advertiser": "Acme Corp", - "brand": { "domain": "acme-corp.com" }, - "operator": "acme-corp.com", - "status": "active", - "billing": "operator", - "account_scope": "brand", - "rate_card": "acme_vip_2024", - "payment_terms": "net_30" - } + "operator": { + "description": "Domain of the entity operating this account. When the brand operates directly, this is the brand's domain.", + "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$", + "type": "string" }, - { - "description": "Advertiser account with agency billing proxy", - "data": { - "account_id": "acc_acme_pinnacle", - "name": "Acme c/o Pinnacle", - "advertiser": "Acme Corp", - "billing_proxy": "Pinnacle Media", - "brand": { "domain": "acme-corp.com" }, - "operator": "pinnacle-media.com", - "status": "active", - "billing": "operator", - "account_scope": "operator_brand", - "rate_card": "acme_vip_2024", - "payment_terms": "net_60" - } + "payment_terms": { + "description": "Payment terms agreed for this account. Binding for all invoices when the account is active.", + "enum": [ + "net_15", + "net_30", + "net_45", + "net_60", + "net_90", + "prepay" + ], + "type": "string" }, - { - "description": "Agency as direct buyer", - "data": { - "account_id": "acc_pinnacle", - "name": "Pinnacle", - "advertiser": "Pinnacle Media", - "brand": { "domain": "pinnacle-media.com" }, - "operator": "pinnacle-media.com", - "status": "active", - "billing": "operator", - "account_scope": "operator", - "rate_card": "agency_standard", - "payment_terms": "net_45" - } + "rate_card": { + "description": "Identifier for the rate card applied to this account", + "type": "string" }, - { - "description": "Account with brand identity and operator (via sync_accounts)", - "data": { - "account_id": "acc_spark_001", - "name": "Spark (via Pinnacle)", - "advertiser": "Nova Brands", - "status": "active", - "brand": { "domain": "nova-brands.com", "brand_id": "spark" }, - "operator": "pinnacle-media.com", - "billing": "agent", - "account_scope": "operator_brand", - "payment_terms": "net_30" - } + "sandbox": { + "description": "When true, this is a sandbox account \u2014 no real platform calls, no real spend. For explicit accounts (require_operator_auth: true), sandbox accounts are pre-existing test accounts on the platform discovered via list_accounts. For implicit accounts, sandbox is part of the natural key: the same brand/operator pair can have both a production and sandbox account.", + "type": "boolean" }, - { - "description": "Pending account awaiting seller approval", - "data": { - "account_id": "acc_glow_pending", - "name": "Glow", - "advertiser": "Nova Brands", - "status": "pending_approval", - "brand": { "domain": "nova-brands.com", "brand_id": "glow" }, - "operator": "pinnacle-media.com", - "billing": "operator", - "account_scope": "brand" - } + "setup": { + "additionalProperties": true, + "description": "Present when status is 'pending_approval'. Contains next steps for completing account activation.", + "properties": { + "expires_at": { + "description": "When this setup link expires.", + "format": "date-time", + "type": "string" + }, + "message": { + "description": "Human-readable description of what's needed.", + "type": "string" + }, + "url": { + "description": "URL where the human can complete the required action (credit application, legal agreement, add funds).", + "format": "uri", + "type": "string" + } + }, + "required": [ + "message" + ], + "type": "object" + }, + "status": { + "$ref": "/schemas/3.0.0-rc.3/enums/account-status.json", + "description": "Account lifecycle status. See the Accounts Protocol overview for the operations matrix showing which tasks are permitted in each state." } - ] -} + }, + "required": [ + "account_id", + "name", + "status" + ], + "title": "Account", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/activation-key.json b/schemas/cache/core/activation-key.json index 72281a10..f34fa863 100644 --- a/schemas/cache/core/activation-key.json +++ b/schemas/cache/core/activation-key.json @@ -1,50 +1,50 @@ { + "$id": "/schemas/3.0.0-rc.3/core/activation-key.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/activation-key.json", - "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": [ { + "additionalProperties": true, "properties": { + "segment_id": { + "description": "The platform-specific segment identifier to use in campaign targeting", + "type": "string" + }, "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" + "description": "Segment ID based targeting", + "type": "string" } }, "required": [ "type", "segment_id" - ], - "additionalProperties": true + ] }, { + "additionalProperties": true, "properties": { + "key": { + "description": "The targeting parameter key", + "type": "string" + }, "type": { - "type": "string", "const": "key_value", - "description": "Key-value pair based targeting" - }, - "key": { - "type": "string", - "description": "The targeting parameter key" + "description": "Key-value pair based targeting", + "type": "string" }, "value": { - "type": "string", - "description": "The targeting parameter value" + "description": "The targeting parameter value", + "type": "string" } }, "required": [ "type", "key", "value" - ], - "additionalProperties": true + ] } - ] -} + ], + "title": "Activation Key", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/ad-inventory-config.json b/schemas/cache/core/ad-inventory-config.json index 97e462b5..67cd9c0f 100644 --- a/schemas/cache/core/ad-inventory-config.json +++ b/schemas/cache/core/ad-inventory-config.json @@ -1,37 +1,39 @@ { + "$id": "/schemas/3.0.0-rc.3/core/ad-inventory-config.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/ad-inventory-config.json", - "title": "Ad Inventory Configuration", - "description": "Break-based ad inventory configuration for an episode. Describes the ad breaks available within the content. For non-break ad formats (host reads, integrations, sponsorships), use product placements instead.", - "type": "object", + "additionalProperties": true, + "description": "Break-based ad inventory configuration for an installment. Describes the ad breaks available within the content. For non-break ad formats (host reads, integrations, sponsorships), use product placements instead.", "properties": { "expected_breaks": { - "type": "integer", - "minimum": 0, - "description": "Number of planned ad breaks in the episode" - }, - "total_ad_seconds": { - "type": "integer", + "description": "Number of planned ad breaks in the installment", "minimum": 0, - "description": "Total seconds of ad time across all breaks" + "type": "integer" }, "max_ad_duration_seconds": { - "type": "integer", + "description": "Maximum duration in seconds for a single ad within a break. Buyers need this to know whether their creative fits.", "minimum": 1, - "description": "Maximum duration in seconds for a single ad within a break. Buyers need this to know whether their creative fits." - }, - "unplanned_breaks": { - "type": "boolean", - "description": "Whether ad breaks are dynamic and driven by live conditions (sports timeouts, election coverage). When false, all breaks are pre-defined." + "type": "integer" }, "supported_formats": { - "type": "array", "description": "Ad format types supported in breaks (e.g., 'video', 'audio', 'display')", "items": { "type": "string" - } + }, + "type": "array" + }, + "total_ad_seconds": { + "description": "Total seconds of ad time across all breaks", + "minimum": 0, + "type": "integer" + }, + "unplanned_breaks": { + "description": "Whether ad breaks are dynamic and driven by live conditions (sports timeouts, election coverage). When false, all breaks are pre-defined.", + "type": "boolean" } }, - "required": ["expected_breaks"], - "additionalProperties": true -} + "required": [ + "expected_breaks" + ], + "title": "Ad Inventory Configuration", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/agent-signing-key.json b/schemas/cache/core/agent-signing-key.json new file mode 100644 index 00000000..a73d5d21 --- /dev/null +++ b/schemas/cache/core/agent-signing-key.json @@ -0,0 +1,50 @@ +{ + "$id": "/schemas/3.0.0-rc.3/core/agent-signing-key.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, + "description": "Publisher-attested public key material for an authorized agent. Buyers use these keys to verify signed agent responses against the trust anchor published in adagents.json rather than trusting key discovery from the agent domain alone.", + "properties": { + "alg": { + "description": "Expected signing algorithm for this key, such as 'EdDSA' or 'RS256'.", + "type": "string" + }, + "crv": { + "description": "Curve name for OKP or EC keys, such as 'Ed25519' or 'P-256'.", + "type": "string" + }, + "e": { + "description": "Base64url-encoded RSA public exponent.", + "type": "string" + }, + "kid": { + "description": "Key identifier for selecting the correct signing key.", + "type": "string" + }, + "kty": { + "description": "JWK key type, such as 'OKP', 'EC', or 'RSA'.", + "type": "string" + }, + "n": { + "description": "Base64url-encoded RSA modulus.", + "type": "string" + }, + "use": { + "description": "Optional JWK use value. Typically 'sig' for signing keys.", + "type": "string" + }, + "x": { + "description": "Base64url-encoded public key x coordinate or public key value for OKP keys.", + "type": "string" + }, + "y": { + "description": "Base64url-encoded public key y coordinate for EC keys.", + "type": "string" + } + }, + "required": [ + "kid", + "kty" + ], + "title": "Agent Signing Key", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/app-item.json b/schemas/cache/core/app-item.json deleted file mode 100644 index 2f3cd044..00000000 --- a/schemas/cache/core/app-item.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/app-item.json", - "title": "App Item", - "description": "A mobile application within an app-type catalog. Carries the app metadata and store identifiers that platforms use for app install campaigns and re-engagement ads. Maps to Google App Campaigns, Apple Search Ads, Meta App Ads, TikTok App Campaigns, and Snapchat App Install Ads. Each item represents one app on one platform — iOS and Android variants are separate items.", - "type": "object", - "properties": { - "app_id": { - "type": "string", - "description": "Buyer-assigned unique identifier for this app item. Used for catalog deduplication and content_ids matching on install and launch events." - }, - "name": { - "type": "string", - "description": "App display name as shown in the store (e.g., 'Puzzle Quest: Match 3', 'Acme Banking')." - }, - "platform": { - "type": "string", - "enum": ["ios", "android"], - "description": "Target platform. iOS and Android are separate items because they have distinct store identifiers and attribution mechanisms." - }, - "bundle_id": { - "type": "string", - "description": "Reverse-domain bundle identifier (e.g., 'com.acmegames.puzzlequest'). The universal store identifier: required for Android (Google Play), also used for iOS MMP attribution, SKAN matching, and app-ads.txt verification. Distinct from app_id, which is a buyer-assigned catalog key." - }, - "apple_id": { - "type": "string", - "pattern": "^[0-9]+$", - "description": "Numeric Apple App Store ID (e.g., '389801252'). Required for Apple Search Ads and iOS platforms that use the numeric ID rather than bundle_id." - }, - "description": { - "type": "string", - "description": "App description. Platforms typically pull this from the store listing automatically; supply here to override or for platforms that require it in the request." - }, - "category": { - "type": "string", - "description": "Primary store category (e.g., 'games', 'productivity', 'finance', 'health_fitness', 'social_networking')." - }, - "genre": { - "type": "string", - "description": "Sub-genre within the category. Particularly relevant for games (e.g., 'puzzle', 'strategy', 'rpg', 'casual', 'simulation', 'action')." - }, - "icon_url": { - "type": "string", - "format": "uri", - "description": "App icon image URL. Typically 1024×1024 px." - }, - "screenshots": { - "type": "array", - "description": "App store screenshot URLs. Used by platforms for creative generation when native store assets are not available.", - "items": { - "type": "string", - "format": "uri" - }, - "minItems": 1 - }, - "preview_video_url": { - "type": "string", - "format": "uri", - "description": "App preview or gameplay video URL for use in video ad creatives." - }, - "store_url": { - "type": "string", - "format": "uri", - "description": "Direct link to the app's store listing (Apple App Store or Google Play)." - }, - "deep_link_url": { - "type": "string", - "format": "uri", - "description": "Deep link URI for re-engagement campaigns targeting existing users. Use Universal Links (iOS) or App Links (Android) where available (e.g., 'https://acmegames.com/app/level/5'). Falls back to URI scheme (e.g., 'acmegames://level/5') when universal links are not configured." - }, - "price": { - "$ref": "/schemas/3.0.0-rc.2/core/price.json", - "description": "App download price. Set amount to 0 for free apps." - }, - "rating": { - "type": "number", - "minimum": 0, - "maximum": 5, - "description": "Average store rating (0–5). Use 0 to indicate no ratings yet." - }, - "rating_count": { - "type": "integer", - "minimum": 0, - "description": "Total number of store ratings." - }, - "content_rating": { - "type": "string", - "description": "Age or content rating (e.g., '4+', '12+', 'Everyone', 'Teen', 'PEGI 12'). Format depends on store and region." - }, - "tags": { - "type": "array", - "description": "Tags for filtering and targeting (e.g., 'multiplayer', 'offline', 'no-ads', 'subscription').", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "assets": { - "type": "array", - "description": "Typed creative asset pools for this app. Uses the same OfferingAssetGroup structure as offering-type catalogs. Standard group IDs: 'images_landscape' (promotional hero), 'images_vertical' (9:16 for Snap, Stories), 'images_square' (1:1 for display), 'video' (gameplay or demo video). Supplements icon_url and screenshots for platform-specific format requirements.", - "items": { - "$ref": "/schemas/3.0.0-rc.2/core/offering-asset-group.json" - }, - "minItems": 1 - }, - "ext": { - "$ref": "/schemas/3.0.0-rc.2/core/ext.json" - } - }, - "required": ["app_id", "name", "platform"], - "additionalProperties": true, - "examples": [ - { - "description": "iOS casual game targeting new installs", - "data": { - "app_id": "puzzlequest-ios", - "name": "Puzzle Quest: Match 3", - "platform": "ios", - "bundle_id": "com.acmegames.puzzlequest", - "apple_id": "1234567890", - "category": "games", - "genre": "puzzle", - "icon_url": "https://assets.acmegames.com/puzzlequest/icon-1024.png", - "store_url": "https://apps.apple.com/app/puzzle-quest-match-3/id1234567890", - "price": { "amount": 0, "currency": "USD" }, - "rating": 4.7, - "rating_count": 82000, - "content_rating": "4+", - "tags": ["casual", "offline"] - } - }, - { - "description": "Android app with re-engagement deep links", - "data": { - "app_id": "acmebank-android", - "name": "Acme Banking", - "platform": "android", - "bundle_id": "com.acmefinancial.banking", - "category": "finance", - "icon_url": "https://assets.acmefinancial.com/app/icon.png", - "store_url": "https://play.google.com/store/apps/details?id=com.acmefinancial.banking", - "deep_link_url": "https://app.acmefinancial.com/offers", - "price": { "amount": 0, "currency": "USD" }, - "rating": 4.4, - "rating_count": 31500, - "content_rating": "Everyone", - "tags": ["finance", "banking"] - } - } - ] -} diff --git a/schemas/cache/core/assets/audio-asset.json b/schemas/cache/core/assets/audio-asset.json index 5cb8595e..d49a0db4 100644 --- a/schemas/cache/core/assets/audio-asset.json +++ b/schemas/cache/core/assets/audio-asset.json @@ -1,73 +1,82 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/audio-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/audio-asset.json", - "title": "Audio Asset", + "additionalProperties": true, "description": "Audio asset with URL and technical specifications", - "type": "object", "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "URL to the audio asset" + "bit_depth": { + "description": "Bit depth", + "enum": [ + 16, + 24, + 32 + ], + "type": "integer" + }, + "bitrate_kbps": { + "description": "Bitrate in kilobits per second", + "minimum": 1, + "type": "integer" + }, + "channels": { + "description": "Channel configuration", + "enum": [ + "mono", + "stereo", + "5.1", + "7.1" + ], + "type": "string" + }, + "codec": { + "description": "Audio codec used (aac, aac_lc, he_aac, pcm, mp3, vorbis, opus, flac, ac3, eac3, etc.)", + "type": "string" + }, + "container_format": { + "description": "Audio container/file format (mp3, m4a, aac, wav, ogg, flac, etc.)", + "type": "string" }, "duration_ms": { - "type": "integer", "description": "Audio duration in milliseconds", - "minimum": 0 + "minimum": 0, + "type": "integer" }, "file_size_bytes": { - "type": "integer", "description": "File size in bytes", - "minimum": 1 + "minimum": 1, + "type": "integer" }, - "container_format": { - "type": "string", - "description": "Audio container/file format (mp3, m4a, aac, wav, ogg, flac, etc.)" + "loudness_lufs": { + "description": "Integrated loudness in LUFS", + "type": "number" }, - "codec": { - "type": "string", - "description": "Audio codec used (aac, aac_lc, he_aac, pcm, mp3, vorbis, opus, flac, ac3, eac3, etc.)" + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance metadata for this asset, overrides manifest-level provenance" }, "sampling_rate_hz": { - "type": "integer", - "description": "Sampling rate in Hz (e.g., 44100, 48000, 96000)" + "description": "Sampling rate in Hz (e.g., 44100, 48000, 96000)", + "type": "integer" }, - "channels": { + "transcript_url": { + "description": "URL to text transcript of the audio content", + "format": "uri", "type": "string", - "enum": ["mono", "stereo", "5.1", "7.1"], - "description": "Channel configuration" - }, - "bit_depth": { - "type": "integer", - "enum": [16, 24, 32], - "description": "Bit depth" - }, - "bitrate_kbps": { - "type": "integer", - "description": "Bitrate in kilobits per second", - "minimum": 1 - }, - "loudness_lufs": { - "type": "number", - "description": "Integrated loudness in LUFS" + "x-accessibility": true }, "true_peak_dbfs": { - "type": "number", - "description": "True peak level in dBFS" + "description": "True peak level in dBFS", + "type": "number" }, - "transcript_url": { - "type": "string", + "url": { + "description": "URL to the audio asset", "format": "uri", - "description": "URL to text transcript of the audio content", - "x-accessibility": true - }, - "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance metadata for this asset, overrides manifest-level provenance" + "type": "string" } }, "required": [ "url" ], - "additionalProperties": true -} + "title": "Audio Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/brief-asset.json b/schemas/cache/core/assets/brief-asset.json index 8d497ba7..c3bb3810 100644 --- a/schemas/cache/core/assets/brief-asset.json +++ b/schemas/cache/core/assets/brief-asset.json @@ -1,9 +1,11 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/brief-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/brief-asset.json", - "title": "Brief Asset", - "description": "Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.", "allOf": [ - { "$ref": "/schemas/3.0.0-rc.2/core/creative-brief.json" } - ] -} + { + "$ref": "/schemas/3.0.0-rc.3/core/creative-brief.json" + } + ], + "description": "Campaign-level creative context as an asset. Carries the creative brief through the manifest so it travels with the creative through regeneration, resizing, and auditing.", + "title": "Brief Asset" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/catalog-asset.json b/schemas/cache/core/assets/catalog-asset.json index f46b22b0..9f123cb0 100644 --- a/schemas/cache/core/assets/catalog-asset.json +++ b/schemas/cache/core/assets/catalog-asset.json @@ -1,9 +1,11 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/catalog-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/catalog-asset.json", - "title": "Catalog Asset", - "description": "A typed data feed as a creative asset. Carries catalog context (products, stores, jobs, etc.) within the manifest's assets map.", "allOf": [ - { "$ref": "/schemas/3.0.0-rc.2/core/catalog.json" } - ] -} + { + "$ref": "/schemas/3.0.0-rc.3/core/catalog.json" + } + ], + "description": "A typed data feed as a creative asset. Carries catalog context (products, stores, jobs, etc.) within the manifest's assets map.", + "title": "Catalog Asset" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/css-asset.json b/schemas/cache/core/assets/css-asset.json index fdd5a9d4..cec5b656 100644 --- a/schemas/cache/core/assets/css-asset.json +++ b/schemas/cache/core/assets/css-asset.json @@ -1,25 +1,25 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/css-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/css-asset.json", - "title": "CSS Asset", + "additionalProperties": true, "description": "CSS stylesheet asset", - "type": "object", "properties": { "content": { - "type": "string", - "description": "CSS content" + "description": "CSS content", + "type": "string" }, "media": { - "type": "string", - "description": "CSS media query context (e.g., 'screen', 'print')" + "description": "CSS media query context (e.g., 'screen', 'print')", + "type": "string" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance metadata for this asset, overrides manifest-level provenance" } }, "required": [ "content" ], - "additionalProperties": true -} + "title": "CSS Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/daast-asset.json b/schemas/cache/core/assets/daast-asset.json index 52ae7278..1d9db71a 100644 --- a/schemas/cache/core/assets/daast-asset.json +++ b/schemas/cache/core/assets/daast-asset.json @@ -1,107 +1,107 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/daast-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/daast-asset.json", - "title": "DAAST Asset", "description": "DAAST (Digital Audio Ad Serving Template) tag for third-party audio ad serving", "oneOf": [ { - "type": "object", + "additionalProperties": true, "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" + "companion_ads": { + "description": "Whether companion display ads are included", + "type": "boolean" }, "daast_version": { - "$ref": "/schemas/3.0.0-rc.2/enums/daast-version.json", + "$ref": "/schemas/3.0.0-rc.3/enums/daast-version.json", "description": "DAAST specification version" }, + "delivery_type": { + "const": "url", + "description": "Discriminator indicating DAAST is delivered via URL endpoint", + "type": "string" + }, "duration_ms": { - "type": "integer", "description": "Expected audio duration in milliseconds (if known)", - "minimum": 0 + "minimum": 0, + "type": "integer" + }, + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance metadata for this asset, overrides manifest-level provenance" }, "tracking_events": { - "type": "array", + "description": "Tracking events supported by this DAAST tag", "items": { - "$ref": "/schemas/3.0.0-rc.2/enums/daast-tracking-event.json" + "$ref": "/schemas/3.0.0-rc.3/enums/daast-tracking-event.json" }, - "description": "Tracking events supported by this DAAST tag" - }, - "companion_ads": { - "type": "boolean", - "description": "Whether companion display ads are included" + "type": "array" }, "transcript_url": { - "type": "string", - "format": "uri", "description": "URL to text transcript of the audio content", + "format": "uri", + "type": "string", "x-accessibility": true }, - "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance metadata for this asset, overrides manifest-level provenance" + "url": { + "description": "URL endpoint that returns DAAST XML", + "format": "uri", + "type": "string" } }, "required": [ "delivery_type", "url" ], - "additionalProperties": true + "type": "object" }, { - "type": "object", + "additionalProperties": true, "properties": { - "delivery_type": { - "type": "string", - "const": "inline", - "description": "Discriminator indicating DAAST is delivered as inline XML content" + "companion_ads": { + "description": "Whether companion display ads are included", + "type": "boolean" }, "content": { - "type": "string", - "description": "Inline DAAST XML content" + "description": "Inline DAAST XML content", + "type": "string" }, "daast_version": { - "$ref": "/schemas/3.0.0-rc.2/enums/daast-version.json", + "$ref": "/schemas/3.0.0-rc.3/enums/daast-version.json", "description": "DAAST specification version" }, + "delivery_type": { + "const": "inline", + "description": "Discriminator indicating DAAST is delivered as inline XML content", + "type": "string" + }, "duration_ms": { - "type": "integer", "description": "Expected audio duration in milliseconds (if known)", - "minimum": 0 + "minimum": 0, + "type": "integer" + }, + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance metadata for this asset, overrides manifest-level provenance" }, "tracking_events": { - "type": "array", + "description": "Tracking events supported by this DAAST tag", "items": { - "$ref": "/schemas/3.0.0-rc.2/enums/daast-tracking-event.json" + "$ref": "/schemas/3.0.0-rc.3/enums/daast-tracking-event.json" }, - "description": "Tracking events supported by this DAAST tag" - }, - "companion_ads": { - "type": "boolean", - "description": "Whether companion display ads are included" + "type": "array" }, "transcript_url": { - "type": "string", - "format": "uri", "description": "URL to text transcript of the audio content", + "format": "uri", + "type": "string", "x-accessibility": true - }, - "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", - "description": "Provenance metadata for this asset, overrides manifest-level provenance" } }, "required": [ "delivery_type", "content" ], - "additionalProperties": true + "type": "object" } - ] -} + ], + "title": "DAAST Asset" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/html-asset.json b/schemas/cache/core/assets/html-asset.json index e5f288a6..3e2ddf22 100644 --- a/schemas/cache/core/assets/html-asset.json +++ b/schemas/cache/core/assets/html-asset.json @@ -1,48 +1,48 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/html-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/html-asset.json", - "title": "HTML Asset", + "additionalProperties": true, "description": "HTML content asset", - "type": "object", "properties": { - "content": { - "type": "string", - "description": "HTML content" - }, - "version": { - "type": "string", - "description": "HTML version (e.g., 'HTML5')" - }, "accessibility": { - "type": "object", "description": "Self-declared accessibility properties for this opaque creative", - "x-accessibility": true, "properties": { "alt_text": { - "type": "string", - "description": "Text alternative describing the creative content" + "description": "Text alternative describing the creative content", + "type": "string" }, "keyboard_navigable": { - "type": "boolean", - "description": "Whether the creative can be fully operated via keyboard" + "description": "Whether the creative can be fully operated via keyboard", + "type": "boolean" }, "motion_control": { - "type": "boolean", - "description": "Whether the creative respects prefers-reduced-motion or provides pause/stop controls" + "description": "Whether the creative respects prefers-reduced-motion or provides pause/stop controls", + "type": "boolean" }, "screen_reader_tested": { - "type": "boolean", - "description": "Whether the creative has been tested with screen readers" + "description": "Whether the creative has been tested with screen readers", + "type": "boolean" } - } + }, + "type": "object", + "x-accessibility": true + }, + "content": { + "description": "HTML content", + "type": "string" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance metadata for this asset, overrides manifest-level provenance" + }, + "version": { + "description": "HTML version (e.g., 'HTML5')", + "type": "string" } }, "required": [ "content" ], - "additionalProperties": true -} + "title": "HTML Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/image-asset.json b/schemas/cache/core/assets/image-asset.json index 3f1a8708..fe92fac2 100644 --- a/schemas/cache/core/assets/image-asset.json +++ b/schemas/cache/core/assets/image-asset.json @@ -1,37 +1,36 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/image-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/image-asset.json", - "title": "Image Asset", + "additionalProperties": true, "description": "Image asset with URL and dimensions", - "type": "object", "properties": { - "url": { + "alt_text": { + "description": "Alternative text for accessibility", "type": "string", - "format": "uri", - "description": "URL to the image asset" + "x-accessibility": true }, - "width": { - "type": "integer", - "minimum": 1, - "description": "Width in pixels" + "format": { + "description": "Image file format (jpg, png, gif, webp, etc.)", + "type": "string" }, "height": { - "type": "integer", + "description": "Height in pixels", "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", - "x-accessibility": true + "type": "integer" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance metadata for this asset, overrides manifest-level provenance" + }, + "url": { + "description": "URL to the image asset", + "format": "uri", + "type": "string" + }, + "width": { + "description": "Width in pixels", + "minimum": 1, + "type": "integer" } }, "required": [ @@ -39,5 +38,6 @@ "width", "height" ], - "additionalProperties": true -} + "title": "Image Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/javascript-asset.json b/schemas/cache/core/assets/javascript-asset.json index ec33b1a7..950d0643 100644 --- a/schemas/cache/core/assets/javascript-asset.json +++ b/schemas/cache/core/assets/javascript-asset.json @@ -1,48 +1,48 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/javascript-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/javascript-asset.json", - "title": "JavaScript Asset", + "additionalProperties": true, "description": "JavaScript code asset", - "type": "object", "properties": { - "content": { - "type": "string", - "description": "JavaScript content" - }, - "module_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/javascript-module-type.json", - "description": "JavaScript module type" - }, "accessibility": { - "type": "object", "description": "Self-declared accessibility properties for this opaque creative", - "x-accessibility": true, "properties": { "alt_text": { - "type": "string", - "description": "Text alternative describing the creative content" + "description": "Text alternative describing the creative content", + "type": "string" }, "keyboard_navigable": { - "type": "boolean", - "description": "Whether the creative can be fully operated via keyboard" + "description": "Whether the creative can be fully operated via keyboard", + "type": "boolean" }, "motion_control": { - "type": "boolean", - "description": "Whether the creative respects prefers-reduced-motion or provides pause/stop controls" + "description": "Whether the creative respects prefers-reduced-motion or provides pause/stop controls", + "type": "boolean" }, "screen_reader_tested": { - "type": "boolean", - "description": "Whether the creative has been tested with screen readers" + "description": "Whether the creative has been tested with screen readers", + "type": "boolean" } - } + }, + "type": "object", + "x-accessibility": true + }, + "content": { + "description": "JavaScript content", + "type": "string" + }, + "module_type": { + "$ref": "/schemas/3.0.0-rc.3/enums/javascript-module-type.json", + "description": "JavaScript module type" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance metadata for this asset, overrides manifest-level provenance" } }, "required": [ "content" ], - "additionalProperties": true -} + "title": "JavaScript Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/markdown-asset.json b/schemas/cache/core/assets/markdown-asset.json index 0a0b0658..e6df6ee5 100644 --- a/schemas/cache/core/assets/markdown-asset.json +++ b/schemas/cache/core/assets/markdown-asset.json @@ -1,31 +1,31 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/markdown-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/markdown-asset.json", - "title": "Markdown Asset", + "additionalProperties": true, "description": "Markdown-formatted text content following CommonMark specification", - "type": "object", "properties": { + "allow_raw_html": { + "default": false, + "description": "Whether raw HTML blocks are allowed in the markdown. False recommended for security.", + "type": "boolean" + }, "content": { - "type": "string", - "description": "Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions" + "description": "Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions", + "type": "string" }, "language": { - "type": "string", - "description": "Language code (e.g., 'en', 'es', 'fr')" + "description": "Language code (e.g., 'en', 'es', 'fr')", + "type": "string" }, "markdown_flavor": { - "$ref": "/schemas/3.0.0-rc.2/enums/markdown-flavor.json", + "$ref": "/schemas/3.0.0-rc.3/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 -} + "title": "Markdown Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/text-asset.json b/schemas/cache/core/assets/text-asset.json index 50cb0892..6c3cae3c 100644 --- a/schemas/cache/core/assets/text-asset.json +++ b/schemas/cache/core/assets/text-asset.json @@ -1,25 +1,25 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/text-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/text-asset.json", - "title": "Text Asset", + "additionalProperties": true, "description": "Text content asset", - "type": "object", "properties": { "content": { - "type": "string", - "description": "Text content" + "description": "Text content", + "type": "string" }, "language": { - "type": "string", - "description": "Language code (e.g., 'en', 'es', 'fr')" + "description": "Language code (e.g., 'en', 'es', 'fr')", + "type": "string" }, "provenance": { - "$ref": "/schemas/3.0.0-rc.2/core/provenance.json", + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", "description": "Provenance metadata for this asset, overrides manifest-level provenance" } }, "required": [ "content" ], - "additionalProperties": true -} + "title": "Text Asset", + "type": "object" +} \ No newline at end of file diff --git a/schemas/cache/core/assets/url-asset.json b/schemas/cache/core/assets/url-asset.json index 629e3dbd..494e919b 100644 --- a/schemas/cache/core/assets/url-asset.json +++ b/schemas/cache/core/assets/url-asset.json @@ -1,30 +1,30 @@ { + "$id": "/schemas/3.0.0-rc.3/core/assets/url-asset.json", "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "/schemas/3.0.0-rc.2/core/assets/url-asset.json", - "title": "URL Asset", + "additionalProperties": true, "description": "URL reference asset", - "type": "object", "properties": { + "description": { + "description": "Description of what this URL points to", + "type": "string" + }, + "provenance": { + "$ref": "/schemas/3.0.0-rc.3/core/provenance.json", + "description": "Provenance metadata for this asset, overrides manifest-level provenance" + }, "url": { - "type": "string", + "description": "URL reference", "format": "uri", - "description": "URL reference" + "type": "string" }, "url_type": { - "$ref": "/schemas/3.0.0-rc.2/enums/url-asset-type.json", + "$ref": "/schemas/3.0.0-rc.3/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