adcp 2.8.0__py3-none-any.whl → 2.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- adcp/__init__.py +7 -4
- adcp/__main__.py +31 -3
- adcp/client.py +200 -0
- adcp/protocols/a2a.py +12 -0
- adcp/protocols/base.py +15 -0
- adcp/protocols/mcp.py +12 -0
- adcp/types/__init__.py +0 -19
- adcp/types/_generated.py +37 -38
- adcp/types/aliases.py +10 -43
- adcp/types/generated_poc/activate_signal_request.py +3 -3
- adcp/types/generated_poc/activate_signal_response.py +2 -2
- adcp/types/generated_poc/asset_content_type.py +23 -0
- adcp/types/generated_poc/brand_manifest.py +8 -8
- adcp/types/generated_poc/create_media_buy_response.py +16 -21
- adcp/types/generated_poc/deployment.py +6 -6
- adcp/types/generated_poc/destination.py +4 -4
- adcp/types/generated_poc/format.py +5 -30
- adcp/types/generated_poc/format_category.py +17 -0
- adcp/types/generated_poc/get_signals_request.py +4 -4
- adcp/types/generated_poc/get_signals_response.py +2 -2
- adcp/types/generated_poc/list_creative_formats_request.py +4 -22
- adcp/types/generated_poc/update_media_buy_response.py +15 -22
- adcp/types/stable.py +17 -22
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/METADATA +172 -1
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/RECORD +29 -28
- adcp/types/generated_poc/asset_type.py +0 -100
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/WHEEL +0 -0
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.8.0.dist-info → adcp-2.9.0.dist-info}/top_level.txt +0 -0
adcp/types/_generated.py
CHANGED
|
@@ -10,7 +10,7 @@ Auto-generated by datamodel-code-generator from JSON schemas.
|
|
|
10
10
|
DO NOT EDIT MANUALLY.
|
|
11
11
|
|
|
12
12
|
Generated from: https://github.com/adcontextprotocol/adcp/tree/main/schemas
|
|
13
|
-
Generation date: 2025-11-
|
|
13
|
+
Generation date: 2025-11-20 21:00:13 UTC
|
|
14
14
|
"""
|
|
15
15
|
# ruff: noqa: E501, I001
|
|
16
16
|
from __future__ import annotations
|
|
@@ -20,9 +20,9 @@ from adcp.types.generated_poc.activate_signal_request import ActivateSignalReque
|
|
|
20
20
|
from adcp.types.generated_poc.activate_signal_response import ActivateSignalResponse, ActivateSignalResponse1, ActivateSignalResponse2
|
|
21
21
|
from adcp.types.generated_poc.activation_key import ActivationKey1, ActivationKey2
|
|
22
22
|
from adcp.types.generated_poc.adagents import AuthorizedAgents, AuthorizedAgents1, AuthorizedAgents2, AuthorizedAgents3, AuthorizedSalesAgents, Contact, PropertyId, PropertyTag, Tags
|
|
23
|
-
from adcp.types.generated_poc.
|
|
23
|
+
from adcp.types.generated_poc.asset_content_type import AssetContentType
|
|
24
24
|
from adcp.types.generated_poc.audio_asset import AudioAsset
|
|
25
|
-
from adcp.types.generated_poc.brand_manifest import Asset,
|
|
25
|
+
from adcp.types.generated_poc.brand_manifest import Asset, BrandManifest, Colors, Disclaimer, FeedFormat, Fonts, Logo, Metadata, ProductCatalog, UpdateFrequency
|
|
26
26
|
from adcp.types.generated_poc.build_creative_request import BuildCreativeRequest
|
|
27
27
|
from adcp.types.generated_poc.build_creative_response import BuildCreativeResponse, BuildCreativeResponse1, BuildCreativeResponse2
|
|
28
28
|
from adcp.types.generated_poc.channels import AdvertisingChannels
|
|
@@ -47,7 +47,8 @@ from adcp.types.generated_poc.deployment import Deployment1, Deployment2
|
|
|
47
47
|
from adcp.types.generated_poc.destination import Destination1, Destination2
|
|
48
48
|
from adcp.types.generated_poc.error import Error
|
|
49
49
|
from adcp.types.generated_poc.flat_rate_option import FlatRatePricingOption
|
|
50
|
-
from adcp.types.generated_poc.format import AssetsRequired, AssetsRequired1, Format, FormatCard, FormatCardDetailed, Render, Responsive, Unit
|
|
50
|
+
from adcp.types.generated_poc.format import AssetsRequired, AssetsRequired1, Dimensions, Format, FormatCard, FormatCardDetailed, Render, Responsive, Unit
|
|
51
|
+
from adcp.types.generated_poc.format_category import FormatCategory
|
|
51
52
|
from adcp.types.generated_poc.format_id import FormatId
|
|
52
53
|
from adcp.types.generated_poc.frequency_cap import FrequencyCap
|
|
53
54
|
from adcp.types.generated_poc.frequency_cap_scope import FrequencyCapScope
|
|
@@ -81,7 +82,7 @@ from adcp.types.generated_poc.preview_creative_response import Input4, Preview,
|
|
|
81
82
|
from adcp.types.generated_poc.preview_render import Embedding, PreviewRender, PreviewRender1, PreviewRender2, PreviewRender3
|
|
82
83
|
from adcp.types.generated_poc.pricing_model import PricingModel
|
|
83
84
|
from adcp.types.generated_poc.product import DeliveryMeasurement, Product, ProductCard, ProductCardDetailed
|
|
84
|
-
from adcp.types.generated_poc.promoted_offerings import AssetSelectors, Offering, PromotedOfferings
|
|
85
|
+
from adcp.types.generated_poc.promoted_offerings import AssetSelectors, AssetType, Offering, PromotedOfferings
|
|
85
86
|
from adcp.types.generated_poc.promoted_products import PromotedProducts
|
|
86
87
|
from adcp.types.generated_poc.property import Identifier, Property, PropertyType, Tag
|
|
87
88
|
from adcp.types.generated_poc.protocol_envelope import ProtocolEnvelope
|
|
@@ -100,12 +101,12 @@ from adcp.types.generated_poc.targeting import GeoCountryAnyOfItem, TargetingOve
|
|
|
100
101
|
from adcp.types.generated_poc.task_status import TaskStatus
|
|
101
102
|
from adcp.types.generated_poc.task_type import TaskType
|
|
102
103
|
from adcp.types.generated_poc.tasks_get_request import TasksGetRequest
|
|
103
|
-
from adcp.types.generated_poc.tasks_get_response import Details, Domain, HistoryItem, Progress, TasksGetResponse
|
|
104
|
+
from adcp.types.generated_poc.tasks_get_response import Details, Domain, HistoryItem, Progress, TasksGetResponse, Type
|
|
104
105
|
from adcp.types.generated_poc.tasks_list_request import TasksListRequest
|
|
105
106
|
from adcp.types.generated_poc.tasks_list_response import DomainBreakdown, Task, TasksListResponse
|
|
106
107
|
from adcp.types.generated_poc.text_asset import TextAsset
|
|
107
108
|
from adcp.types.generated_poc.update_media_buy_request import Packages, Packages1, Packages2, Packages3, UpdateMediaBuyRequest, UpdateMediaBuyRequest1, UpdateMediaBuyRequest2
|
|
108
|
-
from adcp.types.generated_poc.update_media_buy_response import
|
|
109
|
+
from adcp.types.generated_poc.update_media_buy_response import UpdateMediaBuyResponse, UpdateMediaBuyResponse1, UpdateMediaBuyResponse2
|
|
109
110
|
from adcp.types.generated_poc.url_asset import UrlAsset, UrlType
|
|
110
111
|
from adcp.types.generated_poc.vast_asset import VastAsset1, VastAsset2, VastVersion
|
|
111
112
|
from adcp.types.generated_poc.vcpm_auction_option import VcpmAuctionPricingOption
|
|
@@ -115,7 +116,6 @@ from adcp.types.generated_poc.webhook_asset import Method, Method1, ResponseType
|
|
|
115
116
|
from adcp.types.generated_poc.webhook_payload import WebhookPayload
|
|
116
117
|
|
|
117
118
|
# Special imports for name collisions (qualified names for types defined in multiple modules)
|
|
118
|
-
from adcp.types.generated_poc.create_media_buy_response import Package as _PackageFromCreateMediaBuyResponse
|
|
119
119
|
from adcp.types.generated_poc.package import Package as _PackageFromPackage
|
|
120
120
|
|
|
121
121
|
# Backward compatibility aliases for renamed types
|
|
@@ -125,24 +125,24 @@ Channels = AdvertisingChannels
|
|
|
125
125
|
__all__ = [
|
|
126
126
|
"Action", "ActivateSignalRequest", "ActivateSignalResponse", "ActivateSignalResponse1",
|
|
127
127
|
"ActivateSignalResponse2", "ActivationKey1", "ActivationKey2", "AdvertisingChannels",
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
128
|
+
"AggregatedTotals", "Asset", "AssetContentType", "AssetSelectors", "AssetType",
|
|
129
|
+
"AssetsRequired", "AssetsRequired1", "AssignedPackage", "Assignments", "AudioAsset",
|
|
130
|
+
"Authentication", "AuthorizedAgents", "AuthorizedAgents1", "AuthorizedAgents2",
|
|
131
131
|
"AuthorizedAgents3", "AuthorizedSalesAgents", "AvailableMetric", "AvailableReportingFrequency",
|
|
132
132
|
"BrandManifest", "BuildCreativeRequest", "BuildCreativeResponse", "BuildCreativeResponse1",
|
|
133
133
|
"BuildCreativeResponse2", "ByPackageItem", "Capability", "CatalogType", "Channels",
|
|
134
|
-
"CoBranding", "Colors", "Contact", "
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"DomainBreakdown", "DoohMetrics", "
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
134
|
+
"CoBranding", "Colors", "Contact", "Country", "CpcPricingOption", "CpcvPricingOption",
|
|
135
|
+
"CpmAuctionPricingOption", "CpmFixedRatePricingOption", "CppPricingOption", "CpvPricingOption",
|
|
136
|
+
"CreateMediaBuyRequest", "CreateMediaBuyResponse", "CreateMediaBuyResponse1",
|
|
137
|
+
"CreateMediaBuyResponse2", "Creative", "CreativeAgent", "CreativeAsset", "CreativeAssignment",
|
|
138
|
+
"CreativeManifest", "CreativePolicy", "CreativeStatus", "CssAsset", "DaastAsset1",
|
|
139
|
+
"DaastAsset2", "DaastVersion", "DailyBreakdownItem", "DeliverTo", "DeliveryMeasurement",
|
|
140
|
+
"DeliveryMetrics", "DeliveryType", "Deployment1", "Deployment2", "Destination1",
|
|
141
|
+
"Destination2", "Details", "Dimensions", "Direction", "Disclaimer", "Domain",
|
|
142
|
+
"DomainBreakdown", "DoohMetrics", "Embedding", "Error", "FeedFormat", "FeedbackSource",
|
|
143
|
+
"Field1", "FieldModel", "Filters", "FlatRatePricingOption", "Fonts", "Format", "FormatCard",
|
|
144
|
+
"FormatCardDetailed", "FormatCategory", "FormatId", "FormatType", "FrequencyCap",
|
|
145
|
+
"FrequencyCapScope", "GeoCountryAnyOfItem", "GetMediaBuyDeliveryRequest",
|
|
146
146
|
"GetMediaBuyDeliveryResponse", "GetProductsRequest", "GetProductsResponse",
|
|
147
147
|
"GetSignalsRequest", "GetSignalsResponse", "HistoryItem", "HtmlAsset", "Identifier",
|
|
148
148
|
"ImageAsset", "Input", "Input2", "Input4", "JavascriptAsset", "LandingPage",
|
|
@@ -163,19 +163,18 @@ __all__ = [
|
|
|
163
163
|
"ProvidePerformanceFeedbackResponse", "ProvidePerformanceFeedbackResponse1",
|
|
164
164
|
"ProvidePerformanceFeedbackResponse2", "PublisherDomain", "PublisherIdentifierTypes",
|
|
165
165
|
"PublisherPropertySelector1", "PublisherPropertySelector2", "PublisherPropertySelector3",
|
|
166
|
-
"PushNotificationConfig", "
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
"
|
|
175
|
-
"
|
|
176
|
-
"
|
|
177
|
-
"
|
|
178
|
-
"
|
|
179
|
-
"
|
|
180
|
-
"_PackageFromCreateMediaBuyResponse", "_PackageFromPackage"
|
|
166
|
+
"PushNotificationConfig", "QuartileData", "QuerySummary", "Render", "ReportingCapabilities",
|
|
167
|
+
"ReportingFrequency", "ReportingPeriod", "ReportingWebhook", "Request", "RequestedMetric",
|
|
168
|
+
"Response", "Response1", "ResponseType", "Responsive", "Results", "Results1", "Scheme",
|
|
169
|
+
"Security", "Signal", "SignalType", "Sort", "SortApplied", "StandardFormatIds", "Status",
|
|
170
|
+
"StatusFilter", "StatusFilterEnum", "StatusSummary", "SubAsset1", "SubAsset2",
|
|
171
|
+
"SyncCreativesRequest", "SyncCreativesResponse", "SyncCreativesResponse1",
|
|
172
|
+
"SyncCreativesResponse2", "Tag", "Tags", "TargetingOverlay", "Task", "TaskStatus", "TaskType",
|
|
173
|
+
"TasksGetRequest", "TasksGetResponse", "TasksListRequest", "TasksListResponse", "TextAsset",
|
|
174
|
+
"Totals", "TrackingEvent", "Type", "Unit", "UpdateFrequency", "UpdateMediaBuyRequest",
|
|
175
|
+
"UpdateMediaBuyRequest1", "UpdateMediaBuyRequest2", "UpdateMediaBuyResponse",
|
|
176
|
+
"UpdateMediaBuyResponse1", "UpdateMediaBuyResponse2", "UrlAsset", "UrlType", "ValidationMode",
|
|
177
|
+
"VastAsset1", "VastAsset2", "VastVersion", "VcpmAuctionPricingOption",
|
|
178
|
+
"VcpmFixedRatePricingOption", "VenueBreakdownItem", "VideoAsset", "ViewThreshold",
|
|
179
|
+
"ViewThreshold1", "WebhookAsset", "WebhookPayload", "_PackageFromPackage"
|
|
181
180
|
]
|
adcp/types/aliases.py
CHANGED
|
@@ -100,14 +100,11 @@ from adcp.types._generated import (
|
|
|
100
100
|
PublisherPropertySelector3 as PublisherPropertiesByTagInternal,
|
|
101
101
|
)
|
|
102
102
|
|
|
103
|
-
#
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
from adcp.types._generated import (
|
|
109
|
-
_PackageFromPackage as FullPackageInternal,
|
|
110
|
-
)
|
|
103
|
+
# Note: Package collision resolved by PR #223
|
|
104
|
+
# Both create_media_buy and update_media_buy now return full Package objects
|
|
105
|
+
# No more separate reference type needed
|
|
106
|
+
# Import Package from _generated (still uses qualified name for internal reasons)
|
|
107
|
+
from adcp.types._generated import _PackageFromPackage as Package
|
|
111
108
|
|
|
112
109
|
# ============================================================================
|
|
113
110
|
# RESPONSE TYPE ALIASES - Success/Error Discriminated Unions
|
|
@@ -242,40 +239,11 @@ TextSubAsset = SubAsset2
|
|
|
242
239
|
# - Used in MediaBuy, update operations, and package management
|
|
243
240
|
# - Has 12+ fields for full package configuration
|
|
244
241
|
#
|
|
245
|
-
#
|
|
246
|
-
#
|
|
247
|
-
#
|
|
248
|
-
#
|
|
249
|
-
#
|
|
250
|
-
# The code generator's "first wins" collision handling exports the Created Package
|
|
251
|
-
# as "Package", shadowing the Full Package. These semantic aliases provide clear,
|
|
252
|
-
# unambiguous names for both types.
|
|
253
|
-
|
|
254
|
-
Package = FullPackageInternal
|
|
255
|
-
"""Complete package configuration with all operational fields.
|
|
256
|
-
|
|
257
|
-
This is the canonical Package type used throughout AdCP for package management.
|
|
258
|
-
|
|
259
|
-
Used in:
|
|
260
|
-
- MediaBuy.packages (list of full package details)
|
|
261
|
-
- Update operations (modifying existing packages)
|
|
262
|
-
- Package management (creating/configuring packages)
|
|
263
|
-
|
|
264
|
-
Fields include: budget, pricing_option_id, product_id, status, bid_price,
|
|
265
|
-
creative_assignments, format_ids_to_provide, impressions, pacing, targeting_overlay
|
|
266
|
-
"""
|
|
267
|
-
|
|
268
|
-
CreatedPackageReference = CreatedPackageInternal
|
|
269
|
-
"""Minimal package reference with only IDs returned after creation.
|
|
270
|
-
|
|
271
|
-
This is NOT the full Package type - it's a lightweight reference returned
|
|
272
|
-
in CreateMediaBuySuccessResponse to indicate which packages were created.
|
|
273
|
-
|
|
274
|
-
Used in:
|
|
275
|
-
- CreateMediaBuySuccessResponse.packages (list of created package references)
|
|
276
|
-
|
|
277
|
-
Fields: buyer_ref, package_id only
|
|
278
|
-
"""
|
|
242
|
+
# Package collision resolved by PR #223:
|
|
243
|
+
# - create-media-buy-response.json now returns full Package objects (not minimal refs)
|
|
244
|
+
# - update-media-buy-response.json already returned full Package objects
|
|
245
|
+
# - Both operations return identical Package structures
|
|
246
|
+
# - Single Package type imported above, no aliases needed
|
|
279
247
|
|
|
280
248
|
# ============================================================================
|
|
281
249
|
# PUBLISHER PROPERTIES ALIASES - Selection Type Discriminated Unions
|
|
@@ -757,7 +725,6 @@ __all__ = [
|
|
|
757
725
|
"UpdateMediaBuySuccessResponse",
|
|
758
726
|
"UpdateMediaBuyErrorResponse",
|
|
759
727
|
# Package type aliases
|
|
760
|
-
"CreatedPackageReference",
|
|
761
728
|
"Package",
|
|
762
729
|
# Publisher properties types
|
|
763
730
|
"PropertyId",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: activate-signal-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -22,10 +22,10 @@ class ActivateSignalRequest(AdCPBaseModel):
|
|
|
22
22
|
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.'
|
|
23
23
|
),
|
|
24
24
|
] = None
|
|
25
|
-
|
|
25
|
+
deployments: Annotated[
|
|
26
26
|
list[destination.Destination1 | destination.Destination2],
|
|
27
27
|
Field(
|
|
28
|
-
description='Target
|
|
28
|
+
description='Target deployment(s) for activation. If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.',
|
|
29
29
|
min_length=1,
|
|
30
30
|
),
|
|
31
31
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: activate-signal-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -24,7 +24,7 @@ class ActivateSignalResponse1(AdCPBaseModel):
|
|
|
24
24
|
] = None
|
|
25
25
|
deployments: Annotated[
|
|
26
26
|
list[deployment.Deployment1 | deployment.Deployment2],
|
|
27
|
-
Field(description='Array of deployment results for each
|
|
27
|
+
Field(description='Array of deployment results for each deployment target'),
|
|
28
28
|
]
|
|
29
29
|
|
|
30
30
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: asset-content-type.json
|
|
3
|
+
# timestamp: 2025-11-20T11:58:34+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AssetContentType(Enum):
|
|
11
|
+
image = 'image'
|
|
12
|
+
video = 'video'
|
|
13
|
+
audio = 'audio'
|
|
14
|
+
text = 'text'
|
|
15
|
+
markdown = 'markdown'
|
|
16
|
+
html = 'html'
|
|
17
|
+
css = 'css'
|
|
18
|
+
javascript = 'javascript'
|
|
19
|
+
vast = 'vast'
|
|
20
|
+
daast = 'daast'
|
|
21
|
+
promoted_offerings = 'promoted_offerings'
|
|
22
|
+
url = 'url'
|
|
23
|
+
webhook = 'webhook'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: brand-manifest.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T11:58:34+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -10,12 +10,7 @@ from typing import Annotated, Any
|
|
|
10
10
|
from adcp.types.base import AdCPBaseModel
|
|
11
11
|
from pydantic import AnyUrl, AwareDatetime, ConfigDict, EmailStr, Field
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
class AssetType(Enum):
|
|
15
|
-
image = 'image'
|
|
16
|
-
video = 'video'
|
|
17
|
-
audio = 'audio'
|
|
18
|
-
text = 'text'
|
|
13
|
+
from . import asset_content_type
|
|
19
14
|
|
|
20
15
|
|
|
21
16
|
class Asset(AdCPBaseModel):
|
|
@@ -23,7 +18,12 @@ class Asset(AdCPBaseModel):
|
|
|
23
18
|
extra='forbid',
|
|
24
19
|
)
|
|
25
20
|
asset_id: Annotated[str, Field(description='Unique identifier for this asset')]
|
|
26
|
-
asset_type: Annotated[
|
|
21
|
+
asset_type: Annotated[
|
|
22
|
+
asset_content_type.AssetContentType,
|
|
23
|
+
Field(
|
|
24
|
+
description='Type of asset. Note: Brand manifests typically contain basic media assets (image, video, audio, text). Code assets (html, javascript, css) and ad markup (vast, daast) are usually not part of brand asset libraries.'
|
|
25
|
+
),
|
|
26
|
+
]
|
|
27
27
|
description: Annotated[str | None, Field(description='Asset description or usage notes')] = None
|
|
28
28
|
duration_seconds: Annotated[
|
|
29
29
|
float | None, Field(description='Video/audio duration in seconds')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: create-media-buy-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T11:58:34+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,15 +9,23 @@ from typing import Annotated, Any
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from . import error
|
|
12
|
+
from . import error, package
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class CreateMediaBuyResponse2(AdCPBaseModel):
|
|
16
16
|
model_config = ConfigDict(
|
|
17
17
|
extra='forbid',
|
|
18
18
|
)
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
context: Annotated[
|
|
20
|
+
dict[str, Any] | None,
|
|
21
|
+
Field(
|
|
22
|
+
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
23
|
+
),
|
|
24
|
+
] = None
|
|
25
|
+
errors: Annotated[
|
|
26
|
+
list[error.Error],
|
|
27
|
+
Field(description='Array of errors explaining why the operation failed', min_length=1),
|
|
28
|
+
]
|
|
21
29
|
|
|
22
30
|
|
|
23
31
|
class CreateMediaBuyResponse1(AdCPBaseModel):
|
|
@@ -37,22 +45,9 @@ class CreateMediaBuyResponse1(AdCPBaseModel):
|
|
|
37
45
|
media_buy_id: Annotated[
|
|
38
46
|
str, Field(description="Publisher's unique identifier for the created media buy")
|
|
39
47
|
]
|
|
40
|
-
packages: Annotated[
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class CreateMediaBuyResponse2(AdCPBaseModel):
|
|
44
|
-
model_config = ConfigDict(
|
|
45
|
-
extra='forbid',
|
|
46
|
-
)
|
|
47
|
-
context: Annotated[
|
|
48
|
-
dict[str, Any] | None,
|
|
49
|
-
Field(
|
|
50
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
51
|
-
),
|
|
52
|
-
] = None
|
|
53
|
-
errors: Annotated[
|
|
54
|
-
list[error.Error],
|
|
55
|
-
Field(description='Array of errors explaining why the operation failed', min_length=1),
|
|
48
|
+
packages: Annotated[
|
|
49
|
+
list[package.Package],
|
|
50
|
+
Field(description='Array of created packages with complete state information'),
|
|
56
51
|
]
|
|
57
52
|
|
|
58
53
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: deployment.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -20,7 +20,7 @@ class Deployment1(AdCPBaseModel):
|
|
|
20
20
|
activation_key: Annotated[
|
|
21
21
|
activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None,
|
|
22
22
|
Field(
|
|
23
|
-
description='The key to use for targeting. Only present if is_live=true AND requester has access to this
|
|
23
|
+
description='The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.',
|
|
24
24
|
title='Activation Key',
|
|
25
25
|
),
|
|
26
26
|
] = None
|
|
@@ -36,7 +36,7 @@ class Deployment1(AdCPBaseModel):
|
|
|
36
36
|
),
|
|
37
37
|
] = None
|
|
38
38
|
is_live: Annotated[
|
|
39
|
-
bool, Field(description='Whether signal is currently active on this
|
|
39
|
+
bool, Field(description='Whether signal is currently active on this deployment')
|
|
40
40
|
]
|
|
41
41
|
platform: Annotated[str, Field(description='Platform identifier for DSPs')]
|
|
42
42
|
type: Annotated[
|
|
@@ -53,11 +53,11 @@ class Deployment2(AdCPBaseModel):
|
|
|
53
53
|
activation_key: Annotated[
|
|
54
54
|
activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None,
|
|
55
55
|
Field(
|
|
56
|
-
description='The key to use for targeting. Only present if is_live=true AND requester has access to this
|
|
56
|
+
description='The key to use for targeting. Only present if is_live=true AND requester has access to this deployment.',
|
|
57
57
|
title='Activation Key',
|
|
58
58
|
),
|
|
59
59
|
] = None
|
|
60
|
-
agent_url: Annotated[AnyUrl, Field(description='URL identifying the
|
|
60
|
+
agent_url: Annotated[AnyUrl, Field(description='URL identifying the deployment agent')]
|
|
61
61
|
deployed_at: Annotated[
|
|
62
62
|
AwareDatetime | None,
|
|
63
63
|
Field(description='Timestamp when activation completed (if is_live=true)'),
|
|
@@ -70,7 +70,7 @@ class Deployment2(AdCPBaseModel):
|
|
|
70
70
|
),
|
|
71
71
|
] = None
|
|
72
72
|
is_live: Annotated[
|
|
73
|
-
bool, Field(description='Whether signal is currently active on this
|
|
73
|
+
bool, Field(description='Whether signal is currently active on this deployment')
|
|
74
74
|
]
|
|
75
75
|
type: Annotated[
|
|
76
76
|
Literal['agent'],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: destination.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@ class Destination1(AdCPBaseModel):
|
|
|
23
23
|
]
|
|
24
24
|
type: Annotated[
|
|
25
25
|
Literal['platform'],
|
|
26
|
-
Field(description='Discriminator indicating this is a platform-based
|
|
26
|
+
Field(description='Discriminator indicating this is a platform-based deployment'),
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
|
|
@@ -35,9 +35,9 @@ class Destination2(AdCPBaseModel):
|
|
|
35
35
|
str | None, Field(description='Optional account identifier on the agent')
|
|
36
36
|
] = None
|
|
37
37
|
agent_url: Annotated[
|
|
38
|
-
AnyUrl, Field(description='URL identifying the
|
|
38
|
+
AnyUrl, Field(description='URL identifying the deployment agent (for sales agents, etc.)')
|
|
39
39
|
]
|
|
40
40
|
type: Annotated[
|
|
41
41
|
Literal['agent'],
|
|
42
|
-
Field(description='Discriminator indicating this is an agent URL-based
|
|
42
|
+
Field(description='Discriminator indicating this is an agent URL-based deployment'),
|
|
43
43
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: format.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T11:58:34+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -10,25 +10,10 @@ from typing import Annotated, Any, Literal
|
|
|
10
10
|
from adcp.types.base import AdCPBaseModel
|
|
11
11
|
from pydantic import AnyUrl, ConfigDict, Field
|
|
12
12
|
|
|
13
|
+
from . import asset_content_type, format_category
|
|
13
14
|
from . import format_id as format_id_1
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
class AssetType(Enum):
|
|
17
|
-
image = 'image'
|
|
18
|
-
video = 'video'
|
|
19
|
-
audio = 'audio'
|
|
20
|
-
vast = 'vast'
|
|
21
|
-
daast = 'daast'
|
|
22
|
-
text = 'text'
|
|
23
|
-
markdown = 'markdown'
|
|
24
|
-
html = 'html'
|
|
25
|
-
css = 'css'
|
|
26
|
-
javascript = 'javascript'
|
|
27
|
-
url = 'url'
|
|
28
|
-
webhook = 'webhook'
|
|
29
|
-
promoted_offerings = 'promoted_offerings'
|
|
30
|
-
|
|
31
|
-
|
|
32
17
|
class AssetsRequired(AdCPBaseModel):
|
|
33
18
|
asset_id: Annotated[
|
|
34
19
|
str,
|
|
@@ -42,7 +27,7 @@ class AssetsRequired(AdCPBaseModel):
|
|
|
42
27
|
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."
|
|
43
28
|
),
|
|
44
29
|
] = None
|
|
45
|
-
asset_type: Annotated[
|
|
30
|
+
asset_type: Annotated[asset_content_type.AssetContentType, Field(description='Type of asset')]
|
|
46
31
|
item_type: Annotated[
|
|
47
32
|
Literal['individual'],
|
|
48
33
|
Field(description='Discriminator indicating this is an individual asset requirement'),
|
|
@@ -64,7 +49,7 @@ class Asset(AdCPBaseModel):
|
|
|
64
49
|
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."
|
|
65
50
|
),
|
|
66
51
|
] = None
|
|
67
|
-
asset_type: Annotated[
|
|
52
|
+
asset_type: Annotated[asset_content_type.AssetContentType, Field(description='Type of asset')]
|
|
68
53
|
required: Annotated[
|
|
69
54
|
bool | None, Field(description='Whether this asset is required in each repetition')
|
|
70
55
|
] = None
|
|
@@ -174,16 +159,6 @@ class Render(AdCPBaseModel):
|
|
|
174
159
|
]
|
|
175
160
|
|
|
176
161
|
|
|
177
|
-
class Type(Enum):
|
|
178
|
-
audio = 'audio'
|
|
179
|
-
video = 'video'
|
|
180
|
-
display = 'display'
|
|
181
|
-
native = 'native'
|
|
182
|
-
dooh = 'dooh'
|
|
183
|
-
rich_media = 'rich_media'
|
|
184
|
-
universal = 'universal'
|
|
185
|
-
|
|
186
|
-
|
|
187
162
|
class Format(AdCPBaseModel):
|
|
188
163
|
model_config = ConfigDict(
|
|
189
164
|
extra='forbid',
|
|
@@ -253,7 +228,7 @@ class Format(AdCPBaseModel):
|
|
|
253
228
|
),
|
|
254
229
|
] = None
|
|
255
230
|
type: Annotated[
|
|
256
|
-
|
|
231
|
+
format_category.FormatCategory,
|
|
257
232
|
Field(
|
|
258
233
|
description='Media type of this format - determines rendering method and asset requirements'
|
|
259
234
|
),
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: format-category.json
|
|
3
|
+
# timestamp: 2025-11-20T11:58:34+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FormatCategory(Enum):
|
|
11
|
+
audio = 'audio'
|
|
12
|
+
video = 'video'
|
|
13
|
+
display = 'display'
|
|
14
|
+
native = 'native'
|
|
15
|
+
dooh = 'dooh'
|
|
16
|
+
rich_media = 'rich_media'
|
|
17
|
+
universal = 'universal'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: get-signals-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -24,10 +24,10 @@ class DeliverTo(AdCPBaseModel):
|
|
|
24
24
|
countries: Annotated[
|
|
25
25
|
list[Country], Field(description='Countries where signals will be used (ISO codes)')
|
|
26
26
|
]
|
|
27
|
-
|
|
27
|
+
deployments: Annotated[
|
|
28
28
|
list[destination.Destination1 | destination.Destination2],
|
|
29
29
|
Field(
|
|
30
|
-
description='List of
|
|
30
|
+
description='List of deployment targets (DSPs, sales agents, etc.). If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.',
|
|
31
31
|
min_length=1,
|
|
32
32
|
),
|
|
33
33
|
]
|
|
@@ -66,7 +66,7 @@ class GetSignalsRequest(AdCPBaseModel):
|
|
|
66
66
|
),
|
|
67
67
|
] = None
|
|
68
68
|
deliver_to: Annotated[
|
|
69
|
-
DeliverTo, Field(description='
|
|
69
|
+
DeliverTo, Field(description='Deployment targets where signals need to be activated')
|
|
70
70
|
]
|
|
71
71
|
filters: Annotated[Filters | None, Field(description='Filters to refine results')] = None
|
|
72
72
|
max_results: Annotated[
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: get-signals-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-20T20:44:40+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -37,7 +37,7 @@ class Signal(AdCPBaseModel):
|
|
|
37
37
|
data_provider: Annotated[str, Field(description='Name of the data provider')]
|
|
38
38
|
deployments: Annotated[
|
|
39
39
|
list[deployment.Deployment1 | deployment.Deployment2],
|
|
40
|
-
Field(description='Array of
|
|
40
|
+
Field(description='Array of deployment targets'),
|
|
41
41
|
]
|
|
42
42
|
description: Annotated[str, Field(description='Detailed signal description')]
|
|
43
43
|
name: Annotated[str, Field(description='Human-readable signal name')]
|