adcp 3.0.0__py3-none-any.whl → 3.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/ADCP_VERSION +1 -1
- adcp/__init__.py +13 -5
- adcp/__main__.py +4 -4
- adcp/adagents.py +5 -9
- adcp/client.py +14 -12
- adcp/protocols/a2a.py +3 -3
- adcp/protocols/base.py +2 -2
- adcp/protocols/mcp.py +3 -3
- adcp/server/base.py +6 -10
- adcp/server/content_standards.py +17 -49
- adcp/server/governance.py +20 -59
- adcp/server/mcp_tools.py +8 -4
- adcp/server/proposal.py +1 -3
- adcp/server/sponsored_intelligence.py +10 -28
- adcp/simple.py +10 -10
- adcp/types/__init__.py +14 -6
- adcp/types/_generated.py +44 -27
- adcp/types/aliases.py +55 -0
- adcp/types/base.py +7 -7
- adcp/types/generated_poc/{protocols → a2ui}/__init__.py +1 -1
- adcp/types/generated_poc/a2ui/component.py +24 -0
- adcp/types/generated_poc/a2ui/surface.py +33 -0
- adcp/types/generated_poc/account/__init__.py +3 -0
- adcp/types/generated_poc/account/list_accounts_request.py +30 -0
- adcp/types/generated_poc/account/list_accounts_response.py +30 -0
- adcp/types/generated_poc/adagents.py +192 -195
- adcp/types/generated_poc/content_standards/artifact.py +69 -69
- adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +13 -13
- adcp/types/generated_poc/content_standards/calibrate_content_request.py +2 -2
- adcp/types/generated_poc/content_standards/calibrate_content_response.py +17 -17
- adcp/types/generated_poc/content_standards/content_standards.py +8 -8
- adcp/types/generated_poc/content_standards/create_content_standards_request.py +13 -13
- adcp/types/generated_poc/content_standards/create_content_standards_response.py +6 -6
- adcp/types/generated_poc/content_standards/get_content_standards_request.py +1 -1
- adcp/types/generated_poc/content_standards/get_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +14 -14
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +30 -30
- adcp/types/generated_poc/content_standards/list_content_standards_request.py +4 -4
- adcp/types/generated_poc/content_standards/list_content_standards_response.py +5 -5
- adcp/types/generated_poc/content_standards/update_content_standards_request.py +14 -14
- adcp/types/generated_poc/content_standards/update_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +13 -13
- adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +16 -16
- adcp/types/generated_poc/core/account.py +54 -0
- adcp/types/generated_poc/core/activation_key.py +8 -8
- adcp/types/generated_poc/core/assets/audio_asset.py +37 -8
- adcp/types/generated_poc/core/assets/css_asset.py +2 -2
- adcp/types/generated_poc/core/assets/daast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/html_asset.py +2 -2
- adcp/types/generated_poc/core/assets/image_asset.py +6 -6
- adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
- adcp/types/generated_poc/core/assets/text_asset.py +2 -2
- adcp/types/generated_poc/core/assets/url_asset.py +3 -3
- adcp/types/generated_poc/core/assets/vast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/video_asset.py +126 -10
- adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
- adcp/types/generated_poc/core/async_response_data.py +2 -2
- adcp/types/generated_poc/core/brand_manifest.py +66 -66
- adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
- adcp/types/generated_poc/core/context.py +1 -1
- adcp/types/generated_poc/core/creative_asset.py +12 -12
- adcp/types/generated_poc/core/creative_assignment.py +3 -3
- adcp/types/generated_poc/core/creative_filters.py +23 -17
- adcp/types/generated_poc/core/creative_manifest.py +4 -4
- adcp/types/generated_poc/core/creative_policy.py +4 -4
- adcp/types/generated_poc/core/delivery_metrics.py +32 -32
- adcp/types/generated_poc/core/deployment.py +20 -20
- adcp/types/generated_poc/core/destination.py +11 -11
- adcp/types/generated_poc/core/error.py +6 -6
- adcp/types/generated_poc/core/ext.py +1 -1
- adcp/types/generated_poc/core/format.py +49 -124
- adcp/types/generated_poc/core/format_id.py +5 -5
- adcp/types/generated_poc/core/frequency_cap.py +2 -2
- adcp/types/generated_poc/core/identifier.py +2 -2
- adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
- adcp/types/generated_poc/core/measurement.py +8 -8
- adcp/types/generated_poc/core/media_buy.py +12 -8
- adcp/types/generated_poc/core/media_buy_features.py +3 -3
- adcp/types/generated_poc/core/offering.py +9 -9
- adcp/types/generated_poc/core/package.py +8 -8
- adcp/types/generated_poc/core/performance_feedback.py +18 -18
- adcp/types/generated_poc/core/placement.py +4 -4
- adcp/types/generated_poc/core/pricing_option.py +1 -1
- adcp/types/generated_poc/core/product.py +27 -21
- adcp/types/generated_poc/core/product_allocation.py +5 -5
- adcp/types/generated_poc/core/product_filters.py +27 -27
- adcp/types/generated_poc/core/promoted_offerings.py +18 -18
- adcp/types/generated_poc/core/promoted_products.py +2 -2
- adcp/types/generated_poc/core/property.py +10 -10
- adcp/types/generated_poc/core/property_id.py +4 -4
- adcp/types/generated_poc/core/property_list_ref.py +4 -4
- adcp/types/generated_poc/core/property_tag.py +4 -4
- adcp/types/generated_poc/core/proposal.py +13 -13
- adcp/types/generated_poc/core/protocol_envelope.py +8 -8
- adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
- adcp/types/generated_poc/core/push_notification_config.py +5 -5
- adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
- adcp/types/generated_poc/core/reporting_webhook.py +10 -10
- adcp/types/generated_poc/core/response.py +4 -4
- adcp/types/generated_poc/core/signal_filters.py +5 -5
- adcp/types/generated_poc/core/start_timing.py +3 -3
- adcp/types/generated_poc/core/sub_asset.py +14 -14
- adcp/types/generated_poc/core/targeting.py +17 -10
- adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
- adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
- adcp/types/generated_poc/creative/preview_creative_response.py +28 -28
- adcp/types/generated_poc/creative/preview_render.py +25 -25
- adcp/types/generated_poc/enums/adcp_domain.py +4 -4
- adcp/types/generated_poc/enums/asset_content_type.py +13 -13
- adcp/types/generated_poc/enums/auth_scheme.py +2 -2
- adcp/types/generated_poc/enums/available_metric.py +9 -9
- adcp/types/generated_poc/enums/channels.py +19 -19
- adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
- adcp/types/generated_poc/enums/creative_action.py +5 -5
- adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
- adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
- adcp/types/generated_poc/enums/creative_status.py +5 -5
- adcp/types/generated_poc/enums/daast_tracking_event.py +11 -11
- adcp/types/generated_poc/enums/daast_version.py +2 -2
- adcp/types/generated_poc/enums/delivery_type.py +2 -2
- adcp/types/generated_poc/enums/dimension_unit.py +4 -4
- adcp/types/generated_poc/enums/feed_format.py +3 -3
- adcp/types/generated_poc/enums/feedback_source.py +4 -4
- adcp/types/generated_poc/enums/format_category.py +7 -7
- adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
- adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
- adcp/types/generated_poc/enums/geo_level.py +4 -4
- adcp/types/generated_poc/enums/history_entry_type.py +2 -2
- adcp/types/generated_poc/enums/http_method.py +2 -2
- adcp/types/generated_poc/enums/identifier_types.py +19 -19
- adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
- adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
- adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
- adcp/types/generated_poc/enums/media_buy_status.py +4 -4
- adcp/types/generated_poc/enums/metric_type.py +8 -8
- adcp/types/generated_poc/enums/metro_system.py +5 -5
- adcp/types/generated_poc/enums/notification_type.py +4 -4
- adcp/types/generated_poc/enums/pacing.py +3 -3
- adcp/types/generated_poc/enums/postal_system.py +9 -9
- adcp/types/generated_poc/enums/preview_output_format.py +2 -2
- adcp/types/generated_poc/enums/pricing_model.py +7 -7
- adcp/types/generated_poc/enums/property_type.py +8 -8
- adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
- adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
- adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
- adcp/types/generated_poc/enums/sort_direction.py +2 -2
- adcp/types/generated_poc/enums/task_status.py +9 -9
- adcp/types/generated_poc/enums/task_type.py +11 -12
- adcp/types/generated_poc/enums/update_frequency.py +4 -4
- adcp/types/generated_poc/enums/url_asset_type.py +3 -3
- adcp/types/generated_poc/enums/validation_mode.py +2 -2
- adcp/types/generated_poc/enums/vast_tracking_event.py +16 -16
- adcp/types/generated_poc/enums/vast_version.py +5 -5
- adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
- adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
- adcp/types/generated_poc/extensions/extension_meta.py +14 -14
- adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
- adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +27 -21
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +15 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
- adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
- adcp/types/generated_poc/media_buy/get_products_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creatives_request.py +23 -23
- adcp/types/generated_poc/media_buy/list_creatives_response.py +53 -49
- adcp/types/generated_poc/media_buy/package_request.py +8 -8
- adcp/types/generated_poc/media_buy/package_update.py +16 -16
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +14 -8
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +33 -29
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +14 -14
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
- adcp/types/generated_poc/pricing_options/cpc_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpcv_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpm_option.py +13 -20
- adcp/types/generated_poc/pricing_options/cpp_option.py +19 -32
- adcp/types/generated_poc/pricing_options/cpv_option.py +19 -32
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +23 -36
- adcp/types/generated_poc/pricing_options/price_guidance.py +26 -0
- adcp/types/generated_poc/pricing_options/vcpm_option.py +13 -26
- adcp/types/generated_poc/property/base_property_source.py +15 -15
- adcp/types/generated_poc/property/create_property_list_request.py +4 -4
- adcp/types/generated_poc/property/create_property_list_response.py +3 -3
- adcp/types/generated_poc/property/delete_property_list_request.py +2 -2
- adcp/types/generated_poc/property/delete_property_list_response.py +3 -3
- adcp/types/generated_poc/property/feature_requirement.py +8 -8
- adcp/types/generated_poc/property/get_property_list_request.py +5 -5
- adcp/types/generated_poc/property/get_property_list_response.py +11 -11
- adcp/types/generated_poc/property/list_property_lists_request.py +5 -5
- adcp/types/generated_poc/property/list_property_lists_response.py +8 -8
- adcp/types/generated_poc/property/property_error.py +10 -10
- adcp/types/generated_poc/property/property_feature.py +4 -4
- adcp/types/generated_poc/property/property_feature_definition.py +18 -18
- adcp/types/generated_poc/property/property_list.py +11 -11
- adcp/types/generated_poc/property/property_list_changed_webhook.py +11 -11
- adcp/types/generated_poc/property/property_list_filters.py +7 -7
- adcp/types/generated_poc/property/update_property_list_request.py +8 -8
- adcp/types/generated_poc/property/update_property_list_response.py +2 -2
- adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +8 -6
- adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +59 -58
- adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
- adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
- adcp/types/generated_poc/signals/get_signals_request.py +8 -8
- adcp/types/generated_poc/signals/get_signals_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +45 -30
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +4 -4
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +23 -23
- adcp/types/generated_poc/sponsored_intelligence/si_identity.py +16 -16
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +5 -5
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +7 -7
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +11 -11
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +37 -23
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +17 -17
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +11 -11
- adcp/utils/format_assets.py +32 -32
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/METADATA +10 -5
- adcp-3.2.0.dist-info/RECORD +268 -0
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -38
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -84
- adcp/types/generated_poc/protocols/adcp_extension.py +0 -50
- adcp-3.0.0.dist-info/RECORD +0 -264
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/WHEEL +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/entry_points.txt +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: enums/task_type.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -8,14 +8,13 @@ from enum import Enum
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class TaskType(Enum):
|
|
11
|
-
create_media_buy =
|
|
12
|
-
update_media_buy =
|
|
13
|
-
sync_creatives =
|
|
14
|
-
activate_signal =
|
|
15
|
-
get_signals =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
delete_property_list = 'delete_property_list'
|
|
11
|
+
create_media_buy = "create_media_buy"
|
|
12
|
+
update_media_buy = "update_media_buy"
|
|
13
|
+
sync_creatives = "sync_creatives"
|
|
14
|
+
activate_signal = "activate_signal"
|
|
15
|
+
get_signals = "get_signals"
|
|
16
|
+
create_property_list = "create_property_list"
|
|
17
|
+
update_property_list = "update_property_list"
|
|
18
|
+
get_property_list = "get_property_list"
|
|
19
|
+
list_property_lists = "list_property_lists"
|
|
20
|
+
delete_property_list = "delete_property_list"
|
|
@@ -8,19 +8,19 @@ from enum import Enum
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class VastTrackingEvent(Enum):
|
|
11
|
-
start =
|
|
12
|
-
firstQuartile =
|
|
13
|
-
midpoint =
|
|
14
|
-
thirdQuartile =
|
|
15
|
-
complete =
|
|
16
|
-
impression =
|
|
17
|
-
click =
|
|
18
|
-
pause =
|
|
19
|
-
resume =
|
|
20
|
-
skip =
|
|
21
|
-
mute =
|
|
22
|
-
unmute =
|
|
23
|
-
fullscreen =
|
|
24
|
-
exitFullscreen =
|
|
25
|
-
playerExpand =
|
|
26
|
-
playerCollapse =
|
|
11
|
+
start = "start"
|
|
12
|
+
firstQuartile = "firstQuartile"
|
|
13
|
+
midpoint = "midpoint"
|
|
14
|
+
thirdQuartile = "thirdQuartile"
|
|
15
|
+
complete = "complete"
|
|
16
|
+
impression = "impression"
|
|
17
|
+
click = "click"
|
|
18
|
+
pause = "pause"
|
|
19
|
+
resume = "resume"
|
|
20
|
+
skip = "skip"
|
|
21
|
+
mute = "mute"
|
|
22
|
+
unmute = "unmute"
|
|
23
|
+
fullscreen = "fullscreen"
|
|
24
|
+
exitFullscreen = "exitFullscreen"
|
|
25
|
+
playerExpand = "playerExpand"
|
|
26
|
+
playerCollapse = "playerCollapse"
|
|
@@ -8,8 +8,8 @@ from enum import Enum
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class VastVersion(Enum):
|
|
11
|
-
field_2_0 =
|
|
12
|
-
field_3_0 =
|
|
13
|
-
field_4_0 =
|
|
14
|
-
field_4_1 =
|
|
15
|
-
field_4_2 =
|
|
11
|
+
field_2_0 = "2.0"
|
|
12
|
+
field_3_0 = "3.0"
|
|
13
|
+
field_4_0 = "4.0"
|
|
14
|
+
field_4_1 = "4.1"
|
|
15
|
+
field_4_2 = "4.2"
|
|
@@ -14,45 +14,45 @@ class AdcpExtensionFileSchema(AdCPBaseModel):
|
|
|
14
14
|
field_id: Annotated[
|
|
15
15
|
str,
|
|
16
16
|
Field(
|
|
17
|
-
alias=
|
|
18
|
-
description=
|
|
19
|
-
pattern=
|
|
17
|
+
alias="$id",
|
|
18
|
+
description="Extension ID following pattern /schemas/extensions/{namespace}.json",
|
|
19
|
+
pattern="^/schemas/extensions/[a-z][a-z0-9_]*\\.json$",
|
|
20
20
|
),
|
|
21
21
|
]
|
|
22
22
|
field_schema: Annotated[
|
|
23
|
-
Literal[
|
|
23
|
+
Literal["http://json-schema.org/draft-07/schema#"], Field(alias="$schema")
|
|
24
24
|
]
|
|
25
25
|
additionalProperties: Annotated[
|
|
26
26
|
Any | None,
|
|
27
|
-
Field(description=
|
|
27
|
+
Field(description="Whether additional properties are allowed in the extension data"),
|
|
28
28
|
] = None
|
|
29
|
-
description: Annotated[str, Field(description=
|
|
29
|
+
description: Annotated[str, Field(description="Description of what this extension provides")]
|
|
30
30
|
docs_url: Annotated[
|
|
31
|
-
AnyUrl | None, Field(description=
|
|
31
|
+
AnyUrl | None, Field(description="URL to documentation for implementors of this extension")
|
|
32
32
|
] = None
|
|
33
33
|
properties: Annotated[
|
|
34
34
|
dict[str, Any],
|
|
35
|
-
Field(description=
|
|
35
|
+
Field(description="Schema properties defining the structure of ext.{namespace} data"),
|
|
36
36
|
]
|
|
37
37
|
required: Annotated[
|
|
38
|
-
list[str] | None, Field(description=
|
|
38
|
+
list[str] | None, Field(description="Required properties within the extension data")
|
|
39
39
|
] = None
|
|
40
|
-
title: Annotated[str, Field(description=
|
|
40
|
+
title: Annotated[str, Field(description="Human-readable title for the extension")]
|
|
41
41
|
type: Annotated[
|
|
42
|
-
Literal[
|
|
43
|
-
Field(description=
|
|
42
|
+
Literal["object"],
|
|
43
|
+
Field(description="Extensions must be objects (data within ext.{namespace})"),
|
|
44
44
|
]
|
|
45
45
|
valid_from: Annotated[
|
|
46
46
|
str,
|
|
47
47
|
Field(
|
|
48
48
|
description="Minimum AdCP version this extension is compatible with (e.g., '2.5'). Extension will be included in all versioned schema builds >= this version.",
|
|
49
|
-
pattern=
|
|
49
|
+
pattern="^\\d+\\.\\d+$",
|
|
50
50
|
),
|
|
51
51
|
]
|
|
52
52
|
valid_until: Annotated[
|
|
53
53
|
str | None,
|
|
54
54
|
Field(
|
|
55
55
|
description="Last AdCP version this extension is compatible with (e.g., '3.0'). Omit if extension is still valid for current and future versions.",
|
|
56
|
-
pattern=
|
|
56
|
+
pattern="^\\d+\\.\\d+$",
|
|
57
57
|
),
|
|
58
58
|
] = None
|
|
@@ -17,25 +17,25 @@ from ..core import format_id
|
|
|
17
17
|
|
|
18
18
|
class BuildCreativeRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="allow",
|
|
21
21
|
)
|
|
22
22
|
context: context_1.ContextObject | None = None
|
|
23
23
|
creative_manifest: Annotated[
|
|
24
24
|
creative_manifest_1.CreativeManifest | None,
|
|
25
25
|
Field(
|
|
26
|
-
description=
|
|
26
|
+
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."
|
|
27
27
|
),
|
|
28
28
|
] = None
|
|
29
29
|
ext: ext_1.ExtensionObject | None = None
|
|
30
30
|
message: Annotated[
|
|
31
31
|
str | None,
|
|
32
32
|
Field(
|
|
33
|
-
description=
|
|
33
|
+
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."
|
|
34
34
|
),
|
|
35
35
|
] = None
|
|
36
36
|
target_format_id: Annotated[
|
|
37
37
|
format_id.FormatId,
|
|
38
38
|
Field(
|
|
39
|
-
description=
|
|
39
|
+
description="Format ID to generate. The format definition specifies required input assets and output structure."
|
|
40
40
|
),
|
|
41
41
|
]
|
|
@@ -17,13 +17,13 @@ from ..core import ext as ext_1
|
|
|
17
17
|
|
|
18
18
|
class BuildCreativeResponse2(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="allow",
|
|
21
21
|
)
|
|
22
22
|
context: context_1.ContextObject | None = None
|
|
23
23
|
errors: Annotated[
|
|
24
24
|
list[error.Error],
|
|
25
25
|
Field(
|
|
26
|
-
description=
|
|
26
|
+
description="Array of errors explaining why creative generation failed", min_length=1
|
|
27
27
|
),
|
|
28
28
|
]
|
|
29
29
|
ext: ext_1.ExtensionObject | None = None
|
|
@@ -31,12 +31,12 @@ class BuildCreativeResponse2(AdCPBaseModel):
|
|
|
31
31
|
|
|
32
32
|
class BuildCreativeResponse1(AdCPBaseModel):
|
|
33
33
|
model_config = ConfigDict(
|
|
34
|
-
extra=
|
|
34
|
+
extra="allow",
|
|
35
35
|
)
|
|
36
36
|
context: context_1.ContextObject | None = None
|
|
37
37
|
creative_manifest: Annotated[
|
|
38
38
|
creative_manifest_1.CreativeManifest,
|
|
39
|
-
Field(description=
|
|
39
|
+
Field(description="The generated or transformed creative manifest"),
|
|
40
40
|
]
|
|
41
41
|
ext: ext_1.ExtensionObject | None = None
|
|
42
42
|
|
|
@@ -45,7 +45,7 @@ class BuildCreativeResponse(RootModel[BuildCreativeResponse1 | BuildCreativeResp
|
|
|
45
45
|
root: Annotated[
|
|
46
46
|
BuildCreativeResponse1 | BuildCreativeResponse2,
|
|
47
47
|
Field(
|
|
48
|
-
description=
|
|
49
|
-
title=
|
|
48
|
+
description="Response containing the transformed or generated creative manifest, ready for use with preview_creative or sync_creatives. Returns either the complete creative manifest OR error information, never both.",
|
|
49
|
+
title="Build Creative Response",
|
|
50
50
|
),
|
|
51
51
|
]
|
|
@@ -16,22 +16,22 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class Reason(Enum):
|
|
19
|
-
APPROVAL_REQUIRED =
|
|
20
|
-
BUDGET_EXCEEDS_LIMIT =
|
|
19
|
+
APPROVAL_REQUIRED = "APPROVAL_REQUIRED"
|
|
20
|
+
BUDGET_EXCEEDS_LIMIT = "BUDGET_EXCEEDS_LIMIT"
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class CreateMediaBuyInputRequired(AdCPBaseModel):
|
|
24
24
|
model_config = ConfigDict(
|
|
25
|
-
extra=
|
|
25
|
+
extra="allow",
|
|
26
26
|
)
|
|
27
27
|
context: context_1.ContextObject | None = None
|
|
28
28
|
errors: Annotated[
|
|
29
29
|
list[error.Error] | None,
|
|
30
30
|
Field(
|
|
31
|
-
description=
|
|
31
|
+
description="Optional validation errors or warnings for debugging purposes. Helps explain why input is required."
|
|
32
32
|
),
|
|
33
33
|
] = None
|
|
34
34
|
ext: ext_1.ExtensionObject | None = None
|
|
35
35
|
reason: Annotated[
|
|
36
|
-
Reason | None, Field(description=
|
|
36
|
+
Reason | None, Field(description="Reason code indicating why input is needed")
|
|
37
37
|
] = None
|
|
@@ -15,17 +15,17 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class CreateMediaBuyWorking(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="allow",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
21
|
current_step: Annotated[
|
|
22
|
-
str | None, Field(description=
|
|
22
|
+
str | None, Field(description="Current step or phase of the operation")
|
|
23
23
|
] = None
|
|
24
24
|
ext: ext_1.ExtensionObject | None = None
|
|
25
25
|
percentage: Annotated[
|
|
26
|
-
float | None, Field(description=
|
|
26
|
+
float | None, Field(description="Completion percentage (0-100)", ge=0.0, le=100.0)
|
|
27
27
|
] = None
|
|
28
|
-
step_number: Annotated[int | None, Field(description=
|
|
28
|
+
step_number: Annotated[int | None, Field(description="Current step number", ge=1)] = None
|
|
29
29
|
total_steps: Annotated[
|
|
30
|
-
int | None, Field(description=
|
|
30
|
+
int | None, Field(description="Total number of steps in the operation", ge=1)
|
|
31
31
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/create_media_buy_request.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -21,12 +21,12 @@ from . import package_request
|
|
|
21
21
|
|
|
22
22
|
class Authentication(AdCPBaseModel):
|
|
23
23
|
model_config = ConfigDict(
|
|
24
|
-
extra=
|
|
24
|
+
extra="forbid",
|
|
25
25
|
)
|
|
26
26
|
credentials: Annotated[
|
|
27
27
|
str,
|
|
28
28
|
Field(
|
|
29
|
-
description=
|
|
29
|
+
description="Credentials for authentication. For Bearer: token sent in Authorization header. For HMAC-SHA256: shared secret used to generate signature. Minimum 32 characters. Exchanged out-of-band during onboarding.",
|
|
30
30
|
min_length=32,
|
|
31
31
|
),
|
|
32
32
|
]
|
|
@@ -41,22 +41,22 @@ class Authentication(AdCPBaseModel):
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
class BatchFrequency(Enum):
|
|
44
|
-
hourly =
|
|
45
|
-
daily =
|
|
44
|
+
hourly = "hourly"
|
|
45
|
+
daily = "daily"
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class DeliveryMode(Enum):
|
|
49
|
-
realtime =
|
|
50
|
-
batched =
|
|
49
|
+
realtime = "realtime"
|
|
50
|
+
batched = "batched"
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
class ArtifactWebhook(AdCPBaseModel):
|
|
54
54
|
model_config = ConfigDict(
|
|
55
|
-
extra=
|
|
55
|
+
extra="allow",
|
|
56
56
|
)
|
|
57
57
|
authentication: Annotated[
|
|
58
58
|
Authentication,
|
|
59
|
-
Field(description=
|
|
59
|
+
Field(description="Authentication configuration for webhook delivery (A2A-compatible)"),
|
|
60
60
|
]
|
|
61
61
|
batch_frequency: Annotated[
|
|
62
62
|
BatchFrequency | None,
|
|
@@ -73,7 +73,7 @@ class ArtifactWebhook(AdCPBaseModel):
|
|
|
73
73
|
sampling_rate: Annotated[
|
|
74
74
|
float | None,
|
|
75
75
|
Field(
|
|
76
|
-
description=
|
|
76
|
+
description="Fraction of impressions to include (0-1). 1.0 = all impressions, 0.1 = 10% sample. Default: 1.0",
|
|
77
77
|
ge=0.0,
|
|
78
78
|
le=1.0,
|
|
79
79
|
),
|
|
@@ -81,41 +81,47 @@ class ArtifactWebhook(AdCPBaseModel):
|
|
|
81
81
|
token: Annotated[
|
|
82
82
|
str | None,
|
|
83
83
|
Field(
|
|
84
|
-
description=
|
|
84
|
+
description="Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.",
|
|
85
85
|
min_length=16,
|
|
86
86
|
),
|
|
87
87
|
] = None
|
|
88
|
-
url: Annotated[AnyUrl, Field(description=
|
|
88
|
+
url: Annotated[AnyUrl, Field(description="Webhook endpoint URL for artifact delivery")]
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
class TotalBudget(AdCPBaseModel):
|
|
92
92
|
model_config = ConfigDict(
|
|
93
|
-
extra=
|
|
93
|
+
extra="forbid",
|
|
94
94
|
)
|
|
95
|
-
amount: Annotated[float, Field(description=
|
|
96
|
-
currency: Annotated[str, Field(description=
|
|
95
|
+
amount: Annotated[float, Field(description="Total budget amount", ge=0.0)]
|
|
96
|
+
currency: Annotated[str, Field(description="ISO 4217 currency code")]
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
class CreateMediaBuyRequest(AdCPBaseModel):
|
|
100
100
|
model_config = ConfigDict(
|
|
101
|
-
extra=
|
|
101
|
+
extra="allow",
|
|
102
102
|
)
|
|
103
|
+
account_id: Annotated[
|
|
104
|
+
str | None,
|
|
105
|
+
Field(
|
|
106
|
+
description="Account to bill for this media buy. Optional if the agent has a single account or the seller can determine the account from context (brand + agent). Required if the agent has multiple accounts and the seller cannot route automatically."
|
|
107
|
+
),
|
|
108
|
+
] = None
|
|
103
109
|
artifact_webhook: Annotated[
|
|
104
110
|
ArtifactWebhook | None,
|
|
105
111
|
Field(
|
|
106
|
-
description=
|
|
112
|
+
description="Optional webhook configuration for content artifact delivery. Used by governance agents to validate content adjacency. Seller pushes artifacts to this endpoint; orchestrator forwards to governance agent for validation."
|
|
107
113
|
),
|
|
108
114
|
] = None
|
|
109
115
|
brand_manifest: Annotated[
|
|
110
116
|
brand_manifest_ref.BrandManifestReference,
|
|
111
117
|
Field(
|
|
112
|
-
description=
|
|
118
|
+
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."
|
|
113
119
|
),
|
|
114
120
|
]
|
|
115
121
|
buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for this media buy")]
|
|
116
122
|
context: context_1.ContextObject | None = None
|
|
117
123
|
end_time: Annotated[
|
|
118
|
-
AwareDatetime, Field(description=
|
|
124
|
+
AwareDatetime, Field(description="Campaign end date/time in ISO 8601 format")
|
|
119
125
|
]
|
|
120
126
|
ext: ext_1.ExtensionObject | None = None
|
|
121
127
|
packages: Annotated[
|
|
@@ -124,7 +130,7 @@ class CreateMediaBuyRequest(AdCPBaseModel):
|
|
|
124
130
|
description="Array of package configurations. Required when not using proposal_id. When executing a proposal, this can be omitted and packages will be derived from the proposal's allocations."
|
|
125
131
|
),
|
|
126
132
|
] = None
|
|
127
|
-
po_number: Annotated[str | None, Field(description=
|
|
133
|
+
po_number: Annotated[str | None, Field(description="Purchase order number for tracking")] = None
|
|
128
134
|
proposal_id: Annotated[
|
|
129
135
|
str | None,
|
|
130
136
|
Field(
|
|
@@ -133,7 +139,7 @@ class CreateMediaBuyRequest(AdCPBaseModel):
|
|
|
133
139
|
] = None
|
|
134
140
|
reporting_webhook: Annotated[
|
|
135
141
|
reporting_webhook_1.ReportingWebhook | None,
|
|
136
|
-
Field(description=
|
|
142
|
+
Field(description="Optional webhook configuration for automated reporting delivery"),
|
|
137
143
|
] = None
|
|
138
144
|
start_time: start_timing.StartTiming
|
|
139
145
|
total_budget: Annotated[
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/create_media_buy_response.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,6 +9,7 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
+
from ..core import account as account_1
|
|
12
13
|
from ..core import context as context_1
|
|
13
14
|
from ..core import error
|
|
14
15
|
from ..core import ext as ext_1
|
|
@@ -17,24 +18,30 @@ from ..core import package
|
|
|
17
18
|
|
|
18
19
|
class CreateMediaBuyResponse2(AdCPBaseModel):
|
|
19
20
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
21
|
+
extra="allow",
|
|
21
22
|
)
|
|
22
23
|
context: context_1.ContextObject | None = None
|
|
23
24
|
errors: Annotated[
|
|
24
25
|
list[error.Error],
|
|
25
|
-
Field(description=
|
|
26
|
+
Field(description="Array of errors explaining why the operation failed", min_length=1),
|
|
26
27
|
]
|
|
27
28
|
ext: ext_1.ExtensionObject | None = None
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
class CreateMediaBuyResponse1(AdCPBaseModel):
|
|
31
32
|
model_config = ConfigDict(
|
|
32
|
-
extra=
|
|
33
|
+
extra="allow",
|
|
33
34
|
)
|
|
35
|
+
account: Annotated[
|
|
36
|
+
account_1.Account | None,
|
|
37
|
+
Field(
|
|
38
|
+
description="Account billed for this media buy. Includes advertiser, billing proxy (if any), and rate card applied."
|
|
39
|
+
),
|
|
40
|
+
] = None
|
|
34
41
|
buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for this media buy")]
|
|
35
42
|
context: context_1.ContextObject | None = None
|
|
36
43
|
creative_deadline: Annotated[
|
|
37
|
-
AwareDatetime | None, Field(description=
|
|
44
|
+
AwareDatetime | None, Field(description="ISO 8601 timestamp for creative upload deadline")
|
|
38
45
|
] = None
|
|
39
46
|
ext: ext_1.ExtensionObject | None = None
|
|
40
47
|
media_buy_id: Annotated[
|
|
@@ -42,7 +49,7 @@ class CreateMediaBuyResponse1(AdCPBaseModel):
|
|
|
42
49
|
]
|
|
43
50
|
packages: Annotated[
|
|
44
51
|
list[package.Package],
|
|
45
|
-
Field(description=
|
|
52
|
+
Field(description="Array of created packages with complete state information"),
|
|
46
53
|
]
|
|
47
54
|
|
|
48
55
|
|
|
@@ -50,7 +57,7 @@ class CreateMediaBuyResponse(RootModel[CreateMediaBuyResponse1 | CreateMediaBuyR
|
|
|
50
57
|
root: Annotated[
|
|
51
58
|
CreateMediaBuyResponse1 | CreateMediaBuyResponse2,
|
|
52
59
|
Field(
|
|
53
|
-
description=
|
|
54
|
-
title=
|
|
60
|
+
description="Response payload for create_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the media buy is either fully created or not created at all.",
|
|
61
|
+
title="Create Media Buy Response",
|
|
55
62
|
),
|
|
56
63
|
]
|
|
@@ -16,32 +16,32 @@ from ..enums import media_buy_status
|
|
|
16
16
|
|
|
17
17
|
class GetMediaBuyDeliveryRequest(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
buyer_refs: Annotated[
|
|
22
|
-
list[str] | None, Field(description=
|
|
22
|
+
list[str] | None, Field(description="Array of buyer reference IDs to get delivery data for")
|
|
23
23
|
] = None
|
|
24
24
|
context: context_1.ContextObject | None = None
|
|
25
25
|
end_date: Annotated[
|
|
26
26
|
str | None,
|
|
27
27
|
Field(
|
|
28
|
-
description=
|
|
29
|
-
pattern=
|
|
28
|
+
description="End date for reporting period (YYYY-MM-DD)",
|
|
29
|
+
pattern="^\\d{4}-\\d{2}-\\d{2}$",
|
|
30
30
|
),
|
|
31
31
|
] = None
|
|
32
32
|
ext: ext_1.ExtensionObject | None = None
|
|
33
33
|
media_buy_ids: Annotated[
|
|
34
34
|
list[str] | None,
|
|
35
|
-
Field(description=
|
|
35
|
+
Field(description="Array of publisher media buy IDs to get delivery data for"),
|
|
36
36
|
] = None
|
|
37
37
|
start_date: Annotated[
|
|
38
38
|
str | None,
|
|
39
39
|
Field(
|
|
40
|
-
description=
|
|
41
|
-
pattern=
|
|
40
|
+
description="Start date for reporting period (YYYY-MM-DD)",
|
|
41
|
+
pattern="^\\d{4}-\\d{2}-\\d{2}$",
|
|
42
42
|
),
|
|
43
43
|
] = None
|
|
44
44
|
status_filter: Annotated[
|
|
45
45
|
media_buy_status.MediaBuyStatus | list[media_buy_status.MediaBuyStatus] | None,
|
|
46
|
-
Field(description=
|
|
46
|
+
Field(description="Filter by status. Can be a single status or array of statuses"),
|
|
47
47
|
] = None
|