diff --git a/CLAUDE.md b/CLAUDE.md index 5b31478..1c8fab9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -148,6 +148,12 @@ Edit `scripts/post_generate_fixes.py` and add a new function. The script: - **Activation Keys** (discriminated by identifier type): - `PropertyIdActivationKey`/`PropertyTagActivationKey` +**Note on Pricing Types:** + +Pricing option types (`CpcPricingOption`, `CpmAuctionPricingOption`, `CpmFixedRatePricingOption`, etc.) already have clear semantic names from the schema generator, so they don't need aliases. These types now include an `is_fixed` discriminator: +- Fixed-rate pricing: `is_fixed=Literal[True]` (CPC, CPCV, CPM Fixed, vCPM Fixed, Flat Rate) +- Auction-based pricing: `is_fixed=Literal[False]` (CPM Auction, vCPM Auction) + **Guidelines for Choosing What to Alias:** ✅ **DO create aliases for:** @@ -198,6 +204,54 @@ toolname = "package.__main__:main" ``` This enables `uvx toolname` and `pip install toolname` to work correctly. +## Development Environment & Tools + +**Using uv for Package Management** + +This project uses `uv` for fast, reliable Python package management. ALWAYS use `uv` commands rather than bare `python` or `pip`: + +```bash +# Install dependencies (including dev dependencies) +uv sync --extra dev + +# Run scripts with the virtual environment +uv run pytest # Run tests +uv run python scripts/sync_schemas.py # Sync schemas +uv run python scripts/generate_types.py # Generate types + +# Activate the virtual environment (if needed for multiple commands) +source .venv/bin/activate +# OR use .venv/bin/python directly +.venv/bin/python scripts/generate_types.py +``` + +**Schema Update Workflow** + +When pulling in updated schemas from upstream: + +1. **Sync schemas**: `python3 scripts/sync_schemas.py` (no venv needed, uses stdlib) + - Downloads latest schemas from AdCP GitHub + - Uses content hashing to only update changed schemas + - Updates `schemas/cache/.hashes.json` for tracking + +2. **Generate types**: `uv run python scripts/generate_types.py` (requires dev dependencies) + - Requires `datamodel-code-generator` from dev dependencies + - Regenerates all Pydantic models from schemas + - Runs post-generation fixes automatically + - Consolidates exports into `generated.py` + +3. **Verify changes**: `uv run pytest` + - All 258+ tests should pass + - Verifies backward compatibility + +4. **Review for semantic aliases**: Check if new discriminated unions need aliases + - Look for numbered types (Type1, Type2) in generated files + - Add semantic aliases to `src/adcp/types/aliases.py` if needed + - Update exports in `src/adcp/__init__.py` + - Add tests in `tests/test_type_aliases.py` + +**Important**: The sync_schemas.py script uses only Python stdlib (urllib, json, pathlib) and doesn't require the virtual environment. The generate_types.py script requires dev dependencies and must use `uv run` or the venv python. + ## Python-Specific Patterns **Optional Dependencies with TYPE_CHECKING** diff --git a/schemas/cache/.hashes.json b/schemas/cache/.hashes.json index 301f673..7f8037d 100644 --- a/schemas/cache/.hashes.json +++ b/schemas/cache/.hashes.json @@ -90,15 +90,15 @@ "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/media-buy/sync-creatives-response.json": "c06c1296e4ddea110b8dee1b0e40289fea32f52c56ebf123512319008dfcc615", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/media-buy/update-media-buy-request.json": "e907faefc302a58870554f8a1ac84de5529e4806c4da04879f153cade2372747", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/media-buy/update-media-buy-response.json": "b4214297b1f975c8c7f2f18149ffa41e599237d8619b82796a9d7a36bb3c4593", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpc-option.json": "da12700396dc58a3703767a565d5a4d34e49735b11a62700c5f526d035e34f96", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpcv-option.json": "89c7792ff3f269eb5539260deb50e547ca93ce2bf942e6798a77b6a2244aaf49", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpm-auction-option.json": "c49080b6f07441933b825334929cfd961d4d0865b257072d0c06dcfb59775d72", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpm-fixed-option.json": "d73c4177ae7455b5214338c8ecb50ea21ba35004cb95d82bf340d6c3d863ab7b", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpp-option.json": "f2e69bd56476841f858546e8ffb0be192e8c654bb6a0a614f1a65f83d2bbf38a", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpv-option.json": "e69547037ecd1d0ec2788b1d9daa17bc934bd682a07c9cebe7a23b2874048663", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpc-option.json": "8db2f8f68bff3e9f5c8c8a0843e307e7b40533883d14bab210c78ff73dd2de63", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpcv-option.json": "df1a5e0101397d0a5fe72f3bbb591794a6c1936d7a21db6ccc4986e13d822bc5", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpm-auction-option.json": "55af0a07ab1e8ad56963d3fdba3b7ca302a764022e849929748752bb9090850c", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpm-fixed-option.json": "f1906ad4266ba8d4486ea17396be2bf71cbb7ef1eb059b975e39c405161f3469", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpp-option.json": "ecaa85d2d9119146a458940b87cfa2d056a43538c03469bf6a6b45c9588bbd16", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/cpv-option.json": "c4a6f5f7c8e4d513cb133e185f12c93f10942a32516de1b4ce7e50520dc1baf6", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/flat-rate-option.json": "133ebe6814dacb72989d79da945437321baabdf85a3e5b14c2a3b695ee471bee", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/vcpm-auction-option.json": "a69127626afec1168fd85cde9605618980531874aae221115fd6d918684e3d1e", - "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/vcpm-fixed-option.json": "94925835a296eb43e4cea75f10b674902489e5393db538ccb1b1b623877dfaef", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/vcpm-auction-option.json": "67aa8d6695991dc65f9abc9a126e82a031a5fabc7a611f8d29699c2fd5e38c82", + "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/pricing-options/vcpm-fixed-option.json": "b560ed8eb0196a793d6d1304a4dea62dc3a1fd06b1fb676b95aa93b68618fce9", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/signals/activate-signal-request.json": "6d60816d28aa28d188b9180c909e089954eca6b3dc734bd315d639ff345a9679", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/signals/activate-signal-response.json": "90e3b5875040b3ba3d7d0f2a1279cf9c7ab5015d0dfa2fd0849cf38f734bd5b3", "https://raw.githubusercontent.com/adcontextprotocol/adcp/main/static/schemas/v1/signals/get-signals-request.json": "38f802f555aa3df77ebbb0e48f2bd93ae15571a2bbb3982bd2ee7e73a19451d5", diff --git a/schemas/cache/1.0.0/cpc-option.json b/schemas/cache/1.0.0/cpc-option.json index 43dc983..271d5ef 100644 --- a/schemas/cache/1.0.0/cpc-option.json +++ b/schemas/cache/1.0.0/cpc-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -39,7 +44,8 @@ "pricing_option_id", "pricing_model", "rate", - "currency" + "currency", + "is_fixed" ], "title": "CPC Pricing Option", "type": "object" diff --git a/schemas/cache/1.0.0/cpcv-option.json b/schemas/cache/1.0.0/cpcv-option.json index 5f78ed0..a992fb0 100644 --- a/schemas/cache/1.0.0/cpcv-option.json +++ b/schemas/cache/1.0.0/cpcv-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -39,7 +44,8 @@ "pricing_option_id", "pricing_model", "rate", - "currency" + "currency", + "is_fixed" ], "title": "CPCV Pricing Option", "type": "object" diff --git a/schemas/cache/1.0.0/cpm-auction-option.json b/schemas/cache/1.0.0/cpm-auction-option.json index f2bc4b6..2e5a16f 100644 --- a/schemas/cache/1.0.0/cpm-auction-option.json +++ b/schemas/cache/1.0.0/cpm-auction-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": false, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -68,7 +73,8 @@ "pricing_option_id", "pricing_model", "price_guidance", - "currency" + "currency", + "is_fixed" ], "title": "CPM Auction Pricing Option", "type": "object" diff --git a/schemas/cache/1.0.0/cpm-fixed-option.json b/schemas/cache/1.0.0/cpm-fixed-option.json index c82b38b..fd7f022 100644 --- a/schemas/cache/1.0.0/cpm-fixed-option.json +++ b/schemas/cache/1.0.0/cpm-fixed-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -39,7 +44,8 @@ "pricing_option_id", "pricing_model", "rate", - "currency" + "currency", + "is_fixed" ], "title": "CPM Fixed Rate Pricing Option", "type": "object" diff --git a/schemas/cache/1.0.0/cpp-option.json b/schemas/cache/1.0.0/cpp-option.json index 5f37d77..1e990a9 100644 --- a/schemas/cache/1.0.0/cpp-option.json +++ b/schemas/cache/1.0.0/cpp-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -60,6 +65,7 @@ "pricing_model", "rate", "currency", + "is_fixed", "parameters" ], "title": "CPP Pricing Option", diff --git a/schemas/cache/1.0.0/cpv-option.json b/schemas/cache/1.0.0/cpv-option.json index 8448101..e13ae0a 100644 --- a/schemas/cache/1.0.0/cpv-option.json +++ b/schemas/cache/1.0.0/cpv-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -75,6 +80,7 @@ "pricing_model", "rate", "currency", + "is_fixed", "parameters" ], "title": "CPV Pricing Option", diff --git a/schemas/cache/1.0.0/vcpm-auction-option.json b/schemas/cache/1.0.0/vcpm-auction-option.json index 9d83ded..7befe25 100644 --- a/schemas/cache/1.0.0/vcpm-auction-option.json +++ b/schemas/cache/1.0.0/vcpm-auction-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": false, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -68,7 +73,8 @@ "pricing_option_id", "pricing_model", "currency", - "price_guidance" + "price_guidance", + "is_fixed" ], "title": "vCPM Auction Pricing Option", "type": "object" diff --git a/schemas/cache/1.0.0/vcpm-fixed-option.json b/schemas/cache/1.0.0/vcpm-fixed-option.json index 8081f4a..5f86a8f 100644 --- a/schemas/cache/1.0.0/vcpm-fixed-option.json +++ b/schemas/cache/1.0.0/vcpm-fixed-option.json @@ -15,6 +15,11 @@ "pattern": "^[A-Z]{3}$", "type": "string" }, + "is_fixed": { + "const": true, + "description": "Whether this is a fixed rate (true) or auction-based (false)", + "type": "boolean" + }, "min_spend_per_package": { "description": "Minimum spend requirement per package using this pricing option, in the specified currency", "minimum": 0, @@ -39,7 +44,8 @@ "pricing_option_id", "pricing_model", "rate", - "currency" + "currency", + "is_fixed" ], "title": "vCPM Fixed Rate Pricing Option", "type": "object" diff --git a/src/adcp/types/generated.py b/src/adcp/types/generated.py index 7f835b4..67d35e0 100644 --- a/src/adcp/types/generated.py +++ b/src/adcp/types/generated.py @@ -4,66 +4,22 @@ DO NOT EDIT MANUALLY. Generated from: https://github.com/adcontextprotocol/adcp/tree/main/schemas -Generation date: 2025-11-15 21:15:14 UTC +Generation date: 2025-11-18 03:04:43 UTC """ from __future__ import annotations # Import all types from generated_poc modules from adcp.types.generated_poc.activate_signal_request import ActivateSignalRequest -from adcp.types.generated_poc.activate_signal_response import ( - ActivateSignalResponse, - ActivateSignalResponse1, - ActivateSignalResponse2, -) +from adcp.types.generated_poc.activate_signal_response import ActivateSignalResponse, ActivateSignalResponse1, ActivateSignalResponse2 from adcp.types.generated_poc.activation_key import ActivationKey1, ActivationKey2 -from adcp.types.generated_poc.adagents import ( - AuthorizedAgents, - AuthorizedAgents1, - AuthorizedAgents2, - AuthorizedAgents3, - AuthorizedSalesAgents, - Contact, - PropertyId, - PropertyTag, - PublisherProperties, - PublisherProperties1, - Tags, -) -from adcp.types.generated_poc.asset_type import ( - AssetTypeSchema, - ContentLength, - Dimensions, - Duration, - FileSize, - Quality, - Requirements, - Type, -) +from adcp.types.generated_poc.adagents import AuthorizedAgents, AuthorizedAgents1, AuthorizedAgents2, AuthorizedAgents3, AuthorizedSalesAgents, Contact, PropertyId, PropertyTag, PublisherProperties, PublisherProperties1, Tags +from adcp.types.generated_poc.asset_type import AssetTypeSchema, ContentLength, Dimensions, Duration, FileSize, Quality, Requirements, Type from adcp.types.generated_poc.audio_asset import AudioAsset -from adcp.types.generated_poc.brand_manifest import ( - Asset, - Asset1, - AssetType, - BrandManifest1, - BrandManifest2, - Colors, - Disclaimer, - FeedFormat, - Fonts, - Logo, - Metadata, - ProductCatalog, - ProductCatalog1, - UpdateFrequency, -) +from adcp.types.generated_poc.brand_manifest import Asset, Asset1, AssetType, BrandManifest1, BrandManifest2, Colors, Disclaimer, FeedFormat, Fonts, Logo, Metadata, ProductCatalog, ProductCatalog1, UpdateFrequency from adcp.types.generated_poc.brand_manifest_ref import BrandManifest, BrandManifestReference from adcp.types.generated_poc.build_creative_request import BuildCreativeRequest -from adcp.types.generated_poc.build_creative_response import ( - BuildCreativeResponse, - BuildCreativeResponse1, - BuildCreativeResponse2, -) +from adcp.types.generated_poc.build_creative_response import BuildCreativeResponse, BuildCreativeResponse1, BuildCreativeResponse2 from adcp.types.generated_poc.channels import AdvertisingChannels from adcp.types.generated_poc.cpc_option import CpcPricingOption from adcp.types.generated_poc.cpcv_option import CpcvPricingOption @@ -71,121 +27,42 @@ from adcp.types.generated_poc.cpm_fixed_option import CpmFixedRatePricingOption from adcp.types.generated_poc.cpp_option import CppPricingOption, Parameters from adcp.types.generated_poc.cpv_option import CpvPricingOption, ViewThreshold, ViewThreshold1 -from adcp.types.generated_poc.create_media_buy_request import ( - CreateMediaBuyRequest, - ReportingFrequency, - ReportingWebhook, - RequestedMetric, -) -from adcp.types.generated_poc.create_media_buy_response import ( - CreateMediaBuyResponse, - CreateMediaBuyResponse1, - CreateMediaBuyResponse2, - Package, -) +from adcp.types.generated_poc.create_media_buy_request import CreateMediaBuyRequest, ReportingFrequency, ReportingWebhook, RequestedMetric +from adcp.types.generated_poc.create_media_buy_response import CreateMediaBuyResponse, CreateMediaBuyResponse1, CreateMediaBuyResponse2, Package from adcp.types.generated_poc.creative_asset import CreativeAsset, Input from adcp.types.generated_poc.creative_assignment import CreativeAssignment from adcp.types.generated_poc.creative_manifest import CreativeManifest from adcp.types.generated_poc.creative_policy import CoBranding, CreativePolicy, LandingPage from adcp.types.generated_poc.creative_status import CreativeStatus from adcp.types.generated_poc.css_asset import CssAsset -from adcp.types.generated_poc.daast_asset import ( - DaastAsset1, - DaastAsset2, - DaastVersion, - TrackingEvent, -) -from adcp.types.generated_poc.delivery_metrics import ( - DeliveryMetrics, - DoohMetrics, - QuartileData, - VenueBreakdownItem, -) +from adcp.types.generated_poc.daast_asset import DaastAsset1, DaastAsset2, DaastVersion, TrackingEvent +from adcp.types.generated_poc.delivery_metrics import DeliveryMetrics, DoohMetrics, QuartileData, VenueBreakdownItem from adcp.types.generated_poc.delivery_type import DeliveryType from adcp.types.generated_poc.deployment import Deployment1, Deployment2 from adcp.types.generated_poc.destination import Destination1, Destination2 from adcp.types.generated_poc.error import Error from adcp.types.generated_poc.flat_rate_option import FlatRatePricingOption -from adcp.types.generated_poc.format import ( - AssetsRequired, - AssetsRequired1, - Format, - FormatCard, - FormatCardDetailed, - Render, - Responsive, - Unit, -) +from adcp.types.generated_poc.format import AssetsRequired, AssetsRequired1, Format, FormatCard, FormatCardDetailed, Render, Responsive, Unit from adcp.types.generated_poc.format_id import FormatId from adcp.types.generated_poc.frequency_cap import FrequencyCap from adcp.types.generated_poc.frequency_cap_scope import FrequencyCapScope -from adcp.types.generated_poc.get_media_buy_delivery_request import ( - GetMediaBuyDeliveryRequest, - StatusFilter, - StatusFilterEnum, -) -from adcp.types.generated_poc.get_media_buy_delivery_response import ( - AggregatedTotals, - ByPackageItem, - DailyBreakdownItem, - GetMediaBuyDeliveryResponse, - MediaBuyDelivery, - NotificationType, - ReportingPeriod, - Status, - Totals, -) +from adcp.types.generated_poc.get_media_buy_delivery_request import GetMediaBuyDeliveryRequest, StatusFilter, StatusFilterEnum +from adcp.types.generated_poc.get_media_buy_delivery_response import AggregatedTotals, ByPackageItem, DailyBreakdownItem, GetMediaBuyDeliveryResponse, MediaBuyDelivery, NotificationType, ReportingPeriod, Status, Totals from adcp.types.generated_poc.get_products_request import Filters, FormatType, GetProductsRequest from adcp.types.generated_poc.get_products_response import GetProductsResponse -from adcp.types.generated_poc.get_signals_request import ( - CatalogType, - Country, - DeliverTo, - GetSignalsRequest, -) -from adcp.types.generated_poc.get_signals_response import ( - GetSignalsResponse, - Pricing, - Signal, - SignalType, -) +from adcp.types.generated_poc.get_signals_request import CatalogType, Country, DeliverTo, GetSignalsRequest +from adcp.types.generated_poc.get_signals_response import GetSignalsResponse, Pricing, Signal, SignalType from adcp.types.generated_poc.html_asset import HtmlAsset from adcp.types.generated_poc.identifier_types import PropertyIdentifierTypes from adcp.types.generated_poc.image_asset import ImageAsset from adcp.types.generated_poc.index import AdcpAssetTypeRegistry from adcp.types.generated_poc.javascript_asset import JavascriptAsset, ModuleType -from adcp.types.generated_poc.list_authorized_properties_request import ( - ListAuthorizedPropertiesRequest, - PublisherDomain, -) -from adcp.types.generated_poc.list_authorized_properties_response import ( - ListAuthorizedPropertiesResponse, - PrimaryCountry, -) +from adcp.types.generated_poc.list_authorized_properties_request import ListAuthorizedPropertiesRequest, PublisherDomain +from adcp.types.generated_poc.list_authorized_properties_response import ListAuthorizedPropertiesResponse, PrimaryCountry from adcp.types.generated_poc.list_creative_formats_request import ListCreativeFormatsRequest -from adcp.types.generated_poc.list_creative_formats_response import ( - Capability, - CreativeAgent, - ListCreativeFormatsResponse, -) -from adcp.types.generated_poc.list_creatives_request import ( - Direction, - Field1, - FieldModel, - ListCreativesRequest, - Pagination, - Sort, -) -from adcp.types.generated_poc.list_creatives_response import ( - AssignedPackage, - Assignments, - Creative, - ListCreativesResponse, - Performance, - QuerySummary, - SortApplied, - StatusSummary, -) +from adcp.types.generated_poc.list_creative_formats_response import Capability, CreativeAgent, ListCreativeFormatsResponse +from adcp.types.generated_poc.list_creatives_request import Direction, Field1, FieldModel, ListCreativesRequest, Pagination, Sort +from adcp.types.generated_poc.list_creatives_response import AssignedPackage, Assignments, Creative, ListCreativesResponse, Performance, QuerySummary, SortApplied, StatusSummary from adcp.types.generated_poc.markdown_asset import MarkdownAsset, MarkdownFlavor from adcp.types.generated_poc.measurement import Measurement from adcp.types.generated_poc.media_buy import MediaBuy @@ -193,138 +70,45 @@ from adcp.types.generated_poc.pacing import Pacing from adcp.types.generated_poc.package_request import PackageRequest from adcp.types.generated_poc.package_status import PackageStatus -from adcp.types.generated_poc.performance_feedback import ( - FeedbackSource, - MeasurementPeriod, - MetricType, - PerformanceFeedback, -) +from adcp.types.generated_poc.performance_feedback import FeedbackSource, MeasurementPeriod, MetricType, PerformanceFeedback from adcp.types.generated_poc.placement import Placement -from adcp.types.generated_poc.preview_creative_request import ( - Input2, - OutputFormat, - PreviewCreativeRequest, - PreviewCreativeRequest1, - PreviewCreativeRequest2, - Request, -) -from adcp.types.generated_poc.preview_creative_response import ( - Input4, - Preview, - Preview1, - Preview2, - PreviewCreativeResponse, - PreviewCreativeResponse1, - PreviewCreativeResponse2, - Response, - Response1, - Results, - Results1, -) -from adcp.types.generated_poc.preview_render import ( - Embedding, - PreviewRender, - PreviewRender1, - PreviewRender2, - PreviewRender3, -) +from adcp.types.generated_poc.preview_creative_request import Input2, OutputFormat, PreviewCreativeRequest, PreviewCreativeRequest1, PreviewCreativeRequest2, Request +from adcp.types.generated_poc.preview_creative_response import Input4, Preview, Preview1, Preview2, PreviewCreativeResponse, PreviewCreativeResponse1, PreviewCreativeResponse2, Response, Response1, Results, Results1 +from adcp.types.generated_poc.preview_render import Embedding, PreviewRender, PreviewRender1, PreviewRender2, PreviewRender3 from adcp.types.generated_poc.pricing_model import PricingModel -from adcp.types.generated_poc.pricing_option import ( - CpcOption, - CpcvOption, - CpmAuctionOption, - CpmFixedOption, - CppOption, - CpvOption, - FlatRateOption, - Parameters1, - Parameters2, - PriceGuidance1, - PricingOption, - VcpmAuctionOption, - VcpmFixedOption, -) -from adcp.types.generated_poc.product import ( - DeliveryMeasurement, - Product, - ProductCard, - ProductCardDetailed, -) +from adcp.types.generated_poc.pricing_option import CpcOption, CpcvOption, CpmAuctionOption, CpmFixedOption, CppOption, CpvOption, FlatRateOption, Parameters1, Parameters2, PriceGuidance1, PricingOption, VcpmAuctionOption, VcpmFixedOption +from adcp.types.generated_poc.product import DeliveryMeasurement, Product, ProductCard, ProductCardDetailed, PublisherProperties3 from adcp.types.generated_poc.promoted_offerings import AssetSelectors, Offering, PromotedOfferings from adcp.types.generated_poc.promoted_products import PromotedProducts from adcp.types.generated_poc.property import Identifier, Property, PropertyType, Tag from adcp.types.generated_poc.protocol_envelope import ProtocolEnvelope -from adcp.types.generated_poc.provide_performance_feedback_request import ( - ProvidePerformanceFeedbackRequest, -) -from adcp.types.generated_poc.provide_performance_feedback_response import ( - ProvidePerformanceFeedbackResponse, - ProvidePerformanceFeedbackResponse1, - ProvidePerformanceFeedbackResponse2, -) +from adcp.types.generated_poc.provide_performance_feedback_request import ProvidePerformanceFeedbackRequest +from adcp.types.generated_poc.provide_performance_feedback_response import ProvidePerformanceFeedbackResponse, ProvidePerformanceFeedbackResponse1, ProvidePerformanceFeedbackResponse2 from adcp.types.generated_poc.publisher_identifier_types import PublisherIdentifierTypes -from adcp.types.generated_poc.push_notification_config import ( - Authentication, - PushNotificationConfig, - Scheme, -) -from adcp.types.generated_poc.reporting_capabilities import ( - AvailableMetric, - AvailableReportingFrequency, - ReportingCapabilities, -) +from adcp.types.generated_poc.push_notification_config import Authentication, PushNotificationConfig, Scheme +from adcp.types.generated_poc.reporting_capabilities import AvailableMetric, AvailableReportingFrequency, ReportingCapabilities from adcp.types.generated_poc.response import ProtocolResponse from adcp.types.generated_poc.standard_format_ids import StandardFormatIds from adcp.types.generated_poc.start_timing import StartTiming from adcp.types.generated_poc.sub_asset import SubAsset1, SubAsset2 from adcp.types.generated_poc.sync_creatives_request import SyncCreativesRequest, ValidationMode -from adcp.types.generated_poc.sync_creatives_response import ( - Action, - SyncCreativesResponse, - SyncCreativesResponse1, - SyncCreativesResponse2, -) +from adcp.types.generated_poc.sync_creatives_response import Action, SyncCreativesResponse, SyncCreativesResponse1, SyncCreativesResponse2 from adcp.types.generated_poc.targeting import GeoCountryAnyOfItem, TargetingOverlay from adcp.types.generated_poc.task_status import TaskStatus from adcp.types.generated_poc.task_type import TaskType from adcp.types.generated_poc.tasks_get_request import TasksGetRequest -from adcp.types.generated_poc.tasks_get_response import ( - Details, - Domain, - HistoryItem, - Progress, - TasksGetResponse, -) +from adcp.types.generated_poc.tasks_get_response import Details, Domain, HistoryItem, Progress, TasksGetResponse from adcp.types.generated_poc.tasks_list_request import TasksListRequest from adcp.types.generated_poc.tasks_list_response import DomainBreakdown, Task, TasksListResponse from adcp.types.generated_poc.text_asset import TextAsset -from adcp.types.generated_poc.update_media_buy_request import ( - Packages, - Packages1, - Packages2, - Packages3, - UpdateMediaBuyRequest, - UpdateMediaBuyRequest1, - UpdateMediaBuyRequest2, -) -from adcp.types.generated_poc.update_media_buy_response import ( - AffectedPackage, - UpdateMediaBuyResponse, - UpdateMediaBuyResponse1, - UpdateMediaBuyResponse2, -) +from adcp.types.generated_poc.update_media_buy_request import Packages, Packages1, Packages2, Packages3, UpdateMediaBuyRequest, UpdateMediaBuyRequest1, UpdateMediaBuyRequest2 +from adcp.types.generated_poc.update_media_buy_response import AffectedPackage, UpdateMediaBuyResponse, UpdateMediaBuyResponse1, UpdateMediaBuyResponse2 from adcp.types.generated_poc.url_asset import UrlAsset, UrlType from adcp.types.generated_poc.vast_asset import VastAsset1, VastAsset2, VastVersion from adcp.types.generated_poc.vcpm_auction_option import VcpmAuctionPricingOption from adcp.types.generated_poc.vcpm_fixed_option import VcpmFixedRatePricingOption from adcp.types.generated_poc.video_asset import VideoAsset -from adcp.types.generated_poc.webhook_asset import ( - Method, - Method1, - ResponseType, - Security, - WebhookAsset, -) +from adcp.types.generated_poc.webhook_asset import Method, Method1, ResponseType, Security, WebhookAsset from adcp.types.generated_poc.webhook_payload import WebhookPayload # Backward compatibility aliases for renamed types @@ -332,283 +116,4 @@ Channels = AdvertisingChannels # Explicit exports -__all__ = [ - "Action", - "ActivateSignalRequest", - "ActivateSignalResponse", - "ActivateSignalResponse1", - "ActivateSignalResponse2", - "ActivationKey1", - "ActivationKey2", - "AdcpAssetTypeRegistry", - "AdvertisingChannels", - "AffectedPackage", - "AggregatedTotals", - "Asset", - "Asset1", - "AssetSelectors", - "AssetType", - "AssetTypeSchema", - "AssetsRequired", - "AssetsRequired1", - "AssignedPackage", - "Assignments", - "AudioAsset", - "Authentication", - "AuthorizedAgents", - "AuthorizedAgents1", - "AuthorizedAgents2", - "AuthorizedAgents3", - "AuthorizedSalesAgents", - "AvailableMetric", - "AvailableReportingFrequency", - "BrandManifest", - "BrandManifest1", - "BrandManifest2", - "BrandManifestRef", - "BrandManifestReference", - "BuildCreativeRequest", - "BuildCreativeResponse", - "BuildCreativeResponse1", - "BuildCreativeResponse2", - "ByPackageItem", - "Capability", - "CatalogType", - "Channels", - "CoBranding", - "Colors", - "Contact", - "ContentLength", - "Country", - "CpcOption", - "CpcPricingOption", - "CpcvOption", - "CpcvPricingOption", - "CpmAuctionOption", - "CpmAuctionPricingOption", - "CpmFixedOption", - "CpmFixedRatePricingOption", - "CppOption", - "CppPricingOption", - "CpvOption", - "CpvPricingOption", - "CreateMediaBuyRequest", - "CreateMediaBuyResponse", - "CreateMediaBuyResponse1", - "CreateMediaBuyResponse2", - "Creative", - "CreativeAgent", - "CreativeAsset", - "CreativeAssignment", - "CreativeManifest", - "CreativePolicy", - "CreativeStatus", - "CssAsset", - "DaastAsset1", - "DaastAsset2", - "DaastVersion", - "DailyBreakdownItem", - "DeliverTo", - "DeliveryMeasurement", - "DeliveryMetrics", - "DeliveryType", - "Deployment1", - "Deployment2", - "Destination1", - "Destination2", - "Details", - "Dimensions", - "Direction", - "Disclaimer", - "Domain", - "DomainBreakdown", - "DoohMetrics", - "Duration", - "Embedding", - "Error", - "FeedFormat", - "FeedbackSource", - "Field1", - "FieldModel", - "FileSize", - "Filters", - "FlatRateOption", - "FlatRatePricingOption", - "Fonts", - "Format", - "FormatCard", - "FormatCardDetailed", - "FormatId", - "FormatType", - "FrequencyCap", - "FrequencyCapScope", - "GeoCountryAnyOfItem", - "GetMediaBuyDeliveryRequest", - "GetMediaBuyDeliveryResponse", - "GetProductsRequest", - "GetProductsResponse", - "GetSignalsRequest", - "GetSignalsResponse", - "HistoryItem", - "HtmlAsset", - "Identifier", - "ImageAsset", - "Input", - "Input2", - "Input4", - "JavascriptAsset", - "LandingPage", - "ListAuthorizedPropertiesRequest", - "ListAuthorizedPropertiesResponse", - "ListCreativeFormatsRequest", - "ListCreativeFormatsResponse", - "ListCreativesRequest", - "ListCreativesResponse", - "Logo", - "MarkdownAsset", - "MarkdownFlavor", - "Measurement", - "MeasurementPeriod", - "MediaBuy", - "MediaBuyDelivery", - "MediaBuyStatus", - "Metadata", - "Method", - "Method1", - "MetricType", - "ModuleType", - "NotificationType", - "Offering", - "OutputFormat", - "Pacing", - "Package", - "PackageRequest", - "PackageStatus", - "Packages", - "Packages1", - "Packages2", - "Packages3", - "Pagination", - "Parameters", - "Parameters1", - "Parameters2", - "Performance", - "PerformanceFeedback", - "Placement", - "Preview", - "Preview1", - "Preview2", - "PreviewCreativeRequest", - "PreviewCreativeRequest1", - "PreviewCreativeRequest2", - "PreviewCreativeResponse", - "PreviewCreativeResponse1", - "PreviewCreativeResponse2", - "PreviewRender", - "PreviewRender1", - "PreviewRender2", - "PreviewRender3", - "PriceGuidance", - "PriceGuidance1", - "Pricing", - "PricingModel", - "PricingOption", - "PrimaryCountry", - "Product", - "ProductCard", - "ProductCardDetailed", - "ProductCatalog", - "ProductCatalog1", - "Progress", - "PromotedOfferings", - "PromotedProducts", - "Property", - "PropertyId", - "PropertyIdentifierTypes", - "PropertyTag", - "PropertyType", - "ProtocolEnvelope", - "ProtocolResponse", - "ProvidePerformanceFeedbackRequest", - "ProvidePerformanceFeedbackResponse", - "ProvidePerformanceFeedbackResponse1", - "ProvidePerformanceFeedbackResponse2", - "PublisherDomain", - "PublisherIdentifierTypes", - "PublisherProperties", - "PublisherProperties1", - "PushNotificationConfig", - "Quality", - "QuartileData", - "QuerySummary", - "Render", - "ReportingCapabilities", - "ReportingFrequency", - "ReportingPeriod", - "ReportingWebhook", - "Request", - "RequestedMetric", - "Requirements", - "Response", - "Response1", - "ResponseType", - "Responsive", - "Results", - "Results1", - "Scheme", - "Security", - "Signal", - "SignalType", - "Sort", - "SortApplied", - "StandardFormatIds", - "StartTiming", - "Status", - "StatusFilter", - "StatusFilterEnum", - "StatusSummary", - "SubAsset1", - "SubAsset2", - "SyncCreativesRequest", - "SyncCreativesResponse", - "SyncCreativesResponse1", - "SyncCreativesResponse2", - "Tag", - "Tags", - "TargetingOverlay", - "Task", - "TaskStatus", - "TaskType", - "TasksGetRequest", - "TasksGetResponse", - "TasksListRequest", - "TasksListResponse", - "TextAsset", - "Totals", - "TrackingEvent", - "Type", - "Unit", - "UpdateFrequency", - "UpdateMediaBuyRequest", - "UpdateMediaBuyRequest1", - "UpdateMediaBuyRequest2", - "UpdateMediaBuyResponse", - "UpdateMediaBuyResponse1", - "UpdateMediaBuyResponse2", - "UrlAsset", - "UrlType", - "ValidationMode", - "VastAsset1", - "VastAsset2", - "VastVersion", - "VcpmAuctionOption", - "VcpmAuctionPricingOption", - "VcpmFixedOption", - "VcpmFixedRatePricingOption", - "VenueBreakdownItem", - "VideoAsset", - "ViewThreshold", - "ViewThreshold1", - "WebhookAsset", - "WebhookPayload", -] +__all__ = ['Action', 'ActivateSignalRequest', 'ActivateSignalResponse', 'ActivateSignalResponse1', 'ActivateSignalResponse2', 'ActivationKey1', 'ActivationKey2', 'AdcpAssetTypeRegistry', 'AdvertisingChannels', 'AffectedPackage', 'AggregatedTotals', 'Asset', 'Asset1', 'AssetSelectors', 'AssetType', 'AssetTypeSchema', 'AssetsRequired', 'AssetsRequired1', 'AssignedPackage', 'Assignments', 'AudioAsset', 'Authentication', 'AuthorizedAgents', 'AuthorizedAgents1', 'AuthorizedAgents2', 'AuthorizedAgents3', 'AuthorizedSalesAgents', 'AvailableMetric', 'AvailableReportingFrequency', 'BrandManifest', 'BrandManifest1', 'BrandManifest2', 'BrandManifestRef', 'BrandManifestReference', 'BuildCreativeRequest', 'BuildCreativeResponse', 'BuildCreativeResponse1', 'BuildCreativeResponse2', 'ByPackageItem', 'Capability', 'CatalogType', 'Channels', 'CoBranding', 'Colors', 'Contact', 'ContentLength', 'Country', 'CpcOption', 'CpcPricingOption', 'CpcvOption', 'CpcvPricingOption', 'CpmAuctionOption', 'CpmAuctionPricingOption', 'CpmFixedOption', 'CpmFixedRatePricingOption', 'CppOption', 'CppPricingOption', 'CpvOption', 'CpvPricingOption', 'CreateMediaBuyRequest', 'CreateMediaBuyResponse', 'CreateMediaBuyResponse1', 'CreateMediaBuyResponse2', 'Creative', 'CreativeAgent', 'CreativeAsset', 'CreativeAssignment', 'CreativeManifest', 'CreativePolicy', 'CreativeStatus', 'CssAsset', 'DaastAsset1', 'DaastAsset2', 'DaastVersion', 'DailyBreakdownItem', 'DeliverTo', 'DeliveryMeasurement', 'DeliveryMetrics', 'DeliveryType', 'Deployment1', 'Deployment2', 'Destination1', 'Destination2', 'Details', 'Dimensions', 'Direction', 'Disclaimer', 'Domain', 'DomainBreakdown', 'DoohMetrics', 'Duration', 'Embedding', 'Error', 'FeedFormat', 'FeedbackSource', 'Field1', 'FieldModel', 'FileSize', 'Filters', 'FlatRateOption', 'FlatRatePricingOption', 'Fonts', 'Format', 'FormatCard', 'FormatCardDetailed', 'FormatId', 'FormatType', 'FrequencyCap', 'FrequencyCapScope', 'GeoCountryAnyOfItem', 'GetMediaBuyDeliveryRequest', 'GetMediaBuyDeliveryResponse', 'GetProductsRequest', 'GetProductsResponse', 'GetSignalsRequest', 'GetSignalsResponse', 'HistoryItem', 'HtmlAsset', 'Identifier', 'ImageAsset', 'Input', 'Input2', 'Input4', 'JavascriptAsset', 'LandingPage', 'ListAuthorizedPropertiesRequest', 'ListAuthorizedPropertiesResponse', 'ListCreativeFormatsRequest', 'ListCreativeFormatsResponse', 'ListCreativesRequest', 'ListCreativesResponse', 'Logo', 'MarkdownAsset', 'MarkdownFlavor', 'Measurement', 'MeasurementPeriod', 'MediaBuy', 'MediaBuyDelivery', 'MediaBuyStatus', 'Metadata', 'Method', 'Method1', 'MetricType', 'ModuleType', 'NotificationType', 'Offering', 'OutputFormat', 'Pacing', 'Package', 'PackageRequest', 'PackageStatus', 'Packages', 'Packages1', 'Packages2', 'Packages3', 'Pagination', 'Parameters', 'Parameters1', 'Parameters2', 'Performance', 'PerformanceFeedback', 'Placement', 'Preview', 'Preview1', 'Preview2', 'PreviewCreativeRequest', 'PreviewCreativeRequest1', 'PreviewCreativeRequest2', 'PreviewCreativeResponse', 'PreviewCreativeResponse1', 'PreviewCreativeResponse2', 'PreviewRender', 'PreviewRender1', 'PreviewRender2', 'PreviewRender3', 'PriceGuidance', 'PriceGuidance1', 'Pricing', 'PricingModel', 'PricingOption', 'PrimaryCountry', 'Product', 'ProductCard', 'ProductCardDetailed', 'ProductCatalog', 'ProductCatalog1', 'Progress', 'PromotedOfferings', 'PromotedProducts', 'Property', 'PropertyId', 'PropertyIdentifierTypes', 'PropertyTag', 'PropertyType', 'ProtocolEnvelope', 'ProtocolResponse', 'ProvidePerformanceFeedbackRequest', 'ProvidePerformanceFeedbackResponse', 'ProvidePerformanceFeedbackResponse1', 'ProvidePerformanceFeedbackResponse2', 'PublisherDomain', 'PublisherIdentifierTypes', 'PublisherProperties', 'PublisherProperties1', 'PublisherProperties3', 'PushNotificationConfig', 'Quality', 'QuartileData', 'QuerySummary', 'Render', 'ReportingCapabilities', 'ReportingFrequency', 'ReportingPeriod', 'ReportingWebhook', 'Request', 'RequestedMetric', 'Requirements', 'Response', 'Response1', 'ResponseType', 'Responsive', 'Results', 'Results1', 'Scheme', 'Security', 'Signal', 'SignalType', 'Sort', 'SortApplied', 'StandardFormatIds', 'StartTiming', 'Status', 'StatusFilter', 'StatusFilterEnum', 'StatusSummary', 'SubAsset1', 'SubAsset2', 'SyncCreativesRequest', 'SyncCreativesResponse', 'SyncCreativesResponse1', 'SyncCreativesResponse2', 'Tag', 'Tags', 'TargetingOverlay', 'Task', 'TaskStatus', 'TaskType', 'TasksGetRequest', 'TasksGetResponse', 'TasksListRequest', 'TasksListResponse', 'TextAsset', 'Totals', 'TrackingEvent', 'Type', 'Unit', 'UpdateFrequency', 'UpdateMediaBuyRequest', 'UpdateMediaBuyRequest1', 'UpdateMediaBuyRequest2', 'UpdateMediaBuyResponse', 'UpdateMediaBuyResponse1', 'UpdateMediaBuyResponse2', 'UrlAsset', 'UrlType', 'ValidationMode', 'VastAsset1', 'VastAsset2', 'VastVersion', 'VcpmAuctionOption', 'VcpmAuctionPricingOption', 'VcpmFixedOption', 'VcpmFixedRatePricingOption', 'VenueBreakdownItem', 'VideoAsset', 'ViewThreshold', 'ViewThreshold1', 'WebhookAsset', 'WebhookPayload'] diff --git a/src/adcp/types/generated_poc/__init__.py b/src/adcp/types/generated_poc/__init__.py index 60305d7..348f7cd 100644 --- a/src/adcp/types/generated_poc/__init__.py +++ b/src/adcp/types/generated_poc/__init__.py @@ -1,3 +1,3 @@ # generated by datamodel-codegen: # filename: .schema_temp -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 diff --git a/src/adcp/types/generated_poc/activate_signal_request.py b/src/adcp/types/generated_poc/activate_signal_request.py index 4658095..2606b76 100644 --- a/src/adcp/types/generated_poc/activate_signal_request.py +++ b/src/adcp/types/generated_poc/activate_signal_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: activate-signal-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,21 +14,21 @@ class ActivateSignalRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None destinations: Annotated[ list[destination.Destination1 | destination.Destination2], Field( - description="Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.", + description='Target destination(s) for activation. If the authenticated caller matches one of these destinations, activation keys will be included in the response.', min_length=1, ), ] signal_agent_segment_id: Annotated[ - str, Field(description="The universal identifier for the signal to activate") + str, Field(description='The universal identifier for the signal to activate') ] diff --git a/src/adcp/types/generated_poc/activate_signal_response.py b/src/adcp/types/generated_poc/activate_signal_response.py index e65ba82..0ad9281 100644 --- a/src/adcp/types/generated_poc/activate_signal_response.py +++ b/src/adcp/types/generated_poc/activate_signal_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: activate-signal-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,34 +14,34 @@ class ActivateSignalResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None deployments: Annotated[ list[deployment.Deployment1 | deployment.Deployment2], - Field(description="Array of deployment results for each destination"), + Field(description='Array of deployment results for each destination'), ] class ActivateSignalResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], Field( - description="Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)", + description='Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)', min_length=1, ), ] @@ -51,7 +51,7 @@ class ActivateSignalResponse(RootModel[ActivateSignalResponse1 | ActivateSignalR root: Annotated[ ActivateSignalResponse1 | ActivateSignalResponse2, Field( - description="Response payload for activate_signal task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the signal is either fully activated or not activated at all.", - title="Activate Signal Response", + description='Response payload for activate_signal task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the signal is either fully activated or not activated at all.', + title='Activate Signal Response', ), ] diff --git a/src/adcp/types/generated_poc/activation_key.py b/src/adcp/types/generated_poc/activation_key.py index 0948d4f..2b729b4 100644 --- a/src/adcp/types/generated_poc/activation_key.py +++ b/src/adcp/types/generated_poc/activation_key.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: activation-key.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,19 +12,19 @@ class ActivationKey1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) segment_id: Annotated[ str, - Field(description="The platform-specific segment identifier to use in campaign targeting"), + Field(description='The platform-specific segment identifier to use in campaign targeting'), ] - type: Annotated[Literal["segment_id"], Field(description="Segment ID based targeting")] + type: Annotated[Literal['segment_id'], Field(description='Segment ID based targeting')] class ActivationKey2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - key: Annotated[str, Field(description="The targeting parameter key")] - type: Annotated[Literal["key_value"], Field(description="Key-value pair based targeting")] - value: Annotated[str, Field(description="The targeting parameter value")] + key: Annotated[str, Field(description='The targeting parameter key')] + type: Annotated[Literal['key_value'], Field(description='Key-value pair based targeting')] + value: Annotated[str, Field(description='The targeting parameter value')] diff --git a/src/adcp/types/generated_poc/adagents.py b/src/adcp/types/generated_poc/adagents.py index 917662c..5d4a534 100644 --- a/src/adcp/types/generated_poc/adagents.py +++ b/src/adcp/types/generated_poc/adagents.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: adagents.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -13,21 +13,21 @@ class PropertyId(RootModel[str]): - root: Annotated[str, Field(pattern="^[a-z0-9_]+$")] + root: Annotated[str, Field(pattern='^[a-z0-9_]+$')] class AuthorizedAgents(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) authorization_type: Annotated[ - Literal["property_ids"], - Field(description="Discriminator indicating authorization by specific property IDs"), + Literal['property_ids'], + Field(description='Discriminator indicating authorization by specific property IDs'), ] authorized_for: Annotated[ str, Field( - description="Human-readable description of what this agent is authorized to sell", + description='Human-readable description of what this agent is authorized to sell', max_length=500, min_length=1, ), @@ -35,7 +35,7 @@ class AuthorizedAgents(AdCPBaseModel): property_ids: Annotated[ list[PropertyId], Field( - description="Property IDs this agent is authorized for. Resolved against the top-level properties array in this file", + description='Property IDs this agent is authorized for. Resolved against the top-level properties array in this file', min_length=1, ), ] @@ -48,16 +48,16 @@ class PropertyTag(PropertyId): class AuthorizedAgents1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) authorization_type: Annotated[ - Literal["property_tags"], - Field(description="Discriminator indicating authorization by property tags"), + Literal['property_tags'], + Field(description='Discriminator indicating authorization by property tags'), ] authorized_for: Annotated[ str, Field( - description="Human-readable description of what this agent is authorized to sell", + description='Human-readable description of what this agent is authorized to sell', max_length=500, min_length=1, ), @@ -65,7 +65,7 @@ class AuthorizedAgents1(AdCPBaseModel): property_tags: Annotated[ list[PropertyTag], Field( - description="Tags identifying which properties this agent is authorized for. Resolved against the top-level properties array in this file using tag matching", + description='Tags identifying which properties this agent is authorized for. Resolved against the top-level properties array in this file using tag matching', min_length=1, ), ] @@ -74,7 +74,7 @@ class AuthorizedAgents1(AdCPBaseModel): class PublisherProperties(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) property_ids: Annotated[ list[PropertyId], @@ -87,18 +87,18 @@ class PublisherProperties(AdCPBaseModel): str, Field( description="Domain where the publisher's adagents.json is hosted (e.g., 'cnn.com')", - 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])?)*$', ), ] selection_type: Annotated[ - Literal["by_id"], - Field(description="Discriminator indicating selection by specific property IDs"), + Literal['by_id'], + Field(description='Discriminator indicating selection by specific property IDs'), ] class PublisherProperties1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) property_tags: Annotated[ list[PropertyTag], @@ -111,28 +111,28 @@ class PublisherProperties1(AdCPBaseModel): str, Field( description="Domain where the publisher's adagents.json is hosted (e.g., 'cnn.com')", - 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])?)*$', ), ] selection_type: Annotated[ - Literal["by_tag"], Field(description="Discriminator indicating selection by property tags") + Literal['by_tag'], Field(description='Discriminator indicating selection by property tags') ] class AuthorizedAgents3(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) authorization_type: Annotated[ - Literal["publisher_properties"], + Literal['publisher_properties'], Field( - description="Discriminator indicating authorization for properties from other publisher domains" + description='Discriminator indicating authorization for properties from other publisher domains' ), ] authorized_for: Annotated[ str, Field( - description="Human-readable description of what this agent is authorized to sell", + description='Human-readable description of what this agent is authorized to sell', max_length=500, min_length=1, ), @@ -140,7 +140,7 @@ class AuthorizedAgents3(AdCPBaseModel): publisher_properties: Annotated[ list[PublisherProperties | PublisherProperties1], Field( - 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", + 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', min_length=1, ), ] @@ -149,19 +149,19 @@ class AuthorizedAgents3(AdCPBaseModel): class Contact(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) domain: Annotated[ str | None, Field( - 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])?)*$", + 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])?)*$', ), ] = None email: Annotated[ EmailStr | None, Field( - description="Contact email for questions or issues with this authorization file", + description='Contact email for questions or issues with this authorization file', max_length=255, min_length=1, ), @@ -177,7 +177,7 @@ class Contact(AdCPBaseModel): seller_id: Annotated[ str | None, Field( - description="Seller ID from IAB Tech Lab sellers.json (if applicable)", + description='Seller ID from IAB Tech Lab sellers.json (if applicable)', max_length=255, min_length=1, ), @@ -185,7 +185,7 @@ class Contact(AdCPBaseModel): tag_id: Annotated[ str | None, Field( - description="TAG Certified Against Fraud ID for verification (if applicable)", + description='TAG Certified Against Fraud ID for verification (if applicable)', max_length=100, min_length=1, ), @@ -194,24 +194,24 @@ class Contact(AdCPBaseModel): class Tags(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - description: Annotated[str, Field(description="Description of what this tag represents")] - name: Annotated[str, Field(description="Human-readable name for this tag")] + description: Annotated[str, Field(description='Description of what this tag represents')] + name: Annotated[str, Field(description='Human-readable name for this tag')] class AuthorizedAgents2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) authorization_type: Annotated[ - Literal["inline_properties"], - Field(description="Discriminator indicating authorization by inline property definitions"), + Literal['inline_properties'], + Field(description='Discriminator indicating authorization by inline property definitions'), ] authorized_for: Annotated[ str, Field( - description="Human-readable description of what this agent is authorized to sell", + description='Human-readable description of what this agent is authorized to sell', max_length=500, min_length=1, ), @@ -219,7 +219,7 @@ class AuthorizedAgents2(AdCPBaseModel): properties: Annotated[ list[property.Property], Field( - description="Specific properties this agent is authorized for (alternative to property_ids/property_tags)", + description='Specific properties this agent is authorized for (alternative to property_ids/property_tags)', min_length=1, ), ] @@ -228,39 +228,39 @@ class AuthorizedAgents2(AdCPBaseModel): class AuthorizedSalesAgents(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) field_schema: Annotated[ str | None, - Field(alias="$schema", description="JSON Schema identifier for this adagents.json file"), - ] = "https://adcontextprotocol.org/schemas/v1/adagents.json" + Field(alias='$schema', description='JSON Schema identifier for this adagents.json file'), + ] = 'https://adcontextprotocol.org/schemas/v1/adagents.json' authorized_agents: Annotated[ list[AuthorizedAgents | AuthorizedAgents1 | AuthorizedAgents2 | AuthorizedAgents3], Field( - description="Array of sales agents authorized to sell inventory for properties in this file", + description='Array of sales agents authorized to sell inventory for properties in this file', min_length=1, ), ] contact: Annotated[ Contact | None, Field( - description="Contact information for the entity managing this adagents.json file (may be publisher or third-party operator)" + description='Contact information for the entity managing this adagents.json file (may be publisher or third-party operator)' ), ] = None last_updated: Annotated[ AwareDatetime | None, - Field(description="ISO 8601 timestamp indicating when this file was last updated"), + Field(description='ISO 8601 timestamp indicating when this file was last updated'), ] = None properties: Annotated[ list[property.Property] | None, Field( - description="Array of all properties covered by this adagents.json file. Same structure as list_authorized_properties response.", + description='Array of all properties covered by this adagents.json file. Same structure as list_authorized_properties response.', min_length=1, ), ] = None tags: Annotated[ dict[str, Tags] | None, Field( - description="Metadata for each tag referenced by properties. Same structure as list_authorized_properties response." + description='Metadata for each tag referenced by properties. Same structure as list_authorized_properties response.' ), ] = None diff --git a/src/adcp/types/generated_poc/asset_type.py b/src/adcp/types/generated_poc/asset_type.py index 70fa253..4078c6d 100644 --- a/src/adcp/types/generated_poc/asset_type.py +++ b/src/adcp/types/generated_poc/asset_type.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: asset-type.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -47,7 +47,7 @@ class Quality(AdCPBaseModel): class Requirements(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) content_length: ContentLength | None = None dimensions: Dimensions | None = None @@ -61,22 +61,22 @@ class Requirements(AdCPBaseModel): class Type(Enum): - image = "image" - video = "video" - audio = "audio" - text = "text" - html = "html" - css = "css" - javascript = "javascript" - vast = "vast" - daast = "daast" - promoted_offerings = "promoted_offerings" - url = "url" + image = 'image' + video = 'video' + audio = 'audio' + text = 'text' + html = 'html' + css = 'css' + javascript = 'javascript' + vast = 'vast' + daast = 'daast' + promoted_offerings = 'promoted_offerings' + url = 'url' class AssetTypeSchema(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_role: Annotated[ str, @@ -86,15 +86,15 @@ class AssetTypeSchema(AdCPBaseModel): ] constraints: Annotated[ list[str] | None, - Field(description="Additional constraints or requirements (human-readable)"), + Field(description='Additional constraints or requirements (human-readable)'), ] = None examples: Annotated[ - list[str] | None, Field(description="Example values or descriptions for this asset") + list[str] | None, Field(description='Example values or descriptions for this asset') ] = None required: Annotated[ - bool | None, Field(description="Whether this asset is mandatory for the format") + bool | None, Field(description='Whether this asset is mandatory for the format') ] = True requirements: Annotated[ - Requirements | None, Field(description="Technical requirements for this asset type") + Requirements | None, Field(description='Technical requirements for this asset type') ] = None - type: Annotated[Type, Field(description="Type of asset")] + type: Annotated[Type, Field(description='Type of asset')] diff --git a/src/adcp/types/generated_poc/audio_asset.py b/src/adcp/types/generated_poc/audio_asset.py index c0ff11d..e298518 100644 --- a/src/adcp/types/generated_poc/audio_asset.py +++ b/src/adcp/types/generated_poc/audio_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: audio-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,15 +12,15 @@ class AudioAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) bitrate_kbps: Annotated[ - int | None, Field(description="Audio bitrate in kilobits per second", ge=1) + int | None, Field(description='Audio bitrate in kilobits per second', ge=1) ] = None duration_ms: Annotated[ - int | None, Field(description="Audio duration in milliseconds", ge=0) + int | None, Field(description='Audio duration in milliseconds', ge=0) ] = None - format: Annotated[str | None, Field(description="Audio file format (mp3, wav, aac, etc.)")] = ( + format: Annotated[str | None, Field(description='Audio file format (mp3, wav, aac, etc.)')] = ( None ) - url: Annotated[AnyUrl, Field(description="URL to the audio asset")] + url: Annotated[AnyUrl, Field(description='URL to the audio asset')] diff --git a/src/adcp/types/generated_poc/brand_manifest.py b/src/adcp/types/generated_poc/brand_manifest.py index 3511fd0..f9d3b8c 100644 --- a/src/adcp/types/generated_poc/brand_manifest.py +++ b/src/adcp/types/generated_poc/brand_manifest.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: brand-manifest.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,64 +12,64 @@ class AssetType(Enum): - image = "image" - video = "video" - audio = "audio" - text = "text" + image = 'image' + video = 'video' + audio = 'audio' + text = 'text' class Asset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - asset_id: Annotated[str, Field(description="Unique identifier for this asset")] - asset_type: Annotated[AssetType, Field(description="Type of asset")] - description: Annotated[str | None, Field(description="Asset description or usage notes")] = None + asset_id: Annotated[str, Field(description='Unique identifier for this asset')] + asset_type: Annotated[AssetType, Field(description='Type of asset')] + description: Annotated[str | None, Field(description='Asset description or usage notes')] = None duration_seconds: Annotated[ - float | None, Field(description="Video/audio duration in seconds") + float | None, Field(description='Video/audio duration in seconds') ] = None - file_size_bytes: Annotated[int | None, Field(description="File size in bytes")] = None + file_size_bytes: Annotated[int | None, Field(description='File size in bytes')] = None format: Annotated[str | None, Field(description="File format (e.g., 'jpg', 'mp4', 'mp3')")] = ( None ) - height: Annotated[int | None, Field(description="Image/video height in pixels")] = None + height: Annotated[int | None, Field(description='Image/video height in pixels')] = None metadata: Annotated[ - dict[str, Any] | None, Field(description="Additional asset-specific metadata") + dict[str, Any] | None, Field(description='Additional asset-specific metadata') ] = None - name: Annotated[str | None, Field(description="Human-readable asset name")] = None + name: Annotated[str | None, Field(description='Human-readable asset name')] = None tags: Annotated[ list[str] | None, Field( description="Tags for asset discovery (e.g., 'holiday', 'lifestyle', 'product_shot')" ), ] = None - url: Annotated[AnyUrl, Field(description="URL to CDN-hosted asset file")] - width: Annotated[int | None, Field(description="Image/video width in pixels")] = None + url: Annotated[AnyUrl, Field(description='URL to CDN-hosted asset file')] + width: Annotated[int | None, Field(description='Image/video width in pixels')] = None class Colors(AdCPBaseModel): accent: Annotated[ - str | None, Field(description="Accent color (hex format)", pattern="^#[0-9A-Fa-f]{6}$") + str | None, Field(description='Accent color (hex format)', pattern='^#[0-9A-Fa-f]{6}$') ] = None background: Annotated[ - str | None, Field(description="Background color (hex format)", pattern="^#[0-9A-Fa-f]{6}$") + str | None, Field(description='Background color (hex format)', pattern='^#[0-9A-Fa-f]{6}$') ] = None primary: Annotated[ str | None, - Field(description="Primary brand color (hex format)", pattern="^#[0-9A-Fa-f]{6}$"), + Field(description='Primary brand color (hex format)', pattern='^#[0-9A-Fa-f]{6}$'), ] = None secondary: Annotated[ str | None, - Field(description="Secondary brand color (hex format)", pattern="^#[0-9A-Fa-f]{6}$"), + Field(description='Secondary brand color (hex format)', pattern='^#[0-9A-Fa-f]{6}$'), ] = None text: Annotated[ - str | None, Field(description="Text color (hex format)", pattern="^#[0-9A-Fa-f]{6}$") + str | None, Field(description='Text color (hex format)', pattern='^#[0-9A-Fa-f]{6}$') ] = None class Contact(AdCPBaseModel): - email: Annotated[EmailStr | None, Field(description="Contact email")] = None - phone: Annotated[str | None, Field(description="Contact phone number")] = None + email: Annotated[EmailStr | None, Field(description='Contact email')] = None + phone: Annotated[str | None, Field(description='Contact phone number')] = None class Disclaimer(AdCPBaseModel): @@ -79,92 +79,92 @@ class Disclaimer(AdCPBaseModel): description="When this disclaimer applies (e.g., 'financial_products', 'health_claims', 'all')" ), ] = None - required: Annotated[bool | None, Field(description="Whether this disclaimer must appear")] = ( + required: Annotated[bool | None, Field(description='Whether this disclaimer must appear')] = ( True ) - text: Annotated[str, Field(description="Disclaimer text")] + text: Annotated[str, Field(description='Disclaimer text')] class Fonts(AdCPBaseModel): font_urls: Annotated[ - list[AnyUrl] | None, Field(description="URLs to web font files if using custom fonts") + list[AnyUrl] | None, Field(description='URLs to web font files if using custom fonts') ] = None - primary: Annotated[str | None, Field(description="Primary font family name")] = None - secondary: Annotated[str | None, Field(description="Secondary font family name")] = None + primary: Annotated[str | None, Field(description='Primary font family name')] = None + secondary: Annotated[str | None, Field(description='Secondary font family name')] = None class Logo(AdCPBaseModel): - height: Annotated[int | None, Field(description="Logo height in pixels")] = None + height: Annotated[int | None, Field(description='Logo height in pixels')] = None tags: Annotated[ list[str] | None, Field( description="Semantic tags describing the logo variant (e.g., 'dark', 'light', 'square', 'horizontal', 'icon')" ), ] = None - url: Annotated[AnyUrl, Field(description="URL to the logo asset")] - width: Annotated[int | None, Field(description="Logo width in pixels")] = None + url: Annotated[AnyUrl, Field(description='URL to the logo asset')] + width: Annotated[int | None, Field(description='Logo width in pixels')] = None class Metadata(AdCPBaseModel): created_date: Annotated[ - AwareDatetime | None, Field(description="When this brand manifest was created") + AwareDatetime | None, Field(description='When this brand manifest was created') ] = None updated_date: Annotated[ - AwareDatetime | None, Field(description="When this brand manifest was last updated") + AwareDatetime | None, Field(description='When this brand manifest was last updated') ] = None - version: Annotated[str | None, Field(description="Brand card version number")] = None + version: Annotated[str | None, Field(description='Brand card version number')] = None class FeedFormat(Enum): - google_merchant_center = "google_merchant_center" - facebook_catalog = "facebook_catalog" - custom = "custom" + google_merchant_center = 'google_merchant_center' + facebook_catalog = 'facebook_catalog' + custom = 'custom' class UpdateFrequency(Enum): - realtime = "realtime" - hourly = "hourly" - daily = "daily" - weekly = "weekly" + realtime = 'realtime' + hourly = 'hourly' + daily = 'daily' + weekly = 'weekly' class ProductCatalog(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) categories: Annotated[ list[str] | None, - Field(description="Product categories available in the catalog (for filtering)"), + Field(description='Product categories available in the catalog (for filtering)'), ] = None - feed_format: Annotated[FeedFormat | None, Field(description="Format of the product feed")] = ( + feed_format: Annotated[FeedFormat | None, Field(description='Format of the product feed')] = ( FeedFormat.google_merchant_center ) - feed_url: Annotated[AnyUrl, Field(description="URL to product catalog feed")] + feed_url: Annotated[AnyUrl, Field(description='URL to product catalog feed')] last_updated: Annotated[ - AwareDatetime | None, Field(description="When the product catalog was last updated") + AwareDatetime | None, Field(description='When the product catalog was last updated') ] = None update_frequency: Annotated[ - UpdateFrequency | None, Field(description="How frequently the product catalog is updated") + UpdateFrequency | None, Field(description='How frequently the product catalog is updated') ] = None class BrandManifest1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets: Annotated[ list[Asset] | None, Field( - description="Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files." + description='Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files.' ), ] = None - colors: Annotated[Colors | None, Field(description="Brand color palette")] = None - contact: Annotated[Contact | None, Field(description="Brand contact information")] = None + colors: Annotated[Colors | None, Field(description='Brand color palette')] = None + contact: Annotated[Contact | None, Field(description='Brand contact information')] = None disclaimers: Annotated[ list[Disclaimer] | None, - Field(description="Legal disclaimers or required text that must appear in creatives"), + Field(description='Legal disclaimers or required text that must appear in creatives'), ] = None - fonts: Annotated[Fonts | None, Field(description="Brand typography guidelines")] = None + fonts: Annotated[Fonts | None, Field(description='Brand typography guidelines')] = None industry: Annotated[ str | None, Field( @@ -173,19 +173,19 @@ class BrandManifest1(AdCPBaseModel): ] = None logos: Annotated[ list[Logo] | None, - Field(description="Brand logo assets with semantic tags for different use cases"), + Field(description='Brand logo assets with semantic tags for different use cases'), ] = None - metadata: Annotated[Metadata | None, Field(description="Additional brand metadata")] = None - name: Annotated[str | None, Field(description="Brand or business name")] = None + metadata: Annotated[Metadata | None, Field(description='Additional brand metadata')] = None + name: Annotated[str | None, Field(description='Brand or business name')] = None product_catalog: Annotated[ ProductCatalog | None, Field( - description="Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection." + description='Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection.' ), ] = None - tagline: Annotated[str | None, Field(description="Brand tagline or slogan")] = None + tagline: Annotated[str | None, Field(description='Brand tagline or slogan')] = None target_audience: Annotated[ - str | None, Field(description="Primary target audience description") + str | None, Field(description='Primary target audience description') ] = None tone: Annotated[ str | None, @@ -196,7 +196,7 @@ class BrandManifest1(AdCPBaseModel): url: Annotated[ AnyUrl, Field( - description="Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL." + description='Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL.' ), ] @@ -209,21 +209,21 @@ class BrandManifest1(AdCPBaseModel): class BrandManifest2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets: Annotated[ list[Asset1] | None, Field( - description="Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files." + description='Brand asset library with explicit assets and tags. Assets are referenced inline with URLs pointing to CDN-hosted files.' ), ] = None - colors: Annotated[Colors | None, Field(description="Brand color palette")] = None - contact: Annotated[Contact | None, Field(description="Brand contact information")] = None + colors: Annotated[Colors | None, Field(description='Brand color palette')] = None + contact: Annotated[Contact | None, Field(description='Brand contact information')] = None disclaimers: Annotated[ list[Disclaimer] | None, - Field(description="Legal disclaimers or required text that must appear in creatives"), + Field(description='Legal disclaimers or required text that must appear in creatives'), ] = None - fonts: Annotated[Fonts | None, Field(description="Brand typography guidelines")] = None + fonts: Annotated[Fonts | None, Field(description='Brand typography guidelines')] = None industry: Annotated[ str | None, Field( @@ -232,19 +232,19 @@ class BrandManifest2(AdCPBaseModel): ] = None logos: Annotated[ list[Logo] | None, - Field(description="Brand logo assets with semantic tags for different use cases"), + Field(description='Brand logo assets with semantic tags for different use cases'), ] = None - metadata: Annotated[Metadata | None, Field(description="Additional brand metadata")] = None - name: Annotated[str, Field(description="Brand or business name")] + metadata: Annotated[Metadata | None, Field(description='Additional brand metadata')] = None + name: Annotated[str, Field(description='Brand or business name')] product_catalog: Annotated[ ProductCatalog1 | None, Field( - description="Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection." + description='Product catalog information for e-commerce advertisers. Enables SKU-level creative generation and product selection.' ), ] = None - tagline: Annotated[str | None, Field(description="Brand tagline or slogan")] = None + tagline: Annotated[str | None, Field(description='Brand tagline or slogan')] = None target_audience: Annotated[ - str | None, Field(description="Primary target audience description") + str | None, Field(description='Primary target audience description') ] = None tone: Annotated[ str | None, @@ -255,6 +255,6 @@ class BrandManifest2(AdCPBaseModel): url: Annotated[ AnyUrl | None, Field( - description="Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL." + description='Primary brand URL for context and asset discovery. Creative agents can infer brand information from this URL.' ), ] = None diff --git a/src/adcp/types/generated_poc/build_creative_request.py b/src/adcp/types/generated_poc/build_creative_request.py index 6d9060e..25d5225 100644 --- a/src/adcp/types/generated_poc/build_creative_request.py +++ b/src/adcp/types/generated_poc/build_creative_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: build-creative-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,29 +15,29 @@ class BuildCreativeRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None creative_manifest: Annotated[ creative_manifest_1.CreativeManifest | None, Field( - description="Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt." + description='Creative manifest to transform or generate from. For pure generation, this should include the target format_id and any required input assets (e.g., promoted_offerings for generative formats). For transformation (e.g., resizing, reformatting), this is the complete creative to adapt.' ), ] = None message: Annotated[ str | None, Field( - description="Natural language instructions for the transformation or generation. For pure generation, this is the creative brief. For transformation, this provides guidance on how to adapt the creative." + description='Natural language instructions for the transformation or generation. For pure generation, this is the creative brief. For transformation, this provides guidance on how to adapt the creative.' ), ] = None target_format_id: Annotated[ format_id.FormatId, Field( - description="Format ID to generate. The format definition specifies required input assets and output structure." + description='Format ID to generate. The format definition specifies required input assets and output structure.' ), ] diff --git a/src/adcp/types/generated_poc/build_creative_response.py b/src/adcp/types/generated_poc/build_creative_response.py index 2d7b54e..275e74e 100644 --- a/src/adcp/types/generated_poc/build_creative_response.py +++ b/src/adcp/types/generated_poc/build_creative_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: build-creative-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,35 +15,35 @@ class BuildCreativeResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], Field( - description="Array of errors explaining why creative generation failed", min_length=1 + description='Array of errors explaining why creative generation failed', min_length=1 ), ] class BuildCreativeResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None creative_manifest: Annotated[ creative_manifest_1.CreativeManifest, - Field(description="The generated or transformed creative manifest"), + Field(description='The generated or transformed creative manifest'), ] @@ -51,7 +51,7 @@ class BuildCreativeResponse(RootModel[BuildCreativeResponse1 | BuildCreativeResp root: Annotated[ BuildCreativeResponse1 | BuildCreativeResponse2, Field( - description="Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.", - title="Build Creative Response", + description='Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.', + title='Build Creative Response', ), ] diff --git a/src/adcp/types/generated_poc/channels.py b/src/adcp/types/generated_poc/channels.py index 838ce73..c41c64b 100644 --- a/src/adcp/types/generated_poc/channels.py +++ b/src/adcp/types/generated_poc/channels.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: channels.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,12 +8,12 @@ class AdvertisingChannels(Enum): - display = "display" - video = "video" - audio = "audio" - native = "native" - dooh = "dooh" - ctv = "ctv" - podcast = "podcast" - retail = "retail" - social = "social" + display = 'display' + video = 'video' + audio = 'audio' + native = 'native' + dooh = 'dooh' + ctv = 'ctv' + podcast = 'podcast' + retail = 'retail' + social = 'social' diff --git a/src/adcp/types/generated_poc/cpc_option.py b/src/adcp/types/generated_poc/cpc_option.py index 2fd2bbe..94c3204 100644 --- a/src/adcp/types/generated_poc/cpc_option.py +++ b/src/adcp/types/generated_poc/cpc_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpc-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,28 +12,32 @@ class CpcPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None - pricing_model: Annotated[Literal["cpc"], Field(description="Cost per click")] + pricing_model: Annotated[Literal['cpc'], Field(description='Cost per click')] pricing_option_id: Annotated[ str, Field( description="Unique identifier for this pricing option within the product (e.g., 'cpc_usd_fixed')" ), ] - rate: Annotated[float, Field(description="Fixed CPC rate (cost per click)", ge=0.0)] + rate: Annotated[float, Field(description='Fixed CPC rate (cost per click)', ge=0.0)] diff --git a/src/adcp/types/generated_poc/cpcv_option.py b/src/adcp/types/generated_poc/cpcv_option.py index b6e692b..d782113 100644 --- a/src/adcp/types/generated_poc/cpcv_option.py +++ b/src/adcp/types/generated_poc/cpcv_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpcv-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,25 +12,29 @@ class CpcvPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None pricing_model: Annotated[ - Literal["cpcv"], Field(description="Cost per completed view (100% completion)") + Literal['cpcv'], Field(description='Cost per completed view (100% completion)') ] pricing_option_id: Annotated[ str, @@ -38,4 +42,4 @@ class CpcvPricingOption(AdCPBaseModel): description="Unique identifier for this pricing option within the product (e.g., 'cpcv_usd_guaranteed')" ), ] - rate: Annotated[float, Field(description="Fixed CPCV rate (cost per 100% completion)", ge=0.0)] + rate: Annotated[float, Field(description='Fixed CPCV rate (cost per 100% completion)', ge=0.0)] diff --git a/src/adcp/types/generated_poc/cpm_auction_option.py b/src/adcp/types/generated_poc/cpm_auction_option.py index 3e0a658..00f8c5d 100644 --- a/src/adcp/types/generated_poc/cpm_auction_option.py +++ b/src/adcp/types/generated_poc/cpm_auction_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpm-auction-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,38 +14,42 @@ class PriceGuidance(AdCPBaseModel): floor: Annotated[ float, Field( - description="Minimum bid price - publisher will reject bids under this value", ge=0.0 + description='Minimum bid price - publisher will reject bids under this value', ge=0.0 ), ] - p25: Annotated[float | None, Field(description="25th percentile winning price", ge=0.0)] = None - p50: Annotated[float | None, Field(description="Median winning price", ge=0.0)] = None - p75: Annotated[float | None, Field(description="75th percentile winning price", ge=0.0)] = None - p90: Annotated[float | None, Field(description="90th percentile winning price", ge=0.0)] = None + p25: Annotated[float | None, Field(description='25th percentile winning price', ge=0.0)] = None + p50: Annotated[float | None, Field(description='Median winning price', ge=0.0)] = None + p75: Annotated[float | None, Field(description='75th percentile winning price', ge=0.0)] = None + p90: Annotated[float | None, Field(description='90th percentile winning price', ge=0.0)] = None class CpmAuctionPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[False], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None price_guidance: Annotated[ - PriceGuidance, Field(description="Pricing guidance for auction-based CPM bidding") + PriceGuidance, Field(description='Pricing guidance for auction-based CPM bidding') ] - pricing_model: Annotated[Literal["cpm"], Field(description="Cost per 1,000 impressions")] + pricing_model: Annotated[Literal['cpm'], Field(description='Cost per 1,000 impressions')] pricing_option_id: Annotated[ str, Field( diff --git a/src/adcp/types/generated_poc/cpm_fixed_option.py b/src/adcp/types/generated_poc/cpm_fixed_option.py index ddef457..6d6d186 100644 --- a/src/adcp/types/generated_poc/cpm_fixed_option.py +++ b/src/adcp/types/generated_poc/cpm_fixed_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpm-fixed-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,28 +12,32 @@ class CpmFixedRatePricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None - pricing_model: Annotated[Literal["cpm"], Field(description="Cost per 1,000 impressions")] + pricing_model: Annotated[Literal['cpm'], Field(description='Cost per 1,000 impressions')] pricing_option_id: Annotated[ str, Field( description="Unique identifier for this pricing option within the product (e.g., 'cpm_usd_guaranteed')" ), ] - rate: Annotated[float, Field(description="Fixed CPM rate (cost per 1,000 impressions)", ge=0.0)] + rate: Annotated[float, Field(description='Fixed CPM rate (cost per 1,000 impressions)', ge=0.0)] diff --git a/src/adcp/types/generated_poc/cpp_option.py b/src/adcp/types/generated_poc/cpp_option.py index edb3636..be05abf 100644 --- a/src/adcp/types/generated_poc/cpp_option.py +++ b/src/adcp/types/generated_poc/cpp_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpp-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,49 +12,53 @@ class Parameters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) demographic: Annotated[ str, Field( - description="Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)", - pattern="^[PMWAC][0-9]{2}(-[0-9]{2}|\\+)$", + description='Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)', + pattern='^[PMWAC][0-9]{2}(-[0-9]{2}|\\+)$', ), ] min_points: Annotated[ float | None, - Field(description="Minimum GRPs/TRPs required for this pricing option", ge=0.0), + Field(description='Minimum GRPs/TRPs required for this pricing option', ge=0.0), ] = None class CppPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None parameters: Annotated[ Parameters, - Field(description="CPP-specific parameters for demographic targeting and GRP requirements"), + Field(description='CPP-specific parameters for demographic targeting and GRP requirements'), ] - pricing_model: Annotated[Literal["cpp"], Field(description="Cost per Gross Rating Point")] + pricing_model: Annotated[Literal['cpp'], Field(description='Cost per Gross Rating Point')] pricing_option_id: Annotated[ str, Field( description="Unique identifier for this pricing option within the product (e.g., 'cpp_usd_p18-49')" ), ] - rate: Annotated[float, Field(description="Fixed CPP rate (cost per rating point)", ge=0.0)] + rate: Annotated[float, Field(description='Fixed CPP rate (cost per rating point)', ge=0.0)] diff --git a/src/adcp/types/generated_poc/cpv_option.py b/src/adcp/types/generated_poc/cpv_option.py index e484b4d..ede97a6 100644 --- a/src/adcp/types/generated_poc/cpv_option.py +++ b/src/adcp/types/generated_poc/cpv_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: cpv-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,7 +14,7 @@ class ViewThreshold(RootModel[float]): root: Annotated[ float, Field( - description="Percentage completion threshold for CPV pricing (0.0 to 1.0, e.g., 0.5 = 50% completion)", + description='Percentage completion threshold for CPV pricing (0.0 to 1.0, e.g., 0.5 = 50% completion)', ge=0.0, le=1.0, ), @@ -23,7 +23,7 @@ class ViewThreshold(RootModel[float]): class ViewThreshold1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) duration_seconds: Annotated[ int, @@ -36,38 +36,42 @@ class ViewThreshold1(AdCPBaseModel): class Parameters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) view_threshold: ViewThreshold | ViewThreshold1 class CpvPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None parameters: Annotated[ - Parameters, Field(description="CPV-specific parameters defining the view threshold") + Parameters, Field(description='CPV-specific parameters defining the view threshold') ] - pricing_model: Annotated[Literal["cpv"], Field(description="Cost per view at threshold")] + pricing_model: Annotated[Literal['cpv'], Field(description='Cost per view at threshold')] pricing_option_id: Annotated[ str, Field( description="Unique identifier for this pricing option within the product (e.g., 'cpv_usd_50pct')" ), ] - rate: Annotated[float, Field(description="Fixed CPV rate (cost per view)", ge=0.0)] + rate: Annotated[float, Field(description='Fixed CPV rate (cost per view)', ge=0.0)] diff --git a/src/adcp/types/generated_poc/create_media_buy_request.py b/src/adcp/types/generated_poc/create_media_buy_request.py index e7eb16f..e7f33ed 100644 --- a/src/adcp/types/generated_poc/create_media_buy_request.py +++ b/src/adcp/types/generated_poc/create_media_buy_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: create-media-buy-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,28 +16,28 @@ class ReportingFrequency(Enum): - hourly = "hourly" - daily = "daily" - monthly = "monthly" + hourly = 'hourly' + daily = 'daily' + monthly = 'monthly' class RequestedMetric(Enum): - impressions = "impressions" - spend = "spend" - clicks = "clicks" - ctr = "ctr" - video_completions = "video_completions" - completion_rate = "completion_rate" - conversions = "conversions" - viewability = "viewability" - engagement_rate = "engagement_rate" + impressions = 'impressions' + spend = 'spend' + clicks = 'clicks' + ctr = 'ctr' + video_completions = 'video_completions' + completion_rate = 'completion_rate' + conversions = 'conversions' + viewability = 'viewability' + engagement_rate = 'engagement_rate' class ReportingWebhook(PushNotificationConfig): reporting_frequency: Annotated[ ReportingFrequency, Field( - description="Frequency for automated reporting delivery. Must be supported by all products in the media buy." + description='Frequency for automated reporting delivery. Must be supported by all products in the media buy.' ), ] requested_metrics: Annotated[ @@ -50,47 +50,47 @@ class ReportingWebhook(PushNotificationConfig): class CreateMediaBuyRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) brand_manifest: Annotated[ brand_manifest_1.BrandManifest | AnyUrl, Field( - description="Brand information manifest serving as the namespace and identity for this media buy. Provides brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest. Can be cached and reused across multiple requests.", + description='Brand information manifest serving as the namespace and identity for this media buy. Provides brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest. Can be cached and reused across multiple requests.', examples=[ { - "data": { - "colors": {"primary": "#FF6B35"}, - "name": "ACME Corporation", - "url": "https://acmecorp.com", + 'data': { + 'colors': {'primary': '#FF6B35'}, + 'name': 'ACME Corporation', + 'url': 'https://acmecorp.com', }, - "description": "Inline brand manifest", + 'description': 'Inline brand manifest', }, { - "data": "https://cdn.acmecorp.com/brand-manifest.json", - "description": "URL string reference to hosted manifest", + 'data': 'https://cdn.acmecorp.com/brand-manifest.json', + 'description': 'URL string reference to hosted manifest', }, ], - title="Brand Manifest Reference", + title='Brand Manifest Reference', ), ] buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for this media buy")] context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None end_time: Annotated[ - AwareDatetime, Field(description="Campaign end date/time in ISO 8601 format") + AwareDatetime, Field(description='Campaign end date/time in ISO 8601 format') ] packages: Annotated[ - list[package_request.PackageRequest], Field(description="Array of package configurations") + list[package_request.PackageRequest], Field(description='Array of package configurations') ] - po_number: Annotated[str | None, Field(description="Purchase order number for tracking")] = None + po_number: Annotated[str | None, Field(description='Purchase order number for tracking')] = None reporting_webhook: ReportingWebhook | None = None start_time: Annotated[ str | AwareDatetime, Field( - description="Campaign start timing: 'asap' or ISO 8601 date-time", title="Start Timing" + description="Campaign start timing: 'asap' or ISO 8601 date-time", title='Start Timing' ), ] diff --git a/src/adcp/types/generated_poc/create_media_buy_response.py b/src/adcp/types/generated_poc/create_media_buy_response.py index 18041d1..0b98cc2 100644 --- a/src/adcp/types/generated_poc/create_media_buy_response.py +++ b/src/adcp/types/generated_poc/create_media_buy_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: create-media-buy-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,7 +14,7 @@ class Package(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for the package")] package_id: Annotated[str, Field(description="Publisher's unique identifier for the package")] @@ -22,37 +22,37 @@ class Package(AdCPBaseModel): class CreateMediaBuyResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for this media buy")] context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None creative_deadline: Annotated[ - AwareDatetime | None, Field(description="ISO 8601 timestamp for creative upload deadline") + AwareDatetime | None, Field(description='ISO 8601 timestamp for creative upload deadline') ] = None media_buy_id: Annotated[ str, Field(description="Publisher's unique identifier for the created media buy") ] - packages: Annotated[list[Package], Field(description="Array of created packages")] + packages: Annotated[list[Package], Field(description='Array of created packages')] class CreateMediaBuyResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], - Field(description="Array of errors explaining why the operation failed", min_length=1), + Field(description='Array of errors explaining why the operation failed', min_length=1), ] @@ -60,7 +60,7 @@ class CreateMediaBuyResponse(RootModel[CreateMediaBuyResponse1 | CreateMediaBuyR root: Annotated[ CreateMediaBuyResponse1 | CreateMediaBuyResponse2, Field( - description="Response payload for create_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the media buy is either fully created or not created at all.", - title="Create Media Buy Response", + description='Response payload for create_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the media buy is either fully created or not created at all.', + title='Create Media Buy Response', ), ] diff --git a/src/adcp/types/generated_poc/creative_asset.py b/src/adcp/types/generated_poc/creative_asset.py index b2367df..cec3d41 100644 --- a/src/adcp/types/generated_poc/creative_asset.py +++ b/src/adcp/types/generated_poc/creative_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: creative-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -25,26 +25,26 @@ class Input(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context_description: Annotated[ str | None, - Field(description="Natural language description of the context for AI-generated content"), + Field(description='Natural language description of the context for AI-generated content'), ] = None macros: Annotated[ - dict[str, str] | None, Field(description="Macro values to apply for this preview") + dict[str, str] | None, Field(description='Macro values to apply for this preview') ] = None - name: Annotated[str, Field(description="Human-readable name for this preview variant")] + name: Annotated[str, Field(description='Human-readable name for this preview variant')] class CreativeAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) approved: Annotated[ bool | None, Field( - description="For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives." + description='For generative creatives: set to true to approve and finalize, false to request regeneration with updated assets/message. Omit for non-generative creatives.' ), ] = None assets: Annotated[ @@ -64,20 +64,20 @@ class CreativeAsset(AdCPBaseModel): | daast_asset.DaastAsset1 | daast_asset.DaastAsset2, ], - Field(description="Assets required by the format, keyed by asset_role"), + Field(description='Assets required by the format, keyed by asset_role'), ] - creative_id: Annotated[str, Field(description="Unique identifier for the creative")] + creative_id: Annotated[str, Field(description='Unique identifier for the creative')] format_id: Annotated[ format_id_1.FormatId, - Field(description="Format identifier specifying which format this creative conforms to"), + Field(description='Format identifier specifying which format this creative conforms to'), ] inputs: Annotated[ list[Input] | None, Field( - description="Preview contexts for generative formats - defines what scenarios to generate previews for" + description='Preview contexts for generative formats - defines what scenarios to generate previews for' ), ] = None - name: Annotated[str, Field(description="Human-readable creative name")] + name: Annotated[str, Field(description='Human-readable creative name')] tags: Annotated[ - list[str] | None, Field(description="User-defined tags for organization and searchability") + list[str] | None, Field(description='User-defined tags for organization and searchability') ] = None diff --git a/src/adcp/types/generated_poc/creative_assignment.py b/src/adcp/types/generated_poc/creative_assignment.py index 353a062..0d78e12 100644 --- a/src/adcp/types/generated_poc/creative_assignment.py +++ b/src/adcp/types/generated_poc/creative_assignment.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: creative-assignment.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,9 +12,9 @@ class CreativeAssignment(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - creative_id: Annotated[str, Field(description="Unique identifier for the creative")] + creative_id: Annotated[str, Field(description='Unique identifier for the creative')] placement_ids: Annotated[ list[str] | None, Field( @@ -23,5 +23,5 @@ class CreativeAssignment(AdCPBaseModel): ), ] = None weight: Annotated[ - float | None, Field(description="Delivery weight for this creative", ge=0.0, le=100.0) + float | None, Field(description='Delivery weight for this creative', ge=0.0, le=100.0) ] = None diff --git a/src/adcp/types/generated_poc/creative_manifest.py b/src/adcp/types/generated_poc/creative_manifest.py index 03cc5fe..baa05e7 100644 --- a/src/adcp/types/generated_poc/creative_manifest.py +++ b/src/adcp/types/generated_poc/creative_manifest.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: creative-manifest.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -26,7 +26,7 @@ class CreativeManifest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets: Annotated[ dict[ @@ -51,11 +51,11 @@ class CreativeManifest(AdCPBaseModel): ), ] format_id: Annotated[ - format_id_1.FormatId, Field(description="Format identifier this manifest is for") + format_id_1.FormatId, Field(description='Format identifier this manifest is for') ] promoted_offering: Annotated[ str | None, Field( - description="Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted." + description='Product name or offering being advertised. Maps to promoted_offerings in create_media_buy request to associate creative with the product being promoted.' ), ] = None diff --git a/src/adcp/types/generated_poc/creative_policy.py b/src/adcp/types/generated_poc/creative_policy.py index 960f0ea..6bbd26a 100644 --- a/src/adcp/types/generated_poc/creative_policy.py +++ b/src/adcp/types/generated_poc/creative_policy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: creative-policy.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,23 +12,23 @@ class CoBranding(Enum): - required = "required" - optional = "optional" - none = "none" + required = 'required' + optional = 'optional' + none = 'none' class LandingPage(Enum): - any = "any" - retailer_site_only = "retailer_site_only" - must_include_retailer = "must_include_retailer" + any = 'any' + retailer_site_only = 'retailer_site_only' + must_include_retailer = 'must_include_retailer' class CreativePolicy(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - co_branding: Annotated[CoBranding, Field(description="Co-branding requirement")] - landing_page: Annotated[LandingPage, Field(description="Landing page requirements")] + co_branding: Annotated[CoBranding, Field(description='Co-branding requirement')] + landing_page: Annotated[LandingPage, Field(description='Landing page requirements')] templates_available: Annotated[ - bool, Field(description="Whether creative templates are provided") + bool, Field(description='Whether creative templates are provided') ] diff --git a/src/adcp/types/generated_poc/creative_status.py b/src/adcp/types/generated_poc/creative_status.py index 2e56bba..c604dca 100644 --- a/src/adcp/types/generated_poc/creative_status.py +++ b/src/adcp/types/generated_poc/creative_status.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: creative-status.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,7 +8,7 @@ class CreativeStatus(Enum): - processing = "processing" - approved = "approved" - rejected = "rejected" - pending_review = "pending_review" + processing = 'processing' + approved = 'approved' + rejected = 'rejected' + pending_review = 'pending_review' diff --git a/src/adcp/types/generated_poc/css_asset.py b/src/adcp/types/generated_poc/css_asset.py index a0f4c93..8792c39 100644 --- a/src/adcp/types/generated_poc/css_asset.py +++ b/src/adcp/types/generated_poc/css_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: css-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,9 +12,9 @@ class CssAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - content: Annotated[str, Field(description="CSS content")] + content: Annotated[str, Field(description='CSS content')] media: Annotated[ str | None, Field(description="CSS media query context (e.g., 'screen', 'print')") ] = None diff --git a/src/adcp/types/generated_poc/daast_asset.py b/src/adcp/types/generated_poc/daast_asset.py index 4351b8c..da5689c 100644 --- a/src/adcp/types/generated_poc/daast_asset.py +++ b/src/adcp/types/generated_poc/daast_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: daast-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,65 +12,65 @@ class DaastVersion(Enum): - field_1_0 = "1.0" - field_1_1 = "1.1" + field_1_0 = '1.0' + field_1_1 = '1.1' class TrackingEvent(Enum): - start = "start" - firstQuartile = "firstQuartile" - midpoint = "midpoint" - thirdQuartile = "thirdQuartile" - complete = "complete" - impression = "impression" - pause = "pause" - resume = "resume" - skip = "skip" - mute = "mute" - unmute = "unmute" + start = 'start' + firstQuartile = 'firstQuartile' + midpoint = 'midpoint' + thirdQuartile = 'thirdQuartile' + complete = 'complete' + impression = 'impression' + pause = 'pause' + resume = 'resume' + skip = 'skip' + mute = 'mute' + unmute = 'unmute' class DaastAsset1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) companion_ads: Annotated[ - bool | None, Field(description="Whether companion display ads are included") + bool | None, Field(description='Whether companion display ads are included') ] = None daast_version: Annotated[ - DaastVersion | None, Field(description="DAAST specification version") + DaastVersion | None, Field(description='DAAST specification version') ] = None delivery_type: Annotated[ - Literal["url"], - Field(description="Discriminator indicating DAAST is delivered via URL endpoint"), + Literal['url'], + Field(description='Discriminator indicating DAAST is delivered via URL endpoint'), ] duration_ms: Annotated[ - int | None, Field(description="Expected audio duration in milliseconds (if known)", ge=0) + int | None, Field(description='Expected audio duration in milliseconds (if known)', ge=0) ] = None tracking_events: Annotated[ - list[TrackingEvent] | None, Field(description="Tracking events supported by this DAAST tag") + list[TrackingEvent] | None, Field(description='Tracking events supported by this DAAST tag') ] = None - url: Annotated[AnyUrl, Field(description="URL endpoint that returns DAAST XML")] + url: Annotated[AnyUrl, Field(description='URL endpoint that returns DAAST XML')] class DaastAsset2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) companion_ads: Annotated[ - bool | None, Field(description="Whether companion display ads are included") + bool | None, Field(description='Whether companion display ads are included') ] = None - content: Annotated[str, Field(description="Inline DAAST XML content")] + content: Annotated[str, Field(description='Inline DAAST XML content')] daast_version: Annotated[ - DaastVersion | None, Field(description="DAAST specification version") + DaastVersion | None, Field(description='DAAST specification version') ] = None delivery_type: Annotated[ - Literal["inline"], - Field(description="Discriminator indicating DAAST is delivered as inline XML content"), + Literal['inline'], + Field(description='Discriminator indicating DAAST is delivered as inline XML content'), ] duration_ms: Annotated[ - int | None, Field(description="Expected audio duration in milliseconds (if known)", ge=0) + int | None, Field(description='Expected audio duration in milliseconds (if known)', ge=0) ] = None tracking_events: Annotated[ - list[TrackingEvent] | None, Field(description="Tracking events supported by this DAAST tag") + list[TrackingEvent] | None, Field(description='Tracking events supported by this DAAST tag') ] = None diff --git a/src/adcp/types/generated_poc/delivery_metrics.py b/src/adcp/types/generated_poc/delivery_metrics.py index 74a6070..fcecc58 100644 --- a/src/adcp/types/generated_poc/delivery_metrics.py +++ b/src/adcp/types/generated_poc/delivery_metrics.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: delivery-metrics.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,15 +12,15 @@ class VenueBreakdownItem(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - impressions: Annotated[int, Field(description="Impressions delivered at this venue", ge=0)] - loop_plays: Annotated[int | None, Field(description="Loop plays at this venue", ge=0)] = None + impressions: Annotated[int, Field(description='Impressions delivered at this venue', ge=0)] + loop_plays: Annotated[int | None, Field(description='Loop plays at this venue', ge=0)] = None screens_used: Annotated[ - int | None, Field(description="Number of screens used at this venue", ge=0) + int | None, Field(description='Number of screens used at this venue', ge=0) ] = None - venue_id: Annotated[str, Field(description="Venue identifier")] - venue_name: Annotated[str | None, Field(description="Human-readable venue name")] = None + venue_id: Annotated[str, Field(description='Venue identifier')] + venue_name: Annotated[str | None, Field(description='Human-readable venue name')] = None venue_type: Annotated[ str | None, Field(description="Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')"), @@ -29,83 +29,83 @@ class VenueBreakdownItem(AdCPBaseModel): class DoohMetrics(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) calculation_notes: Annotated[ - str | None, Field(description="Explanation of how DOOH impressions were calculated") + str | None, Field(description='Explanation of how DOOH impressions were calculated') ] = None loop_plays: Annotated[ - int | None, Field(description="Number of times ad played in rotation", ge=0) + int | None, Field(description='Number of times ad played in rotation', ge=0) ] = None screen_time_seconds: Annotated[ - int | None, Field(description="Total display time in seconds", ge=0) + int | None, Field(description='Total display time in seconds', ge=0) ] = None screens_used: Annotated[ - int | None, Field(description="Number of unique screens displaying the ad", ge=0) + int | None, Field(description='Number of unique screens displaying the ad', ge=0) ] = None sov_achieved: Annotated[ float | None, - Field(description="Actual share of voice delivered (0.0 to 1.0)", ge=0.0, le=1.0), + Field(description='Actual share of voice delivered (0.0 to 1.0)', ge=0.0, le=1.0), ] = None venue_breakdown: Annotated[ - list[VenueBreakdownItem] | None, Field(description="Per-venue performance breakdown") + list[VenueBreakdownItem] | None, Field(description='Per-venue performance breakdown') ] = None class QuartileData(AdCPBaseModel): - q1_views: Annotated[float | None, Field(description="25% completion views", ge=0.0)] = None - q2_views: Annotated[float | None, Field(description="50% completion views", ge=0.0)] = None - q3_views: Annotated[float | None, Field(description="75% completion views", ge=0.0)] = None - q4_views: Annotated[float | None, Field(description="100% completion views", ge=0.0)] = None + q1_views: Annotated[float | None, Field(description='25% completion views', ge=0.0)] = None + q2_views: Annotated[float | None, Field(description='50% completion views', ge=0.0)] = None + q3_views: Annotated[float | None, Field(description='75% completion views', ge=0.0)] = None + q4_views: Annotated[float | None, Field(description='100% completion views', ge=0.0)] = None class DeliveryMetrics(AdCPBaseModel): model_config = ConfigDict( - extra="allow", + extra='allow', ) - clicks: Annotated[float | None, Field(description="Total clicks", ge=0.0)] = None + clicks: Annotated[float | None, Field(description='Total clicks', ge=0.0)] = None completed_views: Annotated[ - float | None, Field(description="100% completions (for CPCV)", ge=0.0) + float | None, Field(description='100% completions (for CPCV)', ge=0.0) ] = None completion_rate: Annotated[ float | None, - Field(description="Completion rate (completed_views/impressions)", ge=0.0, le=1.0), + Field(description='Completion rate (completed_views/impressions)', ge=0.0, le=1.0), ] = None conversions: Annotated[ float | None, - Field(description="Conversions (reserved for future CPA pricing support)", ge=0.0), + Field(description='Conversions (reserved for future CPA pricing support)', ge=0.0), ] = None ctr: Annotated[ - float | None, Field(description="Click-through rate (clicks/impressions)", ge=0.0, le=1.0) + float | None, Field(description='Click-through rate (clicks/impressions)', ge=0.0, le=1.0) ] = None dooh_metrics: Annotated[ DoohMetrics | None, - Field(description="DOOH-specific metrics (only included for DOOH campaigns)"), + Field(description='DOOH-specific metrics (only included for DOOH campaigns)'), ] = None frequency: Annotated[ float | None, Field( - description="Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)", + description='Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)', ge=0.0, ), ] = None grps: Annotated[ - float | None, Field(description="Gross Rating Points delivered (for CPP)", ge=0.0) + float | None, Field(description='Gross Rating Points delivered (for CPP)', ge=0.0) ] = None - impressions: Annotated[float | None, Field(description="Impressions delivered", ge=0.0)] = None + impressions: Annotated[float | None, Field(description='Impressions delivered', ge=0.0)] = None leads: Annotated[ float | None, - Field(description="Leads generated (reserved for future CPL pricing support)", ge=0.0), + Field(description='Leads generated (reserved for future CPL pricing support)', ge=0.0), ] = None quartile_data: Annotated[ - QuartileData | None, Field(description="Video quartile completion data") + QuartileData | None, Field(description='Video quartile completion data') ] = None reach: Annotated[ float | None, Field( - description="Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.", + description='Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.', ge=0.0, ), ] = None - spend: Annotated[float | None, Field(description="Amount spent", ge=0.0)] = None - views: Annotated[float | None, Field(description="Views at threshold (for CPV)", ge=0.0)] = None + spend: Annotated[float | None, Field(description='Amount spent', ge=0.0)] = None + views: Annotated[float | None, Field(description='Views at threshold (for CPV)', ge=0.0)] = None diff --git a/src/adcp/types/generated_poc/delivery_type.py b/src/adcp/types/generated_poc/delivery_type.py index 6aa8def..d465d81 100644 --- a/src/adcp/types/generated_poc/delivery_type.py +++ b/src/adcp/types/generated_poc/delivery_type.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: delivery-type.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,5 +8,5 @@ class DeliveryType(Enum): - guaranteed = "guaranteed" - non_guaranteed = "non_guaranteed" + guaranteed = 'guaranteed' + non_guaranteed = 'non_guaranteed' diff --git a/src/adcp/types/generated_poc/deployment.py b/src/adcp/types/generated_poc/deployment.py index eea15f4..64fd2f5 100644 --- a/src/adcp/types/generated_poc/deployment.py +++ b/src/adcp/types/generated_poc/deployment.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: deployment.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,65 +14,65 @@ class Deployment1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - account: Annotated[str | None, Field(description="Account identifier if applicable")] = None + account: Annotated[str | None, Field(description='Account identifier if applicable')] = None activation_key: Annotated[ activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None, Field( - description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.", - title="Activation Key", + description='The key to use for targeting. Only present if is_live=true AND requester has access to this destination.', + title='Activation Key', ), ] = None deployed_at: Annotated[ AwareDatetime | None, - Field(description="Timestamp when activation completed (if is_live=true)"), + Field(description='Timestamp when activation completed (if is_live=true)'), ] = None estimated_activation_duration_minutes: Annotated[ float | None, Field( - description="Estimated time to activate if not live, or to complete activation if in progress", + description='Estimated time to activate if not live, or to complete activation if in progress', ge=0.0, ), ] = None is_live: Annotated[ - bool, Field(description="Whether signal is currently active on this destination") + bool, Field(description='Whether signal is currently active on this destination') ] - platform: Annotated[str, Field(description="Platform identifier for DSPs")] + platform: Annotated[str, Field(description='Platform identifier for DSPs')] type: Annotated[ - Literal["platform"], - Field(description="Discriminator indicating this is a platform-based deployment"), + Literal['platform'], + Field(description='Discriminator indicating this is a platform-based deployment'), ] class Deployment2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - account: Annotated[str | None, Field(description="Account identifier if applicable")] = None + account: Annotated[str | None, Field(description='Account identifier if applicable')] = None activation_key: Annotated[ activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None, Field( - description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.", - title="Activation Key", + description='The key to use for targeting. Only present if is_live=true AND requester has access to this destination.', + title='Activation Key', ), ] = None - agent_url: Annotated[AnyUrl, Field(description="URL identifying the destination agent")] + agent_url: Annotated[AnyUrl, Field(description='URL identifying the destination agent')] deployed_at: Annotated[ AwareDatetime | None, - Field(description="Timestamp when activation completed (if is_live=true)"), + Field(description='Timestamp when activation completed (if is_live=true)'), ] = None estimated_activation_duration_minutes: Annotated[ float | None, Field( - description="Estimated time to activate if not live, or to complete activation if in progress", + description='Estimated time to activate if not live, or to complete activation if in progress', ge=0.0, ), ] = None is_live: Annotated[ - bool, Field(description="Whether signal is currently active on this destination") + bool, Field(description='Whether signal is currently active on this destination') ] type: Annotated[ - Literal["agent"], - Field(description="Discriminator indicating this is an agent URL-based deployment"), + Literal['agent'], + Field(description='Discriminator indicating this is an agent URL-based deployment'), ] diff --git a/src/adcp/types/generated_poc/destination.py b/src/adcp/types/generated_poc/destination.py index e40faf6..e0c4aec 100644 --- a/src/adcp/types/generated_poc/destination.py +++ b/src/adcp/types/generated_poc/destination.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: destination.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,32 +12,32 @@ class Destination1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) account: Annotated[ - str | None, Field(description="Optional account identifier on the platform") + str | None, Field(description='Optional account identifier on the platform') ] = None platform: Annotated[ str, Field(description="Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')"), ] type: Annotated[ - Literal["platform"], - Field(description="Discriminator indicating this is a platform-based destination"), + Literal['platform'], + Field(description='Discriminator indicating this is a platform-based destination'), ] class Destination2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) account: Annotated[ - str | None, Field(description="Optional account identifier on the agent") + str | None, Field(description='Optional account identifier on the agent') ] = None agent_url: Annotated[ - AnyUrl, Field(description="URL identifying the destination agent (for sales agents, etc.)") + AnyUrl, Field(description='URL identifying the destination agent (for sales agents, etc.)') ] type: Annotated[ - Literal["agent"], - Field(description="Discriminator indicating this is an agent URL-based destination"), + Literal['agent'], + Field(description='Discriminator indicating this is an agent URL-based destination'), ] diff --git a/src/adcp/types/generated_poc/error.py b/src/adcp/types/generated_poc/error.py index 858a6f7..e576ddf 100644 --- a/src/adcp/types/generated_poc/error.py +++ b/src/adcp/types/generated_poc/error.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: error.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,18 +12,18 @@ class Error(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - code: Annotated[str, Field(description="Error code for programmatic handling")] - details: Annotated[Any | None, Field(description="Additional task-specific error details")] = ( + code: Annotated[str, Field(description='Error code for programmatic handling')] + details: Annotated[Any | None, Field(description='Additional task-specific error details')] = ( None ) field: Annotated[ str | None, Field(description="Field path associated with the error (e.g., 'packages[0].targeting')"), ] = None - message: Annotated[str, Field(description="Human-readable error message")] + message: Annotated[str, Field(description='Human-readable error message')] retry_after: Annotated[ - float | None, Field(description="Seconds to wait before retrying the operation", ge=0.0) + float | None, Field(description='Seconds to wait before retrying the operation', ge=0.0) ] = None - suggestion: Annotated[str | None, Field(description="Suggested fix for the error")] = None + suggestion: Annotated[str | None, Field(description='Suggested fix for the error')] = None diff --git a/src/adcp/types/generated_poc/flat_rate_option.py b/src/adcp/types/generated_poc/flat_rate_option.py index f8b2d68..4352546 100644 --- a/src/adcp/types/generated_poc/flat_rate_option.py +++ b/src/adcp/types/generated_poc/flat_rate_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: flat-rate-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,7 +12,7 @@ class Parameters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) daypart: Annotated[ str | None, @@ -22,28 +22,28 @@ class Parameters(AdCPBaseModel): ] = None duration_hours: Annotated[ float | None, - Field(description="Duration in hours for time-based flat rate pricing (DOOH)", ge=0.0), + Field(description='Duration in hours for time-based flat rate pricing (DOOH)', ge=0.0), ] = None estimated_impressions: Annotated[ int | None, Field( - description="Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)", + description='Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)', ge=0, ), ] = None loop_duration_seconds: Annotated[ - int | None, Field(description="Duration of ad loop rotation in seconds (DOOH)", ge=1) + int | None, Field(description='Duration of ad loop rotation in seconds (DOOH)', ge=1) ] = None min_plays_per_hour: Annotated[ int | None, Field( - description="Minimum number of times ad plays per hour (DOOH frequency guarantee)", ge=0 + description='Minimum number of times ad plays per hour (DOOH frequency guarantee)', ge=0 ), ] = None sov_percentage: Annotated[ float | None, Field( - description="Guaranteed share of voice as percentage (DOOH, 0-100)", ge=0.0, le=100.0 + description='Guaranteed share of voice as percentage (DOOH, 0-100)', ge=0.0, le=100.0 ), ] = None venue_package: Annotated[ @@ -56,33 +56,33 @@ class Parameters(AdCPBaseModel): class FlatRatePricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] is_fixed: Annotated[ Literal[True], - Field(description="Whether this is a fixed rate (true) or auction-based (false)"), + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None parameters: Annotated[ Parameters | None, - Field(description="Flat rate parameters for DOOH and time-based campaigns"), + Field(description='Flat rate parameters for DOOH and time-based campaigns'), ] = None pricing_model: Annotated[ - Literal["flat_rate"], Field(description="Fixed cost regardless of delivery volume") + Literal['flat_rate'], Field(description='Fixed cost regardless of delivery volume') ] pricing_option_id: Annotated[ str, @@ -90,4 +90,4 @@ class FlatRatePricingOption(AdCPBaseModel): description="Unique identifier for this pricing option within the product (e.g., 'flat_rate_usd_24h_takeover')" ), ] - rate: Annotated[float, Field(description="Flat rate cost", ge=0.0)] + rate: Annotated[float, Field(description='Flat rate cost', ge=0.0)] diff --git a/src/adcp/types/generated_poc/format.py b/src/adcp/types/generated_poc/format.py index 3d40611..e03e6c7 100644 --- a/src/adcp/types/generated_poc/format.py +++ b/src/adcp/types/generated_poc/format.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: format.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,26 +14,26 @@ class AssetType(Enum): - image = "image" - video = "video" - audio = "audio" - vast = "vast" - daast = "daast" - text = "text" - markdown = "markdown" - html = "html" - css = "css" - javascript = "javascript" - url = "url" - webhook = "webhook" - promoted_offerings = "promoted_offerings" + image = 'image' + video = 'video' + audio = 'audio' + vast = 'vast' + daast = 'daast' + text = 'text' + markdown = 'markdown' + html = 'html' + css = 'css' + javascript = 'javascript' + url = 'url' + webhook = 'webhook' + promoted_offerings = 'promoted_offerings' class AssetsRequired(AdCPBaseModel): asset_id: Annotated[ str, Field( - description="Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object." + description='Unique identifier for this asset. Creative manifests MUST use this exact value as the key in the assets object.' ), ] asset_role: Annotated[ @@ -42,34 +42,34 @@ class AssetsRequired(AdCPBaseModel): description="Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only." ), ] = None - asset_type: Annotated[AssetType, Field(description="Type of asset")] + asset_type: Annotated[AssetType, Field(description='Type of asset')] item_type: Annotated[ - Literal["individual"], - Field(description="Discriminator indicating this is an individual asset requirement"), + Literal['individual'], + Field(description='Discriminator indicating this is an individual asset requirement'), ] - required: Annotated[bool | None, Field(description="Whether this asset is required")] = None + required: Annotated[bool | None, Field(description='Whether this asset is required')] = None requirements: Annotated[ dict[str, Any] | None, Field( - description="Technical requirements for this asset (dimensions, file size, duration, etc.)" + description='Technical requirements for this asset (dimensions, file size, duration, etc.)' ), ] = None class Asset(AdCPBaseModel): - asset_id: Annotated[str, Field(description="Identifier for this asset within the group")] + asset_id: Annotated[str, Field(description='Identifier for this asset within the group')] asset_role: Annotated[ str | None, Field( description="Optional descriptive label for this asset's purpose (e.g., 'hero_image', 'logo'). Not used for referencing assets in manifests—use asset_id instead. This field is for human-readable documentation and UI display only." ), ] = None - asset_type: Annotated[AssetType, Field(description="Type of asset")] + asset_type: Annotated[AssetType, Field(description='Type of asset')] required: Annotated[ - bool | None, Field(description="Whether this asset is required in each repetition") + bool | None, Field(description='Whether this asset is required in each repetition') ] = None requirements: Annotated[ - dict[str, Any] | None, Field(description="Technical requirements for this asset") + dict[str, Any] | None, Field(description='Technical requirements for this asset') ] = None @@ -77,45 +77,45 @@ class AssetsRequired1(AdCPBaseModel): asset_group_id: Annotated[ str, Field(description="Identifier for this asset group (e.g., 'product', 'slide', 'card')") ] - assets: Annotated[list[Asset], Field(description="Assets within each repetition of this group")] + assets: Annotated[list[Asset], Field(description='Assets within each repetition of this group')] item_type: Annotated[ - Literal["repeatable_group"], - Field(description="Discriminator indicating this is a repeatable asset group"), + Literal['repeatable_group'], + Field(description='Discriminator indicating this is a repeatable asset group'), ] - max_count: Annotated[int, Field(description="Maximum number of repetitions allowed", ge=1)] - min_count: Annotated[int, Field(description="Minimum number of repetitions required", ge=1)] + max_count: Annotated[int, Field(description='Maximum number of repetitions allowed', ge=1)] + min_count: Annotated[int, Field(description='Minimum number of repetitions required', ge=1)] class FormatCard(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) format_id: Annotated[ format_id_1.FormatId, Field( - description="Creative format defining the card layout (typically format_card_standard)" + description='Creative format defining the card layout (typically format_card_standard)' ), ] manifest: Annotated[ dict[str, Any], - Field(description="Asset manifest for rendering the card, structure defined by the format"), + Field(description='Asset manifest for rendering the card, structure defined by the format'), ] class FormatCardDetailed(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) format_id: Annotated[ format_id_1.FormatId, Field( - description="Creative format defining the detailed card layout (typically format_card_detailed)" + description='Creative format defining the detailed card layout (typically format_card_detailed)' ), ] manifest: Annotated[ dict[str, Any], Field( - description="Asset manifest for rendering the detailed card, structure defined by the format" + description='Asset manifest for rendering the detailed card, structure defined by the format' ), ] @@ -126,10 +126,10 @@ class Responsive(AdCPBaseModel): class Unit(Enum): - px = "px" - dp = "dp" - inches = "inches" - cm = "cm" + px = 'px' + dp = 'dp' + inches = 'inches' + cm = 'cm' class Dimensions(AdCPBaseModel): @@ -137,35 +137,35 @@ class Dimensions(AdCPBaseModel): str | None, Field( description="Fixed aspect ratio constraint (e.g., '16:9', '4:3', '1:1')", - pattern="^\\d+:\\d+$", + pattern='^\\d+:\\d+$', ), ] = None height: Annotated[ - float | None, Field(description="Fixed height in specified units", ge=0.0) + float | None, Field(description='Fixed height in specified units', ge=0.0) ] = None max_height: Annotated[ - float | None, Field(description="Maximum height for responsive renders", ge=0.0) + float | None, Field(description='Maximum height for responsive renders', ge=0.0) ] = None max_width: Annotated[ - float | None, Field(description="Maximum width for responsive renders", ge=0.0) + float | None, Field(description='Maximum width for responsive renders', ge=0.0) ] = None min_height: Annotated[ - float | None, Field(description="Minimum height for responsive renders", ge=0.0) + float | None, Field(description='Minimum height for responsive renders', ge=0.0) ] = None min_width: Annotated[ - float | None, Field(description="Minimum width for responsive renders", ge=0.0) + float | None, Field(description='Minimum width for responsive renders', ge=0.0) ] = None responsive: Annotated[ - Responsive | None, Field(description="Indicates which dimensions are responsive/fluid") + Responsive | None, Field(description='Indicates which dimensions are responsive/fluid') ] = None - unit: Annotated[Unit, Field(description="Unit of measurement for dimensions")] - width: Annotated[float | None, Field(description="Fixed width in specified units", ge=0.0)] = ( + unit: Annotated[Unit, Field(description='Unit of measurement for dimensions')] + width: Annotated[float | None, Field(description='Fixed width in specified units', ge=0.0)] = ( None ) class Render(AdCPBaseModel): - dimensions: Annotated[Dimensions, Field(description="Dimensions for this rendered piece")] + dimensions: Annotated[Dimensions, Field(description='Dimensions for this rendered piece')] role: Annotated[ str, Field( @@ -175,86 +175,86 @@ class Render(AdCPBaseModel): class Type(Enum): - audio = "audio" - video = "video" - display = "display" - native = "native" - dooh = "dooh" - rich_media = "rich_media" - universal = "universal" + audio = 'audio' + video = 'video' + display = 'display' + native = 'native' + dooh = 'dooh' + rich_media = 'rich_media' + universal = 'universal' class Format(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets_required: Annotated[ list[AssetsRequired | AssetsRequired1] | None, Field( - description="Array of required assets or asset groups for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Can contain individual assets or repeatable asset sequences (e.g., carousel products, slideshow frames)." + description='Array of required assets or asset groups for this format. Each asset is identified by its asset_id, which must be used as the key in creative manifests. Can contain individual assets or repeatable asset sequences (e.g., carousel products, slideshow frames).' ), ] = None delivery: Annotated[ dict[str, Any] | None, - Field(description="Delivery method specifications (e.g., hosted, VAST, third-party tags)"), + Field(description='Delivery method specifications (e.g., hosted, VAST, third-party tags)'), ] = None description: Annotated[ str | None, Field( - description="Plain text explanation of what this format does and what assets it requires" + description='Plain text explanation of what this format does and what assets it requires' ), ] = None example_url: Annotated[ AnyUrl | None, Field( - description="Optional URL to showcase page with examples and interactive demos of this format" + description='Optional URL to showcase page with examples and interactive demos of this format' ), ] = None format_card: Annotated[ FormatCard | None, Field( - description="Optional standard visual card (300x400px) for displaying this format in user interfaces. Can be rendered via preview_creative or pre-generated." + description='Optional standard visual card (300x400px) for displaying this format in user interfaces. Can be rendered via preview_creative or pre-generated.' ), ] = None format_card_detailed: Annotated[ FormatCardDetailed | None, Field( - description="Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages." + description='Optional detailed card with carousel and full specifications. Provides rich format documentation similar to ad spec pages.' ), ] = None format_id: Annotated[ format_id_1.FormatId, - Field(description="Structured format identifier with agent URL and format name"), + Field(description='Structured format identifier with agent URL and format name'), ] - name: Annotated[str, Field(description="Human-readable format name")] + name: Annotated[str, Field(description='Human-readable format name')] output_format_ids: Annotated[ list[format_id_1.FormatId] | None, Field( - description="For generative formats: array of format IDs that this format can generate. When a format accepts inputs like brand_manifest and message, this specifies what concrete output formats can be produced (e.g., a generative banner format might output standard image banner formats)." + description='For generative formats: array of format IDs that this format can generate. When a format accepts inputs like brand_manifest and message, this specifies what concrete output formats can be produced (e.g., a generative banner format might output standard image banner formats).' ), ] = None preview_image: Annotated[ AnyUrl | None, Field( - description="DEPRECATED: Use format_card instead. Optional preview image URL for format browsing/discovery UI. Should be 400x300px (4:3 aspect ratio) PNG or JPG. Used as thumbnail/card image in format browsers. This field is maintained for backward compatibility but format_card provides a more flexible, structured approach." + description='DEPRECATED: Use format_card instead. Optional preview image URL for format browsing/discovery UI. Should be 400x300px (4:3 aspect ratio) PNG or JPG. Used as thumbnail/card image in format browsers. This field is maintained for backward compatibility but format_card provides a more flexible, structured approach.' ), ] = None renders: Annotated[ list[Render] | None, Field( - description="Specification of rendered pieces for this format. Most formats produce a single render. Companion ad formats (video + banner), adaptive formats, and multi-placement formats produce multiple renders. Each render specifies its role and dimensions.", + description='Specification of rendered pieces for this format. Most formats produce a single render. Companion ad formats (video + banner), adaptive formats, and multi-placement formats produce multiple renders. Each render specifies its role and dimensions.', min_length=1, ), ] = None supported_macros: Annotated[ list[str] | None, Field( - description="List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling." + description='List of universal macros supported by this format (e.g., MEDIA_BUY_ID, CACHEBUSTER, DEVICE_ID). Used for validation and developer tooling.' ), ] = None type: Annotated[ Type, Field( - description="Media type of this format - determines rendering method and asset requirements" + description='Media type of this format - determines rendering method and asset requirements' ), ] diff --git a/src/adcp/types/generated_poc/format_id.py b/src/adcp/types/generated_poc/format_id.py index 858013d..9c3d1ba 100644 --- a/src/adcp/types/generated_poc/format_id.py +++ b/src/adcp/types/generated_poc/format_id.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: format-id.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,7 +12,7 @@ class FormatId(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) agent_url: Annotated[ AnyUrl, @@ -24,6 +24,6 @@ class FormatId(AdCPBaseModel): str, Field( description="Format identifier within the agent's namespace (e.g., 'display_300x250', 'video_standard_30s')", - pattern="^[a-zA-Z0-9_-]+$", + pattern='^[a-zA-Z0-9_-]+$', ), ] diff --git a/src/adcp/types/generated_poc/frequency_cap.py b/src/adcp/types/generated_poc/frequency_cap.py index 657e95c..0cf4c95 100644 --- a/src/adcp/types/generated_poc/frequency_cap.py +++ b/src/adcp/types/generated_poc/frequency_cap.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: frequency-cap.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,8 +12,8 @@ class FrequencyCap(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) suppress_minutes: Annotated[ - float, Field(description="Minutes to suppress after impression", ge=0.0) + float, Field(description='Minutes to suppress after impression', ge=0.0) ] diff --git a/src/adcp/types/generated_poc/frequency_cap_scope.py b/src/adcp/types/generated_poc/frequency_cap_scope.py index 0a79f33..84dc816 100644 --- a/src/adcp/types/generated_poc/frequency_cap_scope.py +++ b/src/adcp/types/generated_poc/frequency_cap_scope.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: frequency-cap-scope.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -9,8 +9,8 @@ from pydantic import Field, RootModel -class FrequencyCapScope(RootModel[Literal["package"]]): +class FrequencyCapScope(RootModel[Literal['package']]): root: Annotated[ - Literal["package"], - Field(description="Scope for frequency cap application", title="Frequency Cap Scope"), + Literal['package'], + Field(description='Scope for frequency cap application', title='Frequency Cap Scope'), ] diff --git a/src/adcp/types/generated_poc/get_media_buy_delivery_request.py b/src/adcp/types/generated_poc/get_media_buy_delivery_request.py index 03d1351..b8d242b 100644 --- a/src/adcp/types/generated_poc/get_media_buy_delivery_request.py +++ b/src/adcp/types/generated_poc/get_media_buy_delivery_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-media-buy-delivery-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,54 +12,54 @@ class StatusFilter(Enum): - active = "active" - pending = "pending" - paused = "paused" - completed = "completed" - failed = "failed" - all = "all" + active = 'active' + pending = 'pending' + paused = 'paused' + completed = 'completed' + failed = 'failed' + all = 'all' class StatusFilterEnum(Enum): - active = "active" - pending = "pending" - paused = "paused" - completed = "completed" - failed = "failed" + active = 'active' + pending = 'pending' + paused = 'paused' + completed = 'completed' + failed = 'failed' class GetMediaBuyDeliveryRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_refs: Annotated[ - list[str] | None, Field(description="Array of buyer reference IDs to get delivery data for") + list[str] | None, Field(description='Array of buyer reference IDs to get delivery data for') ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None end_date: Annotated[ str | None, Field( - description="End date for reporting period (YYYY-MM-DD)", - pattern="^\\d{4}-\\d{2}-\\d{2}$", + description='End date for reporting period (YYYY-MM-DD)', + pattern='^\\d{4}-\\d{2}-\\d{2}$', ), ] = None media_buy_ids: Annotated[ list[str] | None, - Field(description="Array of publisher media buy IDs to get delivery data for"), + Field(description='Array of publisher media buy IDs to get delivery data for'), ] = None start_date: Annotated[ str | None, Field( - description="Start date for reporting period (YYYY-MM-DD)", - pattern="^\\d{4}-\\d{2}-\\d{2}$", + description='Start date for reporting period (YYYY-MM-DD)', + pattern='^\\d{4}-\\d{2}-\\d{2}$', ), ] = None status_filter: Annotated[ StatusFilter | list[StatusFilterEnum] | None, - Field(description="Filter by status. Can be a single status or array of statuses"), + Field(description='Filter by status. Can be a single status or array of statuses'), ] = None diff --git a/src/adcp/types/generated_poc/get_media_buy_delivery_response.py b/src/adcp/types/generated_poc/get_media_buy_delivery_response.py index 7e4412f..282a7da 100644 --- a/src/adcp/types/generated_poc/get_media_buy_delivery_response.py +++ b/src/adcp/types/generated_poc/get_media_buy_delivery_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-media-buy-delivery-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -17,41 +17,41 @@ class AggregatedTotals(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) clicks: Annotated[ float | None, - Field(description="Total clicks across all media buys (if applicable)", ge=0.0), + Field(description='Total clicks across all media buys (if applicable)', ge=0.0), ] = None impressions: Annotated[ - float, Field(description="Total impressions delivered across all media buys", ge=0.0) + float, Field(description='Total impressions delivered across all media buys', ge=0.0) ] media_buy_count: Annotated[ - int, Field(description="Number of media buys included in the response", ge=0) + int, Field(description='Number of media buys included in the response', ge=0) ] - spend: Annotated[float, Field(description="Total amount spent across all media buys", ge=0.0)] + spend: Annotated[float, Field(description='Total amount spent across all media buys', ge=0.0)] video_completions: Annotated[ float | None, - Field(description="Total video completions across all media buys (if applicable)", ge=0.0), + Field(description='Total video completions across all media buys (if applicable)', ge=0.0), ] = None class DailyBreakdownItem(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - date: Annotated[str, Field(description="Date (YYYY-MM-DD)", pattern="^\\d{4}-\\d{2}-\\d{2}$")] - impressions: Annotated[float, Field(description="Daily impressions", ge=0.0)] - spend: Annotated[float, Field(description="Daily spend", ge=0.0)] + date: Annotated[str, Field(description='Date (YYYY-MM-DD)', pattern='^\\d{4}-\\d{2}-\\d{2}$')] + impressions: Annotated[float, Field(description='Daily impressions', ge=0.0)] + spend: Annotated[float, Field(description='Daily spend', ge=0.0)] class Status(Enum): - pending = "pending" - active = "active" - paused = "paused" - completed = "completed" - failed = "failed" - reporting_delayed = "reporting_delayed" + pending = 'pending' + active = 'active' + paused = 'paused' + completed = 'completed' + failed = 'failed' + reporting_delayed = 'reporting_delayed' class Totals(DeliveryMetrics): @@ -65,23 +65,23 @@ class Totals(DeliveryMetrics): class NotificationType(Enum): - scheduled = "scheduled" - final = "final" - delayed = "delayed" - adjusted = "adjusted" + scheduled = 'scheduled' + final = 'final' + delayed = 'delayed' + adjusted = 'adjusted' class ReportingPeriod(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) end: Annotated[ AwareDatetime, - Field(description="ISO 8601 end timestamp in UTC (e.g., 2024-02-05T23:59:59Z)"), + Field(description='ISO 8601 end timestamp in UTC (e.g., 2024-02-05T23:59:59Z)'), ] start: Annotated[ AwareDatetime, - Field(description="ISO 8601 start timestamp in UTC (e.g., 2024-02-05T00:00:00Z)"), + Field(description='ISO 8601 start timestamp in UTC (e.g., 2024-02-05T00:00:00Z)'), ] @@ -93,24 +93,24 @@ class ByPackageItem(DeliveryMetrics): str, Field( description="ISO 4217 currency code (e.g., USD, EUR, GBP) for this package's pricing. Indicates the currency in which the rate and spend values are denominated. Different packages can use different currencies when supported by the publisher.", - pattern="^[A-Z]{3}$", + pattern='^[A-Z]{3}$', ), ] pacing_index: Annotated[ float | None, - Field(description="Delivery pace (1.0 = on track, <1.0 = behind, >1.0 = ahead)", ge=0.0), + Field(description='Delivery pace (1.0 = on track, <1.0 = behind, >1.0 = ahead)', ge=0.0), ] = None package_id: Annotated[str, Field(description="Publisher's package identifier")] pricing_model: Annotated[ pricing_model_1.PricingModel, Field( - description="The pricing model used for this package (e.g., cpm, cpcv, cpp). Indicates how the package is billed and which metrics are most relevant for optimization." + description='The pricing model used for this package (e.g., cpm, cpcv, cpp). Indicates how the package is billed and which metrics are most relevant for optimization.' ), ] rate: Annotated[ float, Field( - description="The pricing rate for this package in the specified currency. For fixed-rate pricing, this is the agreed rate (e.g., CPM rate of 12.50 means $12.50 per 1,000 impressions). For auction-based pricing, this represents the effective rate based on actual delivery.", + description='The pricing rate for this package in the specified currency. For fixed-rate pricing, this is the agreed rate (e.g., CPM rate of 12.50 means $12.50 per 1,000 impressions). For auction-based pricing, this represents the effective rate based on actual delivery.', ge=0.0, ), ] @@ -118,36 +118,36 @@ class ByPackageItem(DeliveryMetrics): class MediaBuyDelivery(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_ref: Annotated[ str | None, Field(description="Buyer's reference identifier for this media buy") ] = None - by_package: Annotated[list[ByPackageItem], Field(description="Metrics broken down by package")] + by_package: Annotated[list[ByPackageItem], Field(description='Metrics broken down by package')] daily_breakdown: Annotated[ - list[DailyBreakdownItem] | None, Field(description="Day-by-day delivery") + list[DailyBreakdownItem] | None, Field(description='Day-by-day delivery') ] = None expected_availability: Annotated[ AwareDatetime | None, Field( - description="When delayed data is expected to be available (only present when status is reporting_delayed)" + description='When delayed data is expected to be available (only present when status is reporting_delayed)' ), ] = None is_adjusted: Annotated[ bool | None, Field( - description="Indicates this delivery contains updated data for a previously reported period. Buyer should replace previous period data with these totals." + description='Indicates this delivery contains updated data for a previously reported period. Buyer should replace previous period data with these totals.' ), ] = None media_buy_id: Annotated[str, Field(description="Publisher's media buy identifier")] pricing_model: Annotated[ pricing_model_1.PricingModel | None, - Field(description="Pricing model used for this media buy"), + Field(description='Pricing model used for this media buy'), ] = None status: Annotated[ Status, Field( - description="Current media buy status. In webhook context, reporting_delayed indicates data temporarily unavailable." + description='Current media buy status. In webhook context, reporting_delayed indicates data temporarily unavailable.' ), ] totals: Totals @@ -155,31 +155,31 @@ class MediaBuyDelivery(AdCPBaseModel): class GetMediaBuyDeliveryResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) aggregated_totals: Annotated[ AggregatedTotals | None, Field( - description="Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications." + description='Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.' ), ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None - currency: Annotated[str, Field(description="ISO 4217 currency code", pattern="^[A-Z]{3}$")] + currency: Annotated[str, Field(description='ISO 4217 currency code', pattern='^[A-Z]{3}$')] errors: Annotated[ list[error.Error] | None, Field( - description="Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)" + description='Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)' ), ] = None media_buy_deliveries: Annotated[ list[MediaBuyDelivery], Field( - description="Array of delivery data for media buys. When used in webhook notifications, may contain multiple media buys aggregated by publisher. When used in get_media_buy_delivery API responses, typically contains requested media buys." + description='Array of delivery data for media buys. When used in webhook notifications, may contain multiple media buys aggregated by publisher. When used in get_media_buy_delivery API responses, typically contains requested media buys.' ), ] next_expected_at: Annotated[ @@ -191,30 +191,30 @@ class GetMediaBuyDeliveryResponse(AdCPBaseModel): notification_type: Annotated[ NotificationType | None, Field( - description="Type of webhook notification (only present in webhook deliveries): scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = resending period with updated data" + description='Type of webhook notification (only present in webhook deliveries): scheduled = regular periodic update, final = campaign completed, delayed = data not yet available, adjusted = resending period with updated data' ), ] = None partial_data: Annotated[ bool | None, Field( - description="Indicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)" + description='Indicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)' ), ] = None reporting_period: Annotated[ ReportingPeriod, - Field(description="Date range for the report. All periods use UTC timezone."), + Field(description='Date range for the report. All periods use UTC timezone.'), ] sequence_number: Annotated[ int | None, Field( - description="Sequential notification number (only present in webhook deliveries, starts at 1)", + description='Sequential notification number (only present in webhook deliveries, starts at 1)', ge=1, ), ] = None unavailable_count: Annotated[ int | None, Field( - description="Number of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)", + description='Number of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)', ge=0, ), ] = None diff --git a/src/adcp/types/generated_poc/get_products_request.py b/src/adcp/types/generated_poc/get_products_request.py index b2389aa..ef02515 100644 --- a/src/adcp/types/generated_poc/get_products_request.py +++ b/src/adcp/types/generated_poc/get_products_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-products-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,68 +16,68 @@ class FormatType(Enum): - video = "video" - display = "display" - audio = "audio" + video = 'video' + display = 'display' + audio = 'audio' class Filters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) delivery_type: delivery_type_1.DeliveryType | None = None format_ids: Annotated[ - list[format_id.FormatId] | None, Field(description="Filter by specific format IDs") + list[format_id.FormatId] | None, Field(description='Filter by specific format IDs') ] = None format_types: Annotated[ - list[FormatType] | None, Field(description="Filter by format types") + list[FormatType] | None, Field(description='Filter by format types') ] = None is_fixed_price: Annotated[ - bool | None, Field(description="Filter for fixed price vs auction products") + bool | None, Field(description='Filter for fixed price vs auction products') ] = None min_exposures: Annotated[ int | None, - Field(description="Minimum exposures/impressions needed for measurement validity", ge=1), + Field(description='Minimum exposures/impressions needed for measurement validity', ge=1), ] = None standard_formats_only: Annotated[ - bool | None, Field(description="Only return products accepting IAB standard formats") + bool | None, Field(description='Only return products accepting IAB standard formats') ] = None class GetProductsRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) brand_manifest: Annotated[ brand_manifest_1.BrandManifest | AnyUrl | None, Field( - description="Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest.", + description='Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest.', examples=[ { - "data": { - "colors": {"primary": "#FF6B35"}, - "name": "ACME Corporation", - "url": "https://acmecorp.com", + 'data': { + 'colors': {'primary': '#FF6B35'}, + 'name': 'ACME Corporation', + 'url': 'https://acmecorp.com', }, - "description": "Inline brand manifest", + 'description': 'Inline brand manifest', }, { - "data": "https://cdn.acmecorp.com/brand-manifest.json", - "description": "URL string reference to hosted manifest", + 'data': 'https://cdn.acmecorp.com/brand-manifest.json', + 'description': 'URL string reference to hosted manifest', }, ], - title="Brand Manifest Reference", + title='Brand Manifest Reference', ), ] = None brief: Annotated[ - str | None, Field(description="Natural language description of campaign requirements") + str | None, Field(description='Natural language description of campaign requirements') ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None filters: Annotated[ - Filters | None, Field(description="Structured filters for product discovery") + Filters | None, Field(description='Structured filters for product discovery') ] = None diff --git a/src/adcp/types/generated_poc/get_products_response.py b/src/adcp/types/generated_poc/get_products_response.py index 30af4bf..c325253 100644 --- a/src/adcp/types/generated_poc/get_products_response.py +++ b/src/adcp/types/generated_poc/get_products_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-products-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,16 +14,16 @@ class GetProductsResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error] | None, - Field(description="Task-specific errors and warnings (e.g., product filtering issues)"), + Field(description='Task-specific errors and warnings (e.g., product filtering issues)'), ] = None - products: Annotated[list[product.Product], Field(description="Array of matching products")] + products: Annotated[list[product.Product], Field(description='Array of matching products')] diff --git a/src/adcp/types/generated_poc/get_signals_request.py b/src/adcp/types/generated_poc/get_signals_request.py index ea3aad4..d77f1e1 100644 --- a/src/adcp/types/generated_poc/get_signals_request.py +++ b/src/adcp/types/generated_poc/get_signals_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-signals-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,64 +14,64 @@ class Country(RootModel[str]): - root: Annotated[str, Field(pattern="^[A-Z]{2}$")] + root: Annotated[str, Field(pattern='^[A-Z]{2}$')] class DeliverTo(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) countries: Annotated[ - list[Country], Field(description="Countries where signals will be used (ISO codes)") + list[Country], Field(description='Countries where signals will be used (ISO codes)') ] destinations: Annotated[ list[destination.Destination1 | destination.Destination2], Field( - description="List of destination platforms (DSPs, sales agents, etc.). If the authenticated caller matches one of these destinations, activation keys will be included in the response.", + description='List of destination platforms (DSPs, sales agents, etc.). If the authenticated caller matches one of these destinations, activation keys will be included in the response.', min_length=1, ), ] class CatalogType(Enum): - marketplace = "marketplace" - custom = "custom" - owned = "owned" + marketplace = 'marketplace' + custom = 'custom' + owned = 'owned' class Filters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) catalog_types: Annotated[ - list[CatalogType] | None, Field(description="Filter by catalog type") + list[CatalogType] | None, Field(description='Filter by catalog type') ] = None data_providers: Annotated[ - list[str] | None, Field(description="Filter by specific data providers") + list[str] | None, Field(description='Filter by specific data providers') ] = None - max_cpm: Annotated[float | None, Field(description="Maximum CPM price filter", ge=0.0)] = None + max_cpm: Annotated[float | None, Field(description='Maximum CPM price filter', ge=0.0)] = None min_coverage_percentage: Annotated[ - float | None, Field(description="Minimum coverage requirement", ge=0.0, le=100.0) + float | None, Field(description='Minimum coverage requirement', ge=0.0, le=100.0) ] = None class GetSignalsRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None deliver_to: Annotated[ - DeliverTo, Field(description="Destination platforms where signals need to be activated") + DeliverTo, Field(description='Destination platforms where signals need to be activated') ] - filters: Annotated[Filters | None, Field(description="Filters to refine results")] = None + filters: Annotated[Filters | None, Field(description='Filters to refine results')] = None max_results: Annotated[ - int | None, Field(description="Maximum number of results to return", ge=1) + int | None, Field(description='Maximum number of results to return', ge=1) ] = None signal_spec: Annotated[ - str, Field(description="Natural language description of the desired signals") + str, Field(description='Natural language description of the desired signals') ] diff --git a/src/adcp/types/generated_poc/get_signals_response.py b/src/adcp/types/generated_poc/get_signals_response.py index 7fb66b2..b7938ea 100644 --- a/src/adcp/types/generated_poc/get_signals_response.py +++ b/src/adcp/types/generated_poc/get_signals_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: get-signals-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,51 +15,51 @@ class Pricing(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - cpm: Annotated[float, Field(description="Cost per thousand impressions", ge=0.0)] - currency: Annotated[str, Field(description="Currency code", pattern="^[A-Z]{3}$")] + cpm: Annotated[float, Field(description='Cost per thousand impressions', ge=0.0)] + currency: Annotated[str, Field(description='Currency code', pattern='^[A-Z]{3}$')] class SignalType(Enum): - marketplace = "marketplace" - custom = "custom" - owned = "owned" + marketplace = 'marketplace' + custom = 'custom' + owned = 'owned' class Signal(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) coverage_percentage: Annotated[ - float, Field(description="Percentage of audience coverage", ge=0.0, le=100.0) + float, Field(description='Percentage of audience coverage', ge=0.0, le=100.0) ] - data_provider: Annotated[str, Field(description="Name of the data provider")] + data_provider: Annotated[str, Field(description='Name of the data provider')] deployments: Annotated[ list[deployment.Deployment1 | deployment.Deployment2], - Field(description="Array of destination deployments"), + Field(description='Array of destination deployments'), ] - description: Annotated[str, Field(description="Detailed signal description")] - name: Annotated[str, Field(description="Human-readable signal name")] - pricing: Annotated[Pricing, Field(description="Pricing information")] - signal_agent_segment_id: Annotated[str, Field(description="Unique identifier for the signal")] - signal_type: Annotated[SignalType, Field(description="Type of signal")] + description: Annotated[str, Field(description='Detailed signal description')] + name: Annotated[str, Field(description='Human-readable signal name')] + pricing: Annotated[Pricing, Field(description='Pricing information')] + signal_agent_segment_id: Annotated[str, Field(description='Unique identifier for the signal')] + signal_type: Annotated[SignalType, Field(description='Type of signal')] class GetSignalsResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error] | None, Field( - description="Task-specific errors and warnings (e.g., signal discovery or pricing issues)" + description='Task-specific errors and warnings (e.g., signal discovery or pricing issues)' ), ] = None - signals: Annotated[list[Signal], Field(description="Array of matching signals")] + signals: Annotated[list[Signal], Field(description='Array of matching signals')] diff --git a/src/adcp/types/generated_poc/html_asset.py b/src/adcp/types/generated_poc/html_asset.py index 295995f..6f51ac9 100644 --- a/src/adcp/types/generated_poc/html_asset.py +++ b/src/adcp/types/generated_poc/html_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: html-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,7 +12,7 @@ class HtmlAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - content: Annotated[str, Field(description="HTML content")] + content: Annotated[str, Field(description='HTML content')] version: Annotated[str | None, Field(description="HTML version (e.g., 'HTML5')")] = None diff --git a/src/adcp/types/generated_poc/identifier_types.py b/src/adcp/types/generated_poc/identifier_types.py index fb86c8a..e87f6d1 100644 --- a/src/adcp/types/generated_poc/identifier_types.py +++ b/src/adcp/types/generated_poc/identifier_types.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: identifier-types.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,22 +8,22 @@ class PropertyIdentifierTypes(Enum): - domain = "domain" - subdomain = "subdomain" - network_id = "network_id" - ios_bundle = "ios_bundle" - android_package = "android_package" - apple_app_store_id = "apple_app_store_id" - google_play_id = "google_play_id" - roku_store_id = "roku_store_id" - fire_tv_asin = "fire_tv_asin" - samsung_app_id = "samsung_app_id" - apple_tv_bundle = "apple_tv_bundle" - bundle_id = "bundle_id" - venue_id = "venue_id" - screen_id = "screen_id" - openooh_venue_type = "openooh_venue_type" - rss_url = "rss_url" - apple_podcast_id = "apple_podcast_id" - spotify_show_id = "spotify_show_id" - podcast_guid = "podcast_guid" + domain = 'domain' + subdomain = 'subdomain' + network_id = 'network_id' + ios_bundle = 'ios_bundle' + android_package = 'android_package' + apple_app_store_id = 'apple_app_store_id' + google_play_id = 'google_play_id' + roku_store_id = 'roku_store_id' + fire_tv_asin = 'fire_tv_asin' + samsung_app_id = 'samsung_app_id' + apple_tv_bundle = 'apple_tv_bundle' + bundle_id = 'bundle_id' + venue_id = 'venue_id' + screen_id = 'screen_id' + openooh_venue_type = 'openooh_venue_type' + rss_url = 'rss_url' + apple_podcast_id = 'apple_podcast_id' + spotify_show_id = 'spotify_show_id' + podcast_guid = 'podcast_guid' diff --git a/src/adcp/types/generated_poc/image_asset.py b/src/adcp/types/generated_poc/image_asset.py index 2f461b6..4613f8c 100644 --- a/src/adcp/types/generated_poc/image_asset.py +++ b/src/adcp/types/generated_poc/image_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: image-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,12 +12,12 @@ class ImageAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - alt_text: Annotated[str | None, Field(description="Alternative text for accessibility")] = None + alt_text: Annotated[str | None, Field(description='Alternative text for accessibility')] = None format: Annotated[ - str | None, Field(description="Image file format (jpg, png, gif, webp, etc.)") + str | None, Field(description='Image file format (jpg, png, gif, webp, etc.)') ] = None - height: Annotated[int | None, Field(description="Image height in pixels", ge=1)] = None - url: Annotated[AnyUrl, Field(description="URL to the image asset")] - width: Annotated[int | None, Field(description="Image width in pixels", ge=1)] = None + height: Annotated[int | None, Field(description='Image height in pixels', ge=1)] = None + url: Annotated[AnyUrl, Field(description='URL to the image asset')] + width: Annotated[int | None, Field(description='Image width in pixels', ge=1)] = None diff --git a/src/adcp/types/generated_poc/javascript_asset.py b/src/adcp/types/generated_poc/javascript_asset.py index 5fcf800..bc93c92 100644 --- a/src/adcp/types/generated_poc/javascript_asset.py +++ b/src/adcp/types/generated_poc/javascript_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: javascript-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,14 +12,14 @@ class ModuleType(Enum): - esm = "esm" - commonjs = "commonjs" - script = "script" + esm = 'esm' + commonjs = 'commonjs' + script = 'script' class JavascriptAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - content: Annotated[str, Field(description="JavaScript content")] - module_type: Annotated[ModuleType | None, Field(description="JavaScript module type")] = None + content: Annotated[str, Field(description='JavaScript content')] + module_type: Annotated[ModuleType | None, Field(description='JavaScript module type')] = None diff --git a/src/adcp/types/generated_poc/list_authorized_properties_request.py b/src/adcp/types/generated_poc/list_authorized_properties_request.py index ce81158..e231914 100644 --- a/src/adcp/types/generated_poc/list_authorized_properties_request.py +++ b/src/adcp/types/generated_poc/list_authorized_properties_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-authorized-properties-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,25 +15,25 @@ class PublisherDomain(RootModel[str]): str, Field( description="Publisher domain to filter by (e.g., 'cnn.com', 'espn.com')", - 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])?)*$', ), ] class ListAuthorizedPropertiesRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None publisher_domains: Annotated[ list[PublisherDomain] | None, Field( - description="Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.", + description='Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.', min_length=1, ), ] = None diff --git a/src/adcp/types/generated_poc/list_authorized_properties_response.py b/src/adcp/types/generated_poc/list_authorized_properties_response.py index 8cb7f1e..0504e20 100644 --- a/src/adcp/types/generated_poc/list_authorized_properties_response.py +++ b/src/adcp/types/generated_poc/list_authorized_properties_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-authorized-properties-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -13,7 +13,7 @@ class PrimaryCountry(RootModel[str]): - root: Annotated[str, Field(pattern="^[A-Z]{2}$")] + root: Annotated[str, Field(pattern='^[A-Z]{2}$')] class PublisherDomain(RootModel[str]): @@ -21,14 +21,14 @@ class PublisherDomain(RootModel[str]): str, Field( description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')", - 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])?)*$', ), ] class ListAuthorizedPropertiesResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) advertising_policies: Annotated[ str | None, @@ -41,12 +41,12 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel): context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error] | None, - Field(description="Task-specific errors and warnings (e.g., property availability issues)"), + Field(description='Task-specific errors and warnings (e.g., property availability issues)'), ] = None last_updated: Annotated[ AwareDatetime | None, @@ -57,7 +57,7 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel): portfolio_description: Annotated[ str | None, Field( - description="Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.", + description='Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.', max_length=5000, min_length=1, ), @@ -65,14 +65,14 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel): primary_channels: Annotated[ list[channels.AdvertisingChannels] | None, Field( - description="Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.", + description='Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.', min_length=1, ), ] = None primary_countries: Annotated[ list[PrimaryCountry] | None, Field( - description="Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.", + description='Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.', min_length=1, ), ] = None diff --git a/src/adcp/types/generated_poc/list_creative_formats_request.py b/src/adcp/types/generated_poc/list_creative_formats_request.py index d3651e0..b84a962 100644 --- a/src/adcp/types/generated_poc/list_creative_formats_request.py +++ b/src/adcp/types/generated_poc/list_creative_formats_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-creative-formats-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,25 +14,25 @@ class AssetType(Enum): - image = "image" - video = "video" - audio = "audio" - text = "text" - html = "html" - javascript = "javascript" - url = "url" + image = 'image' + video = 'video' + audio = 'audio' + text = 'text' + html = 'html' + javascript = 'javascript' + url = 'url' class Type(Enum): - audio = "audio" - video = "video" - display = "display" - dooh = "dooh" + audio = 'audio' + video = 'video' + display = 'display' + dooh = 'dooh' class ListCreativeFormatsRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_types: Annotated[ list[AssetType] | None, @@ -43,51 +43,51 @@ class ListCreativeFormatsRequest(AdCPBaseModel): context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None format_ids: Annotated[ list[format_id.FormatId] | None, Field( - description="Return only these specific format IDs (e.g., from get_products response)" + description='Return only these specific format IDs (e.g., from get_products response)' ), ] = None is_responsive: Annotated[ bool | None, Field( - description="Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions." + description='Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.' ), ] = None max_height: Annotated[ int | None, Field( - description="Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits." + description='Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits.' ), ] = None max_width: Annotated[ int | None, Field( - description="Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits." + description='Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits.' ), ] = None min_height: Annotated[ int | None, Field( - description="Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value." + description='Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value.' ), ] = None min_width: Annotated[ int | None, Field( - description="Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value." + description='Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value.' ), ] = None name_search: Annotated[ - str | None, Field(description="Search for formats by name (case-insensitive partial match)") + str | None, Field(description='Search for formats by name (case-insensitive partial match)') ] = None type: Annotated[ Type | None, Field( - description="Filter by format type (technical categories with distinct requirements)" + description='Filter by format type (technical categories with distinct requirements)' ), ] = None diff --git a/src/adcp/types/generated_poc/list_creative_formats_response.py b/src/adcp/types/generated_poc/list_creative_formats_response.py index efdb1ae..37807a4 100644 --- a/src/adcp/types/generated_poc/list_creative_formats_response.py +++ b/src/adcp/types/generated_poc/list_creative_formats_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-creative-formats-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,15 +14,15 @@ class Capability(Enum): - validation = "validation" - assembly = "assembly" - generation = "generation" - preview = "preview" + validation = 'validation' + assembly = 'assembly' + generation = 'generation' + preview = 'preview' class CreativeAgent(AdCPBaseModel): agent_name: Annotated[ - str | None, Field(description="Human-readable name for the creative agent") + str | None, Field(description='Human-readable name for the creative agent') ] = None agent_url: Annotated[ AnyUrl, @@ -31,29 +31,29 @@ class CreativeAgent(AdCPBaseModel): ), ] capabilities: Annotated[ - list[Capability] | None, Field(description="Capabilities this creative agent provides") + list[Capability] | None, Field(description='Capabilities this creative agent provides') ] = None class ListCreativeFormatsResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None creative_agents: Annotated[ list[CreativeAgent] | None, Field( - description="Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats." + description='Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats.' ), ] = None errors: Annotated[ list[error.Error] | None, - Field(description="Task-specific errors and warnings (e.g., format availability issues)"), + Field(description='Task-specific errors and warnings (e.g., format availability issues)'), ] = None formats: Annotated[ list[format.Format], diff --git a/src/adcp/types/generated_poc/list_creatives_request.py b/src/adcp/types/generated_poc/list_creatives_request.py index 6b5d38e..b5ed45d 100644 --- a/src/adcp/types/generated_poc/list_creatives_request.py +++ b/src/adcp/types/generated_poc/list_creatives_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-creatives-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,141 +14,141 @@ class FieldModel(Enum): - creative_id = "creative_id" - name = "name" - format = "format" - status = "status" - created_date = "created_date" - updated_date = "updated_date" - tags = "tags" - assignments = "assignments" - performance = "performance" - sub_assets = "sub_assets" + creative_id = 'creative_id' + name = 'name' + format = 'format' + status = 'status' + created_date = 'created_date' + updated_date = 'updated_date' + tags = 'tags' + assignments = 'assignments' + performance = 'performance' + sub_assets = 'sub_assets' class Filters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assigned_to_package: Annotated[ - str | None, Field(description="Filter creatives assigned to this specific package") + str | None, Field(description='Filter creatives assigned to this specific package') ] = None assigned_to_packages: Annotated[ - list[str] | None, Field(description="Filter creatives assigned to any of these packages") + list[str] | None, Field(description='Filter creatives assigned to any of these packages') ] = None created_after: Annotated[ AwareDatetime | None, - Field(description="Filter creatives created after this date (ISO 8601)"), + Field(description='Filter creatives created after this date (ISO 8601)'), ] = None created_before: Annotated[ AwareDatetime | None, - Field(description="Filter creatives created before this date (ISO 8601)"), + Field(description='Filter creatives created before this date (ISO 8601)'), ] = None creative_ids: Annotated[ - list[str] | None, Field(description="Filter by specific creative IDs", max_length=100) + list[str] | None, Field(description='Filter by specific creative IDs', max_length=100) ] = None format: Annotated[ str | None, - Field(description="Filter by creative format type (e.g., video, audio, display)"), + Field(description='Filter by creative format type (e.g., video, audio, display)'), ] = None formats: Annotated[ - list[str] | None, Field(description="Filter by multiple creative format types") + list[str] | None, Field(description='Filter by multiple creative format types') ] = None has_performance_data: Annotated[ - bool | None, Field(description="Filter creatives that have performance data when true") + bool | None, Field(description='Filter creatives that have performance data when true') ] = None name_contains: Annotated[ str | None, - Field(description="Filter by creative names containing this text (case-insensitive)"), + Field(description='Filter by creative names containing this text (case-insensitive)'), ] = None status: Annotated[ creative_status.CreativeStatus | None, - Field(description="Filter by creative approval status"), + Field(description='Filter by creative approval status'), ] = None statuses: Annotated[ list[creative_status.CreativeStatus] | None, - Field(description="Filter by multiple creative statuses"), + Field(description='Filter by multiple creative statuses'), ] = None tags: Annotated[ - list[str] | None, Field(description="Filter by creative tags (all tags must match)") + list[str] | None, Field(description='Filter by creative tags (all tags must match)') ] = None tags_any: Annotated[ - list[str] | None, Field(description="Filter by creative tags (any tag must match)") + list[str] | None, Field(description='Filter by creative tags (any tag must match)') ] = None unassigned: Annotated[ bool | None, Field( - description="Filter for unassigned creatives when true, assigned creatives when false" + description='Filter for unassigned creatives when true, assigned creatives when false' ), ] = None updated_after: Annotated[ AwareDatetime | None, - Field(description="Filter creatives last updated after this date (ISO 8601)"), + Field(description='Filter creatives last updated after this date (ISO 8601)'), ] = None updated_before: Annotated[ AwareDatetime | None, - Field(description="Filter creatives last updated before this date (ISO 8601)"), + Field(description='Filter creatives last updated before this date (ISO 8601)'), ] = None class Pagination(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) limit: Annotated[ - int | None, Field(description="Maximum number of creatives to return", ge=1, le=100) + int | None, Field(description='Maximum number of creatives to return', ge=1, le=100) ] = 50 - offset: Annotated[int | None, Field(description="Number of creatives to skip", ge=0)] = 0 + offset: Annotated[int | None, Field(description='Number of creatives to skip', ge=0)] = 0 class Direction(Enum): - asc = "asc" - desc = "desc" + asc = 'asc' + desc = 'desc' class Field1(Enum): - created_date = "created_date" - updated_date = "updated_date" - name = "name" - status = "status" - assignment_count = "assignment_count" - performance_score = "performance_score" + created_date = 'created_date' + updated_date = 'updated_date' + name = 'name' + status = 'status' + assignment_count = 'assignment_count' + performance_score = 'performance_score' class Sort(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - direction: Annotated[Direction | None, Field(description="Sort direction")] = Direction.desc - field: Annotated[Field1 | None, Field(description="Field to sort by")] = Field1.created_date + direction: Annotated[Direction | None, Field(description='Sort direction')] = Direction.desc + field: Annotated[Field1 | None, Field(description='Field to sort by')] = Field1.created_date class ListCreativesRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None fields: Annotated[ list[FieldModel] | None, - Field(description="Specific fields to include in response (omit for all fields)"), + Field(description='Specific fields to include in response (omit for all fields)'), ] = None filters: Annotated[ - Filters | None, Field(description="Filter criteria for querying creatives") + Filters | None, Field(description='Filter criteria for querying creatives') ] = None include_assignments: Annotated[ - bool | None, Field(description="Include package assignment information in response") + bool | None, Field(description='Include package assignment information in response') ] = True include_performance: Annotated[ - bool | None, Field(description="Include aggregated performance metrics in response") + bool | None, Field(description='Include aggregated performance metrics in response') ] = False include_sub_assets: Annotated[ bool | None, - Field(description="Include sub-assets (for carousel/native formats) in response"), + Field(description='Include sub-assets (for carousel/native formats) in response'), ] = False - pagination: Annotated[Pagination | None, Field(description="Pagination parameters")] = None - sort: Annotated[Sort | None, Field(description="Sorting parameters")] = None + pagination: Annotated[Pagination | None, Field(description='Pagination parameters')] = None + sort: Annotated[Sort | None, Field(description='Sorting parameters')] = None diff --git a/src/adcp/types/generated_poc/list_creatives_response.py b/src/adcp/types/generated_poc/list_creatives_response.py index c6878ae..3fa31cd 100644 --- a/src/adcp/types/generated_poc/list_creatives_response.py +++ b/src/adcp/types/generated_poc/list_creatives_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: list-creatives-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -26,76 +26,76 @@ class Status(Enum): - active = "active" - paused = "paused" - ended = "ended" + active = 'active' + paused = 'paused' + ended = 'ended' class AssignedPackage(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - assigned_date: Annotated[AwareDatetime, Field(description="When this assignment was created")] - package_id: Annotated[str, Field(description="Package identifier")] - package_name: Annotated[str | None, Field(description="Human-readable package name")] = None - status: Annotated[Status, Field(description="Status of this specific assignment")] + assigned_date: Annotated[AwareDatetime, Field(description='When this assignment was created')] + package_id: Annotated[str, Field(description='Package identifier')] + package_name: Annotated[str | None, Field(description='Human-readable package name')] = None + status: Annotated[Status, Field(description='Status of this specific assignment')] class Assignments(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assigned_packages: Annotated[ list[AssignedPackage] | None, - Field(description="List of packages this creative is assigned to"), + Field(description='List of packages this creative is assigned to'), ] = None assignment_count: Annotated[ - int, Field(description="Total number of active package assignments", ge=0) + int, Field(description='Total number of active package assignments', ge=0) ] class Performance(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) clicks: Annotated[ - int | None, Field(description="Total clicks across all assignments", ge=0) + int | None, Field(description='Total clicks across all assignments', ge=0) ] = None conversion_rate: Annotated[ - float | None, Field(description="Conversion rate across all assignments", ge=0.0, le=1.0) + float | None, Field(description='Conversion rate across all assignments', ge=0.0, le=1.0) ] = None ctr: Annotated[ - float | None, Field(description="Click-through rate (clicks/impressions)", ge=0.0, le=1.0) + float | None, Field(description='Click-through rate (clicks/impressions)', ge=0.0, le=1.0) ] = None impressions: Annotated[ - int | None, Field(description="Total impressions across all assignments", ge=0) + int | None, Field(description='Total impressions across all assignments', ge=0) ] = None last_updated: Annotated[ - AwareDatetime, Field(description="When performance data was last updated") + AwareDatetime, Field(description='When performance data was last updated') ] performance_score: Annotated[ - float | None, Field(description="Aggregated performance score (0-100)", ge=0.0, le=100.0) + float | None, Field(description='Aggregated performance score (0-100)', ge=0.0, le=100.0) ] = None class Pagination(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) current_page: Annotated[ - int | None, Field(description="Current page number (1-based)", ge=1) + int | None, Field(description='Current page number (1-based)', ge=1) ] = None - has_more: Annotated[bool, Field(description="Whether more results are available")] - limit: Annotated[int, Field(description="Maximum number of results requested", ge=1)] - offset: Annotated[int, Field(description="Number of results skipped", ge=0)] + has_more: Annotated[bool, Field(description='Whether more results are available')] + limit: Annotated[int, Field(description='Maximum number of results requested', ge=1)] + offset: Annotated[int, Field(description='Number of results skipped', ge=0)] total_pages: Annotated[ - int | None, Field(description="Total number of pages available", ge=0) + int | None, Field(description='Total number of pages available', ge=0) ] = None class Direction(Enum): - asc = "asc" - desc = "desc" + asc = 'asc' + desc = 'desc' class SortApplied(AdCPBaseModel): @@ -105,38 +105,38 @@ class SortApplied(AdCPBaseModel): class QuerySummary(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) filters_applied: Annotated[ - list[str] | None, Field(description="List of filters that were applied to the query") + list[str] | None, Field(description='List of filters that were applied to the query') ] = None returned: Annotated[ - int, Field(description="Number of creatives returned in this response", ge=0) + int, Field(description='Number of creatives returned in this response', ge=0) ] sort_applied: Annotated[ - SortApplied | None, Field(description="Sort order that was applied") + SortApplied | None, Field(description='Sort order that was applied') ] = None total_matching: Annotated[ int, - Field(description="Total number of creatives matching filters (across all pages)", ge=0), + Field(description='Total number of creatives matching filters (across all pages)', ge=0), ] class StatusSummary(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - approved: Annotated[int | None, Field(description="Number of approved creatives", ge=0)] = None - archived: Annotated[int | None, Field(description="Number of archived creatives", ge=0)] = None + approved: Annotated[int | None, Field(description='Number of approved creatives', ge=0)] = None + archived: Annotated[int | None, Field(description='Number of archived creatives', ge=0)] = None pending_review: Annotated[ - int | None, Field(description="Number of creatives pending review", ge=0) + int | None, Field(description='Number of creatives pending review', ge=0) ] = None - rejected: Annotated[int | None, Field(description="Number of rejected creatives", ge=0)] = None + rejected: Annotated[int | None, Field(description='Number of rejected creatives', ge=0)] = None class Creative(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets: Annotated[ dict[ @@ -156,79 +156,79 @@ class Creative(AdCPBaseModel): | daast_asset.DaastAsset2, ] | None, - Field(description="Assets for this creative, keyed by asset_role"), + Field(description='Assets for this creative, keyed by asset_role'), ] = None assignments: Annotated[ Assignments | None, - Field(description="Current package assignments (included when include_assignments=true)"), + Field(description='Current package assignments (included when include_assignments=true)'), ] = None - click_url: Annotated[AnyUrl | None, Field(description="Landing page URL for the creative")] = ( + click_url: Annotated[AnyUrl | None, Field(description='Landing page URL for the creative')] = ( None ) created_date: Annotated[ - AwareDatetime, Field(description="When the creative was uploaded to the library") + AwareDatetime, Field(description='When the creative was uploaded to the library') ] - creative_id: Annotated[str, Field(description="Unique identifier for the creative")] + creative_id: Annotated[str, Field(description='Unique identifier for the creative')] duration: Annotated[ - float | None, Field(description="Duration in milliseconds (for video/audio)", ge=0.0) + float | None, Field(description='Duration in milliseconds (for video/audio)', ge=0.0) ] = None format_id: Annotated[ format_id_1.FormatId, - Field(description="Format identifier specifying which format this creative conforms to"), + Field(description='Format identifier specifying which format this creative conforms to'), ] height: Annotated[ - float | None, Field(description="Height in pixels (for video/display)", ge=0.0) + float | None, Field(description='Height in pixels (for video/display)', ge=0.0) ] = None media_url: Annotated[ - AnyUrl | None, Field(description="URL of the creative file (for hosted assets)") + AnyUrl | None, Field(description='URL of the creative file (for hosted assets)') ] = None - name: Annotated[str, Field(description="Human-readable creative name")] + name: Annotated[str, Field(description='Human-readable creative name')] performance: Annotated[ Performance | None, Field( - description="Aggregated performance metrics (included when include_performance=true)" + description='Aggregated performance metrics (included when include_performance=true)' ), ] = None status: Annotated[ - creative_status.CreativeStatus, Field(description="Current approval status of the creative") + creative_status.CreativeStatus, Field(description='Current approval status of the creative') ] sub_assets: Annotated[ list[sub_asset.SubAsset1 | sub_asset.SubAsset2] | None, Field( - description="Sub-assets for multi-asset formats (included when include_sub_assets=true)" + description='Sub-assets for multi-asset formats (included when include_sub_assets=true)' ), ] = None tags: Annotated[ - list[str] | None, Field(description="User-defined tags for organization and searchability") + list[str] | None, Field(description='User-defined tags for organization and searchability') ] = None - updated_date: Annotated[AwareDatetime, Field(description="When the creative was last modified")] + updated_date: Annotated[AwareDatetime, Field(description='When the creative was last modified')] width: Annotated[ - float | None, Field(description="Width in pixels (for video/display)", ge=0.0) + float | None, Field(description='Width in pixels (for video/display)', ge=0.0) ] = None class ListCreativesResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None creatives: Annotated[ - list[Creative], Field(description="Array of creative assets matching the query") + list[Creative], Field(description='Array of creative assets matching the query') ] format_summary: Annotated[ - dict[str, int] | None, Field(description="Breakdown of creatives by format type") + dict[str, int] | None, Field(description='Breakdown of creatives by format type') ] = None pagination: Annotated[ - Pagination, Field(description="Pagination information for navigating results") + Pagination, Field(description='Pagination information for navigating results') ] query_summary: Annotated[ - QuerySummary, Field(description="Summary of the query that was executed") + QuerySummary, Field(description='Summary of the query that was executed') ] status_summary: Annotated[ - StatusSummary | None, Field(description="Breakdown of creatives by status") + StatusSummary | None, Field(description='Breakdown of creatives by status') ] = None diff --git a/src/adcp/types/generated_poc/markdown_asset.py b/src/adcp/types/generated_poc/markdown_asset.py index 45f1d58..f1fb586 100644 --- a/src/adcp/types/generated_poc/markdown_asset.py +++ b/src/adcp/types/generated_poc/markdown_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: markdown-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,24 +12,24 @@ class MarkdownFlavor(Enum): - commonmark = "commonmark" - gfm = "gfm" + commonmark = 'commonmark' + gfm = 'gfm' class MarkdownAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) allow_raw_html: Annotated[ bool | None, Field( - description="Whether raw HTML blocks are allowed in the markdown. False recommended for security." + description='Whether raw HTML blocks are allowed in the markdown. False recommended for security.' ), ] = False content: Annotated[ str, Field( - description="Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions" + description='Markdown content following CommonMark spec with optional GitHub Flavored Markdown extensions' ), ] language: Annotated[str | None, Field(description="Language code (e.g., 'en', 'es', 'fr')")] = ( @@ -38,6 +38,6 @@ class MarkdownAsset(AdCPBaseModel): markdown_flavor: Annotated[ MarkdownFlavor | None, Field( - description="Markdown flavor used. CommonMark for strict compatibility, GFM for tables/task lists/strikethrough." + description='Markdown flavor used. CommonMark for strict compatibility, GFM for tables/task lists/strikethrough.' ), ] = MarkdownFlavor.commonmark diff --git a/src/adcp/types/generated_poc/measurement.py b/src/adcp/types/generated_poc/measurement.py index 16d2bea..05cb0f6 100644 --- a/src/adcp/types/generated_poc/measurement.py +++ b/src/adcp/types/generated_poc/measurement.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: measurement.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,29 +12,29 @@ class Measurement(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) attribution: Annotated[ str, Field( - description="Attribution methodology", - examples=["deterministic_purchase", "probabilistic"], + description='Attribution methodology', + examples=['deterministic_purchase', 'probabilistic'], ), ] reporting: Annotated[ str, Field( - description="Reporting frequency and format", - examples=["weekly_dashboard", "real_time_api"], + description='Reporting frequency and format', + examples=['weekly_dashboard', 'real_time_api'], ), ] type: Annotated[ str, Field( - description="Type of measurement", - examples=["incremental_sales_lift", "brand_lift", "foot_traffic"], + description='Type of measurement', + examples=['incremental_sales_lift', 'brand_lift', 'foot_traffic'], ), ] window: Annotated[ - str | None, Field(description="Attribution window", examples=["30_days", "7_days"]) + str | None, Field(description='Attribution window', examples=['30_days', '7_days']) ] = None diff --git a/src/adcp/types/generated_poc/media_buy.py b/src/adcp/types/generated_poc/media_buy.py index b8f9267..eed7c54 100644 --- a/src/adcp/types/generated_poc/media_buy.py +++ b/src/adcp/types/generated_poc/media_buy.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: media-buy.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,24 +14,24 @@ class MediaBuy(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_ref: Annotated[ str | None, Field(description="Buyer's reference identifier for this media buy") ] = None - created_at: Annotated[AwareDatetime | None, Field(description="Creation timestamp")] = None + created_at: Annotated[AwareDatetime | None, Field(description='Creation timestamp')] = None creative_deadline: Annotated[ - AwareDatetime | None, Field(description="ISO 8601 timestamp for creative upload deadline") + AwareDatetime | None, Field(description='ISO 8601 timestamp for creative upload deadline') ] = None media_buy_id: Annotated[ str, Field(description="Publisher's unique identifier for the media buy") ] packages: Annotated[ - list[package.Package], Field(description="Array of packages within this media buy") + list[package.Package], Field(description='Array of packages within this media buy') ] promoted_offering: Annotated[ - str, Field(description="Description of advertiser and what is being promoted") + str, Field(description='Description of advertiser and what is being promoted') ] status: media_buy_status.MediaBuyStatus - total_budget: Annotated[float, Field(description="Total budget amount", ge=0.0)] - updated_at: Annotated[AwareDatetime | None, Field(description="Last update timestamp")] = None + total_budget: Annotated[float, Field(description='Total budget amount', ge=0.0)] + updated_at: Annotated[AwareDatetime | None, Field(description='Last update timestamp')] = None diff --git a/src/adcp/types/generated_poc/media_buy_status.py b/src/adcp/types/generated_poc/media_buy_status.py index f6bdc61..b55e0ef 100644 --- a/src/adcp/types/generated_poc/media_buy_status.py +++ b/src/adcp/types/generated_poc/media_buy_status.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: media-buy-status.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,7 +8,7 @@ class MediaBuyStatus(Enum): - pending_activation = "pending_activation" - active = "active" - paused = "paused" - completed = "completed" + pending_activation = 'pending_activation' + active = 'active' + paused = 'paused' + completed = 'completed' diff --git a/src/adcp/types/generated_poc/pacing.py b/src/adcp/types/generated_poc/pacing.py index 6332e61..6e65a65 100644 --- a/src/adcp/types/generated_poc/pacing.py +++ b/src/adcp/types/generated_poc/pacing.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pacing.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,6 +8,6 @@ class Pacing(Enum): - even = "even" - asap = "asap" - front_loaded = "front_loaded" + even = 'even' + asap = 'asap' + front_loaded = 'front_loaded' diff --git a/src/adcp/types/generated_poc/package.py b/src/adcp/types/generated_poc/package.py index a6c27fa..dcadc3a 100644 --- a/src/adcp/types/generated_poc/package.py +++ b/src/adcp/types/generated_poc/package.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: package.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,19 +16,19 @@ class Package(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) bid_price: Annotated[ float | None, Field( - description="Bid price for auction-based CPM pricing (present if using cpm-auction-option)", + description='Bid price for auction-based CPM pricing (present if using cpm-auction-option)', ge=0.0, ), ] = None budget: Annotated[ float | None, Field( - description="Budget allocation for this package in the currency specified by the pricing option", + description='Budget allocation for this package in the currency specified by the pricing option', ge=0.0, ), ] = None @@ -37,14 +37,14 @@ class Package(AdCPBaseModel): ] = None creative_assignments: Annotated[ list[creative_assignment.CreativeAssignment] | None, - Field(description="Creative assets assigned to this package"), + Field(description='Creative assets assigned to this package'), ] = None format_ids_to_provide: Annotated[ list[format_id.FormatId] | None, - Field(description="Format IDs that creative assets will be provided for this package"), + Field(description='Format IDs that creative assets will be provided for this package'), ] = None impressions: Annotated[ - float | None, Field(description="Impression goal for this package", ge=0.0) + float | None, Field(description='Impression goal for this package', ge=0.0) ] = None pacing: pacing_1.Pacing | None = None package_id: Annotated[str, Field(description="Publisher's unique identifier for the package")] @@ -55,7 +55,7 @@ class Package(AdCPBaseModel): ), ] = None product_id: Annotated[ - str | None, Field(description="ID of the product this package is based on") + str | None, Field(description='ID of the product this package is based on') ] = None status: package_status.PackageStatus targeting_overlay: targeting.TargetingOverlay | None = None diff --git a/src/adcp/types/generated_poc/package_request.py b/src/adcp/types/generated_poc/package_request.py index 25ddaaa..8af0568 100644 --- a/src/adcp/types/generated_poc/package_request.py +++ b/src/adcp/types/generated_poc/package_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: package-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,12 +16,12 @@ class PackageRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) bid_price: Annotated[ float | None, Field( - description="Bid price for auction-based CPM pricing (required if using cpm-auction-option)", + description='Bid price for auction-based CPM pricing (required if using cpm-auction-option)', ge=0.0, ), ] = None @@ -33,20 +33,20 @@ class PackageRequest(AdCPBaseModel): creative_ids: Annotated[ list[str] | None, Field( - description="Creative IDs to assign to this package at creation time (references existing library creatives)" + description='Creative IDs to assign to this package at creation time (references existing library creatives)' ), ] = None creatives: Annotated[ list[creative_asset.CreativeAsset] | None, Field( - description="Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.", + description='Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.', max_length=100, ), ] = None format_ids: Annotated[ list[format_id.FormatId] | None, Field( - description="Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.", + description='Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.', min_length=1, ), ] = None @@ -57,5 +57,5 @@ class PackageRequest(AdCPBaseModel): description="ID of the selected pricing option from the product's pricing_options array" ), ] - product_id: Annotated[str, Field(description="Product ID for this package")] + product_id: Annotated[str, Field(description='Product ID for this package')] targeting_overlay: targeting.TargetingOverlay | None = None diff --git a/src/adcp/types/generated_poc/package_status.py b/src/adcp/types/generated_poc/package_status.py index 0c9332b..f007a39 100644 --- a/src/adcp/types/generated_poc/package_status.py +++ b/src/adcp/types/generated_poc/package_status.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: package-status.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,7 +8,7 @@ class PackageStatus(Enum): - draft = "draft" - active = "active" - paused = "paused" - completed = "completed" + draft = 'draft' + active = 'active' + paused = 'paused' + completed = 'completed' diff --git a/src/adcp/types/generated_poc/performance_feedback.py b/src/adcp/types/generated_poc/performance_feedback.py index e7bce57..76f656a 100644 --- a/src/adcp/types/generated_poc/performance_feedback.py +++ b/src/adcp/types/generated_poc/performance_feedback.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: performance-feedback.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,78 +12,78 @@ class FeedbackSource(Enum): - buyer_attribution = "buyer_attribution" - third_party_measurement = "third_party_measurement" - platform_analytics = "platform_analytics" - verification_partner = "verification_partner" + buyer_attribution = 'buyer_attribution' + third_party_measurement = 'third_party_measurement' + platform_analytics = 'platform_analytics' + verification_partner = 'verification_partner' class MeasurementPeriod(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) end: Annotated[ - AwareDatetime, Field(description="ISO 8601 end timestamp for measurement period") + AwareDatetime, Field(description='ISO 8601 end timestamp for measurement period') ] start: Annotated[ - AwareDatetime, Field(description="ISO 8601 start timestamp for measurement period") + AwareDatetime, Field(description='ISO 8601 start timestamp for measurement period') ] class MetricType(Enum): - overall_performance = "overall_performance" - conversion_rate = "conversion_rate" - brand_lift = "brand_lift" - click_through_rate = "click_through_rate" - completion_rate = "completion_rate" - viewability = "viewability" - brand_safety = "brand_safety" - cost_efficiency = "cost_efficiency" + overall_performance = 'overall_performance' + conversion_rate = 'conversion_rate' + brand_lift = 'brand_lift' + click_through_rate = 'click_through_rate' + completion_rate = 'completion_rate' + viewability = 'viewability' + brand_safety = 'brand_safety' + cost_efficiency = 'cost_efficiency' class Status(Enum): - accepted = "accepted" - queued = "queued" - applied = "applied" - rejected = "rejected" + accepted = 'accepted' + queued = 'queued' + applied = 'applied' + rejected = 'rejected' class PerformanceFeedback(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) applied_at: Annotated[ AwareDatetime | None, Field( - description="ISO 8601 timestamp when feedback was applied to optimization algorithms" + description='ISO 8601 timestamp when feedback was applied to optimization algorithms' ), ] = None creative_id: Annotated[ - str | None, Field(description="Specific creative asset (if feedback is creative-specific)") + str | None, Field(description='Specific creative asset (if feedback is creative-specific)') ] = None feedback_id: Annotated[ - str, Field(description="Unique identifier for this performance feedback submission") + str, Field(description='Unique identifier for this performance feedback submission') ] - feedback_source: Annotated[FeedbackSource, Field(description="Source of the performance data")] + feedback_source: Annotated[FeedbackSource, Field(description='Source of the performance data')] measurement_period: Annotated[ - MeasurementPeriod, Field(description="Time period for performance measurement") + MeasurementPeriod, Field(description='Time period for performance measurement') ] media_buy_id: Annotated[str, Field(description="Publisher's media buy identifier")] - metric_type: Annotated[MetricType, Field(description="The business metric being measured")] + metric_type: Annotated[MetricType, Field(description='The business metric being measured')] package_id: Annotated[ str | None, Field( - description="Specific package within the media buy (if feedback is package-specific)" + description='Specific package within the media buy (if feedback is package-specific)' ), ] = None performance_index: Annotated[ float, Field( - description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)", + description='Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)', ge=0.0, ), ] - status: Annotated[Status, Field(description="Processing status of the performance feedback")] + status: Annotated[Status, Field(description='Processing status of the performance feedback')] submitted_at: Annotated[ - AwareDatetime, Field(description="ISO 8601 timestamp when feedback was submitted") + AwareDatetime, Field(description='ISO 8601 timestamp when feedback was submitted') ] diff --git a/src/adcp/types/generated_poc/placement.py b/src/adcp/types/generated_poc/placement.py index dc5fe67..58900d8 100644 --- a/src/adcp/types/generated_poc/placement.py +++ b/src/adcp/types/generated_poc/placement.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: placement.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,10 +14,10 @@ class Placement(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) description: Annotated[ - str | None, Field(description="Detailed description of where and how the placement appears") + str | None, Field(description='Detailed description of where and how the placement appears') ] = None format_ids: Annotated[ list[format_id.FormatId] | None, @@ -33,5 +33,5 @@ class Placement(AdCPBaseModel): ), ] placement_id: Annotated[ - str, Field(description="Unique identifier for the placement within the product") + str, Field(description='Unique identifier for the placement within the product') ] diff --git a/src/adcp/types/generated_poc/preview_creative_request.py b/src/adcp/types/generated_poc/preview_creative_request.py index f04e3db..d6e3f1d 100644 --- a/src/adcp/types/generated_poc/preview_creative_request.py +++ b/src/adcp/types/generated_poc/preview_creative_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: preview-creative-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,7 +16,7 @@ class Input(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context_description: Annotated[ str | None, @@ -39,47 +39,47 @@ class Input(AdCPBaseModel): class OutputFormat(Enum): - url = "url" - html = "html" + url = 'url' + html = 'html' class Input2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context_description: Annotated[ str | None, - Field(description="Natural language description of the context for AI-generated content"), + Field(description='Natural language description of the context for AI-generated content'), ] = None macros: Annotated[ - dict[str, str] | None, Field(description="Macro values to use for this preview") + dict[str, str] | None, Field(description='Macro values to use for this preview') ] = None - name: Annotated[str, Field(description="Human-readable name for this input set")] + name: Annotated[str, Field(description='Human-readable name for this input set')] class PreviewCreativeRequest1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None creative_manifest: Annotated[ creative_manifest_1.CreativeManifest, Field( - description="Complete creative manifest with all required assets (including promoted_offerings if required by the format)" + description='Complete creative manifest with all required assets (including promoted_offerings if required by the format)' ), ] format_id: Annotated[ - format_id_1.FormatId, Field(description="Format identifier for rendering the preview") + format_id_1.FormatId, Field(description='Format identifier for rendering the preview') ] inputs: Annotated[ list[Input] | None, Field( - description="Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews." + description='Array of input sets for generating multiple preview variants. Each input set defines macros and context values for one preview rendering. If not provided, creative agent will generate default previews.' ), ] = None output_format: Annotated[ @@ -89,28 +89,28 @@ class PreviewCreativeRequest1(AdCPBaseModel): ), ] = OutputFormat.url request_type: Annotated[ - Literal["single"], - Field(description="Discriminator indicating this is a single preview request"), + Literal['single'], + Field(description='Discriminator indicating this is a single preview request'), ] template_id: Annotated[ - str | None, Field(description="Specific template ID for custom format rendering") + str | None, Field(description='Specific template ID for custom format rendering') ] = None class Request(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) creative_manifest: Annotated[ creative_manifest_1.CreativeManifest, - Field(description="Complete creative manifest with all required assets"), + Field(description='Complete creative manifest with all required assets'), ] format_id: Annotated[ - format_id_1.FormatId, Field(description="Format identifier for rendering the preview") + format_id_1.FormatId, Field(description='Format identifier for rendering the preview') ] inputs: Annotated[ list[Input2] | None, - Field(description="Array of input sets for generating multiple preview variants"), + Field(description='Array of input sets for generating multiple preview variants'), ] = None output_format: Annotated[ OutputFormat | None, @@ -119,18 +119,18 @@ class Request(AdCPBaseModel): ), ] = OutputFormat.url template_id: Annotated[ - str | None, Field(description="Specific template ID for custom format rendering") + str | None, Field(description='Specific template ID for custom format rendering') ] = None class PreviewCreativeRequest2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None output_format: Annotated[ @@ -140,13 +140,13 @@ class PreviewCreativeRequest2(AdCPBaseModel): ), ] = OutputFormat.url request_type: Annotated[ - Literal["batch"], - Field(description="Discriminator indicating this is a batch preview request"), + Literal['batch'], + Field(description='Discriminator indicating this is a batch preview request'), ] requests: Annotated[ list[Request], Field( - description="Array of preview requests (1-50 items). Each follows the single request structure.", + description='Array of preview requests (1-50 items). Each follows the single request structure.', max_length=50, min_length=1, ), @@ -157,7 +157,7 @@ class PreviewCreativeRequest(RootModel[PreviewCreativeRequest1 | PreviewCreative root: Annotated[ PreviewCreativeRequest1 | PreviewCreativeRequest2, Field( - description="Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.", - title="Preview Creative Request", + description='Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.', + title='Preview Creative Request', ), ] diff --git a/src/adcp/types/generated_poc/preview_creative_response.py b/src/adcp/types/generated_poc/preview_creative_response.py index 8f90a28..98f73bb 100644 --- a/src/adcp/types/generated_poc/preview_creative_response.py +++ b/src/adcp/types/generated_poc/preview_creative_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: preview-creative-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,12 +14,12 @@ class Input(AdCPBaseModel): context_description: Annotated[ - str | None, Field(description="Context description applied to this variant") + str | None, Field(description='Context description applied to this variant') ] = None macros: Annotated[ - dict[str, str] | None, Field(description="Macro values applied to this variant") + dict[str, str] | None, Field(description='Macro values applied to this variant') ] = None - name: Annotated[str, Field(description="Human-readable name for this variant")] + name: Annotated[str, Field(description='Human-readable name for this variant')] class Error(AdCPBaseModel): @@ -29,8 +29,8 @@ class Error(AdCPBaseModel): description="Error code (e.g., 'invalid_manifest', 'unsupported_format', 'missing_assets')" ), ] - details: Annotated[dict[str, Any] | None, Field(description="Additional error context")] = None - message: Annotated[str, Field(description="Human-readable error message")] + details: Annotated[dict[str, Any] | None, Field(description='Additional error context')] = None + message: Annotated[str, Field(description='Human-readable error message')] class Input4(AdCPBaseModel): @@ -43,10 +43,10 @@ class Preview(AdCPBaseModel): input: Annotated[ Input, Field( - description="The input parameters that generated this preview variant. Echoes back the request input or shows defaults used." + description='The input parameters that generated this preview variant. Echoes back the request input or shows defaults used.' ), ] - preview_id: Annotated[str, Field(description="Unique identifier for this preview variant")] + preview_id: Annotated[str, Field(description='Unique identifier for this preview variant')] renders: Annotated[ list[ preview_render.PreviewRender1 @@ -54,7 +54,7 @@ class Preview(AdCPBaseModel): | preview_render.PreviewRender3 ], Field( - description="Array of rendered pieces for this preview variant. Most formats render as a single piece. Companion ad formats (video + banner), multi-placement formats, and adaptive formats render as multiple pieces.", + description='Array of rendered pieces for this preview variant. Most formats render as a single piece. Companion ad formats (video + banner), multi-placement formats, and adaptive formats render as multiple pieces.', min_length=1, ), ] @@ -62,33 +62,33 @@ class Preview(AdCPBaseModel): class PreviewCreativeResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None expires_at: Annotated[ - AwareDatetime, Field(description="ISO 8601 timestamp when preview links expire") + AwareDatetime, Field(description='ISO 8601 timestamp when preview links expire') ] interactive_url: Annotated[ AnyUrl | None, Field( - description="Optional URL to an interactive testing page that shows all preview variants with controls to switch between them, modify macro values, and test different scenarios." + description='Optional URL to an interactive testing page that shows all preview variants with controls to switch between them, modify macro values, and test different scenarios.' ), ] = None previews: Annotated[ list[Preview], Field( - description="Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.", + description='Array of preview variants. Each preview corresponds to an input set from the request. If no inputs were provided, returns a single default preview.', min_length=1, ), ] response_type: Annotated[ - Literal["single"], - Field(description="Discriminator indicating this is a single preview response"), + Literal['single'], + Field(description='Discriminator indicating this is a single preview response'), ] @@ -110,16 +110,16 @@ class Response(AdCPBaseModel): interactive_url: AnyUrl | None = None previews: Annotated[ list[Preview1], - Field(description="Array of preview variants for this creative", min_length=1), + Field(description='Array of preview variants for this creative', min_length=1), ] class Results(AdCPBaseModel): - error: Annotated[Error | None, Field(description="Error information for failed requests")] = ( + error: Annotated[Error | None, Field(description='Error information for failed requests')] = ( None ) - response: Annotated[Response, Field(description="Preview response for successful requests")] - success: Annotated[Literal[True], Field(description="Whether this preview request succeeded")] + response: Annotated[Response, Field(description='Preview response for successful requests')] + success: Annotated[Literal[True], Field(description='Whether this preview request succeeded')] Preview2 = Preview1 @@ -130,36 +130,36 @@ class Response1(AdCPBaseModel): interactive_url: AnyUrl | None = None previews: Annotated[ list[Preview2], - Field(description="Array of preview variants for this creative", min_length=1), + Field(description='Array of preview variants for this creative', min_length=1), ] class Results1(AdCPBaseModel): - error: Annotated[Error, Field(description="Error information for failed requests")] + error: Annotated[Error, Field(description='Error information for failed requests')] response: Annotated[ - Response1 | None, Field(description="Preview response for successful requests") + Response1 | None, Field(description='Preview response for successful requests') ] = None - success: Annotated[Literal[False], Field(description="Whether this preview request succeeded")] + success: Annotated[Literal[False], Field(description='Whether this preview request succeeded')] class PreviewCreativeResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None response_type: Annotated[ - Literal["batch"], - Field(description="Discriminator indicating this is a batch preview response"), + Literal['batch'], + Field(description='Discriminator indicating this is a batch preview response'), ] results: Annotated[ list[Results | Results1], Field( - description="Array of preview results corresponding to each request in the same order. results[0] is the result for requests[0], results[1] for requests[1], etc. Order is guaranteed even when some requests fail. Each result contains either a successful preview response or an error.", + description='Array of preview results corresponding to each request in the same order. results[0] is the result for requests[0], results[1] for requests[1], etc. Order is guaranteed even when some requests fail. Each result contains either a successful preview response or an error.', min_length=1, ), ] @@ -169,7 +169,7 @@ class PreviewCreativeResponse(RootModel[PreviewCreativeResponse1 | PreviewCreati root: Annotated[ PreviewCreativeResponse1 | PreviewCreativeResponse2, Field( - description="Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.", - title="Preview Creative Response", + description='Response containing preview links for one or more creatives. Format matches the request: single preview response for single requests, batch results for batch requests.', + title='Preview Creative Response', ), ] diff --git a/src/adcp/types/generated_poc/preview_render.py b/src/adcp/types/generated_poc/preview_render.py index d856eee..e7aeb1c 100644 --- a/src/adcp/types/generated_poc/preview_render.py +++ b/src/adcp/types/generated_poc/preview_render.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: preview-render.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -17,7 +17,7 @@ class Dimensions(AdCPBaseModel): class Embedding(AdCPBaseModel): csp_policy: Annotated[ - str | None, Field(description="Content Security Policy requirements for embedding") + str | None, Field(description='Content Security Policy requirements for embedding') ] = None recommended_sandbox: Annotated[ str | None, @@ -26,35 +26,35 @@ class Embedding(AdCPBaseModel): ), ] = None requires_https: Annotated[ - bool | None, Field(description="Whether this output requires HTTPS for secure embedding") + bool | None, Field(description='Whether this output requires HTTPS for secure embedding') ] = None supports_fullscreen: Annotated[ - bool | None, Field(description="Whether this output supports fullscreen mode") + bool | None, Field(description='Whether this output supports fullscreen mode') ] = None class PreviewRender1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) dimensions: Annotated[ - Dimensions | None, Field(description="Dimensions for this rendered piece") + Dimensions | None, Field(description='Dimensions for this rendered piece') ] = None embedding: Annotated[ Embedding | None, - Field(description="Optional security and embedding metadata for safe iframe integration"), + Field(description='Optional security and embedding metadata for safe iframe integration'), ] = None output_format: Annotated[ - Literal["url"], Field(description="Discriminator indicating preview_url is provided") + Literal['url'], Field(description='Discriminator indicating preview_url is provided') ] preview_url: Annotated[ AnyUrl, Field( - description="URL to an HTML page that renders this piece. Can be embedded in an iframe." + description='URL to an HTML page that renders this piece. Can be embedded in an iframe.' ), ] render_id: Annotated[ - str, Field(description="Unique identifier for this rendered piece within the variant") + str, Field(description='Unique identifier for this rendered piece within the variant') ] role: Annotated[ str, @@ -66,25 +66,25 @@ class PreviewRender1(AdCPBaseModel): class PreviewRender2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) dimensions: Annotated[ - Dimensions | None, Field(description="Dimensions for this rendered piece") + Dimensions | None, Field(description='Dimensions for this rendered piece') ] = None embedding: Annotated[ - Embedding | None, Field(description="Optional security and embedding metadata") + Embedding | None, Field(description='Optional security and embedding metadata') ] = None output_format: Annotated[ - Literal["html"], Field(description="Discriminator indicating preview_html is provided") + Literal['html'], Field(description='Discriminator indicating preview_html is provided') ] preview_html: Annotated[ str, Field( - description="Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing." + description='Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing.' ), ] render_id: Annotated[ - str, Field(description="Unique identifier for this rendered piece within the variant") + str, Field(description='Unique identifier for this rendered piece within the variant') ] role: Annotated[ str, @@ -96,35 +96,35 @@ class PreviewRender2(AdCPBaseModel): class PreviewRender3(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) dimensions: Annotated[ - Dimensions | None, Field(description="Dimensions for this rendered piece") + Dimensions | None, Field(description='Dimensions for this rendered piece') ] = None embedding: Annotated[ Embedding | None, - Field(description="Optional security and embedding metadata for safe iframe integration"), + Field(description='Optional security and embedding metadata for safe iframe integration'), ] = None output_format: Annotated[ - Literal["both"], + Literal['both'], Field( - description="Discriminator indicating both preview_url and preview_html are provided" + description='Discriminator indicating both preview_url and preview_html are provided' ), ] preview_html: Annotated[ str, Field( - description="Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing." + description='Raw HTML for this rendered piece. Can be embedded directly in the page without iframe. Security warning: Only use with trusted creative agents as this bypasses iframe sandboxing.' ), ] preview_url: Annotated[ AnyUrl, Field( - description="URL to an HTML page that renders this piece. Can be embedded in an iframe." + description='URL to an HTML page that renders this piece. Can be embedded in an iframe.' ), ] render_id: Annotated[ - str, Field(description="Unique identifier for this rendered piece within the variant") + str, Field(description='Unique identifier for this rendered piece within the variant') ] role: Annotated[ str, @@ -134,11 +134,19 @@ class PreviewRender3(AdCPBaseModel): ] -class PreviewRender(RootModel[PreviewRender1 | PreviewRender2 | PreviewRender3]): +class PreviewRender( + RootModel[ + PreviewRender1 + | PreviewRender2 + | PreviewRender3 + ] +): root: Annotated[ - PreviewRender1 | PreviewRender2 | PreviewRender3, + PreviewRender1 + | PreviewRender2 + | PreviewRender3, Field( - description="A single rendered piece of a creative preview with discriminated output format", - title="Preview Render", + description='A single rendered piece of a creative preview with discriminated output format', + title='Preview Render', ), ] diff --git a/src/adcp/types/generated_poc/pricing_model.py b/src/adcp/types/generated_poc/pricing_model.py index 6fd692c..145f730 100644 --- a/src/adcp/types/generated_poc/pricing_model.py +++ b/src/adcp/types/generated_poc/pricing_model.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: pricing-model.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,10 +8,10 @@ class PricingModel(Enum): - cpm = "cpm" - vcpm = "vcpm" - cpc = "cpc" - cpcv = "cpcv" - cpv = "cpv" - cpp = "cpp" - flat_rate = "flat_rate" + cpm = 'cpm' + vcpm = 'vcpm' + cpc = 'cpc' + cpcv = 'cpcv' + cpv = 'cpv' + cpp = 'cpp' + flat_rate = 'flat_rate' diff --git a/src/adcp/types/generated_poc/product.py b/src/adcp/types/generated_poc/product.py index a27fb3f..912268e 100644 --- a/src/adcp/types/generated_poc/product.py +++ b/src/adcp/types/generated_poc/product.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: product.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -37,45 +37,45 @@ class DeliveryMeasurement(AdCPBaseModel): class ProductCard(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) format_id: Annotated[ format_id_1.FormatId, Field( - description="Creative format defining the card layout (typically product_card_standard)" + description='Creative format defining the card layout (typically product_card_standard)' ), ] manifest: Annotated[ dict[str, Any], - Field(description="Asset manifest for rendering the card, structure defined by the format"), + Field(description='Asset manifest for rendering the card, structure defined by the format'), ] class ProductCardDetailed(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) format_id: Annotated[ format_id_1.FormatId, Field( - description="Creative format defining the detailed card layout (typically product_card_detailed)" + description='Creative format defining the detailed card layout (typically product_card_detailed)' ), ] manifest: Annotated[ dict[str, Any], Field( - description="Asset manifest for rendering the detailed card, structure defined by the format" + description='Asset manifest for rendering the detailed card, structure defined by the format' ), ] class PropertyId(RootModel[str]): - root: Annotated[str, Field(pattern="^[a-z0-9_]+$")] + root: Annotated[str, Field(pattern='^[a-z0-9_]+$')] class PublisherProperties(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) property_ids: Annotated[ list[PropertyId], @@ -85,12 +85,12 @@ class PublisherProperties(AdCPBaseModel): str, Field( description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')", - 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])?)*$', ), ] selection_type: Annotated[ - Literal["by_id"], - Field(description="Discriminator indicating selection by specific property IDs"), + Literal['by_id'], + Field(description='Discriminator indicating selection by specific property IDs'), ] @@ -100,7 +100,7 @@ class PropertyTag(PropertyId): class PublisherProperties3(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) property_tags: Annotated[ list[PropertyTag], @@ -113,55 +113,55 @@ class PublisherProperties3(AdCPBaseModel): str, Field( description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')", - 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])?)*$', ), ] selection_type: Annotated[ - Literal["by_tag"], Field(description="Discriminator indicating selection by property tags") + Literal['by_tag'], Field(description='Discriminator indicating selection by property tags') ] class Product(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) brief_relevance: Annotated[ str | None, Field( - description="Explanation of why this product matches the brief (only included when brief is provided)" + description='Explanation of why this product matches the brief (only included when brief is provided)' ), ] = None creative_policy: creative_policy_1.CreativePolicy | None = None delivery_measurement: Annotated[ DeliveryMeasurement, Field( - description="Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. REQUIRED for all products." + description='Measurement provider and methodology for delivery metrics. The buyer accepts the declared provider as the source of truth for the buy. REQUIRED for all products.' ), ] delivery_type: delivery_type_1.DeliveryType description: Annotated[ - str, Field(description="Detailed description of the product and its inventory") + str, Field(description='Detailed description of the product and its inventory') ] estimated_exposures: Annotated[ int | None, - Field(description="Estimated exposures/impressions for guaranteed products", ge=0), + Field(description='Estimated exposures/impressions for guaranteed products', ge=0), ] = None expires_at: Annotated[ - AwareDatetime | None, Field(description="Expiration timestamp for custom products") + AwareDatetime | None, Field(description='Expiration timestamp for custom products') ] = None format_ids: Annotated[ list[format_id_1.FormatId], Field( - description="Array of supported creative format IDs - structured format_id objects with agent_url and id" + description='Array of supported creative format IDs - structured format_id objects with agent_url and id' ), ] - is_custom: Annotated[bool | None, Field(description="Whether this is a custom product")] = None + is_custom: Annotated[bool | None, Field(description='Whether this is a custom product')] = None measurement: measurement_1.Measurement | None = None - name: Annotated[str, Field(description="Human-readable product name")] + name: Annotated[str, Field(description='Human-readable product name')] placements: Annotated[ list[placement.Placement] | None, Field( - description="Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.", + description='Optional array of specific placements within this product. When provided, buyers can target specific placements when assigning creatives.', min_length=1, ), ] = None @@ -177,21 +177,21 @@ class Product(AdCPBaseModel): | cpp_option.CppPricingOption | flat_rate_option.FlatRatePricingOption ], - Field(description="Available pricing models for this product", min_length=1), + Field(description='Available pricing models for this product', min_length=1), ] product_card: Annotated[ ProductCard | None, Field( - description="Optional standard visual card (300x400px) for displaying this product in user interfaces. Can be rendered via preview_creative or pre-generated." + description='Optional standard visual card (300x400px) for displaying this product in user interfaces. Can be rendered via preview_creative or pre-generated.' ), ] = None product_card_detailed: Annotated[ ProductCardDetailed | None, Field( - description="Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages." + description='Optional detailed card with carousel and full specifications. Provides rich product presentation similar to media kit pages.' ), ] = None - product_id: Annotated[str, Field(description="Unique identifier for the product")] + product_id: Annotated[str, Field(description='Unique identifier for the product')] publisher_properties: Annotated[ list[PublisherProperties | PublisherProperties3], Field( @@ -201,8 +201,9 @@ class Product(AdCPBaseModel): ] reporting_capabilities: reporting_capabilities_1.ReportingCapabilities | None = None - @model_validator(mode="after") - def validate_publisher_properties_items(self) -> "Product": + + @model_validator(mode='after') + def validate_publisher_properties_items(self) -> 'Product': """Validate all publisher_properties items.""" from adcp.validation import validate_product diff --git a/src/adcp/types/generated_poc/promoted_offerings.py b/src/adcp/types/generated_poc/promoted_offerings.py index c7258d2..6ae93eb 100644 --- a/src/adcp/types/generated_poc/promoted_offerings.py +++ b/src/adcp/types/generated_poc/promoted_offerings.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: promoted-offerings.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,28 +15,28 @@ class AssetType(Enum): - image = "image" - video = "video" - audio = "audio" - vast = "vast" - daast = "daast" - text = "text" - url = "url" - html = "html" - css = "css" - javascript = "javascript" - webhook = "webhook" + image = 'image' + video = 'video' + audio = 'audio' + vast = 'vast' + daast = 'daast' + text = 'text' + url = 'url' + html = 'html' + css = 'css' + javascript = 'javascript' + webhook = 'webhook' class AssetSelectors(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_types: Annotated[ list[AssetType] | None, Field(description="Filter by asset type (e.g., ['image', 'video'])") ] = None exclude_tags: Annotated[ - list[str] | None, Field(description="Exclude assets with these tags") + list[str] | None, Field(description='Exclude assets with these tags') ] = None tags: Annotated[ list[str] | None, @@ -46,10 +46,10 @@ class AssetSelectors(AdCPBaseModel): class Offering(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assets: Annotated[ - list[dict[str, Any]] | None, Field(description="Assets specific to this offering") + list[dict[str, Any]] | None, Field(description='Assets specific to this offering') ] = None description: Annotated[str | None, Field(description="Description of what's being offered")] = ( None @@ -61,42 +61,42 @@ class Offering(AdCPBaseModel): class PromotedOfferings(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_selectors: Annotated[ AssetSelectors | None, - Field(description="Selectors to choose specific assets from the brand manifest"), + Field(description='Selectors to choose specific assets from the brand manifest'), ] = None brand_manifest: Annotated[ brand_manifest_1.BrandManifest | AnyUrl, Field( - description="Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.", + description='Brand information manifest containing assets, themes, and guidelines. Can be provided inline or as a URL reference to a hosted manifest.', examples=[ { - "data": { - "colors": {"primary": "#FF6B35"}, - "name": "ACME Corporation", - "url": "https://acmecorp.com", + 'data': { + 'colors': {'primary': '#FF6B35'}, + 'name': 'ACME Corporation', + 'url': 'https://acmecorp.com', }, - "description": "Inline brand manifest", + 'description': 'Inline brand manifest', }, { - "data": "https://cdn.acmecorp.com/brand-manifest.json", - "description": "URL string reference to hosted manifest", + 'data': 'https://cdn.acmecorp.com/brand-manifest.json', + 'description': 'URL string reference to hosted manifest', }, ], - title="Brand Manifest Reference", + title='Brand Manifest Reference', ), ] offerings: Annotated[ list[Offering] | None, Field( - description="Inline offerings for campaigns without a product catalog. Each offering has a name, description, and associated assets." + description='Inline offerings for campaigns without a product catalog. Each offering has a name, description, and associated assets.' ), ] = None product_selectors: Annotated[ promoted_products.PromotedProducts | None, Field( - description="Selectors to choose which products/offerings from the brand manifest product catalog to promote" + description='Selectors to choose which products/offerings from the brand manifest product catalog to promote' ), ] = None diff --git a/src/adcp/types/generated_poc/promoted_products.py b/src/adcp/types/generated_poc/promoted_products.py index 794fd19..9e2d893 100644 --- a/src/adcp/types/generated_poc/promoted_products.py +++ b/src/adcp/types/generated_poc/promoted_products.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: promoted-products.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,7 +12,7 @@ class PromotedProducts(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) manifest_category: Annotated[ str | None, @@ -28,7 +28,7 @@ class PromotedProducts(AdCPBaseModel): ] = None manifest_skus: Annotated[ list[str] | None, - Field(description="Direct product SKU references from the brand manifest product catalog"), + Field(description='Direct product SKU references from the brand manifest product catalog'), ] = None manifest_tags: Annotated[ list[str] | None, diff --git a/src/adcp/types/generated_poc/property.py b/src/adcp/types/generated_poc/property.py index 1f78e7d..74b885e 100644 --- a/src/adcp/types/generated_poc/property.py +++ b/src/adcp/types/generated_poc/property.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: property.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,11 +15,11 @@ class Identifier(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) type: Annotated[ identifier_types.PropertyIdentifierTypes, - Field(description="Type of identifier for this property"), + Field(description='Type of identifier for this property'), ] value: Annotated[ str, @@ -30,13 +30,13 @@ class Identifier(AdCPBaseModel): class PropertyType(Enum): - website = "website" - mobile_app = "mobile_app" - ctv_app = "ctv_app" - dooh = "dooh" - podcast = "podcast" - radio = "radio" - streaming_audio = "streaming_audio" + website = 'website' + mobile_app = 'mobile_app' + ctv_app = 'ctv_app' + dooh = 'dooh' + podcast = 'podcast' + radio = 'radio' + streaming_audio = 'streaming_audio' class Tag(RootModel[str]): @@ -44,36 +44,36 @@ class Tag(RootModel[str]): str, Field( description="Lowercase tag with underscores (e.g., 'conde_nast_network', 'premium_content')", - pattern="^[a-z0-9_]+$", + pattern='^[a-z0-9_]+$', ), ] class Property(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) identifiers: Annotated[ - list[Identifier], Field(description="Array of identifiers for this property", min_length=1) + list[Identifier], Field(description='Array of identifiers for this property', min_length=1) ] - name: Annotated[str, Field(description="Human-readable property name")] + name: Annotated[str, Field(description='Human-readable property name')] property_id: Annotated[ str | None, Field( description="Unique identifier for this property (optional). Enables referencing properties by ID instead of repeating full objects. Recommended format: lowercase with underscores (e.g., 'cnn_ctv_app', 'instagram_mobile')", - pattern="^[a-z0-9_]+$", + pattern='^[a-z0-9_]+$', ), ] = None - property_type: Annotated[PropertyType, Field(description="Type of advertising property")] + property_type: Annotated[PropertyType, Field(description='Type of advertising property')] publisher_domain: Annotated[ str | None, Field( - description="Domain where adagents.json should be checked for authorization validation. Required for list_authorized_properties response. Optional in adagents.json (file location implies domain)." + description='Domain where adagents.json should be checked for authorization validation. Required for list_authorized_properties response. Optional in adagents.json (file location implies domain).' ), ] = None tags: Annotated[ list[Tag] | None, Field( - description="Tags for categorization and grouping (e.g., network membership, content categories)" + description='Tags for categorization and grouping (e.g., network membership, content categories)' ), ] = None diff --git a/src/adcp/types/generated_poc/protocol_envelope.py b/src/adcp/types/generated_poc/protocol_envelope.py index 11d8713..8accc0a 100644 --- a/src/adcp/types/generated_poc/protocol_envelope.py +++ b/src/adcp/types/generated_poc/protocol_envelope.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: protocol-envelope.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,47 +15,47 @@ class ProtocolEnvelope(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context_id: Annotated[ str | None, Field( - description="Session/conversation identifier for tracking related operations across multiple task invocations. Managed by the protocol layer to maintain conversational context." + description='Session/conversation identifier for tracking related operations across multiple task invocations. Managed by the protocol layer to maintain conversational context.' ), ] = None message: Annotated[ str | None, Field( - description="Human-readable summary of the task result. Provides natural language explanation of what happened, suitable for display to end users or for AI agent comprehension. Generated by the protocol layer based on the task response." + description='Human-readable summary of the task result. Provides natural language explanation of what happened, suitable for display to end users or for AI agent comprehension. Generated by the protocol layer based on the task response.' ), ] = None payload: Annotated[ dict[str, Any], Field( - description="The actual task-specific response data. This is the content defined in individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). Contains only domain-specific data without protocol-level fields." + description='The actual task-specific response data. This is the content defined in individual task response schemas (e.g., get-products-response.json, create-media-buy-response.json). Contains only domain-specific data without protocol-level fields.' ), ] push_notification_config: Annotated[ push_notification_config_1.PushNotificationConfig | None, Field( - description="Push notification configuration for async task updates (A2A and REST protocols). Echoed from the request to confirm webhook settings. Specifies URL, authentication scheme (Bearer or HMAC-SHA256), and credentials. MCP uses progress notifications instead of webhooks." + description='Push notification configuration for async task updates (A2A and REST protocols). Echoed from the request to confirm webhook settings. Specifies URL, authentication scheme (Bearer or HMAC-SHA256), and credentials. MCP uses progress notifications instead of webhooks.' ), ] = None status: Annotated[ task_status.TaskStatus, Field( - description="Current task execution state. Indicates whether the task is completed, in progress (working), submitted for async processing, failed, or requires user input. Managed by the protocol layer." + description='Current task execution state. Indicates whether the task is completed, in progress (working), submitted for async processing, failed, or requires user input. Managed by the protocol layer.' ), ] task_id: Annotated[ str | None, Field( - description="Unique identifier for tracking asynchronous operations. Present when a task requires extended processing time. Used to query task status and retrieve results when complete." + description='Unique identifier for tracking asynchronous operations. Present when a task requires extended processing time. Used to query task status and retrieve results when complete.' ), ] = None timestamp: Annotated[ AwareDatetime | None, Field( - description="ISO 8601 timestamp when the response was generated. Useful for debugging, logging, cache validation, and tracking async operation progress." + description='ISO 8601 timestamp when the response was generated. Useful for debugging, logging, cache validation, and tracking async operation progress.' ), ] = None diff --git a/src/adcp/types/generated_poc/provide_performance_feedback_request.py b/src/adcp/types/generated_poc/provide_performance_feedback_request.py index 605eec1..c576500 100644 --- a/src/adcp/types/generated_poc/provide_performance_feedback_request.py +++ b/src/adcp/types/generated_poc/provide_performance_feedback_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: provide-performance-feedback-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,74 +12,74 @@ class FeedbackSource(Enum): - buyer_attribution = "buyer_attribution" - third_party_measurement = "third_party_measurement" - platform_analytics = "platform_analytics" - verification_partner = "verification_partner" + buyer_attribution = 'buyer_attribution' + third_party_measurement = 'third_party_measurement' + platform_analytics = 'platform_analytics' + verification_partner = 'verification_partner' class MeasurementPeriod(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) end: Annotated[ - AwareDatetime, Field(description="ISO 8601 end timestamp for measurement period") + AwareDatetime, Field(description='ISO 8601 end timestamp for measurement period') ] start: Annotated[ - AwareDatetime, Field(description="ISO 8601 start timestamp for measurement period") + AwareDatetime, Field(description='ISO 8601 start timestamp for measurement period') ] class MetricType(Enum): - overall_performance = "overall_performance" - conversion_rate = "conversion_rate" - brand_lift = "brand_lift" - click_through_rate = "click_through_rate" - completion_rate = "completion_rate" - viewability = "viewability" - brand_safety = "brand_safety" - cost_efficiency = "cost_efficiency" + overall_performance = 'overall_performance' + conversion_rate = 'conversion_rate' + brand_lift = 'brand_lift' + click_through_rate = 'click_through_rate' + completion_rate = 'completion_rate' + viewability = 'viewability' + brand_safety = 'brand_safety' + cost_efficiency = 'cost_efficiency' class ProvidePerformanceFeedbackRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None creative_id: Annotated[ str | None, Field( - description="Specific creative asset (if feedback is creative-specific)", min_length=1 + description='Specific creative asset (if feedback is creative-specific)', min_length=1 ), ] = None feedback_source: Annotated[ - FeedbackSource | None, Field(description="Source of the performance data") + FeedbackSource | None, Field(description='Source of the performance data') ] = FeedbackSource.buyer_attribution measurement_period: Annotated[ - MeasurementPeriod, Field(description="Time period for performance measurement") + MeasurementPeriod, Field(description='Time period for performance measurement') ] media_buy_id: Annotated[ str, Field(description="Publisher's media buy identifier", min_length=1) ] metric_type: Annotated[ - MetricType | None, Field(description="The business metric being measured") + MetricType | None, Field(description='The business metric being measured') ] = MetricType.overall_performance package_id: Annotated[ str | None, Field( - description="Specific package within the media buy (if feedback is package-specific)", + description='Specific package within the media buy (if feedback is package-specific)', min_length=1, ), ] = None performance_index: Annotated[ float, Field( - description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)", + description='Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)', ge=0.0, ), ] diff --git a/src/adcp/types/generated_poc/provide_performance_feedback_response.py b/src/adcp/types/generated_poc/provide_performance_feedback_response.py index 2f647f0..1b55831 100644 --- a/src/adcp/types/generated_poc/provide_performance_feedback_response.py +++ b/src/adcp/types/generated_poc/provide_performance_feedback_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: provide-performance-feedback-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,34 +14,34 @@ class ProvidePerformanceFeedbackResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None success: Annotated[ Literal[True], - Field(description="Whether the performance feedback was successfully received"), + Field(description='Whether the performance feedback was successfully received'), ] class ProvidePerformanceFeedbackResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], Field( - description="Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)", + description='Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)', min_length=1, ), ] @@ -53,7 +53,7 @@ class ProvidePerformanceFeedbackResponse( root: Annotated[ ProvidePerformanceFeedbackResponse1 | ProvidePerformanceFeedbackResponse2, Field( - description="Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.", - title="Provide Performance Feedback Response", + description='Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.', + title='Provide Performance Feedback Response', ), ] diff --git a/src/adcp/types/generated_poc/publisher_identifier_types.py b/src/adcp/types/generated_poc/publisher_identifier_types.py index 91e200f..d6e625a 100644 --- a/src/adcp/types/generated_poc/publisher_identifier_types.py +++ b/src/adcp/types/generated_poc/publisher_identifier_types.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: publisher-identifier-types.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,8 +8,8 @@ class PublisherIdentifierTypes(Enum): - tag_id = "tag_id" - duns = "duns" - lei = "lei" - seller_id = "seller_id" - gln = "gln" + tag_id = 'tag_id' + duns = 'duns' + lei = 'lei' + seller_id = 'seller_id' + gln = 'gln' diff --git a/src/adcp/types/generated_poc/push_notification_config.py b/src/adcp/types/generated_poc/push_notification_config.py index ba3ab25..8ef715d 100644 --- a/src/adcp/types/generated_poc/push_notification_config.py +++ b/src/adcp/types/generated_poc/push_notification_config.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: push-notification-config.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,18 +12,18 @@ class Scheme(Enum): - Bearer = "Bearer" - HMAC_SHA256 = "HMAC-SHA256" + Bearer = 'Bearer' + HMAC_SHA256 = 'HMAC-SHA256' class Authentication(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) credentials: Annotated[ str, Field( - description="Credentials for authentication. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.", + description='Credentials for authentication. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.', min_length=32, ), ] @@ -39,17 +39,17 @@ class Authentication(AdCPBaseModel): class PushNotificationConfig(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) authentication: Annotated[ Authentication, - Field(description="Authentication configuration for webhook delivery (A2A-compatible)"), + Field(description='Authentication configuration for webhook delivery (A2A-compatible)'), ] token: Annotated[ str | None, Field( - description="Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.", + description='Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.', min_length=16, ), ] = None - url: Annotated[AnyUrl, Field(description="Webhook endpoint URL for task status notifications")] + url: Annotated[AnyUrl, Field(description='Webhook endpoint URL for task status notifications')] diff --git a/src/adcp/types/generated_poc/reporting_capabilities.py b/src/adcp/types/generated_poc/reporting_capabilities.py index 6f8001e..32811bb 100644 --- a/src/adcp/types/generated_poc/reporting_capabilities.py +++ b/src/adcp/types/generated_poc/reporting_capabilities.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: reporting-capabilities.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,57 +12,57 @@ class AvailableMetric(Enum): - impressions = "impressions" - spend = "spend" - clicks = "clicks" - ctr = "ctr" - video_completions = "video_completions" - completion_rate = "completion_rate" - conversions = "conversions" - viewability = "viewability" - engagement_rate = "engagement_rate" + impressions = 'impressions' + spend = 'spend' + clicks = 'clicks' + ctr = 'ctr' + video_completions = 'video_completions' + completion_rate = 'completion_rate' + conversions = 'conversions' + viewability = 'viewability' + engagement_rate = 'engagement_rate' class AvailableReportingFrequency(Enum): - hourly = "hourly" - daily = "daily" - monthly = "monthly" + hourly = 'hourly' + daily = 'daily' + monthly = 'monthly' class ReportingCapabilities(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) available_metrics: Annotated[ list[AvailableMetric], Field( - description="Metrics available in reporting. Impressions and spend are always implicitly included.", + description='Metrics available in reporting. Impressions and spend are always implicitly included.', examples=[ - ["impressions", "spend", "clicks", "video_completions"], - ["impressions", "spend", "conversions"], + ['impressions', 'spend', 'clicks', 'video_completions'], + ['impressions', 'spend', 'conversions'], ], ), ] available_reporting_frequencies: Annotated[ list[AvailableReportingFrequency], - Field(description="Supported reporting frequency options", min_length=1), + Field(description='Supported reporting frequency options', min_length=1), ] expected_delay_minutes: Annotated[ int, Field( - description="Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)", + description='Expected delay in minutes before reporting data becomes available (e.g., 240 for 4-hour delay)', examples=[240, 300, 1440], ge=0, ), ] supports_webhooks: Annotated[ bool, - Field(description="Whether this product supports webhook-based reporting notifications"), + Field(description='Whether this product supports webhook-based reporting notifications'), ] timezone: Annotated[ str, Field( description="Timezone for reporting periods. Use 'UTC' or IANA timezone (e.g., 'America/New_York'). Critical for daily/monthly frequency alignment.", - examples=["UTC", "America/New_York", "Europe/London", "America/Los_Angeles"], + examples=['UTC', 'America/New_York', 'Europe/London', 'America/Los_Angeles'], ), ] diff --git a/src/adcp/types/generated_poc/response.py b/src/adcp/types/generated_poc/response.py index e798eef..8745b7f 100644 --- a/src/adcp/types/generated_poc/response.py +++ b/src/adcp/types/generated_poc/response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,13 +12,13 @@ class ProtocolResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - context_id: Annotated[str | None, Field(description="Session continuity identifier")] = None + context_id: Annotated[str | None, Field(description='Session continuity identifier')] = None data: Annotated[ Any | None, Field( - description="AdCP task-specific response data (see individual task response schemas)" + description='AdCP task-specific response data (see individual task response schemas)' ), ] = None - message: Annotated[str, Field(description="Human-readable summary")] + message: Annotated[str, Field(description='Human-readable summary')] diff --git a/src/adcp/types/generated_poc/standard_format_ids.py b/src/adcp/types/generated_poc/standard_format_ids.py index 38933d5..ae1aec3 100644 --- a/src/adcp/types/generated_poc/standard_format_ids.py +++ b/src/adcp/types/generated_poc/standard_format_ids.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: standard-format-ids.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,38 +8,38 @@ class StandardFormatIds(Enum): - display_300x250 = "display_300x250" - display_728x90 = "display_728x90" - display_320x50 = "display_320x50" - display_160x600 = "display_160x600" - display_970x250 = "display_970x250" - display_336x280 = "display_336x280" - display_expandable_300x250 = "display_expandable_300x250" - display_expandable_728x90 = "display_expandable_728x90" - display_interstitial_320x480 = "display_interstitial_320x480" - display_interstitial_desktop = "display_interstitial_desktop" - display_dynamic_300x250 = "display_dynamic_300x250" - display_responsive = "display_responsive" - native_in_feed = "native_in_feed" - native_content_recommendation = "native_content_recommendation" - native_product = "native_product" - video_skippable_15s = "video_skippable_15s" - video_skippable_30s = "video_skippable_30s" - video_non_skippable_15s = "video_non_skippable_15s" - video_non_skippable_30s = "video_non_skippable_30s" - video_outstream_autoplay = "video_outstream_autoplay" - video_vertical_story = "video_vertical_story" - video_rewarded_30s = "video_rewarded_30s" - video_pause_ad = "video_pause_ad" - video_ctv_non_skippable_30s = "video_ctv_non_skippable_30s" - audio_standard_15s = "audio_standard_15s" - audio_standard_30s = "audio_standard_30s" - audio_podcast_host_read = "audio_podcast_host_read" - audio_programmatic = "audio_programmatic" - universal_carousel = "universal_carousel" - universal_canvas = "universal_canvas" - universal_takeover = "universal_takeover" - universal_gallery = "universal_gallery" - universal_reveal = "universal_reveal" - dooh_landscape_static = "dooh_landscape_static" - dooh_portrait_video = "dooh_portrait_video" + display_300x250 = 'display_300x250' + display_728x90 = 'display_728x90' + display_320x50 = 'display_320x50' + display_160x600 = 'display_160x600' + display_970x250 = 'display_970x250' + display_336x280 = 'display_336x280' + display_expandable_300x250 = 'display_expandable_300x250' + display_expandable_728x90 = 'display_expandable_728x90' + display_interstitial_320x480 = 'display_interstitial_320x480' + display_interstitial_desktop = 'display_interstitial_desktop' + display_dynamic_300x250 = 'display_dynamic_300x250' + display_responsive = 'display_responsive' + native_in_feed = 'native_in_feed' + native_content_recommendation = 'native_content_recommendation' + native_product = 'native_product' + video_skippable_15s = 'video_skippable_15s' + video_skippable_30s = 'video_skippable_30s' + video_non_skippable_15s = 'video_non_skippable_15s' + video_non_skippable_30s = 'video_non_skippable_30s' + video_outstream_autoplay = 'video_outstream_autoplay' + video_vertical_story = 'video_vertical_story' + video_rewarded_30s = 'video_rewarded_30s' + video_pause_ad = 'video_pause_ad' + video_ctv_non_skippable_30s = 'video_ctv_non_skippable_30s' + audio_standard_15s = 'audio_standard_15s' + audio_standard_30s = 'audio_standard_30s' + audio_podcast_host_read = 'audio_podcast_host_read' + audio_programmatic = 'audio_programmatic' + universal_carousel = 'universal_carousel' + universal_canvas = 'universal_canvas' + universal_takeover = 'universal_takeover' + universal_gallery = 'universal_gallery' + universal_reveal = 'universal_reveal' + dooh_landscape_static = 'dooh_landscape_static' + dooh_portrait_video = 'dooh_portrait_video' diff --git a/src/adcp/types/generated_poc/sub_asset.py b/src/adcp/types/generated_poc/sub_asset.py index e3e7f48..3ad3c4a 100644 --- a/src/adcp/types/generated_poc/sub_asset.py +++ b/src/adcp/types/generated_poc/sub_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: sub-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,44 +12,44 @@ class SubAsset1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_id: Annotated[ - str, Field(description="Unique identifier for the asset within the creative") + str, Field(description='Unique identifier for the asset within the creative') ] asset_kind: Annotated[ - Literal["media"], - Field(description="Discriminator indicating this is a media asset with content_uri"), + Literal['media'], + Field(description='Discriminator indicating this is a media asset with content_uri'), ] asset_type: Annotated[ str, Field( - description="Type of asset. Common types: thumbnail_image, product_image, featured_image, logo" + description='Type of asset. Common types: thumbnail_image, product_image, featured_image, logo' ), ] - content_uri: Annotated[AnyUrl, Field(description="URL for media assets (images, videos, etc.)")] + content_uri: Annotated[AnyUrl, Field(description='URL for media assets (images, videos, etc.)')] class SubAsset2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) asset_id: Annotated[ - str, Field(description="Unique identifier for the asset within the creative") + str, Field(description='Unique identifier for the asset within the creative') ] asset_kind: Annotated[ - Literal["text"], - Field(description="Discriminator indicating this is a text asset with content"), + Literal['text'], + Field(description='Discriminator indicating this is a text asset with content'), ] asset_type: Annotated[ str, Field( - description="Type of asset. Common types: headline, body_text, cta_text, price_text, sponsor_name, author_name, click_url" + description='Type of asset. Common types: headline, body_text, cta_text, price_text, sponsor_name, author_name, click_url' ), ] content: Annotated[ str | list[str], Field( - description="Text content for text-based assets like headlines, body text, CTA text, etc." + description='Text content for text-based assets like headlines, body text, CTA text, etc.' ), ] diff --git a/src/adcp/types/generated_poc/sync_creatives_request.py b/src/adcp/types/generated_poc/sync_creatives_request.py index 27b6aec..b45804a 100644 --- a/src/adcp/types/generated_poc/sync_creatives_request.py +++ b/src/adcp/types/generated_poc/sync_creatives_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: sync-creatives-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,50 +15,50 @@ class ValidationMode(Enum): - strict = "strict" - lenient = "lenient" + strict = 'strict' + lenient = 'lenient' class SyncCreativesRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) assignments: Annotated[ dict[str, list[str]] | None, - Field(description="Optional bulk assignment of creatives to packages"), + Field(description='Optional bulk assignment of creatives to packages'), ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None creatives: Annotated[ list[creative_asset.CreativeAsset], - Field(description="Array of creative assets to sync (create or update)", max_length=100), + Field(description='Array of creative assets to sync (create or update)', max_length=100), ] delete_missing: Annotated[ bool | None, Field( - description="When true, creatives not included in this sync will be archived. Use with caution for full library replacement." + description='When true, creatives not included in this sync will be archived. Use with caution for full library replacement.' ), ] = False dry_run: Annotated[ bool | None, Field( - description="When true, preview changes without applying them. Returns what would be created/updated/deleted." + description='When true, preview changes without applying them. Returns what would be created/updated/deleted.' ), ] = False patch: Annotated[ bool | None, Field( - description="When true, only provided fields are updated (partial update). When false, entire creative is replaced (full upsert)." + description='When true, only provided fields are updated (partial update). When false, entire creative is replaced (full upsert).' ), ] = False push_notification_config: Annotated[ push_notification_config_1.PushNotificationConfig | None, Field( - description="Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL)." + description='Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL).' ), ] = None validation_mode: Annotated[ diff --git a/src/adcp/types/generated_poc/sync_creatives_response.py b/src/adcp/types/generated_poc/sync_creatives_response.py index 9abe5e9..bccfc56 100644 --- a/src/adcp/types/generated_poc/sync_creatives_response.py +++ b/src/adcp/types/generated_poc/sync_creatives_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: sync-creatives-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,35 +14,35 @@ class Action(Enum): - created = "created" - updated = "updated" - unchanged = "unchanged" - failed = "failed" - deleted = "deleted" + created = 'created' + updated = 'updated' + unchanged = 'unchanged' + failed = 'failed' + deleted = 'deleted' class Creative(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - action: Annotated[Action, Field(description="Action taken for this creative")] + action: Annotated[Action, Field(description='Action taken for this creative')] assigned_to: Annotated[ list[str] | None, Field( - description="Package IDs this creative was successfully assigned to (only present when assignments were requested)" + description='Package IDs this creative was successfully assigned to (only present when assignments were requested)' ), ] = None assignment_errors: Annotated[ dict[str, str] | None, Field( - description="Assignment errors by package ID (only present when assignment failures occurred)" + description='Assignment errors by package ID (only present when assignment failures occurred)' ), ] = None changes: Annotated[ list[str] | None, Field(description="Field names that were modified (only present when action='updated')"), ] = None - creative_id: Annotated[str, Field(description="Creative ID from the request")] + creative_id: Annotated[str, Field(description='Creative ID from the request')] errors: Annotated[ list[str] | None, Field(description="Validation or processing errors (only present when action='failed')"), @@ -50,31 +50,31 @@ class Creative(AdCPBaseModel): expires_at: Annotated[ AwareDatetime | None, Field( - description="ISO 8601 timestamp when preview link expires (only present when preview_url exists)" + description='ISO 8601 timestamp when preview link expires (only present when preview_url exists)' ), ] = None platform_id: Annotated[ - str | None, Field(description="Platform-specific ID assigned to the creative") + str | None, Field(description='Platform-specific ID assigned to the creative') ] = None preview_url: Annotated[ AnyUrl | None, Field( - description="Preview URL for generative creatives (only present for generative formats)" + description='Preview URL for generative creatives (only present for generative formats)' ), ] = None warnings: Annotated[ - list[str] | None, Field(description="Non-fatal warnings about this creative") + list[str] | None, Field(description='Non-fatal warnings about this creative') ] = None class SyncCreativesResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None creatives: Annotated[ @@ -84,24 +84,24 @@ class SyncCreativesResponse1(AdCPBaseModel): ), ] dry_run: Annotated[ - bool | None, Field(description="Whether this was a dry run (no actual changes made)") + bool | None, Field(description='Whether this was a dry run (no actual changes made)') ] = None class SyncCreativesResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], Field( - description="Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)", + description='Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)', min_length=1, ), ] @@ -111,7 +111,7 @@ class SyncCreativesResponse(RootModel[SyncCreativesResponse1 | SyncCreativesResp root: Annotated[ SyncCreativesResponse1 | SyncCreativesResponse2, Field( - description="Response from creative sync operation. Returns either per-creative results (best-effort processing) OR operation-level errors (complete failure). This enforces atomic semantics at the operation level while allowing per-item failures within successful operations.", - title="Sync Creatives Response", + description='Response from creative sync operation. Returns either per-creative results (best-effort processing) OR operation-level errors (complete failure). This enforces atomic semantics at the operation level while allowing per-item failures within successful operations.', + title='Sync Creatives Response', ), ] diff --git a/src/adcp/types/generated_poc/targeting.py b/src/adcp/types/generated_poc/targeting.py index 79fcd84..b082271 100644 --- a/src/adcp/types/generated_poc/targeting.py +++ b/src/adcp/types/generated_poc/targeting.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: targeting.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -13,41 +13,41 @@ class GeoCountryAnyOfItem(RootModel[str]): - root: Annotated[str, Field(pattern="^[A-Z]{2}$")] + root: Annotated[str, Field(pattern='^[A-Z]{2}$')] class TargetingOverlay(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) axe_exclude_segment: Annotated[ - str | None, Field(description="AXE segment ID to exclude from targeting") + str | None, Field(description='AXE segment ID to exclude from targeting') ] = None axe_include_segment: Annotated[ - str | None, Field(description="AXE segment ID to include for targeting") + str | None, Field(description='AXE segment ID to include for targeting') ] = None frequency_cap: frequency_cap_1.FrequencyCap | None = None geo_country_any_of: Annotated[ list[GeoCountryAnyOfItem] | None, Field( - description="Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing." + description='Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing.' ), ] = None geo_metro_any_of: Annotated[ list[str] | None, Field( - description="Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing." + description='Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing.' ), ] = None geo_postal_code_any_of: Annotated[ list[str] | None, Field( - description="Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing." + description='Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing.' ), ] = None geo_region_any_of: Annotated[ list[str] | None, Field( - description="Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing." + description='Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing.' ), ] = None diff --git a/src/adcp/types/generated_poc/task_status.py b/src/adcp/types/generated_poc/task_status.py index f223764..a154572 100644 --- a/src/adcp/types/generated_poc/task_status.py +++ b/src/adcp/types/generated_poc/task_status.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: task-status.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,12 +8,12 @@ class TaskStatus(Enum): - submitted = "submitted" - working = "working" - input_required = "input-required" - completed = "completed" - canceled = "canceled" - failed = "failed" - rejected = "rejected" - auth_required = "auth-required" - unknown = "unknown" + submitted = 'submitted' + working = 'working' + input_required = 'input-required' + completed = 'completed' + canceled = 'canceled' + failed = 'failed' + rejected = 'rejected' + auth_required = 'auth-required' + unknown = 'unknown' diff --git a/src/adcp/types/generated_poc/task_type.py b/src/adcp/types/generated_poc/task_type.py index 04ce251..bdbccdd 100644 --- a/src/adcp/types/generated_poc/task_type.py +++ b/src/adcp/types/generated_poc/task_type.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: task-type.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -8,8 +8,8 @@ class TaskType(Enum): - create_media_buy = "create_media_buy" - update_media_buy = "update_media_buy" - sync_creatives = "sync_creatives" - activate_signal = "activate_signal" - get_signals = "get_signals" + create_media_buy = 'create_media_buy' + update_media_buy = 'update_media_buy' + sync_creatives = 'sync_creatives' + activate_signal = 'activate_signal' + get_signals = 'get_signals' diff --git a/src/adcp/types/generated_poc/tasks_get_request.py b/src/adcp/types/generated_poc/tasks_get_request.py index 3393bcc..8058612 100644 --- a/src/adcp/types/generated_poc/tasks_get_request.py +++ b/src/adcp/types/generated_poc/tasks_get_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: tasks-get-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,18 +12,18 @@ class TasksGetRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None include_history: Annotated[ bool | None, Field( - description="Include full conversation history for this task (may increase response size)" + description='Include full conversation history for this task (may increase response size)' ), ] = False - task_id: Annotated[str, Field(description="Unique identifier of the task to retrieve")] + task_id: Annotated[str, Field(description='Unique identifier of the task to retrieve')] diff --git a/src/adcp/types/generated_poc/tasks_get_response.py b/src/adcp/types/generated_poc/tasks_get_response.py index 5efb9bc..7239bb9 100644 --- a/src/adcp/types/generated_poc/tasks_get_response.py +++ b/src/adcp/types/generated_poc/tasks_get_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: tasks-get-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,98 +15,98 @@ class Domain(Enum): - media_buy = "media-buy" - signals = "signals" + media_buy = 'media-buy' + signals = 'signals' class Details(AdCPBaseModel): model_config = ConfigDict( - extra="allow", + extra='allow', ) - domain: Annotated[Domain | None, Field(description="AdCP domain where error occurred")] = None - operation: Annotated[str | None, Field(description="Specific operation that failed")] = None + domain: Annotated[Domain | None, Field(description='AdCP domain where error occurred')] = None + operation: Annotated[str | None, Field(description='Specific operation that failed')] = None specific_context: Annotated[ - dict[str, Any] | None, Field(description="Domain-specific error context") + dict[str, Any] | None, Field(description='Domain-specific error context') ] = None class Error(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - code: Annotated[str, Field(description="Error code for programmatic handling")] - details: Annotated[Details | None, Field(description="Additional error context")] = None - message: Annotated[str, Field(description="Detailed error message")] + code: Annotated[str, Field(description='Error code for programmatic handling')] + details: Annotated[Details | None, Field(description='Additional error context')] = None + message: Annotated[str, Field(description='Detailed error message')] class Type(Enum): - request = "request" - response = "response" + request = 'request' + response = 'response' class HistoryItem(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - data: Annotated[dict[str, Any], Field(description="The full request or response payload")] - timestamp: Annotated[AwareDatetime, Field(description="When this exchange occurred (ISO 8601)")] + data: Annotated[dict[str, Any], Field(description='The full request or response payload')] + timestamp: Annotated[AwareDatetime, Field(description='When this exchange occurred (ISO 8601)')] type: Annotated[ - Type, Field(description="Whether this was a request from client or response from server") + Type, Field(description='Whether this was a request from client or response from server') ] class Progress(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) current_step: Annotated[ - str | None, Field(description="Current step or phase of the operation") + str | None, Field(description='Current step or phase of the operation') ] = None percentage: Annotated[ - float | None, Field(description="Completion percentage (0-100)", ge=0.0, le=100.0) + float | None, Field(description='Completion percentage (0-100)', ge=0.0, le=100.0) ] = None - step_number: Annotated[int | None, Field(description="Current step number", ge=1)] = None + step_number: Annotated[int | None, Field(description='Current step number', ge=1)] = None total_steps: Annotated[ - int | None, Field(description="Total number of steps in the operation", ge=1) + int | None, Field(description='Total number of steps in the operation', ge=1) ] = None class TasksGetResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) completed_at: Annotated[ AwareDatetime | None, Field( - description="When the task completed (ISO 8601, only for completed/failed/canceled tasks)" + description='When the task completed (ISO 8601, only for completed/failed/canceled tasks)' ), ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None created_at: Annotated[ - AwareDatetime, Field(description="When the task was initially created (ISO 8601)") + AwareDatetime, Field(description='When the task was initially created (ISO 8601)') ] - domain: Annotated[Domain, Field(description="AdCP domain this task belongs to")] - error: Annotated[Error | None, Field(description="Error details for failed tasks")] = None + domain: Annotated[Domain, Field(description='AdCP domain this task belongs to')] + error: Annotated[Error | None, Field(description='Error details for failed tasks')] = None has_webhook: Annotated[ - bool | None, Field(description="Whether this task has webhook configuration") + bool | None, Field(description='Whether this task has webhook configuration') ] = None history: Annotated[ list[HistoryItem] | None, Field( - description="Complete conversation history for this task (only included if include_history was true in request)" + description='Complete conversation history for this task (only included if include_history was true in request)' ), ] = None progress: Annotated[ - Progress | None, Field(description="Progress information for long-running tasks") + Progress | None, Field(description='Progress information for long-running tasks') ] = None - status: Annotated[task_status.TaskStatus, Field(description="Current task status")] - task_id: Annotated[str, Field(description="Unique identifier for this task")] - task_type: Annotated[task_type_1.TaskType, Field(description="Type of AdCP operation")] + status: Annotated[task_status.TaskStatus, Field(description='Current task status')] + task_id: Annotated[str, Field(description='Unique identifier for this task')] + task_type: Annotated[task_type_1.TaskType, Field(description='Type of AdCP operation')] updated_at: Annotated[ - AwareDatetime, Field(description="When the task was last updated (ISO 8601)") + AwareDatetime, Field(description='When the task was last updated (ISO 8601)') ] diff --git a/src/adcp/types/generated_poc/tasks_list_request.py b/src/adcp/types/generated_poc/tasks_list_request.py index ea5184b..c63c674 100644 --- a/src/adcp/types/generated_poc/tasks_list_request.py +++ b/src/adcp/types/generated_poc/tasks_list_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: tasks-list-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,107 +15,107 @@ class Domain(Enum): - media_buy = "media-buy" - signals = "signals" + media_buy = 'media-buy' + signals = 'signals' class Filters(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context_contains: Annotated[ str | None, Field( - description="Filter tasks where context contains this text (searches buyer_ref, media_buy_id, signal_id, etc.)" + description='Filter tasks where context contains this text (searches buyer_ref, media_buy_id, signal_id, etc.)' ), ] = None created_after: Annotated[ - AwareDatetime | None, Field(description="Filter tasks created after this date (ISO 8601)") + AwareDatetime | None, Field(description='Filter tasks created after this date (ISO 8601)') ] = None created_before: Annotated[ - AwareDatetime | None, Field(description="Filter tasks created before this date (ISO 8601)") + AwareDatetime | None, Field(description='Filter tasks created before this date (ISO 8601)') ] = None - domain: Annotated[Domain | None, Field(description="Filter by single AdCP domain")] = None + domain: Annotated[Domain | None, Field(description='Filter by single AdCP domain')] = None domains: Annotated[ - list[Domain] | None, Field(description="Filter by multiple AdCP domains") + list[Domain] | None, Field(description='Filter by multiple AdCP domains') ] = None has_webhook: Annotated[ - bool | None, Field(description="Filter tasks that have webhook configuration when true") + bool | None, Field(description='Filter tasks that have webhook configuration when true') ] = None status: Annotated[ - task_status.TaskStatus | None, Field(description="Filter by single task status") + task_status.TaskStatus | None, Field(description='Filter by single task status') ] = None statuses: Annotated[ - list[task_status.TaskStatus] | None, Field(description="Filter by multiple task statuses") + list[task_status.TaskStatus] | None, Field(description='Filter by multiple task statuses') ] = None task_ids: Annotated[ - list[str] | None, Field(description="Filter by specific task IDs", max_length=100) + list[str] | None, Field(description='Filter by specific task IDs', max_length=100) ] = None task_type: Annotated[ - task_type_1.TaskType | None, Field(description="Filter by single task type") + task_type_1.TaskType | None, Field(description='Filter by single task type') ] = None task_types: Annotated[ - list[task_type_1.TaskType] | None, Field(description="Filter by multiple task types") + list[task_type_1.TaskType] | None, Field(description='Filter by multiple task types') ] = None updated_after: Annotated[ AwareDatetime | None, - Field(description="Filter tasks last updated after this date (ISO 8601)"), + Field(description='Filter tasks last updated after this date (ISO 8601)'), ] = None updated_before: Annotated[ AwareDatetime | None, - Field(description="Filter tasks last updated before this date (ISO 8601)"), + Field(description='Filter tasks last updated before this date (ISO 8601)'), ] = None class Pagination(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) limit: Annotated[ - int | None, Field(description="Maximum number of tasks to return", ge=1, le=100) + int | None, Field(description='Maximum number of tasks to return', ge=1, le=100) ] = 50 - offset: Annotated[int | None, Field(description="Number of tasks to skip", ge=0)] = 0 + offset: Annotated[int | None, Field(description='Number of tasks to skip', ge=0)] = 0 class Direction(Enum): - asc = "asc" - desc = "desc" + asc = 'asc' + desc = 'desc' class Field1(Enum): - created_at = "created_at" - updated_at = "updated_at" - status = "status" - task_type = "task_type" - domain = "domain" + created_at = 'created_at' + updated_at = 'updated_at' + status = 'status' + task_type = 'task_type' + domain = 'domain' class Sort(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - direction: Annotated[Direction | None, Field(description="Sort direction")] = Direction.desc - field: Annotated[Field1 | None, Field(description="Field to sort by")] = Field1.created_at + direction: Annotated[Direction | None, Field(description='Sort direction')] = Direction.desc + field: Annotated[Field1 | None, Field(description='Field to sort by')] = Field1.created_at class TasksListRequest(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None - filters: Annotated[Filters | None, Field(description="Filter criteria for querying tasks")] = ( + filters: Annotated[Filters | None, Field(description='Filter criteria for querying tasks')] = ( None ) include_history: Annotated[ bool | None, Field( - description="Include full conversation history for each task (may significantly increase response size)" + description='Include full conversation history for each task (may significantly increase response size)' ), ] = False - pagination: Annotated[Pagination | None, Field(description="Pagination parameters")] = None - sort: Annotated[Sort | None, Field(description="Sorting parameters")] = None + pagination: Annotated[Pagination | None, Field(description='Pagination parameters')] = None + sort: Annotated[Sort | None, Field(description='Sorting parameters')] = None diff --git a/src/adcp/types/generated_poc/tasks_list_response.py b/src/adcp/types/generated_poc/tasks_list_response.py index 6967aca..8c756d3 100644 --- a/src/adcp/types/generated_poc/tasks_list_response.py +++ b/src/adcp/types/generated_poc/tasks_list_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: tasks-list-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,38 +16,38 @@ class Pagination(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - has_more: Annotated[bool, Field(description="Whether there are more tasks beyond this page")] - limit: Annotated[int, Field(description="Limit that was applied to this query", ge=1)] + has_more: Annotated[bool, Field(description='Whether there are more tasks beyond this page')] + limit: Annotated[int, Field(description='Limit that was applied to this query', ge=1)] next_offset: Annotated[ int | None, - Field(description="Offset to use for next page (only present if has_more is true)", ge=0), + Field(description='Offset to use for next page (only present if has_more is true)', ge=0), ] = None - offset: Annotated[int, Field(description="Offset that was applied to this query", ge=0)] + offset: Annotated[int, Field(description='Offset that was applied to this query', ge=0)] class DomainBreakdown(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) media_buy: Annotated[ int | None, - Field(alias="media-buy", description="Number of media-buy tasks in results", ge=0), + Field(alias='media-buy', description='Number of media-buy tasks in results', ge=0), ] = None signals: Annotated[ - int | None, Field(description="Number of signals tasks in results", ge=0) + int | None, Field(description='Number of signals tasks in results', ge=0) ] = None class Direction(Enum): - asc = "asc" - desc = "desc" + asc = 'asc' + desc = 'desc' class SortApplied(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) direction: Direction field: str @@ -55,68 +55,68 @@ class SortApplied(AdCPBaseModel): class QuerySummary(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) domain_breakdown: Annotated[ - DomainBreakdown | None, Field(description="Count of tasks by domain") + DomainBreakdown | None, Field(description='Count of tasks by domain') ] = None filters_applied: Annotated[ - list[str] | None, Field(description="List of filters that were applied to the query") + list[str] | None, Field(description='List of filters that were applied to the query') ] = None - returned: Annotated[int, Field(description="Number of tasks returned in this response", ge=0)] + returned: Annotated[int, Field(description='Number of tasks returned in this response', ge=0)] sort_applied: Annotated[ - SortApplied | None, Field(description="Sort order that was applied") + SortApplied | None, Field(description='Sort order that was applied') ] = None status_breakdown: Annotated[ - dict[str, int] | None, Field(description="Count of tasks by status") + dict[str, int] | None, Field(description='Count of tasks by status') ] = None total_matching: Annotated[ - int, Field(description="Total number of tasks matching filters (across all pages)", ge=0) + int, Field(description='Total number of tasks matching filters (across all pages)', ge=0) ] class Domain(Enum): - media_buy = "media-buy" - signals = "signals" + media_buy = 'media-buy' + signals = 'signals' class Task(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) completed_at: Annotated[ AwareDatetime | None, Field( - description="When the task completed (ISO 8601, only for completed/failed/canceled tasks)" + description='When the task completed (ISO 8601, only for completed/failed/canceled tasks)' ), ] = None created_at: Annotated[ - AwareDatetime, Field(description="When the task was initially created (ISO 8601)") + AwareDatetime, Field(description='When the task was initially created (ISO 8601)') ] - domain: Annotated[Domain, Field(description="AdCP domain this task belongs to")] + domain: Annotated[Domain, Field(description='AdCP domain this task belongs to')] has_webhook: Annotated[ - bool | None, Field(description="Whether this task has webhook configuration") + bool | None, Field(description='Whether this task has webhook configuration') ] = None - status: Annotated[task_status.TaskStatus, Field(description="Current task status")] - task_id: Annotated[str, Field(description="Unique identifier for this task")] - task_type: Annotated[task_type_1.TaskType, Field(description="Type of AdCP operation")] + status: Annotated[task_status.TaskStatus, Field(description='Current task status')] + task_id: Annotated[str, Field(description='Unique identifier for this task')] + task_type: Annotated[task_type_1.TaskType, Field(description='Type of AdCP operation')] updated_at: Annotated[ - AwareDatetime, Field(description="When the task was last updated (ISO 8601)") + AwareDatetime, Field(description='When the task was last updated (ISO 8601)') ] class TasksListResponse(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None - pagination: Annotated[Pagination, Field(description="Pagination information")] + pagination: Annotated[Pagination, Field(description='Pagination information')] query_summary: Annotated[ - QuerySummary, Field(description="Summary of the query that was executed") + QuerySummary, Field(description='Summary of the query that was executed') ] - tasks: Annotated[list[Task], Field(description="Array of tasks matching the query criteria")] + tasks: Annotated[list[Task], Field(description='Array of tasks matching the query criteria')] diff --git a/src/adcp/types/generated_poc/text_asset.py b/src/adcp/types/generated_poc/text_asset.py index 021df0a..2c95bef 100644 --- a/src/adcp/types/generated_poc/text_asset.py +++ b/src/adcp/types/generated_poc/text_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: text-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,9 +12,9 @@ class TextAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - content: Annotated[str, Field(description="Text content")] + content: Annotated[str, Field(description='Text content')] language: Annotated[str | None, Field(description="Language code (e.g., 'en', 'es', 'fr')")] = ( None ) diff --git a/src/adcp/types/generated_poc/update_media_buy_request.py b/src/adcp/types/generated_poc/update_media_buy_request.py index b0eeaed..b34b898 100644 --- a/src/adcp/types/generated_poc/update_media_buy_request.py +++ b/src/adcp/types/generated_poc/update_media_buy_request.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: update-media-buy-request.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -16,27 +16,27 @@ class Packages(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - active: Annotated[bool | None, Field(description="Pause/resume specific package")] = None + active: Annotated[bool | None, Field(description='Pause/resume specific package')] = None bid_price: Annotated[ float | None, Field( - description="Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)", + description='Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)', ge=0.0, ), ] = None budget: Annotated[ float | None, Field( - description="Updated budget allocation for this package in the currency specified by the pricing option", + description='Updated budget allocation for this package in the currency specified by the pricing option', ge=0.0, ), ] = None buyer_ref: Annotated[ str | None, Field(description="Buyer's reference for the package to update") ] = None - creative_ids: Annotated[list[str] | None, Field(description="Update creative assignments")] = ( + creative_ids: Annotated[list[str] | None, Field(description='Update creative assignments')] = ( None ) pacing: pacing_1.Pacing | None = None @@ -46,25 +46,25 @@ class Packages(AdCPBaseModel): class Packages1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - active: Annotated[bool | None, Field(description="Pause/resume specific package")] = None + active: Annotated[bool | None, Field(description='Pause/resume specific package')] = None bid_price: Annotated[ float | None, Field( - description="Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)", + description='Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)', ge=0.0, ), ] = None budget: Annotated[ float | None, Field( - description="Updated budget allocation for this package in the currency specified by the pricing option", + description='Updated budget allocation for this package in the currency specified by the pricing option', ge=0.0, ), ] = None buyer_ref: Annotated[str, Field(description="Buyer's reference for the package to update")] - creative_ids: Annotated[list[str] | None, Field(description="Update creative assignments")] = ( + creative_ids: Annotated[list[str] | None, Field(description='Update creative assignments')] = ( None ) pacing: pacing_1.Pacing | None = None @@ -76,35 +76,35 @@ class Packages1(AdCPBaseModel): class UpdateMediaBuyRequest1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - active: Annotated[bool | None, Field(description="Pause/resume the entire media buy")] = None + active: Annotated[bool | None, Field(description='Pause/resume the entire media buy')] = None buyer_ref: Annotated[ str | None, Field(description="Buyer's reference for the media buy to update") ] = None context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None end_time: Annotated[ - AwareDatetime | None, Field(description="New end date/time in ISO 8601 format") + AwareDatetime | None, Field(description='New end date/time in ISO 8601 format') ] = None media_buy_id: Annotated[str, Field(description="Publisher's ID of the media buy to update")] packages: Annotated[ - list[Packages | Packages1] | None, Field(description="Package-specific updates") + list[Packages | Packages1] | None, Field(description='Package-specific updates') ] = None push_notification_config: Annotated[ push_notification_config_1.PushNotificationConfig | None, Field( - description="Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time." + description='Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.' ), ] = None start_time: Annotated[ str | AwareDatetime | None, Field( - description="Campaign start timing: 'asap' or ISO 8601 date-time", title="Start Timing" + description="Campaign start timing: 'asap' or ISO 8601 date-time", title='Start Timing' ), ] = None @@ -117,35 +117,35 @@ class UpdateMediaBuyRequest1(AdCPBaseModel): class UpdateMediaBuyRequest2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - active: Annotated[bool | None, Field(description="Pause/resume the entire media buy")] = None + active: Annotated[bool | None, Field(description='Pause/resume the entire media buy')] = None buyer_ref: Annotated[str, Field(description="Buyer's reference for the media buy to update")] context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata." + description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.' ), ] = None end_time: Annotated[ - AwareDatetime | None, Field(description="New end date/time in ISO 8601 format") + AwareDatetime | None, Field(description='New end date/time in ISO 8601 format') ] = None media_buy_id: Annotated[ str | None, Field(description="Publisher's ID of the media buy to update") ] = None packages: Annotated[ - list[Packages2 | Packages3] | None, Field(description="Package-specific updates") + list[Packages2 | Packages3] | None, Field(description='Package-specific updates') ] = None push_notification_config: Annotated[ push_notification_config_1.PushNotificationConfig | None, Field( - description="Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time." + description='Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.' ), ] = None start_time: Annotated[ str | AwareDatetime | None, Field( - description="Campaign start timing: 'asap' or ISO 8601 date-time", title="Start Timing" + description="Campaign start timing: 'asap' or ISO 8601 date-time", title='Start Timing' ), ] = None @@ -154,7 +154,7 @@ class UpdateMediaBuyRequest(RootModel[UpdateMediaBuyRequest1 | UpdateMediaBuyReq root: Annotated[ UpdateMediaBuyRequest1 | UpdateMediaBuyRequest2, Field( - description="Request parameters for updating campaign and package settings", - title="Update Media Buy Request", + description='Request parameters for updating campaign and package settings', + title='Update Media Buy Request', ), ] diff --git a/src/adcp/types/generated_poc/update_media_buy_response.py b/src/adcp/types/generated_poc/update_media_buy_response.py index 0f8515c..408a3e1 100644 --- a/src/adcp/types/generated_poc/update_media_buy_response.py +++ b/src/adcp/types/generated_poc/update_media_buy_response.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: update-media-buy-response.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -14,7 +14,7 @@ class AffectedPackage(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) buyer_ref: Annotated[str, Field(description="Buyer's reference for the package")] package_id: Annotated[str, Field(description="Publisher's package identifier")] @@ -22,38 +22,38 @@ class AffectedPackage(AdCPBaseModel): class UpdateMediaBuyResponse1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) affected_packages: Annotated[ - list[AffectedPackage] | None, Field(description="Array of packages that were modified") + list[AffectedPackage] | None, Field(description='Array of packages that were modified') ] = None buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for the media buy")] context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None implementation_date: Annotated[ AwareDatetime | None, - Field(description="ISO 8601 timestamp when changes take effect (null if pending approval)"), + Field(description='ISO 8601 timestamp when changes take effect (null if pending approval)'), ] = None media_buy_id: Annotated[str, Field(description="Publisher's identifier for the media buy")] class UpdateMediaBuyResponse2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) context: Annotated[ dict[str, Any] | None, Field( - description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers." + description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.' ), ] = None errors: Annotated[ list[error.Error], - Field(description="Array of errors explaining why the operation failed", min_length=1), + Field(description='Array of errors explaining why the operation failed', min_length=1), ] @@ -61,7 +61,7 @@ class UpdateMediaBuyResponse(RootModel[UpdateMediaBuyResponse1 | UpdateMediaBuyR root: Annotated[ UpdateMediaBuyResponse1 | UpdateMediaBuyResponse2, Field( - description="Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.", - title="Update Media Buy Response", + description='Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.', + title='Update Media Buy Response', ), ] diff --git a/src/adcp/types/generated_poc/url_asset.py b/src/adcp/types/generated_poc/url_asset.py index 77ce82f..39b3479 100644 --- a/src/adcp/types/generated_poc/url_asset.py +++ b/src/adcp/types/generated_poc/url_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: url-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,19 +12,19 @@ class UrlType(Enum): - clickthrough = "clickthrough" - tracker_pixel = "tracker_pixel" - tracker_script = "tracker_script" + clickthrough = 'clickthrough' + tracker_pixel = 'tracker_pixel' + tracker_script = 'tracker_script' class UrlAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) description: Annotated[ - str | None, Field(description="Description of what this URL points to") + str | None, Field(description='Description of what this URL points to') ] = None - url: Annotated[AnyUrl, Field(description="URL reference")] + url: Annotated[AnyUrl, Field(description='URL reference')] url_type: Annotated[ UrlType | None, Field( diff --git a/src/adcp/types/generated_poc/vast_asset.py b/src/adcp/types/generated_poc/vast_asset.py index 88c8bd1..faa63ea 100644 --- a/src/adcp/types/generated_poc/vast_asset.py +++ b/src/adcp/types/generated_poc/vast_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: vast-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,75 +12,75 @@ class TrackingEvent(Enum): - start = "start" - firstQuartile = "firstQuartile" - midpoint = "midpoint" - thirdQuartile = "thirdQuartile" - complete = "complete" - impression = "impression" - click = "click" - pause = "pause" - resume = "resume" - skip = "skip" - mute = "mute" - unmute = "unmute" - fullscreen = "fullscreen" - exitFullscreen = "exitFullscreen" - playerExpand = "playerExpand" - playerCollapse = "playerCollapse" + start = 'start' + firstQuartile = 'firstQuartile' + midpoint = 'midpoint' + thirdQuartile = 'thirdQuartile' + complete = 'complete' + impression = 'impression' + click = 'click' + pause = 'pause' + resume = 'resume' + skip = 'skip' + mute = 'mute' + unmute = 'unmute' + fullscreen = 'fullscreen' + exitFullscreen = 'exitFullscreen' + playerExpand = 'playerExpand' + playerCollapse = 'playerCollapse' class VastVersion(Enum): - field_2_0 = "2.0" - field_3_0 = "3.0" - field_4_0 = "4.0" - field_4_1 = "4.1" - field_4_2 = "4.2" + field_2_0 = '2.0' + field_3_0 = '3.0' + field_4_0 = '4.0' + field_4_1 = '4.1' + field_4_2 = '4.2' class VastAsset1(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) delivery_type: Annotated[ - Literal["url"], - Field(description="Discriminator indicating VAST is delivered via URL endpoint"), + Literal['url'], + Field(description='Discriminator indicating VAST is delivered via URL endpoint'), ] duration_ms: Annotated[ - int | None, Field(description="Expected video duration in milliseconds (if known)", ge=0) + int | None, Field(description='Expected video duration in milliseconds (if known)', ge=0) ] = None tracking_events: Annotated[ - list[TrackingEvent] | None, Field(description="Tracking events supported by this VAST tag") + list[TrackingEvent] | None, Field(description='Tracking events supported by this VAST tag') ] = None - url: Annotated[AnyUrl, Field(description="URL endpoint that returns VAST XML")] - vast_version: Annotated[VastVersion | None, Field(description="VAST specification version")] = ( + url: Annotated[AnyUrl, Field(description='URL endpoint that returns VAST XML')] + vast_version: Annotated[VastVersion | None, Field(description='VAST specification version')] = ( None ) vpaid_enabled: Annotated[ bool | None, - Field(description="Whether VPAID (Video Player-Ad Interface Definition) is supported"), + Field(description='Whether VPAID (Video Player-Ad Interface Definition) is supported'), ] = None class VastAsset2(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - content: Annotated[str, Field(description="Inline VAST XML content")] + content: Annotated[str, Field(description='Inline VAST XML content')] delivery_type: Annotated[ - Literal["inline"], - Field(description="Discriminator indicating VAST is delivered as inline XML content"), + Literal['inline'], + Field(description='Discriminator indicating VAST is delivered as inline XML content'), ] duration_ms: Annotated[ - int | None, Field(description="Expected video duration in milliseconds (if known)", ge=0) + int | None, Field(description='Expected video duration in milliseconds (if known)', ge=0) ] = None tracking_events: Annotated[ - list[TrackingEvent] | None, Field(description="Tracking events supported by this VAST tag") + list[TrackingEvent] | None, Field(description='Tracking events supported by this VAST tag') ] = None - vast_version: Annotated[VastVersion | None, Field(description="VAST specification version")] = ( + vast_version: Annotated[VastVersion | None, Field(description='VAST specification version')] = ( None ) vpaid_enabled: Annotated[ bool | None, - Field(description="Whether VPAID (Video Player-Ad Interface Definition) is supported"), + Field(description='Whether VPAID (Video Player-Ad Interface Definition) is supported'), ] = None diff --git a/src/adcp/types/generated_poc/vcpm_auction_option.py b/src/adcp/types/generated_poc/vcpm_auction_option.py index 958566c..7887b92 100644 --- a/src/adcp/types/generated_poc/vcpm_auction_option.py +++ b/src/adcp/types/generated_poc/vcpm_auction_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: vcpm-auction-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -11,43 +11,47 @@ class PriceGuidance(AdCPBaseModel): - floor: Annotated[float, Field(description="Minimum acceptable bid price", ge=0.0)] + floor: Annotated[float, Field(description='Minimum acceptable bid price', ge=0.0)] p25: Annotated[ - float | None, Field(description="25th percentile of recent winning bids", ge=0.0) + float | None, Field(description='25th percentile of recent winning bids', ge=0.0) ] = None - p50: Annotated[float | None, Field(description="Median of recent winning bids", ge=0.0)] = None + p50: Annotated[float | None, Field(description='Median of recent winning bids', ge=0.0)] = None p75: Annotated[ - float | None, Field(description="75th percentile of recent winning bids", ge=0.0) + float | None, Field(description='75th percentile of recent winning bids', ge=0.0) ] = None p90: Annotated[ - float | None, Field(description="90th percentile of recent winning bids", ge=0.0) + float | None, Field(description='90th percentile of recent winning bids', ge=0.0) ] = None class VcpmAuctionPricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[False], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None price_guidance: Annotated[ - PriceGuidance, Field(description="Statistical guidance for auction pricing") + PriceGuidance, Field(description='Statistical guidance for auction pricing') ] pricing_model: Annotated[ - Literal["vcpm"], Field(description="Cost per 1,000 viewable impressions (MRC standard)") + Literal['vcpm'], Field(description='Cost per 1,000 viewable impressions (MRC standard)') ] pricing_option_id: Annotated[ str, diff --git a/src/adcp/types/generated_poc/vcpm_fixed_option.py b/src/adcp/types/generated_poc/vcpm_fixed_option.py index 2fe49cf..b6d5f34 100644 --- a/src/adcp/types/generated_poc/vcpm_fixed_option.py +++ b/src/adcp/types/generated_poc/vcpm_fixed_option.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: vcpm-fixed-option.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,25 +12,29 @@ class VcpmFixedRatePricingOption(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) currency: Annotated[ str, Field( - description="ISO 4217 currency code", - examples=["USD", "EUR", "GBP", "JPY"], - pattern="^[A-Z]{3}$", + description='ISO 4217 currency code', + examples=['USD', 'EUR', 'GBP', 'JPY'], + pattern='^[A-Z]{3}$', ), ] + is_fixed: Annotated[ + Literal[True], + Field(description='Whether this is a fixed rate (true) or auction-based (false)'), + ] min_spend_per_package: Annotated[ float | None, Field( - description="Minimum spend requirement per package using this pricing option, in the specified currency", + description='Minimum spend requirement per package using this pricing option, in the specified currency', ge=0.0, ), ] = None pricing_model: Annotated[ - Literal["vcpm"], Field(description="Cost per 1,000 viewable impressions (MRC standard)") + Literal['vcpm'], Field(description='Cost per 1,000 viewable impressions (MRC standard)') ] pricing_option_id: Annotated[ str, @@ -39,5 +43,5 @@ class VcpmFixedRatePricingOption(AdCPBaseModel): ), ] rate: Annotated[ - float, Field(description="Fixed vCPM rate (cost per 1,000 viewable impressions)", ge=0.0) + float, Field(description='Fixed vCPM rate (cost per 1,000 viewable impressions)', ge=0.0) ] diff --git a/src/adcp/types/generated_poc/video_asset.py b/src/adcp/types/generated_poc/video_asset.py index 8f6c740..bf4360a 100644 --- a/src/adcp/types/generated_poc/video_asset.py +++ b/src/adcp/types/generated_poc/video_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: video-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,17 +12,17 @@ class VideoAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) bitrate_kbps: Annotated[ - int | None, Field(description="Video bitrate in kilobits per second", ge=1) + int | None, Field(description='Video bitrate in kilobits per second', ge=1) ] = None duration_ms: Annotated[ - int | None, Field(description="Video duration in milliseconds", ge=0) + int | None, Field(description='Video duration in milliseconds', ge=0) ] = None - format: Annotated[str | None, Field(description="Video file format (mp4, webm, mov, etc.)")] = ( + format: Annotated[str | None, Field(description='Video file format (mp4, webm, mov, etc.)')] = ( None ) - height: Annotated[int | None, Field(description="Video height in pixels", ge=1)] = None - url: Annotated[AnyUrl, Field(description="URL to the video asset")] - width: Annotated[int | None, Field(description="Video width in pixels", ge=1)] = None + height: Annotated[int | None, Field(description='Video height in pixels', ge=1)] = None + url: Annotated[AnyUrl, Field(description='URL to the video asset')] + width: Annotated[int | None, Field(description='Video width in pixels', ge=1)] = None diff --git a/src/adcp/types/generated_poc/webhook_asset.py b/src/adcp/types/generated_poc/webhook_asset.py index 9add0d2..41eefa2 100644 --- a/src/adcp/types/generated_poc/webhook_asset.py +++ b/src/adcp/types/generated_poc/webhook_asset.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: webhook-asset.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -12,21 +12,21 @@ class Method(Enum): - GET = "GET" - POST = "POST" + GET = 'GET' + POST = 'POST' class ResponseType(Enum): - html = "html" - json = "json" - xml = "xml" - javascript = "javascript" + html = 'html' + json = 'json' + xml = 'xml' + javascript = 'javascript' class Method1(Enum): - hmac_sha256 = "hmac_sha256" - api_key = "api_key" - none = "none" + hmac_sha256 = 'hmac_sha256' + api_key = 'api_key' + none = 'none' class Security(AdCPBaseModel): @@ -36,30 +36,30 @@ class Security(AdCPBaseModel): hmac_header: Annotated[ str | None, Field(description="Header name for HMAC signature (e.g., 'X-Signature')") ] = None - method: Annotated[Method1, Field(description="Authentication method")] + method: Annotated[Method1, Field(description='Authentication method')] class WebhookAsset(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) - method: Annotated[Method | None, Field(description="HTTP method")] = Method.POST + method: Annotated[Method | None, Field(description='HTTP method')] = Method.POST required_macros: Annotated[ list[str] | None, - Field(description="Universal macros that must be provided for webhook to function"), + Field(description='Universal macros that must be provided for webhook to function'), ] = None response_type: Annotated[ - ResponseType, Field(description="Expected content type of webhook response") + ResponseType, Field(description='Expected content type of webhook response') ] - security: Annotated[Security, Field(description="Security configuration for webhook calls")] + security: Annotated[Security, Field(description='Security configuration for webhook calls')] supported_macros: Annotated[ list[str] | None, Field( - description="Universal macros that can be passed to webhook (e.g., {DEVICE_TYPE}, {COUNTRY})" + description='Universal macros that can be passed to webhook (e.g., {DEVICE_TYPE}, {COUNTRY})' ), ] = None timeout_ms: Annotated[ int | None, - Field(description="Maximum time to wait for response in milliseconds", ge=10, le=5000), + Field(description='Maximum time to wait for response in milliseconds', ge=10, le=5000), ] = 500 - url: Annotated[AnyUrl, Field(description="Webhook URL to call for dynamic content")] + url: Annotated[AnyUrl, Field(description='Webhook URL to call for dynamic content')] diff --git a/src/adcp/types/generated_poc/webhook_payload.py b/src/adcp/types/generated_poc/webhook_payload.py index e55d090..6f8a481 100644 --- a/src/adcp/types/generated_poc/webhook_payload.py +++ b/src/adcp/types/generated_poc/webhook_payload.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: webhook-payload.json -# timestamp: 2025-11-15T22:03:55+00:00 +# timestamp: 2025-11-18T03:04:10+00:00 from __future__ import annotations @@ -15,40 +15,40 @@ class Domain(Enum): - media_buy = "media-buy" - signals = "signals" + media_buy = 'media-buy' + signals = 'signals' class Progress(AdCPBaseModel): model_config = ConfigDict( - extra="forbid", + extra='forbid', ) current_step: Annotated[ - str | None, Field(description="Current step or phase of the operation") + str | None, Field(description='Current step or phase of the operation') ] = None percentage: Annotated[ - float | None, Field(description="Completion percentage (0-100)", ge=0.0, le=100.0) + float | None, Field(description='Completion percentage (0-100)', ge=0.0, le=100.0) ] = None - step_number: Annotated[int | None, Field(description="Current step number", ge=1)] = None + step_number: Annotated[int | None, Field(description='Current step number', ge=1)] = None total_steps: Annotated[ - int | None, Field(description="Total number of steps in the operation", ge=1) + int | None, Field(description='Total number of steps in the operation', ge=1) ] = None class WebhookPayload(AdCPBaseModel): model_config = ConfigDict( - extra="allow", + extra='allow', ) context_id: Annotated[ str | None, Field( - description="Session/conversation identifier. Use this to continue the conversation if input-required status needs clarification or additional parameters." + description='Session/conversation identifier. Use this to continue the conversation if input-required status needs clarification or additional parameters.' ), ] = None domain: Annotated[ Domain | None, Field( - description="AdCP domain this task belongs to. Helps classify the operation type at a high level." + description='AdCP domain this task belongs to. Helps classify the operation type at a high level.' ), ] = None error: Annotated[ @@ -58,13 +58,13 @@ class WebhookPayload(AdCPBaseModel): message: Annotated[ str | None, Field( - description="Human-readable summary of the current task state. Provides context about what happened and what action may be needed." + description='Human-readable summary of the current task state. Provides context about what happened and what action may be needed.' ), ] = None operation_id: Annotated[ str | None, Field( - description="Publisher-defined operation identifier correlating a sequence of task updates across webhooks." + description='Publisher-defined operation identifier correlating a sequence of task updates across webhooks.' ), ] = None progress: Annotated[ @@ -76,27 +76,27 @@ class WebhookPayload(AdCPBaseModel): result: Annotated[ dict[str, Any] | None, Field( - description="Task-specific payload for this status update. Validated against the appropriate response schema based on task_type." + description='Task-specific payload for this status update. Validated against the appropriate response schema based on task_type.' ), ] = None status: Annotated[ task_status.TaskStatus, Field( - description="Current task status. Webhooks are only triggered for status changes after initial submission (e.g., submitted → input-required, submitted → completed, submitted → failed)." + description='Current task status. Webhooks are only triggered for status changes after initial submission (e.g., submitted → input-required, submitted → completed, submitted → failed).' ), ] task_id: Annotated[ str, Field( - description="Unique identifier for this task. Use this to correlate webhook notifications with the original task submission." + description='Unique identifier for this task. Use this to correlate webhook notifications with the original task submission.' ), ] task_type: Annotated[ task_type_1.TaskType, Field( - description="Type of AdCP operation that triggered this webhook. Enables webhook handlers to route to appropriate processing logic." + description='Type of AdCP operation that triggered this webhook. Enables webhook handlers to route to appropriate processing logic.' ), ] timestamp: Annotated[ - AwareDatetime, Field(description="ISO 8601 timestamp when this webhook was generated.") + AwareDatetime, Field(description='ISO 8601 timestamp when this webhook was generated.') ]