adcp 1.6.1__py3-none-any.whl → 2.1.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 +110 -189
- adcp/adagents.py +11 -12
- adcp/client.py +16 -11
- adcp/py.typed +0 -0
- adcp/types/aliases.py +209 -0
- adcp/types/generated.py +540 -1134
- adcp/types/generated_poc/__init__.py +3 -0
- adcp/types/generated_poc/activate_signal_request.py +34 -0
- adcp/types/generated_poc/activate_signal_response.py +57 -0
- adcp/types/generated_poc/activation_key.py +30 -0
- adcp/types/generated_poc/adagents.py +266 -0
- adcp/types/generated_poc/asset_type.py +100 -0
- adcp/types/generated_poc/audio_asset.py +26 -0
- adcp/types/generated_poc/brand_manifest.py +260 -0
- adcp/types/generated_poc/brand_manifest_ref.py +361 -0
- adcp/types/generated_poc/build_creative_request.py +43 -0
- adcp/types/generated_poc/build_creative_response.py +57 -0
- adcp/types/generated_poc/channels.py +19 -0
- adcp/types/generated_poc/cpc_option.py +39 -0
- adcp/types/generated_poc/cpcv_option.py +41 -0
- adcp/types/generated_poc/cpm_auction_option.py +54 -0
- adcp/types/generated_poc/cpm_fixed_option.py +39 -0
- adcp/types/generated_poc/cpp_option.py +60 -0
- adcp/types/generated_poc/cpv_option.py +73 -0
- adcp/types/generated_poc/create_media_buy_request.py +96 -0
- adcp/types/generated_poc/create_media_buy_response.py +66 -0
- adcp/types/generated_poc/creative_asset.py +83 -0
- adcp/types/generated_poc/creative_assignment.py +27 -0
- adcp/types/generated_poc/creative_manifest.py +61 -0
- adcp/types/generated_poc/creative_policy.py +34 -0
- adcp/types/generated_poc/creative_status.py +14 -0
- adcp/types/generated_poc/css_asset.py +20 -0
- adcp/types/generated_poc/daast_asset.py +76 -0
- adcp/types/generated_poc/delivery_metrics.py +111 -0
- adcp/types/generated_poc/delivery_type.py +12 -0
- adcp/types/generated_poc/deployment.py +78 -0
- adcp/types/generated_poc/destination.py +43 -0
- adcp/types/generated_poc/error.py +29 -0
- adcp/types/generated_poc/flat_rate_option.py +93 -0
- adcp/types/generated_poc/format.py +260 -0
- adcp/types/generated_poc/format_id.py +29 -0
- adcp/types/generated_poc/frequency_cap.py +19 -0
- adcp/types/generated_poc/frequency_cap_scope.py +16 -0
- adcp/types/generated_poc/get_media_buy_delivery_request.py +65 -0
- adcp/types/generated_poc/get_media_buy_delivery_response.py +220 -0
- adcp/types/generated_poc/get_products_request.py +83 -0
- adcp/types/generated_poc/get_products_response.py +29 -0
- adcp/types/generated_poc/get_signals_request.py +77 -0
- adcp/types/generated_poc/get_signals_response.py +65 -0
- adcp/types/generated_poc/html_asset.py +18 -0
- adcp/types/generated_poc/identifier_types.py +29 -0
- adcp/types/generated_poc/image_asset.py +23 -0
- adcp/types/generated_poc/index.py +17 -0
- adcp/types/generated_poc/javascript_asset.py +25 -0
- adcp/types/generated_poc/list_authorized_properties_request.py +39 -0
- adcp/types/generated_poc/list_authorized_properties_response.py +85 -0
- adcp/types/generated_poc/list_creative_formats_request.py +93 -0
- adcp/types/generated_poc/list_creative_formats_response.py +63 -0
- adcp/types/generated_poc/list_creatives_request.py +154 -0
- adcp/types/generated_poc/list_creatives_response.py +234 -0
- adcp/types/generated_poc/markdown_asset.py +43 -0
- adcp/types/generated_poc/measurement.py +40 -0
- adcp/types/generated_poc/media_buy.py +37 -0
- adcp/types/generated_poc/media_buy_status.py +14 -0
- adcp/types/generated_poc/pacing.py +13 -0
- adcp/types/generated_poc/package.py +61 -0
- adcp/types/generated_poc/package_request.py +61 -0
- adcp/types/generated_poc/package_status.py +14 -0
- adcp/types/generated_poc/performance_feedback.py +89 -0
- adcp/types/generated_poc/placement.py +37 -0
- adcp/types/generated_poc/preview_creative_request.py +163 -0
- adcp/types/generated_poc/preview_creative_response.py +175 -0
- adcp/types/generated_poc/preview_render.py +144 -0
- adcp/types/generated_poc/pricing_model.py +17 -0
- adcp/types/generated_poc/pricing_option.py +365 -0
- adcp/types/generated_poc/product.py +211 -0
- adcp/types/generated_poc/promoted_offerings.py +102 -0
- adcp/types/generated_poc/promoted_products.py +38 -0
- adcp/types/generated_poc/property.py +79 -0
- adcp/types/generated_poc/protocol_envelope.py +61 -0
- adcp/types/generated_poc/provide_performance_feedback_request.py +85 -0
- adcp/types/generated_poc/provide_performance_feedback_response.py +59 -0
- adcp/types/generated_poc/publisher_identifier_types.py +15 -0
- adcp/types/generated_poc/push_notification_config.py +55 -0
- adcp/types/generated_poc/reporting_capabilities.py +68 -0
- adcp/types/generated_poc/response.py +24 -0
- adcp/types/generated_poc/standard_format_ids.py +45 -0
- adcp/types/generated_poc/start_timing.py +13 -0
- adcp/types/generated_poc/sub_asset.py +55 -0
- adcp/types/generated_poc/sync_creatives_request.py +69 -0
- adcp/types/generated_poc/sync_creatives_response.py +117 -0
- adcp/types/generated_poc/targeting.py +53 -0
- adcp/types/generated_poc/task_status.py +19 -0
- adcp/types/generated_poc/task_type.py +15 -0
- adcp/types/generated_poc/tasks_get_request.py +29 -0
- adcp/types/generated_poc/tasks_get_response.py +112 -0
- adcp/types/generated_poc/tasks_list_request.py +121 -0
- adcp/types/generated_poc/tasks_list_response.py +122 -0
- adcp/types/generated_poc/text_asset.py +20 -0
- adcp/types/generated_poc/update_media_buy_request.py +160 -0
- adcp/types/generated_poc/update_media_buy_response.py +67 -0
- adcp/types/generated_poc/url_asset.py +33 -0
- adcp/types/generated_poc/vast_asset.py +86 -0
- adcp/types/generated_poc/vcpm_auction_option.py +57 -0
- adcp/types/generated_poc/vcpm_fixed_option.py +43 -0
- adcp/types/generated_poc/video_asset.py +28 -0
- adcp/types/generated_poc/webhook_asset.py +65 -0
- adcp/types/generated_poc/webhook_payload.py +102 -0
- adcp/utils/preview_cache.py +54 -41
- adcp/validation.py +172 -0
- {adcp-1.6.1.dist-info → adcp-2.1.0.dist-info}/METADATA +42 -3
- adcp-2.1.0.dist-info/RECORD +132 -0
- adcp/types/tasks.py +0 -511
- adcp-1.6.1.dist-info/RECORD +0 -28
- {adcp-1.6.1.dist-info → adcp-2.1.0.dist-info}/WHEEL +0 -0
- {adcp-1.6.1.dist-info → adcp-2.1.0.dist-info}/entry_points.txt +0 -0
- {adcp-1.6.1.dist-info → adcp-2.1.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-1.6.1.dist-info → adcp-2.1.0.dist-info}/top_level.txt +0 -0
adcp/types/tasks.py
DELETED
|
@@ -1,511 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Auto-generated Pydantic models from AdCP JSON schemas.
|
|
3
|
-
|
|
4
|
-
DO NOT EDIT THIS FILE MANUALLY.
|
|
5
|
-
Generated from: https://adcontextprotocol.org/schemas/v1/
|
|
6
|
-
To regenerate:
|
|
7
|
-
python scripts/sync_schemas.py
|
|
8
|
-
python scripts/fix_schema_refs.py
|
|
9
|
-
python scripts/generate_models_simple.py
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
from __future__ import annotations
|
|
13
|
-
|
|
14
|
-
from typing import Any, Literal
|
|
15
|
-
|
|
16
|
-
from pydantic import BaseModel, Field
|
|
17
|
-
|
|
18
|
-
# Import all types from generated module
|
|
19
|
-
from adcp.types.generated import (
|
|
20
|
-
BrandManifestRef,
|
|
21
|
-
Channels,
|
|
22
|
-
CreativeAsset,
|
|
23
|
-
CreativeManifest,
|
|
24
|
-
Error,
|
|
25
|
-
Format,
|
|
26
|
-
FormatId,
|
|
27
|
-
PackageRequest,
|
|
28
|
-
Product,
|
|
29
|
-
PushNotificationConfig,
|
|
30
|
-
StartTiming,
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class ActivateSignalRequest(BaseModel):
|
|
35
|
-
"""Request parameters for activating a signal on a specific platform/account"""
|
|
36
|
-
|
|
37
|
-
signal_agent_segment_id: str = Field(
|
|
38
|
-
description="The universal identifier for the signal to activate"
|
|
39
|
-
)
|
|
40
|
-
platform: str = Field(description="The target platform for activation")
|
|
41
|
-
account: str | None = Field(
|
|
42
|
-
None, description="Account identifier (required for account-specific activation)"
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class BuildCreativeRequest(BaseModel):
|
|
47
|
-
"""Request to transform or generate a creative manifest. Takes a source manifest (which may be minimal for pure generation) and produces a target manifest in the specified format. The source manifest should include all assets required by the target format (e.g., promoted_offerings for generative formats)."""
|
|
48
|
-
|
|
49
|
-
message: str | None = Field(
|
|
50
|
-
None,
|
|
51
|
-
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.",
|
|
52
|
-
)
|
|
53
|
-
creative_manifest: CreativeManifest | None = Field(
|
|
54
|
-
None,
|
|
55
|
-
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.",
|
|
56
|
-
)
|
|
57
|
-
target_format_id: FormatId = Field(
|
|
58
|
-
description="Format ID to generate. The format definition specifies required input assets and output structure."
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
class CreateMediaBuyRequest(BaseModel):
|
|
63
|
-
"""Request parameters for creating a media buy"""
|
|
64
|
-
|
|
65
|
-
buyer_ref: str = Field(description="Buyer's reference identifier for this media buy")
|
|
66
|
-
packages: list[PackageRequest] = Field(description="Array of package configurations")
|
|
67
|
-
brand_manifest: BrandManifestRef = Field(
|
|
68
|
-
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."
|
|
69
|
-
)
|
|
70
|
-
po_number: str | None = Field(None, description="Purchase order number for tracking")
|
|
71
|
-
start_time: StartTiming
|
|
72
|
-
end_time: str = Field(description="Campaign end date/time in ISO 8601 format")
|
|
73
|
-
reporting_webhook: Any | None = None
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
class GetMediaBuyDeliveryRequest(BaseModel):
|
|
77
|
-
"""Request parameters for retrieving comprehensive delivery metrics"""
|
|
78
|
-
|
|
79
|
-
media_buy_ids: list[str] | None = Field(
|
|
80
|
-
None, description="Array of publisher media buy IDs to get delivery data for"
|
|
81
|
-
)
|
|
82
|
-
buyer_refs: list[str] | None = Field(
|
|
83
|
-
None, description="Array of buyer reference IDs to get delivery data for"
|
|
84
|
-
)
|
|
85
|
-
status_filter: Any | None = Field(
|
|
86
|
-
None, description="Filter by status. Can be a single status or array of statuses"
|
|
87
|
-
)
|
|
88
|
-
start_date: str | None = Field(None, description="Start date for reporting period (YYYY-MM-DD)")
|
|
89
|
-
end_date: str | None = Field(None, description="End date for reporting period (YYYY-MM-DD)")
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class GetProductsRequest(BaseModel):
|
|
93
|
-
"""Request parameters for discovering available advertising products"""
|
|
94
|
-
|
|
95
|
-
brief: str | None = Field(
|
|
96
|
-
None, description="Natural language description of campaign requirements"
|
|
97
|
-
)
|
|
98
|
-
brand_manifest: BrandManifestRef | None = Field(
|
|
99
|
-
None,
|
|
100
|
-
description="Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest.",
|
|
101
|
-
)
|
|
102
|
-
filters: dict[str, Any] | None = Field(
|
|
103
|
-
None, description="Structured filters for product discovery"
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
class GetSignalsRequest(BaseModel):
|
|
108
|
-
"""Request parameters for discovering signals based on description"""
|
|
109
|
-
|
|
110
|
-
signal_spec: str = Field(description="Natural language description of the desired signals")
|
|
111
|
-
deliver_to: dict[str, Any] = Field(description="Where the signals need to be delivered")
|
|
112
|
-
filters: dict[str, Any] | None = Field(None, description="Filters to refine results")
|
|
113
|
-
max_results: int | None = Field(None, description="Maximum number of results to return")
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
class ListAuthorizedPropertiesRequest(BaseModel):
|
|
117
|
-
"""Request parameters for discovering which publishers this agent is authorized to represent"""
|
|
118
|
-
|
|
119
|
-
publisher_domains: list[str] | None = Field(
|
|
120
|
-
None,
|
|
121
|
-
description="Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.",
|
|
122
|
-
)
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
class ListCreativeFormatsRequest(BaseModel):
|
|
126
|
-
"""Request parameters for discovering creative formats provided by this creative agent"""
|
|
127
|
-
|
|
128
|
-
format_ids: list[FormatId] | None = Field(
|
|
129
|
-
None, description="Return only these specific format IDs"
|
|
130
|
-
)
|
|
131
|
-
type: Literal["audio", "video", "display", "dooh"] | None = Field(
|
|
132
|
-
None, description="Filter by format type (technical categories with distinct requirements)"
|
|
133
|
-
)
|
|
134
|
-
asset_types: (
|
|
135
|
-
list[Literal["image", "video", "audio", "text", "html", "javascript", "url"]] | None
|
|
136
|
-
) = Field(
|
|
137
|
-
None,
|
|
138
|
-
description="Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags.",
|
|
139
|
-
)
|
|
140
|
-
max_width: int | None = Field(
|
|
141
|
-
None,
|
|
142
|
-
description="Maximum width in pixels (inclusive). Returns formats with width <= this value. Omit for responsive/fluid formats.",
|
|
143
|
-
)
|
|
144
|
-
max_height: int | None = Field(
|
|
145
|
-
None,
|
|
146
|
-
description="Maximum height in pixels (inclusive). Returns formats with height <= this value. Omit for responsive/fluid formats.",
|
|
147
|
-
)
|
|
148
|
-
min_width: int | None = Field(
|
|
149
|
-
None,
|
|
150
|
-
description="Minimum width in pixels (inclusive). Returns formats with width >= this value.",
|
|
151
|
-
)
|
|
152
|
-
min_height: int | None = Field(
|
|
153
|
-
None,
|
|
154
|
-
description="Minimum height in pixels (inclusive). Returns formats with height >= this value.",
|
|
155
|
-
)
|
|
156
|
-
is_responsive: bool | None = Field(
|
|
157
|
-
None,
|
|
158
|
-
description="Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.",
|
|
159
|
-
)
|
|
160
|
-
name_search: str | None = Field(
|
|
161
|
-
None, description="Search for formats by name (case-insensitive partial match)"
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
class ListCreativesRequest(BaseModel):
|
|
166
|
-
"""Request parameters for querying creative assets from the centralized library with filtering, sorting, and pagination"""
|
|
167
|
-
|
|
168
|
-
filters: dict[str, Any] | None = Field(
|
|
169
|
-
None, description="Filter criteria for querying creatives"
|
|
170
|
-
)
|
|
171
|
-
sort: dict[str, Any] | None = Field(None, description="Sorting parameters")
|
|
172
|
-
pagination: dict[str, Any] | None = Field(None, description="Pagination parameters")
|
|
173
|
-
include_assignments: bool | None = Field(
|
|
174
|
-
None, description="Include package assignment information in response"
|
|
175
|
-
)
|
|
176
|
-
include_performance: bool | None = Field(
|
|
177
|
-
None, description="Include aggregated performance metrics in response"
|
|
178
|
-
)
|
|
179
|
-
include_sub_assets: bool | None = Field(
|
|
180
|
-
None, description="Include sub-assets (for carousel/native formats) in response"
|
|
181
|
-
)
|
|
182
|
-
fields: (
|
|
183
|
-
list[
|
|
184
|
-
Literal[
|
|
185
|
-
"creative_id",
|
|
186
|
-
"name",
|
|
187
|
-
"format",
|
|
188
|
-
"status",
|
|
189
|
-
"created_date",
|
|
190
|
-
"updated_date",
|
|
191
|
-
"tags",
|
|
192
|
-
"assignments",
|
|
193
|
-
"performance",
|
|
194
|
-
"sub_assets",
|
|
195
|
-
]
|
|
196
|
-
]
|
|
197
|
-
| None
|
|
198
|
-
) = Field(None, description="Specific fields to include in response (omit for all fields)")
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
class PreviewCreativeRequest(BaseModel):
|
|
202
|
-
"""Request to generate a preview of a creative manifest in a specific format. The creative_manifest should include all assets required by the format (e.g., promoted_offerings for generative formats)."""
|
|
203
|
-
|
|
204
|
-
format_id: FormatId = Field(description="Format identifier for rendering the preview")
|
|
205
|
-
creative_manifest: CreativeManifest = Field(
|
|
206
|
-
description="Complete creative manifest with all required assets (including promoted_offerings if required by the format)"
|
|
207
|
-
)
|
|
208
|
-
inputs: list[dict[str, Any]] | None = Field(
|
|
209
|
-
None,
|
|
210
|
-
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.",
|
|
211
|
-
)
|
|
212
|
-
template_id: str | None = Field(
|
|
213
|
-
None, description="Specific template ID for custom format rendering"
|
|
214
|
-
)
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
class ProvidePerformanceFeedbackRequest(BaseModel):
|
|
218
|
-
"""Request payload for provide_performance_feedback task"""
|
|
219
|
-
|
|
220
|
-
media_buy_id: str = Field(description="Publisher's media buy identifier")
|
|
221
|
-
measurement_period: dict[str, Any] = Field(
|
|
222
|
-
description="Time period for performance measurement"
|
|
223
|
-
)
|
|
224
|
-
performance_index: float = Field(
|
|
225
|
-
description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)"
|
|
226
|
-
)
|
|
227
|
-
package_id: str | None = Field(
|
|
228
|
-
None, description="Specific package within the media buy (if feedback is package-specific)"
|
|
229
|
-
)
|
|
230
|
-
creative_id: str | None = Field(
|
|
231
|
-
None, description="Specific creative asset (if feedback is creative-specific)"
|
|
232
|
-
)
|
|
233
|
-
metric_type: (
|
|
234
|
-
Literal[
|
|
235
|
-
"overall_performance",
|
|
236
|
-
"conversion_rate",
|
|
237
|
-
"brand_lift",
|
|
238
|
-
"click_through_rate",
|
|
239
|
-
"completion_rate",
|
|
240
|
-
"viewability",
|
|
241
|
-
"brand_safety",
|
|
242
|
-
"cost_efficiency",
|
|
243
|
-
]
|
|
244
|
-
| None
|
|
245
|
-
) = Field(None, description="The business metric being measured")
|
|
246
|
-
feedback_source: (
|
|
247
|
-
Literal[
|
|
248
|
-
"buyer_attribution",
|
|
249
|
-
"third_party_measurement",
|
|
250
|
-
"platform_analytics",
|
|
251
|
-
"verification_partner",
|
|
252
|
-
]
|
|
253
|
-
| None
|
|
254
|
-
) = Field(None, description="Source of the performance data")
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
class SyncCreativesRequest(BaseModel):
|
|
258
|
-
"""Request parameters for syncing creative assets with upsert semantics - supports bulk operations, patch updates, and assignment management"""
|
|
259
|
-
|
|
260
|
-
creatives: list[CreativeAsset] = Field(
|
|
261
|
-
description="Array of creative assets to sync (create or update)"
|
|
262
|
-
)
|
|
263
|
-
patch: bool | None = Field(
|
|
264
|
-
None,
|
|
265
|
-
description="When true, only provided fields are updated (partial update). When false, entire creative is replaced (full upsert).",
|
|
266
|
-
)
|
|
267
|
-
assignments: dict[str, Any] | None = Field(
|
|
268
|
-
None, description="Optional bulk assignment of creatives to packages"
|
|
269
|
-
)
|
|
270
|
-
delete_missing: bool | None = Field(
|
|
271
|
-
None,
|
|
272
|
-
description="When true, creatives not included in this sync will be archived. Use with caution for full library replacement.",
|
|
273
|
-
)
|
|
274
|
-
dry_run: bool | None = Field(
|
|
275
|
-
None,
|
|
276
|
-
description="When true, preview changes without applying them. Returns what would be created/updated/deleted.",
|
|
277
|
-
)
|
|
278
|
-
validation_mode: Literal["strict", "lenient"] | None = Field(
|
|
279
|
-
None,
|
|
280
|
-
description="Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors.",
|
|
281
|
-
)
|
|
282
|
-
push_notification_config: PushNotificationConfig | None = Field(
|
|
283
|
-
None,
|
|
284
|
-
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).",
|
|
285
|
-
)
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
class UpdateMediaBuyRequest(BaseModel):
|
|
289
|
-
"""Request parameters for updating campaign and package settings"""
|
|
290
|
-
|
|
291
|
-
media_buy_id: str | None = Field(None, description="Publisher's ID of the media buy to update")
|
|
292
|
-
buyer_ref: str | None = Field(None, description="Buyer's reference for the media buy to update")
|
|
293
|
-
active: bool | None = Field(None, description="Pause/resume the entire media buy")
|
|
294
|
-
start_time: StartTiming | None = None
|
|
295
|
-
end_time: str | None = Field(None, description="New end date/time in ISO 8601 format")
|
|
296
|
-
packages: list[dict[str, Any]] | None = Field(None, description="Package-specific updates")
|
|
297
|
-
push_notification_config: PushNotificationConfig | None = Field(
|
|
298
|
-
None,
|
|
299
|
-
description="Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.",
|
|
300
|
-
)
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
class ActivateSignalResponse(BaseModel):
|
|
304
|
-
"""Response payload for activate_signal task"""
|
|
305
|
-
|
|
306
|
-
decisioning_platform_segment_id: str | None = Field(
|
|
307
|
-
None, description="The platform-specific ID to use once activated"
|
|
308
|
-
)
|
|
309
|
-
estimated_activation_duration_minutes: float | None = Field(
|
|
310
|
-
None, description="Estimated time to complete (optional)"
|
|
311
|
-
)
|
|
312
|
-
deployed_at: str | None = Field(
|
|
313
|
-
None, description="Timestamp when activation completed (optional)"
|
|
314
|
-
)
|
|
315
|
-
errors: list[Error] | None = Field(
|
|
316
|
-
None,
|
|
317
|
-
description="Task-specific errors and warnings (e.g., activation failures, platform issues)",
|
|
318
|
-
)
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
class BuildCreativeResponse(BaseModel):
|
|
322
|
-
"""Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives"""
|
|
323
|
-
|
|
324
|
-
creative_manifest: CreativeManifest = Field(
|
|
325
|
-
description="The generated or transformed creative manifest"
|
|
326
|
-
)
|
|
327
|
-
errors: list[Error] | None = Field(None, description="Task-specific errors and warnings")
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
class CreateMediaBuyResponse(BaseModel):
|
|
331
|
-
"""Response payload for create_media_buy task"""
|
|
332
|
-
|
|
333
|
-
media_buy_id: str | None = Field(
|
|
334
|
-
None, description="Publisher's unique identifier for the created media buy"
|
|
335
|
-
)
|
|
336
|
-
buyer_ref: str = Field(description="Buyer's reference identifier for this media buy")
|
|
337
|
-
creative_deadline: str | None = Field(
|
|
338
|
-
None, description="ISO 8601 timestamp for creative upload deadline"
|
|
339
|
-
)
|
|
340
|
-
packages: list[dict[str, Any]] | None = Field(None, description="Array of created packages")
|
|
341
|
-
errors: list[Error] | None = Field(
|
|
342
|
-
None,
|
|
343
|
-
description="Task-specific errors and warnings (e.g., partial package creation failures)",
|
|
344
|
-
)
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
class GetMediaBuyDeliveryResponse(BaseModel):
|
|
348
|
-
"""Response payload for get_media_buy_delivery task"""
|
|
349
|
-
|
|
350
|
-
notification_type: Literal["scheduled", "final", "delayed", "adjusted"] | None = Field(
|
|
351
|
-
None,
|
|
352
|
-
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",
|
|
353
|
-
)
|
|
354
|
-
partial_data: bool | None = Field(
|
|
355
|
-
None,
|
|
356
|
-
description="Indicates if any media buys in this webhook have missing/delayed data (only present in webhook deliveries)",
|
|
357
|
-
)
|
|
358
|
-
unavailable_count: int | None = Field(
|
|
359
|
-
None,
|
|
360
|
-
description="Number of media buys with reporting_delayed or failed status (only present in webhook deliveries when partial_data is true)",
|
|
361
|
-
)
|
|
362
|
-
sequence_number: int | None = Field(
|
|
363
|
-
None,
|
|
364
|
-
description="Sequential notification number (only present in webhook deliveries, starts at 1)",
|
|
365
|
-
)
|
|
366
|
-
next_expected_at: str | None = Field(
|
|
367
|
-
None,
|
|
368
|
-
description="ISO 8601 timestamp for next expected notification (only present in webhook deliveries when notification_type is not 'final')",
|
|
369
|
-
)
|
|
370
|
-
reporting_period: dict[str, Any] = Field(
|
|
371
|
-
description="Date range for the report. All periods use UTC timezone."
|
|
372
|
-
)
|
|
373
|
-
currency: str = Field(description="ISO 4217 currency code")
|
|
374
|
-
aggregated_totals: dict[str, Any] | None = Field(
|
|
375
|
-
None,
|
|
376
|
-
description="Combined metrics across all returned media buys. Only included in API responses (get_media_buy_delivery), not in webhook notifications.",
|
|
377
|
-
)
|
|
378
|
-
media_buy_deliveries: list[dict[str, Any]] = Field(
|
|
379
|
-
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."
|
|
380
|
-
)
|
|
381
|
-
errors: list[Error] | None = Field(
|
|
382
|
-
None,
|
|
383
|
-
description="Task-specific errors and warnings (e.g., missing delivery data, reporting platform issues)",
|
|
384
|
-
)
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
class GetProductsResponse(BaseModel):
|
|
388
|
-
"""Response payload for get_products task"""
|
|
389
|
-
|
|
390
|
-
products: list[Product] = Field(description="Array of matching products")
|
|
391
|
-
errors: list[Error] | None = Field(
|
|
392
|
-
None, description="Task-specific errors and warnings (e.g., product filtering issues)"
|
|
393
|
-
)
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
class GetSignalsResponse(BaseModel):
|
|
397
|
-
"""Response payload for get_signals task"""
|
|
398
|
-
|
|
399
|
-
signals: list[dict[str, Any]] = Field(description="Array of matching signals")
|
|
400
|
-
errors: list[Error] | None = Field(
|
|
401
|
-
None,
|
|
402
|
-
description="Task-specific errors and warnings (e.g., signal discovery or pricing issues)",
|
|
403
|
-
)
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
class ListAuthorizedPropertiesResponse(BaseModel):
|
|
407
|
-
"""Response payload for list_authorized_properties task. Lists publisher domains and authorization scope (property_ids or property_tags). Buyers fetch actual property definitions from each publisher's canonical adagents.json file."""
|
|
408
|
-
|
|
409
|
-
publisher_domains: list[str] = Field(
|
|
410
|
-
description="Publisher domains this agent is authorized to represent. Buyers should fetch each publisher's adagents.json to see property definitions and verify this agent is in their authorized_agents list with authorization scope."
|
|
411
|
-
)
|
|
412
|
-
primary_channels: list[Channels] | None = Field(
|
|
413
|
-
None,
|
|
414
|
-
description="Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.",
|
|
415
|
-
)
|
|
416
|
-
primary_countries: list[str] | None = Field(
|
|
417
|
-
None,
|
|
418
|
-
description="Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.",
|
|
419
|
-
)
|
|
420
|
-
portfolio_description: str | None = Field(
|
|
421
|
-
None,
|
|
422
|
-
description="Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.",
|
|
423
|
-
)
|
|
424
|
-
advertising_policies: str | None = Field(
|
|
425
|
-
None,
|
|
426
|
-
description="Publisher's advertising content policies, restrictions, and guidelines in natural language. May include prohibited categories, blocked advertisers, restricted tactics, brand safety requirements, or links to full policy documentation.",
|
|
427
|
-
)
|
|
428
|
-
last_updated: str | None = Field(
|
|
429
|
-
None,
|
|
430
|
-
description="ISO 8601 timestamp of when the agent's publisher authorization list was last updated. Buyers can use this to determine if their cached publisher adagents.json files might be stale.",
|
|
431
|
-
)
|
|
432
|
-
errors: list[Error] | None = Field(
|
|
433
|
-
None, description="Task-specific errors and warnings (e.g., property availability issues)"
|
|
434
|
-
)
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
class ListCreativeFormatsResponse(BaseModel):
|
|
438
|
-
"""Response payload for list_creative_formats task from creative agent - returns full format definitions"""
|
|
439
|
-
|
|
440
|
-
formats: list[Format] = Field(
|
|
441
|
-
description="Full format definitions for all formats this agent supports. Each format's authoritative source is indicated by its agent_url field."
|
|
442
|
-
)
|
|
443
|
-
creative_agents: list[dict[str, Any]] | None = Field(
|
|
444
|
-
None,
|
|
445
|
-
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.",
|
|
446
|
-
)
|
|
447
|
-
errors: list[Error] | None = Field(None, description="Task-specific errors and warnings")
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
class ListCreativesResponse(BaseModel):
|
|
451
|
-
"""Response from creative library query with filtered results, metadata, and optional enriched data"""
|
|
452
|
-
|
|
453
|
-
query_summary: dict[str, Any] = Field(description="Summary of the query that was executed")
|
|
454
|
-
pagination: dict[str, Any] = Field(description="Pagination information for navigating results")
|
|
455
|
-
creatives: list[dict[str, Any]] = Field(
|
|
456
|
-
description="Array of creative assets matching the query"
|
|
457
|
-
)
|
|
458
|
-
format_summary: dict[str, Any] | None = Field(
|
|
459
|
-
None, description="Breakdown of creatives by format type"
|
|
460
|
-
)
|
|
461
|
-
status_summary: dict[str, Any] | None = Field(
|
|
462
|
-
None, description="Breakdown of creatives by status"
|
|
463
|
-
)
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
class PreviewCreativeResponse(BaseModel):
|
|
467
|
-
"""Response containing preview links for a creative. Each preview URL returns an HTML page that can be embedded in an iframe to display the rendered creative."""
|
|
468
|
-
|
|
469
|
-
previews: list[dict[str, Any]] = Field(
|
|
470
|
-
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."
|
|
471
|
-
)
|
|
472
|
-
interactive_url: str | None = Field(
|
|
473
|
-
None,
|
|
474
|
-
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.",
|
|
475
|
-
)
|
|
476
|
-
expires_at: str = Field(description="ISO 8601 timestamp when preview links expire")
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
class ProvidePerformanceFeedbackResponse(BaseModel):
|
|
480
|
-
"""Response payload for provide_performance_feedback task"""
|
|
481
|
-
|
|
482
|
-
success: bool = Field(description="Whether the performance feedback was successfully received")
|
|
483
|
-
errors: list[Error] | None = Field(
|
|
484
|
-
None,
|
|
485
|
-
description="Task-specific errors and warnings (e.g., invalid measurement period, missing campaign data)",
|
|
486
|
-
)
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
class SyncCreativesResponse(BaseModel):
|
|
490
|
-
"""Response from creative sync operation with results for each creative"""
|
|
491
|
-
|
|
492
|
-
dry_run: bool | None = Field(
|
|
493
|
-
None, description="Whether this was a dry run (no actual changes made)"
|
|
494
|
-
)
|
|
495
|
-
creatives: list[dict[str, Any]] = Field(description="Results for each creative processed")
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
class UpdateMediaBuyResponse(BaseModel):
|
|
499
|
-
"""Response payload for update_media_buy task"""
|
|
500
|
-
|
|
501
|
-
media_buy_id: str = Field(description="Publisher's identifier for the media buy")
|
|
502
|
-
buyer_ref: str = Field(description="Buyer's reference identifier for the media buy")
|
|
503
|
-
implementation_date: Any | None = Field(
|
|
504
|
-
None, description="ISO 8601 timestamp when changes take effect (null if pending approval)"
|
|
505
|
-
)
|
|
506
|
-
affected_packages: list[dict[str, Any]] | None = Field(
|
|
507
|
-
None, description="Array of packages that were modified"
|
|
508
|
-
)
|
|
509
|
-
errors: list[Error] | None = Field(
|
|
510
|
-
None, description="Task-specific errors and warnings (e.g., partial update failures)"
|
|
511
|
-
)
|
adcp-1.6.1.dist-info/RECORD
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
adcp/__init__.py,sha256=g3x4xqEGJgRcHZB6Oso3XAxs8uwNtEhk8l9TGFVcN1c,7612
|
|
2
|
-
adcp/__main__.py,sha256=Avy_C71rruh2lOuojvuXDj09tkFOaek74nJ-dbx25Sw,12838
|
|
3
|
-
adcp/adagents.py,sha256=thq6qZScRHLWrRR4DjGlZzHpC1ZssQqhc5l0pbKSa-Q,17483
|
|
4
|
-
adcp/client.py,sha256=4qoFNDT5swzi4w5bnWJ5nVTG5JIL0xnLJOJMGeMyci4,28412
|
|
5
|
-
adcp/config.py,sha256=Vsy7ZPOI8G3fB_i5Nk-CHbC7wdasCUWuKlos0fwA0kY,2017
|
|
6
|
-
adcp/exceptions.py,sha256=1aZEWpaM92OxD2jl9yKsqJp5ReSWaj0S0DFhxChhLlA,6732
|
|
7
|
-
adcp/simple.py,sha256=FgPYWT32BNXkQz07r2x2gXgOmOikWLi88SzN5UIVSiU,10440
|
|
8
|
-
adcp/protocols/__init__.py,sha256=6UFwACQ0QadBUzy17wUROHqsJDp8ztPW2jzyl53Zh_g,262
|
|
9
|
-
adcp/protocols/a2a.py,sha256=FHgc6G_eU2qD0vH7_RyS1eZvUFSb2j3-EsceoHPi384,12467
|
|
10
|
-
adcp/protocols/base.py,sha256=vBHD23Fzl_CCk_Gy9nvSbBYopcJlYkYyzoz-rhI8wHg,5214
|
|
11
|
-
adcp/protocols/mcp.py,sha256=d9uSpGd0BKvQ0JxztkfDvHwoDrDYhuiw5oivpYOAbmM,16647
|
|
12
|
-
adcp/testing/__init__.py,sha256=ZWp_floWjVZfy8RBG5v_FUXQ8YbN7xjXvVcX-_zl_HU,1416
|
|
13
|
-
adcp/testing/test_helpers.py,sha256=4n8fZYy1cVpjZpFW2SxBzpC8fmY-MBFrzY4tIPqe4rQ,10028
|
|
14
|
-
adcp/types/__init__.py,sha256=FXm4210pkzOIQQEgpe-EeLLd7mxofzEgKLGl1r8fj4o,465
|
|
15
|
-
adcp/types/base.py,sha256=QoEuVfI4yzefup0dc2KN11AcJTbcGxRep7xOw5hXfs8,837
|
|
16
|
-
adcp/types/core.py,sha256=RXkKCWCXS9BVJTNpe3Opm5O1I_LaQPMUuVwa-ipvS1Q,4839
|
|
17
|
-
adcp/types/generated.py,sha256=os26c6yVrCzfSJXJkMsNUODRgp4UrozMkc19OPYcxls,83621
|
|
18
|
-
adcp/types/tasks.py,sha256=Ae9TSwG2F7oWXTcl4TvLhAzinbQkHNGF1Pc0q8RMNNM,23424
|
|
19
|
-
adcp/utils/__init__.py,sha256=uetvSJB19CjQbtwEYZiTnumJG11GsafQmXm5eR3hL7E,153
|
|
20
|
-
adcp/utils/operation_id.py,sha256=wQX9Bb5epXzRq23xoeYPTqzu5yLuhshg7lKJZihcM2k,294
|
|
21
|
-
adcp/utils/preview_cache.py,sha256=8BqbGtilEWD-2ZIIcXCxVar6hs1uMLqTs9DND05RMh8,17685
|
|
22
|
-
adcp/utils/response_parser.py,sha256=uPk2vIH-RYZmq7y3i8lC4HTMQ3FfKdlgXKTjgJ1955M,6253
|
|
23
|
-
adcp-1.6.1.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
|
|
24
|
-
adcp-1.6.1.dist-info/METADATA,sha256=OgqXYiJzf7oW6Hta0L_sH3VJq2EYWMypqJzu9wBx_Qs,21345
|
|
25
|
-
adcp-1.6.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
26
|
-
adcp-1.6.1.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
|
|
27
|
-
adcp-1.6.1.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
|
|
28
|
-
adcp-1.6.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|