adcp 2.0.0__py3-none-any.whl → 2.2.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 +138 -3
- adcp/py.typed +0 -0
- adcp/types/__init__.py +21 -0
- adcp/types/aliases.py +249 -0
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/METADATA +40 -3
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/RECORD +10 -8
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/WHEEL +0 -0
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.0.0.dist-info → adcp-2.2.0.dist-info}/top_level.txt +0 -0
adcp/__init__.py
CHANGED
|
@@ -50,8 +50,81 @@ from adcp.testing import (
|
|
|
50
50
|
)
|
|
51
51
|
|
|
52
52
|
# Import all generated types - users can import what they need from adcp.types.generated
|
|
53
|
-
from adcp.types import generated
|
|
53
|
+
from adcp.types import aliases, generated
|
|
54
|
+
|
|
55
|
+
# Re-export semantic type aliases for better ergonomics
|
|
56
|
+
from adcp.types.aliases import (
|
|
57
|
+
ActivateSignalErrorResponse,
|
|
58
|
+
ActivateSignalSuccessResponse,
|
|
59
|
+
BothPreviewRender,
|
|
60
|
+
BuildCreativeErrorResponse,
|
|
61
|
+
BuildCreativeSuccessResponse,
|
|
62
|
+
CreateMediaBuyErrorResponse,
|
|
63
|
+
CreateMediaBuySuccessResponse,
|
|
64
|
+
HtmlPreviewRender,
|
|
65
|
+
InlineDaastAsset,
|
|
66
|
+
InlineVastAsset,
|
|
67
|
+
MediaSubAsset,
|
|
68
|
+
PreviewCreativeFormatRequest,
|
|
69
|
+
PreviewCreativeInteractiveResponse,
|
|
70
|
+
PreviewCreativeManifestRequest,
|
|
71
|
+
PreviewCreativeStaticResponse,
|
|
72
|
+
PropertyIdActivationKey,
|
|
73
|
+
PropertyTagActivationKey,
|
|
74
|
+
ProvidePerformanceFeedbackErrorResponse,
|
|
75
|
+
ProvidePerformanceFeedbackSuccessResponse,
|
|
76
|
+
SyncCreativesErrorResponse,
|
|
77
|
+
SyncCreativesSuccessResponse,
|
|
78
|
+
TextSubAsset,
|
|
79
|
+
UpdateMediaBuyErrorResponse,
|
|
80
|
+
UpdateMediaBuyPackagesRequest,
|
|
81
|
+
UpdateMediaBuyPropertiesRequest,
|
|
82
|
+
UpdateMediaBuySuccessResponse,
|
|
83
|
+
UrlDaastAsset,
|
|
84
|
+
UrlPreviewRender,
|
|
85
|
+
UrlVastAsset,
|
|
86
|
+
)
|
|
54
87
|
from adcp.types.core import AgentConfig, Protocol, TaskResult, TaskStatus, WebhookMetadata
|
|
88
|
+
|
|
89
|
+
# Re-export commonly-used request/response types for convenience
|
|
90
|
+
# Users should import from main package (e.g., `from adcp import GetProductsRequest`)
|
|
91
|
+
# rather than internal modules for better API stability
|
|
92
|
+
from adcp.types.generated import (
|
|
93
|
+
# Audience & Targeting
|
|
94
|
+
ActivateSignalRequest,
|
|
95
|
+
ActivateSignalResponse,
|
|
96
|
+
# Creative Operations
|
|
97
|
+
BuildCreativeRequest,
|
|
98
|
+
BuildCreativeResponse,
|
|
99
|
+
# Media Buy Operations
|
|
100
|
+
CreateMediaBuyRequest,
|
|
101
|
+
CreateMediaBuyResponse,
|
|
102
|
+
# Common data types
|
|
103
|
+
Error,
|
|
104
|
+
Format,
|
|
105
|
+
GetMediaBuyDeliveryRequest,
|
|
106
|
+
GetMediaBuyDeliveryResponse,
|
|
107
|
+
GetProductsRequest,
|
|
108
|
+
GetProductsResponse,
|
|
109
|
+
GetSignalsRequest,
|
|
110
|
+
GetSignalsResponse,
|
|
111
|
+
ListAuthorizedPropertiesRequest,
|
|
112
|
+
ListAuthorizedPropertiesResponse,
|
|
113
|
+
ListCreativeFormatsRequest,
|
|
114
|
+
ListCreativeFormatsResponse,
|
|
115
|
+
ListCreativesRequest,
|
|
116
|
+
ListCreativesResponse,
|
|
117
|
+
PreviewCreativeRequest,
|
|
118
|
+
PreviewCreativeResponse,
|
|
119
|
+
Product,
|
|
120
|
+
Property,
|
|
121
|
+
ProvidePerformanceFeedbackRequest,
|
|
122
|
+
ProvidePerformanceFeedbackResponse,
|
|
123
|
+
SyncCreativesRequest,
|
|
124
|
+
SyncCreativesResponse,
|
|
125
|
+
UpdateMediaBuyRequest,
|
|
126
|
+
UpdateMediaBuyResponse,
|
|
127
|
+
)
|
|
55
128
|
from adcp.types.generated import TaskStatus as GeneratedTaskStatus
|
|
56
129
|
from adcp.validation import (
|
|
57
130
|
ValidationError,
|
|
@@ -61,7 +134,7 @@ from adcp.validation import (
|
|
|
61
134
|
validate_publisher_properties_item,
|
|
62
135
|
)
|
|
63
136
|
|
|
64
|
-
__version__ = "2.
|
|
137
|
+
__version__ = "2.2.0"
|
|
65
138
|
|
|
66
139
|
__all__ = [
|
|
67
140
|
# Client classes
|
|
@@ -73,6 +146,37 @@ __all__ = [
|
|
|
73
146
|
"TaskResult",
|
|
74
147
|
"TaskStatus",
|
|
75
148
|
"WebhookMetadata",
|
|
149
|
+
# Common request/response types (re-exported for convenience)
|
|
150
|
+
"CreateMediaBuyRequest",
|
|
151
|
+
"CreateMediaBuyResponse",
|
|
152
|
+
"GetMediaBuyDeliveryRequest",
|
|
153
|
+
"GetMediaBuyDeliveryResponse",
|
|
154
|
+
"GetProductsRequest",
|
|
155
|
+
"GetProductsResponse",
|
|
156
|
+
"UpdateMediaBuyRequest",
|
|
157
|
+
"UpdateMediaBuyResponse",
|
|
158
|
+
"BuildCreativeRequest",
|
|
159
|
+
"BuildCreativeResponse",
|
|
160
|
+
"ListCreativeFormatsRequest",
|
|
161
|
+
"ListCreativeFormatsResponse",
|
|
162
|
+
"ListCreativesRequest",
|
|
163
|
+
"ListCreativesResponse",
|
|
164
|
+
"PreviewCreativeRequest",
|
|
165
|
+
"PreviewCreativeResponse",
|
|
166
|
+
"SyncCreativesRequest",
|
|
167
|
+
"SyncCreativesResponse",
|
|
168
|
+
"ActivateSignalRequest",
|
|
169
|
+
"ActivateSignalResponse",
|
|
170
|
+
"GetSignalsRequest",
|
|
171
|
+
"GetSignalsResponse",
|
|
172
|
+
"ListAuthorizedPropertiesRequest",
|
|
173
|
+
"ListAuthorizedPropertiesResponse",
|
|
174
|
+
"ProvidePerformanceFeedbackRequest",
|
|
175
|
+
"ProvidePerformanceFeedbackResponse",
|
|
176
|
+
"Error",
|
|
177
|
+
"Format",
|
|
178
|
+
"Product",
|
|
179
|
+
"Property",
|
|
76
180
|
# Adagents validation
|
|
77
181
|
"fetch_adagents",
|
|
78
182
|
"verify_agent_authorization",
|
|
@@ -114,7 +218,38 @@ __all__ = [
|
|
|
114
218
|
"validate_agent_authorization",
|
|
115
219
|
"validate_product",
|
|
116
220
|
"validate_publisher_properties_item",
|
|
117
|
-
# Generated types
|
|
221
|
+
# Generated types modules
|
|
118
222
|
"generated",
|
|
223
|
+
"aliases",
|
|
119
224
|
"GeneratedTaskStatus",
|
|
225
|
+
# Semantic type aliases (for better API ergonomics)
|
|
226
|
+
"ActivateSignalSuccessResponse",
|
|
227
|
+
"ActivateSignalErrorResponse",
|
|
228
|
+
"BothPreviewRender",
|
|
229
|
+
"BuildCreativeSuccessResponse",
|
|
230
|
+
"BuildCreativeErrorResponse",
|
|
231
|
+
"CreateMediaBuySuccessResponse",
|
|
232
|
+
"CreateMediaBuyErrorResponse",
|
|
233
|
+
"HtmlPreviewRender",
|
|
234
|
+
"InlineDaastAsset",
|
|
235
|
+
"InlineVastAsset",
|
|
236
|
+
"MediaSubAsset",
|
|
237
|
+
"PreviewCreativeFormatRequest",
|
|
238
|
+
"PreviewCreativeManifestRequest",
|
|
239
|
+
"PreviewCreativeStaticResponse",
|
|
240
|
+
"PreviewCreativeInteractiveResponse",
|
|
241
|
+
"PropertyIdActivationKey",
|
|
242
|
+
"PropertyTagActivationKey",
|
|
243
|
+
"ProvidePerformanceFeedbackSuccessResponse",
|
|
244
|
+
"ProvidePerformanceFeedbackErrorResponse",
|
|
245
|
+
"SyncCreativesSuccessResponse",
|
|
246
|
+
"SyncCreativesErrorResponse",
|
|
247
|
+
"TextSubAsset",
|
|
248
|
+
"UpdateMediaBuySuccessResponse",
|
|
249
|
+
"UpdateMediaBuyErrorResponse",
|
|
250
|
+
"UpdateMediaBuyPackagesRequest",
|
|
251
|
+
"UpdateMediaBuyPropertiesRequest",
|
|
252
|
+
"UrlDaastAsset",
|
|
253
|
+
"UrlPreviewRender",
|
|
254
|
+
"UrlVastAsset",
|
|
120
255
|
]
|
adcp/py.typed
ADDED
|
File without changes
|
adcp/types/__init__.py
CHANGED
|
@@ -2,6 +2,17 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
"""Type definitions for AdCP client."""
|
|
4
4
|
|
|
5
|
+
from adcp.types.aliases import (
|
|
6
|
+
BothPreviewRender,
|
|
7
|
+
HtmlPreviewRender,
|
|
8
|
+
InlineDaastAsset,
|
|
9
|
+
InlineVastAsset,
|
|
10
|
+
MediaSubAsset,
|
|
11
|
+
TextSubAsset,
|
|
12
|
+
UrlDaastAsset,
|
|
13
|
+
UrlPreviewRender,
|
|
14
|
+
UrlVastAsset,
|
|
15
|
+
)
|
|
5
16
|
from adcp.types.base import AdCPBaseModel
|
|
6
17
|
from adcp.types.core import (
|
|
7
18
|
Activity,
|
|
@@ -24,4 +35,14 @@ __all__ = [
|
|
|
24
35
|
"Activity",
|
|
25
36
|
"ActivityType",
|
|
26
37
|
"DebugInfo",
|
|
38
|
+
# Semantic aliases for discriminated unions
|
|
39
|
+
"BothPreviewRender",
|
|
40
|
+
"HtmlPreviewRender",
|
|
41
|
+
"InlineDaastAsset",
|
|
42
|
+
"InlineVastAsset",
|
|
43
|
+
"MediaSubAsset",
|
|
44
|
+
"TextSubAsset",
|
|
45
|
+
"UrlDaastAsset",
|
|
46
|
+
"UrlPreviewRender",
|
|
47
|
+
"UrlVastAsset",
|
|
27
48
|
]
|
adcp/types/aliases.py
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"""Semantic type aliases for generated AdCP types.
|
|
2
|
+
|
|
3
|
+
This module provides user-friendly aliases for generated types where the
|
|
4
|
+
auto-generated names don't match user expectations from reading the spec.
|
|
5
|
+
|
|
6
|
+
The code generator (datamodel-code-generator) creates numbered suffixes for
|
|
7
|
+
discriminated union variants (e.g., Response1, Response2), but users expect
|
|
8
|
+
semantic names (e.g., SuccessResponse, ErrorResponse).
|
|
9
|
+
|
|
10
|
+
Categories of aliases:
|
|
11
|
+
|
|
12
|
+
1. Discriminated Union Response Variants
|
|
13
|
+
- Success/Error cases for API responses
|
|
14
|
+
- Named to match the semantic meaning from the spec
|
|
15
|
+
|
|
16
|
+
2. Preview/Render Types
|
|
17
|
+
- Input/Output/Request/Response variants
|
|
18
|
+
- Numbered types mapped to their semantic purpose
|
|
19
|
+
|
|
20
|
+
3. Activation Keys
|
|
21
|
+
- Signal activation key variants
|
|
22
|
+
|
|
23
|
+
DO NOT EDIT the generated types directly - they are regenerated from schemas.
|
|
24
|
+
Add aliases here for any types where the generated name is unclear.
|
|
25
|
+
|
|
26
|
+
Validation:
|
|
27
|
+
This module will raise ImportError at import time if any of the referenced
|
|
28
|
+
generated types do not exist. This ensures that schema changes are caught
|
|
29
|
+
immediately rather than at runtime when users try to use the aliases.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
from __future__ import annotations
|
|
33
|
+
|
|
34
|
+
# Import all generated types that need semantic aliases
|
|
35
|
+
from adcp.types.generated import (
|
|
36
|
+
# Activation responses
|
|
37
|
+
ActivateSignalResponse1,
|
|
38
|
+
ActivateSignalResponse2,
|
|
39
|
+
# Activation keys
|
|
40
|
+
ActivationKey1,
|
|
41
|
+
ActivationKey2,
|
|
42
|
+
# Build creative responses
|
|
43
|
+
BuildCreativeResponse1,
|
|
44
|
+
BuildCreativeResponse2,
|
|
45
|
+
# Create media buy responses
|
|
46
|
+
CreateMediaBuyResponse1,
|
|
47
|
+
CreateMediaBuyResponse2,
|
|
48
|
+
# DAAST assets
|
|
49
|
+
DaastAsset1,
|
|
50
|
+
DaastAsset2,
|
|
51
|
+
# Preview creative requests
|
|
52
|
+
PreviewCreativeRequest1,
|
|
53
|
+
PreviewCreativeRequest2,
|
|
54
|
+
# Preview creative responses
|
|
55
|
+
PreviewCreativeResponse1,
|
|
56
|
+
PreviewCreativeResponse2,
|
|
57
|
+
# Preview renders
|
|
58
|
+
PreviewRender1,
|
|
59
|
+
PreviewRender2,
|
|
60
|
+
PreviewRender3,
|
|
61
|
+
# Performance feedback responses
|
|
62
|
+
ProvidePerformanceFeedbackResponse1,
|
|
63
|
+
ProvidePerformanceFeedbackResponse2,
|
|
64
|
+
# SubAssets
|
|
65
|
+
SubAsset1,
|
|
66
|
+
SubAsset2,
|
|
67
|
+
# Sync creatives responses
|
|
68
|
+
SyncCreativesResponse1,
|
|
69
|
+
SyncCreativesResponse2,
|
|
70
|
+
# Update media buy requests
|
|
71
|
+
UpdateMediaBuyRequest1,
|
|
72
|
+
UpdateMediaBuyRequest2,
|
|
73
|
+
# Update media buy responses
|
|
74
|
+
UpdateMediaBuyResponse1,
|
|
75
|
+
UpdateMediaBuyResponse2,
|
|
76
|
+
# VAST assets
|
|
77
|
+
VastAsset1,
|
|
78
|
+
VastAsset2,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# ============================================================================
|
|
82
|
+
# RESPONSE TYPE ALIASES - Success/Error Discriminated Unions
|
|
83
|
+
# ============================================================================
|
|
84
|
+
# These are atomic operations where the response is EITHER success OR error,
|
|
85
|
+
# never both. The numbered suffixes from the generator don't convey this
|
|
86
|
+
# critical semantic distinction.
|
|
87
|
+
|
|
88
|
+
# Activate Signal Response Variants
|
|
89
|
+
ActivateSignalSuccessResponse = ActivateSignalResponse1
|
|
90
|
+
"""Success response - signal activation succeeded."""
|
|
91
|
+
|
|
92
|
+
ActivateSignalErrorResponse = ActivateSignalResponse2
|
|
93
|
+
"""Error response - signal activation failed."""
|
|
94
|
+
|
|
95
|
+
# Build Creative Response Variants
|
|
96
|
+
BuildCreativeSuccessResponse = BuildCreativeResponse1
|
|
97
|
+
"""Success response - creative built successfully, manifest returned."""
|
|
98
|
+
|
|
99
|
+
BuildCreativeErrorResponse = BuildCreativeResponse2
|
|
100
|
+
"""Error response - creative build failed, no manifest created."""
|
|
101
|
+
|
|
102
|
+
# Create Media Buy Response Variants
|
|
103
|
+
CreateMediaBuySuccessResponse = CreateMediaBuyResponse1
|
|
104
|
+
"""Success response - media buy created successfully with media_buy_id."""
|
|
105
|
+
|
|
106
|
+
CreateMediaBuyErrorResponse = CreateMediaBuyResponse2
|
|
107
|
+
"""Error response - media buy creation failed, no media buy created."""
|
|
108
|
+
|
|
109
|
+
# Performance Feedback Response Variants
|
|
110
|
+
ProvidePerformanceFeedbackSuccessResponse = ProvidePerformanceFeedbackResponse1
|
|
111
|
+
"""Success response - performance feedback accepted."""
|
|
112
|
+
|
|
113
|
+
ProvidePerformanceFeedbackErrorResponse = ProvidePerformanceFeedbackResponse2
|
|
114
|
+
"""Error response - performance feedback rejected."""
|
|
115
|
+
|
|
116
|
+
# Sync Creatives Response Variants
|
|
117
|
+
SyncCreativesSuccessResponse = SyncCreativesResponse1
|
|
118
|
+
"""Success response - sync operation processed creatives."""
|
|
119
|
+
|
|
120
|
+
SyncCreativesErrorResponse = SyncCreativesResponse2
|
|
121
|
+
"""Error response - sync operation failed."""
|
|
122
|
+
|
|
123
|
+
# Update Media Buy Response Variants
|
|
124
|
+
UpdateMediaBuySuccessResponse = UpdateMediaBuyResponse1
|
|
125
|
+
"""Success response - media buy updated successfully."""
|
|
126
|
+
|
|
127
|
+
UpdateMediaBuyErrorResponse = UpdateMediaBuyResponse2
|
|
128
|
+
"""Error response - media buy update failed, no changes applied."""
|
|
129
|
+
|
|
130
|
+
# ============================================================================
|
|
131
|
+
# REQUEST TYPE ALIASES - Operation Variants
|
|
132
|
+
# ============================================================================
|
|
133
|
+
|
|
134
|
+
# Preview Creative Request Variants
|
|
135
|
+
PreviewCreativeFormatRequest = PreviewCreativeRequest1
|
|
136
|
+
"""Preview request using format_id to identify creative format."""
|
|
137
|
+
|
|
138
|
+
PreviewCreativeManifestRequest = PreviewCreativeRequest2
|
|
139
|
+
"""Preview request using creative_manifest_url to identify creative."""
|
|
140
|
+
|
|
141
|
+
# Update Media Buy Request Variants
|
|
142
|
+
UpdateMediaBuyPackagesRequest = UpdateMediaBuyRequest1
|
|
143
|
+
"""Update request modifying packages in the media buy."""
|
|
144
|
+
|
|
145
|
+
UpdateMediaBuyPropertiesRequest = UpdateMediaBuyRequest2
|
|
146
|
+
"""Update request modifying media buy properties (not packages)."""
|
|
147
|
+
|
|
148
|
+
# ============================================================================
|
|
149
|
+
# ACTIVATION KEY ALIASES
|
|
150
|
+
# ============================================================================
|
|
151
|
+
|
|
152
|
+
PropertyIdActivationKey = ActivationKey1
|
|
153
|
+
"""Activation key using property_id for identification."""
|
|
154
|
+
|
|
155
|
+
PropertyTagActivationKey = ActivationKey2
|
|
156
|
+
"""Activation key using property_tags for identification."""
|
|
157
|
+
|
|
158
|
+
# ============================================================================
|
|
159
|
+
# PREVIEW/RENDER TYPE ALIASES
|
|
160
|
+
# ============================================================================
|
|
161
|
+
|
|
162
|
+
# Preview Creative Response Variants
|
|
163
|
+
PreviewCreativeStaticResponse = PreviewCreativeResponse1
|
|
164
|
+
"""Preview response with static renders (image/HTML snapshots)."""
|
|
165
|
+
|
|
166
|
+
PreviewCreativeInteractiveResponse = PreviewCreativeResponse2
|
|
167
|
+
"""Preview response with interactive renders (iframe embedding)."""
|
|
168
|
+
|
|
169
|
+
# Preview Render Variants (discriminated by output_format)
|
|
170
|
+
UrlPreviewRender = PreviewRender1
|
|
171
|
+
"""Preview render with output_format='url' - provides preview_url for iframe embedding."""
|
|
172
|
+
|
|
173
|
+
HtmlPreviewRender = PreviewRender2
|
|
174
|
+
"""Preview render with output_format='html' - provides preview_html for direct embedding."""
|
|
175
|
+
|
|
176
|
+
BothPreviewRender = PreviewRender3
|
|
177
|
+
"""Preview render with output_format='both' - provides both preview_url and preview_html."""
|
|
178
|
+
|
|
179
|
+
# ============================================================================
|
|
180
|
+
# ASSET TYPE ALIASES - Delivery & Kind Discriminated Unions
|
|
181
|
+
# ============================================================================
|
|
182
|
+
|
|
183
|
+
# VAST Asset Variants (discriminated by delivery_type)
|
|
184
|
+
UrlVastAsset = VastAsset1
|
|
185
|
+
"""VAST asset delivered via URL endpoint - delivery_type='url'."""
|
|
186
|
+
|
|
187
|
+
InlineVastAsset = VastAsset2
|
|
188
|
+
"""VAST asset with inline XML content - delivery_type='inline'."""
|
|
189
|
+
|
|
190
|
+
# DAAST Asset Variants (discriminated by delivery_type)
|
|
191
|
+
UrlDaastAsset = DaastAsset1
|
|
192
|
+
"""DAAST asset delivered via URL endpoint - delivery_type='url'."""
|
|
193
|
+
|
|
194
|
+
InlineDaastAsset = DaastAsset2
|
|
195
|
+
"""DAAST asset with inline XML content - delivery_type='inline'."""
|
|
196
|
+
|
|
197
|
+
# SubAsset Variants (discriminated by asset_kind)
|
|
198
|
+
MediaSubAsset = SubAsset1
|
|
199
|
+
"""SubAsset for media content (images, videos) - asset_kind='media', provides content_uri."""
|
|
200
|
+
|
|
201
|
+
TextSubAsset = SubAsset2
|
|
202
|
+
"""SubAsset for text content (headlines, body text) - asset_kind='text', provides content."""
|
|
203
|
+
|
|
204
|
+
# ============================================================================
|
|
205
|
+
# EXPORTS
|
|
206
|
+
# ============================================================================
|
|
207
|
+
|
|
208
|
+
__all__ = [
|
|
209
|
+
# Activation responses
|
|
210
|
+
"ActivateSignalSuccessResponse",
|
|
211
|
+
"ActivateSignalErrorResponse",
|
|
212
|
+
# Activation keys
|
|
213
|
+
"PropertyIdActivationKey",
|
|
214
|
+
"PropertyTagActivationKey",
|
|
215
|
+
# Asset type aliases
|
|
216
|
+
"BothPreviewRender",
|
|
217
|
+
"HtmlPreviewRender",
|
|
218
|
+
"InlineDaastAsset",
|
|
219
|
+
"InlineVastAsset",
|
|
220
|
+
"MediaSubAsset",
|
|
221
|
+
"TextSubAsset",
|
|
222
|
+
"UrlDaastAsset",
|
|
223
|
+
"UrlPreviewRender",
|
|
224
|
+
"UrlVastAsset",
|
|
225
|
+
# Build creative responses
|
|
226
|
+
"BuildCreativeSuccessResponse",
|
|
227
|
+
"BuildCreativeErrorResponse",
|
|
228
|
+
# Create media buy responses
|
|
229
|
+
"CreateMediaBuySuccessResponse",
|
|
230
|
+
"CreateMediaBuyErrorResponse",
|
|
231
|
+
# Performance feedback responses
|
|
232
|
+
"ProvidePerformanceFeedbackSuccessResponse",
|
|
233
|
+
"ProvidePerformanceFeedbackErrorResponse",
|
|
234
|
+
# Preview creative requests
|
|
235
|
+
"PreviewCreativeFormatRequest",
|
|
236
|
+
"PreviewCreativeManifestRequest",
|
|
237
|
+
# Preview creative responses
|
|
238
|
+
"PreviewCreativeStaticResponse",
|
|
239
|
+
"PreviewCreativeInteractiveResponse",
|
|
240
|
+
# Sync creatives responses
|
|
241
|
+
"SyncCreativesSuccessResponse",
|
|
242
|
+
"SyncCreativesErrorResponse",
|
|
243
|
+
# Update media buy requests
|
|
244
|
+
"UpdateMediaBuyPackagesRequest",
|
|
245
|
+
"UpdateMediaBuyPropertiesRequest",
|
|
246
|
+
# Update media buy responses
|
|
247
|
+
"UpdateMediaBuySuccessResponse",
|
|
248
|
+
"UpdateMediaBuyErrorResponse",
|
|
249
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: adcp
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: Official Python client for the Ad Context Protocol (AdCP)
|
|
5
5
|
Author-email: AdCP Community <maintainers@adcontextprotocol.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -94,7 +94,7 @@ print(products.products[0].name)
|
|
|
94
94
|
**Standard API** (`client.*`) - Recommended for production:
|
|
95
95
|
```python
|
|
96
96
|
from adcp.testing import test_agent
|
|
97
|
-
from adcp
|
|
97
|
+
from adcp import GetProductsRequest
|
|
98
98
|
|
|
99
99
|
# Explicit request objects and TaskResult wrapper
|
|
100
100
|
request = GetProductsRequest(brief='Coffee brands')
|
|
@@ -124,6 +124,8 @@ Pre-configured agents (all include `.simple` accessor):
|
|
|
124
124
|
|
|
125
125
|
See [examples/simple_api_demo.py](examples/simple_api_demo.py) for a complete comparison.
|
|
126
126
|
|
|
127
|
+
> **Tip**: Import types from the main `adcp` package (e.g., `from adcp import GetProductsRequest`) rather than `adcp.types.generated` for better API stability.
|
|
128
|
+
|
|
127
129
|
## Quick Start: Distributed Operations
|
|
128
130
|
|
|
129
131
|
For production use, configure your own agents:
|
|
@@ -187,7 +189,7 @@ from adcp.testing import (
|
|
|
187
189
|
test_agent_no_auth, test_agent_a2a_no_auth,
|
|
188
190
|
creative_agent, test_agent_client, create_test_agent
|
|
189
191
|
)
|
|
190
|
-
from adcp
|
|
192
|
+
from adcp import GetProductsRequest, PreviewCreativeRequest
|
|
191
193
|
|
|
192
194
|
# 1. Single agent with authentication (MCP)
|
|
193
195
|
result = await test_agent.get_products(
|
|
@@ -243,6 +245,7 @@ client = ADCPClient(config)
|
|
|
243
245
|
- **Auto-detection**: Automatically detect which protocol an agent uses
|
|
244
246
|
|
|
245
247
|
### Type Safety
|
|
248
|
+
|
|
246
249
|
Full type hints with Pydantic validation and auto-generated types from the AdCP spec:
|
|
247
250
|
|
|
248
251
|
```python
|
|
@@ -258,6 +261,40 @@ if result.success:
|
|
|
258
261
|
print(product.name, product.pricing_options) # Full IDE autocomplete!
|
|
259
262
|
```
|
|
260
263
|
|
|
264
|
+
#### Semantic Type Aliases
|
|
265
|
+
|
|
266
|
+
For discriminated union types (success/error responses), use semantic aliases for clearer code:
|
|
267
|
+
|
|
268
|
+
```python
|
|
269
|
+
from adcp import (
|
|
270
|
+
CreateMediaBuySuccessResponse, # Clear: this is the success case
|
|
271
|
+
CreateMediaBuyErrorResponse, # Clear: this is the error case
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
def handle_response(
|
|
275
|
+
response: CreateMediaBuySuccessResponse | CreateMediaBuyErrorResponse
|
|
276
|
+
) -> None:
|
|
277
|
+
if isinstance(response, CreateMediaBuySuccessResponse):
|
|
278
|
+
print(f"✅ Media buy created: {response.media_buy_id}")
|
|
279
|
+
else:
|
|
280
|
+
print(f"❌ Errors: {response.errors}")
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Available semantic aliases:**
|
|
284
|
+
- Response types: `*SuccessResponse` / `*ErrorResponse` (e.g., `CreateMediaBuySuccessResponse`)
|
|
285
|
+
- Request variants: `*FormatRequest` / `*ManifestRequest` (e.g., `PreviewCreativeFormatRequest`)
|
|
286
|
+
- Preview renders: `PreviewRenderImage` / `PreviewRenderHtml` / `PreviewRenderIframe`
|
|
287
|
+
- Activation keys: `PropertyIdActivationKey` / `PropertyTagActivationKey`
|
|
288
|
+
|
|
289
|
+
See `examples/type_aliases_demo.py` for more examples.
|
|
290
|
+
|
|
291
|
+
**Import guidelines:**
|
|
292
|
+
- ✅ **DO**: Import from main package: `from adcp import GetProductsRequest`
|
|
293
|
+
- ✅ **DO**: Use semantic aliases: `from adcp import CreateMediaBuySuccessResponse`
|
|
294
|
+
- ⚠️ **AVOID**: Import from internal modules: `from adcp.types.generated import CreateMediaBuyResponse1`
|
|
295
|
+
|
|
296
|
+
The main package exports provide a stable API while internal generated types may change.
|
|
297
|
+
|
|
261
298
|
### Multi-Agent Operations
|
|
262
299
|
Execute across multiple agents simultaneously:
|
|
263
300
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
adcp/__init__.py,sha256=
|
|
1
|
+
adcp/__init__.py,sha256=mDoTsi0Y6GDfXN5NDZeWw1KcN-pCK8hQlIk43t_MFZQ,7106
|
|
2
2
|
adcp/__main__.py,sha256=Avy_C71rruh2lOuojvuXDj09tkFOaek74nJ-dbx25Sw,12838
|
|
3
3
|
adcp/adagents.py,sha256=NjtK_3FmvikG4vlCGPxQwFYl-iOML09uIdtqT2lAWEA,17669
|
|
4
4
|
adcp/client.py,sha256=KFsNaHNYuapMLpjfqMbycDkEc147gEpxpwXzVuZ1y2o,28802
|
|
5
5
|
adcp/config.py,sha256=Vsy7ZPOI8G3fB_i5Nk-CHbC7wdasCUWuKlos0fwA0kY,2017
|
|
6
6
|
adcp/exceptions.py,sha256=1aZEWpaM92OxD2jl9yKsqJp5ReSWaj0S0DFhxChhLlA,6732
|
|
7
|
+
adcp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
8
|
adcp/simple.py,sha256=FgPYWT32BNXkQz07r2x2gXgOmOikWLi88SzN5UIVSiU,10440
|
|
8
9
|
adcp/validation.py,sha256=NsTwTQbLmd1Z1bMcztR1llJB21ai1xuw5aVrca7LoE8,6793
|
|
9
10
|
adcp/protocols/__init__.py,sha256=6UFwACQ0QadBUzy17wUROHqsJDp8ztPW2jzyl53Zh_g,262
|
|
@@ -12,7 +13,8 @@ adcp/protocols/base.py,sha256=vBHD23Fzl_CCk_Gy9nvSbBYopcJlYkYyzoz-rhI8wHg,5214
|
|
|
12
13
|
adcp/protocols/mcp.py,sha256=d9uSpGd0BKvQ0JxztkfDvHwoDrDYhuiw5oivpYOAbmM,16647
|
|
13
14
|
adcp/testing/__init__.py,sha256=ZWp_floWjVZfy8RBG5v_FUXQ8YbN7xjXvVcX-_zl_HU,1416
|
|
14
15
|
adcp/testing/test_helpers.py,sha256=4n8fZYy1cVpjZpFW2SxBzpC8fmY-MBFrzY4tIPqe4rQ,10028
|
|
15
|
-
adcp/types/__init__.py,sha256=
|
|
16
|
+
adcp/types/__init__.py,sha256=sPYsBc__XT4aa3JZGOVs-b9H9jWncQKHIV5LZnkczds,936
|
|
17
|
+
adcp/types/aliases.py,sha256=bekwR6ZGqduVhIWjaICOzh8K6Jk_gq5dGIIi8AKv9Mk,9012
|
|
16
18
|
adcp/types/base.py,sha256=QoEuVfI4yzefup0dc2KN11AcJTbcGxRep7xOw5hXfs8,837
|
|
17
19
|
adcp/types/core.py,sha256=RXkKCWCXS9BVJTNpe3Opm5O1I_LaQPMUuVwa-ipvS1Q,4839
|
|
18
20
|
adcp/types/generated.py,sha256=EGwfnyTr5bgLGRS0TAdsoipX__BPMEwPfxto8quPbYw,17218
|
|
@@ -122,9 +124,9 @@ adcp/utils/__init__.py,sha256=uetvSJB19CjQbtwEYZiTnumJG11GsafQmXm5eR3hL7E,153
|
|
|
122
124
|
adcp/utils/operation_id.py,sha256=wQX9Bb5epXzRq23xoeYPTqzu5yLuhshg7lKJZihcM2k,294
|
|
123
125
|
adcp/utils/preview_cache.py,sha256=HbYgHMLIvDddFD6HSupGUze9YLsNOBPlbwlyogUOMcs,18498
|
|
124
126
|
adcp/utils/response_parser.py,sha256=uPk2vIH-RYZmq7y3i8lC4HTMQ3FfKdlgXKTjgJ1955M,6253
|
|
125
|
-
adcp-2.
|
|
126
|
-
adcp-2.
|
|
127
|
-
adcp-2.
|
|
128
|
-
adcp-2.
|
|
129
|
-
adcp-2.
|
|
130
|
-
adcp-2.
|
|
127
|
+
adcp-2.2.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
|
|
128
|
+
adcp-2.2.0.dist-info/METADATA,sha256=Soj0JCMNkPiQX-djRIxHWr4BMIEfiXcvHatHRWKEGus,23017
|
|
129
|
+
adcp-2.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
130
|
+
adcp-2.2.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
|
|
131
|
+
adcp-2.2.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
|
|
132
|
+
adcp-2.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|