adcp 2.11.1__py3-none-any.whl → 2.12.1__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 -0
- adcp/__init__.py +24 -3
- adcp/__main__.py +31 -3
- adcp/client.py +16 -0
- adcp/protocols/a2a.py +178 -25
- adcp/protocols/base.py +23 -4
- adcp/protocols/mcp.py +44 -0
- adcp/types/__init__.py +2 -26
- adcp/types/_generated.py +179 -158
- adcp/types/generated_poc/adagents.py +221 -25
- adcp/types/generated_poc/core/__init__.py +3 -0
- adcp/types/generated_poc/{activation_key.py → core/activation_key.py} +2 -2
- adcp/types/generated_poc/core/assets/__init__.py +3 -0
- adcp/types/generated_poc/{audio_asset.py → core/assets/audio_asset.py} +2 -2
- adcp/types/generated_poc/{css_asset.py → core/assets/css_asset.py} +2 -2
- adcp/types/generated_poc/{daast_asset.py → core/assets/daast_asset.py} +4 -4
- adcp/types/generated_poc/{html_asset.py → core/assets/html_asset.py} +2 -2
- adcp/types/generated_poc/core/assets/image_asset.py +19 -0
- adcp/types/generated_poc/{javascript_asset.py → core/assets/javascript_asset.py} +3 -3
- adcp/types/generated_poc/{text_asset.py → core/assets/text_asset.py} +2 -2
- adcp/types/generated_poc/{url_asset.py → core/assets/url_asset.py} +3 -3
- adcp/types/generated_poc/{vast_asset.py → core/assets/vast_asset.py} +4 -4
- adcp/types/generated_poc/{video_asset.py → core/assets/video_asset.py} +7 -11
- adcp/types/generated_poc/{webhook_asset.py → core/assets/webhook_asset.py} +3 -3
- adcp/types/generated_poc/{brand_manifest.py → core/brand_manifest.py} +3 -3
- adcp/types/generated_poc/core/context.py +15 -0
- adcp/types/generated_poc/{creative_asset.py → core/creative_asset.py} +25 -6
- adcp/types/generated_poc/{creative_assignment.py → core/creative_assignment.py} +2 -2
- adcp/types/generated_poc/{creative_filters.py → core/creative_filters.py} +12 -3
- adcp/types/generated_poc/{creative_manifest.py → core/creative_manifest.py} +13 -6
- adcp/types/generated_poc/{creative_policy.py → core/creative_policy.py} +3 -3
- adcp/types/generated_poc/{delivery_metrics.py → core/delivery_metrics.py} +2 -2
- adcp/types/generated_poc/{deployment.py → core/deployment.py} +2 -2
- adcp/types/generated_poc/{destination.py → core/destination.py} +2 -2
- adcp/types/generated_poc/core/dimensions.py +18 -0
- adcp/types/generated_poc/{error.py → core/error.py} +2 -2
- adcp/types/generated_poc/core/ext.py +15 -0
- adcp/types/generated_poc/{format.py → core/format.py} +85 -54
- adcp/types/generated_poc/core/format_id.py +50 -0
- adcp/types/generated_poc/{frequency_cap.py → core/frequency_cap.py} +2 -2
- adcp/types/generated_poc/{measurement.py → core/measurement.py} +2 -2
- adcp/types/generated_poc/{media_buy.py → core/media_buy.py} +6 -3
- adcp/types/generated_poc/{package.py → core/package.py} +13 -6
- adcp/types/generated_poc/{performance_feedback.py → core/performance_feedback.py} +4 -4
- adcp/types/generated_poc/{placement.py → core/placement.py} +3 -3
- adcp/types/generated_poc/{product.py → core/product.py} +16 -6
- adcp/types/generated_poc/core/product_filters.py +97 -0
- adcp/types/generated_poc/{promoted_offerings.py → core/promoted_offerings.py} +2 -2
- adcp/types/generated_poc/{promoted_products.py → core/promoted_products.py} +2 -2
- adcp/types/generated_poc/{property.py → core/property.py} +5 -4
- adcp/types/generated_poc/{property_id.py → core/property_id.py} +2 -2
- adcp/types/generated_poc/{property_tag.py → core/property_tag.py} +2 -2
- adcp/types/generated_poc/{protocol_envelope.py → core/protocol_envelope.py} +3 -3
- adcp/types/generated_poc/{publisher_property_selector.py → core/publisher_property_selector.py} +2 -2
- adcp/types/generated_poc/{push_notification_config.py → core/push_notification_config.py} +3 -3
- adcp/types/generated_poc/{reporting_capabilities.py → core/reporting_capabilities.py} +3 -3
- adcp/types/generated_poc/{response.py → core/response.py} +2 -2
- adcp/types/generated_poc/{signal_filters.py → core/signal_filters.py} +3 -3
- adcp/types/generated_poc/{sub_asset.py → core/sub_asset.py} +2 -2
- adcp/types/generated_poc/{targeting.py → core/targeting.py} +2 -2
- adcp/types/generated_poc/{webhook_payload.py → core/webhook_payload.py} +4 -4
- adcp/types/generated_poc/creative/__init__.py +3 -0
- adcp/types/generated_poc/creative/list_creative_formats_request.py +88 -0
- adcp/types/generated_poc/creative/list_creative_formats_response.py +55 -0
- adcp/types/generated_poc/{preview_creative_request.py → creative/preview_creative_request.py} +13 -18
- adcp/types/generated_poc/{preview_creative_response.py → creative/preview_creative_response.py} +8 -14
- adcp/types/generated_poc/{preview_render.py → creative/preview_render.py} +2 -2
- adcp/types/generated_poc/enums/__init__.py +3 -0
- adcp/types/generated_poc/{adcp_domain.py → enums/adcp_domain.py} +2 -2
- adcp/types/generated_poc/{asset_content_type.py → enums/asset_content_type.py} +2 -2
- adcp/types/generated_poc/{auth_scheme.py → enums/auth_scheme.py} +2 -2
- adcp/types/generated_poc/{available_metric.py → enums/available_metric.py} +2 -2
- adcp/types/generated_poc/{channels.py → enums/channels.py} +2 -2
- adcp/types/generated_poc/{co_branding_requirement.py → enums/co_branding_requirement.py} +2 -2
- adcp/types/generated_poc/{creative_action.py → enums/creative_action.py} +2 -2
- adcp/types/generated_poc/{creative_agent_capability.py → enums/creative_agent_capability.py} +2 -2
- adcp/types/generated_poc/{creative_sort_field.py → enums/creative_sort_field.py} +2 -2
- adcp/types/generated_poc/{creative_status.py → enums/creative_status.py} +2 -2
- adcp/types/generated_poc/{daast_tracking_event.py → enums/daast_tracking_event.py} +2 -2
- adcp/types/generated_poc/{daast_version.py → enums/daast_version.py} +2 -2
- adcp/types/generated_poc/{delivery_type.py → enums/delivery_type.py} +2 -2
- adcp/types/generated_poc/{dimension_unit.py → enums/dimension_unit.py} +2 -2
- adcp/types/generated_poc/{feed_format.py → enums/feed_format.py} +2 -2
- adcp/types/generated_poc/{feedback_source.py → enums/feedback_source.py} +2 -2
- adcp/types/generated_poc/{format_category.py → enums/format_category.py} +2 -2
- adcp/types/generated_poc/enums/format_id_parameter.py +12 -0
- adcp/types/generated_poc/{frequency_cap_scope.py → enums/frequency_cap_scope.py} +2 -2
- adcp/types/generated_poc/{history_entry_type.py → enums/history_entry_type.py} +2 -2
- adcp/types/generated_poc/{http_method.py → enums/http_method.py} +2 -2
- adcp/types/generated_poc/{identifier_types.py → enums/identifier_types.py} +2 -2
- adcp/types/generated_poc/{javascript_module_type.py → enums/javascript_module_type.py} +2 -2
- adcp/types/generated_poc/{landing_page_requirement.py → enums/landing_page_requirement.py} +2 -2
- adcp/types/generated_poc/{markdown_flavor.py → enums/markdown_flavor.py} +2 -2
- adcp/types/generated_poc/{media_buy_status.py → enums/media_buy_status.py} +2 -2
- adcp/types/generated_poc/{metric_type.py → enums/metric_type.py} +2 -2
- adcp/types/generated_poc/{notification_type.py → enums/notification_type.py} +2 -2
- adcp/types/generated_poc/{pacing.py → enums/pacing.py} +2 -2
- adcp/types/generated_poc/{preview_output_format.py → enums/preview_output_format.py} +2 -2
- adcp/types/generated_poc/{pricing_model.py → enums/pricing_model.py} +2 -2
- adcp/types/generated_poc/{property_type.py → enums/property_type.py} +2 -2
- adcp/types/generated_poc/{publisher_identifier_types.py → enums/publisher_identifier_types.py} +2 -2
- adcp/types/generated_poc/{reporting_frequency.py → enums/reporting_frequency.py} +2 -2
- adcp/types/generated_poc/{signal_catalog_type.py → enums/signal_catalog_type.py} +2 -2
- adcp/types/generated_poc/{sort_direction.py → enums/sort_direction.py} +2 -2
- adcp/types/generated_poc/{standard_format_ids.py → enums/standard_format_ids.py} +2 -2
- adcp/types/generated_poc/{task_status.py → enums/task_status.py} +2 -2
- adcp/types/generated_poc/{task_type.py → enums/task_type.py} +2 -2
- adcp/types/generated_poc/{update_frequency.py → enums/update_frequency.py} +2 -2
- adcp/types/generated_poc/{url_asset_type.py → enums/url_asset_type.py} +2 -2
- adcp/types/generated_poc/{validation_mode.py → enums/validation_mode.py} +2 -2
- adcp/types/generated_poc/{vast_tracking_event.py → enums/vast_tracking_event.py} +2 -2
- adcp/types/generated_poc/{vast_version.py → enums/vast_version.py} +2 -2
- adcp/types/generated_poc/{webhook_response_type.py → enums/webhook_response_type.py} +2 -2
- adcp/types/generated_poc/{webhook_security_method.py → enums/webhook_security_method.py} +2 -2
- adcp/types/generated_poc/media_buy/__init__.py +3 -0
- adcp/types/generated_poc/{build_creative_request.py → media_buy/build_creative_request.py} +9 -11
- adcp/types/generated_poc/{build_creative_response.py → media_buy/build_creative_response.py} +11 -17
- adcp/types/generated_poc/{create_media_buy_request.py → media_buy/create_media_buy_request.py} +9 -11
- adcp/types/generated_poc/{create_media_buy_response.py → media_buy/create_media_buy_response.py} +11 -16
- adcp/types/generated_poc/{get_media_buy_delivery_request.py → media_buy/get_media_buy_delivery_request.py} +8 -10
- adcp/types/generated_poc/{get_media_buy_delivery_response.py → media_buy/get_media_buy_delivery_response.py} +27 -12
- adcp/types/generated_poc/{get_products_request.py → media_buy/get_products_request.py} +9 -11
- adcp/types/generated_poc/{get_products_response.py → media_buy/get_products_response.py} +9 -10
- adcp/types/generated_poc/{list_authorized_properties_request.py → media_buy/list_authorized_properties_request.py} +8 -9
- adcp/types/generated_poc/{list_authorized_properties_response.py → media_buy/list_authorized_properties_response.py} +9 -10
- adcp/types/generated_poc/{list_creative_formats_request.py → media_buy/list_creative_formats_request.py} +9 -10
- adcp/types/generated_poc/{list_creative_formats_response.py → media_buy/list_creative_formats_response.py} +10 -10
- adcp/types/generated_poc/{list_creatives_request.py → media_buy/list_creatives_request.py} +9 -10
- adcp/types/generated_poc/{list_creatives_response.py → media_buy/list_creatives_response.py} +14 -15
- adcp/types/generated_poc/{package_request.py → media_buy/package_request.py} +7 -5
- adcp/types/generated_poc/{provide_performance_feedback_request.py → media_buy/provide_performance_feedback_request.py} +11 -17
- adcp/types/generated_poc/{provide_performance_feedback_response.py → media_buy/provide_performance_feedback_response.py} +10 -16
- adcp/types/generated_poc/{sync_creatives_request.py → media_buy/sync_creatives_request.py} +14 -15
- adcp/types/generated_poc/{sync_creatives_response.py → media_buy/sync_creatives_response.py} +11 -16
- adcp/types/generated_poc/{update_media_buy_request.py → media_buy/update_media_buy_request.py} +63 -28
- adcp/types/generated_poc/{update_media_buy_response.py → media_buy/update_media_buy_response.py} +11 -16
- adcp/types/generated_poc/pricing_options/__init__.py +3 -0
- adcp/types/generated_poc/{cpc_option.py → pricing_options/cpc_option.py} +2 -2
- adcp/types/generated_poc/{cpcv_option.py → pricing_options/cpcv_option.py} +2 -2
- adcp/types/generated_poc/{cpm_auction_option.py → pricing_options/cpm_auction_option.py} +2 -2
- adcp/types/generated_poc/{cpm_fixed_option.py → pricing_options/cpm_fixed_option.py} +2 -2
- adcp/types/generated_poc/{cpp_option.py → pricing_options/cpp_option.py} +2 -2
- adcp/types/generated_poc/{cpv_option.py → pricing_options/cpv_option.py} +2 -2
- adcp/types/generated_poc/{flat_rate_option.py → pricing_options/flat_rate_option.py} +2 -2
- adcp/types/generated_poc/{vcpm_auction_option.py → pricing_options/vcpm_auction_option.py} +2 -2
- adcp/types/generated_poc/{vcpm_fixed_option.py → pricing_options/vcpm_fixed_option.py} +2 -2
- adcp/types/generated_poc/protocols/__init__.py +3 -0
- adcp/types/generated_poc/protocols/adcp_extension.py +37 -0
- adcp/types/generated_poc/signals/__init__.py +3 -0
- adcp/types/generated_poc/{activate_signal_request.py → signals/activate_signal_request.py} +8 -10
- adcp/types/generated_poc/{activate_signal_response.py → signals/activate_signal_response.py} +10 -16
- adcp/types/generated_poc/{get_signals_request.py → signals/get_signals_request.py} +9 -10
- adcp/types/generated_poc/{get_signals_response.py → signals/get_signals_response.py} +9 -10
- adcp/utils/preview_cache.py +15 -3
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/METADATA +1 -1
- adcp-2.12.1.dist-info/RECORD +176 -0
- adcp/types/generated_poc/format_id.py +0 -29
- adcp/types/generated_poc/image_asset.py +0 -23
- adcp/types/generated_poc/markdown_asset.py +0 -39
- adcp/types/generated_poc/package_status.py +0 -14
- adcp/types/generated_poc/product_filters.py +0 -36
- adcp/types/generated_poc/tasks_get_request.py +0 -29
- adcp/types/generated_poc/tasks_get_response.py +0 -112
- adcp/types/generated_poc/tasks_list_request.py +0 -115
- adcp/types/generated_poc/tasks_list_response.py +0 -122
- adcp-2.11.1.dist-info/RECORD +0 -166
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/WHEEL +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/entry_points.txt +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/top_level.txt +0 -0
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: media_buy/sync_creatives_request.json
|
|
3
|
+
# timestamp: 2025-11-22T16:02:47+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import creative_asset
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import push_notification_config as push_notification_config_1
|
|
16
|
+
from ..enums import validation_mode as validation_mode_1
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
class SyncCreativesRequest(AdCPBaseModel):
|
|
@@ -22,10 +24,12 @@ class SyncCreativesRequest(AdCPBaseModel):
|
|
|
22
24
|
dict[str, list[str]] | None,
|
|
23
25
|
Field(description='Optional bulk assignment of creatives to packages'),
|
|
24
26
|
] = None
|
|
25
|
-
context:
|
|
26
|
-
|
|
27
|
+
context: context_1.ContextObject | None = None
|
|
28
|
+
creative_ids: Annotated[
|
|
29
|
+
list[str] | None,
|
|
27
30
|
Field(
|
|
28
|
-
description='
|
|
31
|
+
description='Optional filter to limit sync scope to specific creative IDs. When provided, only these creatives will be created/updated. Other creatives in the library are unaffected. Useful for partial updates and error recovery.',
|
|
32
|
+
max_length=100,
|
|
29
33
|
),
|
|
30
34
|
] = None
|
|
31
35
|
creatives: Annotated[
|
|
@@ -44,12 +48,7 @@ class SyncCreativesRequest(AdCPBaseModel):
|
|
|
44
48
|
description='When true, preview changes without applying them. Returns what would be created/updated/deleted.'
|
|
45
49
|
),
|
|
46
50
|
] = False
|
|
47
|
-
|
|
48
|
-
bool | None,
|
|
49
|
-
Field(
|
|
50
|
-
description='When true, only provided fields are updated (partial update). When false, entire creative is replaced (full upsert).'
|
|
51
|
-
),
|
|
52
|
-
] = False
|
|
51
|
+
ext: ext_1.ExtensionObject | None = None
|
|
53
52
|
push_notification_config: Annotated[
|
|
54
53
|
push_notification_config_1.PushNotificationConfig | None,
|
|
55
54
|
Field(
|
adcp/types/generated_poc/{sync_creatives_response.py → media_buy/sync_creatives_response.py}
RENAMED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: media_buy/sync_creatives_response.json
|
|
3
|
+
# timestamp: 2025-11-22T19:16:02+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AnyUrl, AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import error
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..enums import creative_action
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
class Creative(AdCPBaseModel):
|
|
@@ -64,12 +67,7 @@ class SyncCreativesResponse1(AdCPBaseModel):
|
|
|
64
67
|
model_config = ConfigDict(
|
|
65
68
|
extra='forbid',
|
|
66
69
|
)
|
|
67
|
-
context:
|
|
68
|
-
dict[str, Any] | None,
|
|
69
|
-
Field(
|
|
70
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
71
|
-
),
|
|
72
|
-
] = None
|
|
70
|
+
context: context_1.ContextObject | None = None
|
|
73
71
|
creatives: Annotated[
|
|
74
72
|
list[Creative],
|
|
75
73
|
Field(
|
|
@@ -79,18 +77,14 @@ class SyncCreativesResponse1(AdCPBaseModel):
|
|
|
79
77
|
dry_run: Annotated[
|
|
80
78
|
bool | None, Field(description='Whether this was a dry run (no actual changes made)')
|
|
81
79
|
] = None
|
|
80
|
+
ext: ext_1.ExtensionObject | None = None
|
|
82
81
|
|
|
83
82
|
|
|
84
83
|
class SyncCreativesResponse2(AdCPBaseModel):
|
|
85
84
|
model_config = ConfigDict(
|
|
86
85
|
extra='forbid',
|
|
87
86
|
)
|
|
88
|
-
context:
|
|
89
|
-
dict[str, Any] | None,
|
|
90
|
-
Field(
|
|
91
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
92
|
-
),
|
|
93
|
-
] = None
|
|
87
|
+
context: context_1.ContextObject | None = None
|
|
94
88
|
errors: Annotated[
|
|
95
89
|
list[error.Error],
|
|
96
90
|
Field(
|
|
@@ -98,6 +92,7 @@ class SyncCreativesResponse2(AdCPBaseModel):
|
|
|
98
92
|
min_length=1,
|
|
99
93
|
),
|
|
100
94
|
]
|
|
95
|
+
ext: ext_1.ExtensionObject | None = None
|
|
101
96
|
|
|
102
97
|
|
|
103
98
|
class SyncCreativesResponse(RootModel[SyncCreativesResponse1 | SyncCreativesResponse2]):
|
adcp/types/generated_poc/{update_media_buy_request.py → media_buy/update_media_buy_request.py}
RENAMED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: media_buy/update_media_buy_request.json
|
|
3
|
+
# timestamp: 2025-11-22T16:02:47+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import creative_asset, creative_assignment
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import push_notification_config as push_notification_config_1
|
|
16
|
+
from ..core import targeting
|
|
17
|
+
from ..enums import pacing as pacing_1
|
|
15
18
|
|
|
16
19
|
|
|
17
20
|
class Packages(AdCPBaseModel):
|
|
18
21
|
model_config = ConfigDict(
|
|
19
22
|
extra='forbid',
|
|
20
23
|
)
|
|
21
|
-
active: Annotated[bool | None, Field(description='Pause/resume specific package')] = None
|
|
22
24
|
bid_price: Annotated[
|
|
23
25
|
float | None,
|
|
24
26
|
Field(
|
|
@@ -36,11 +38,29 @@ class Packages(AdCPBaseModel):
|
|
|
36
38
|
buyer_ref: Annotated[
|
|
37
39
|
str | None, Field(description="Buyer's reference for the package to update")
|
|
38
40
|
] = None
|
|
39
|
-
|
|
40
|
-
None
|
|
41
|
-
|
|
41
|
+
creative_assignments: Annotated[
|
|
42
|
+
list[creative_assignment.CreativeAssignment] | None,
|
|
43
|
+
Field(
|
|
44
|
+
description='Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids.'
|
|
45
|
+
),
|
|
46
|
+
] = None
|
|
47
|
+
creative_ids: Annotated[
|
|
48
|
+
list[str] | None,
|
|
49
|
+
Field(description='Update creative assignments (references existing library creatives)'),
|
|
50
|
+
] = None
|
|
51
|
+
creatives: Annotated[
|
|
52
|
+
list[creative_asset.CreativeAsset] | None,
|
|
53
|
+
Field(
|
|
54
|
+
description='Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.',
|
|
55
|
+
max_length=100,
|
|
56
|
+
),
|
|
57
|
+
] = None
|
|
42
58
|
pacing: pacing_1.Pacing | None = None
|
|
43
59
|
package_id: Annotated[str, Field(description="Publisher's ID of package to update")]
|
|
60
|
+
paused: Annotated[
|
|
61
|
+
bool | None,
|
|
62
|
+
Field(description='Pause/resume specific package (true = paused, false = active)'),
|
|
63
|
+
] = None
|
|
44
64
|
targeting_overlay: targeting.TargetingOverlay | None = None
|
|
45
65
|
|
|
46
66
|
|
|
@@ -48,7 +68,6 @@ class Packages1(AdCPBaseModel):
|
|
|
48
68
|
model_config = ConfigDict(
|
|
49
69
|
extra='forbid',
|
|
50
70
|
)
|
|
51
|
-
active: Annotated[bool | None, Field(description='Pause/resume specific package')] = None
|
|
52
71
|
bid_price: Annotated[
|
|
53
72
|
float | None,
|
|
54
73
|
Field(
|
|
@@ -64,13 +83,31 @@ class Packages1(AdCPBaseModel):
|
|
|
64
83
|
),
|
|
65
84
|
] = None
|
|
66
85
|
buyer_ref: Annotated[str, Field(description="Buyer's reference for the package to update")]
|
|
67
|
-
|
|
68
|
-
None
|
|
69
|
-
|
|
86
|
+
creative_assignments: Annotated[
|
|
87
|
+
list[creative_assignment.CreativeAssignment] | None,
|
|
88
|
+
Field(
|
|
89
|
+
description='Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids.'
|
|
90
|
+
),
|
|
91
|
+
] = None
|
|
92
|
+
creative_ids: Annotated[
|
|
93
|
+
list[str] | None,
|
|
94
|
+
Field(description='Update creative assignments (references existing library creatives)'),
|
|
95
|
+
] = None
|
|
96
|
+
creatives: Annotated[
|
|
97
|
+
list[creative_asset.CreativeAsset] | None,
|
|
98
|
+
Field(
|
|
99
|
+
description='Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.',
|
|
100
|
+
max_length=100,
|
|
101
|
+
),
|
|
102
|
+
] = None
|
|
70
103
|
pacing: pacing_1.Pacing | None = None
|
|
71
104
|
package_id: Annotated[str | None, Field(description="Publisher's ID of package to update")] = (
|
|
72
105
|
None
|
|
73
106
|
)
|
|
107
|
+
paused: Annotated[
|
|
108
|
+
bool | None,
|
|
109
|
+
Field(description='Pause/resume specific package (true = paused, false = active)'),
|
|
110
|
+
] = None
|
|
74
111
|
targeting_overlay: targeting.TargetingOverlay | None = None
|
|
75
112
|
|
|
76
113
|
|
|
@@ -78,23 +115,22 @@ class UpdateMediaBuyRequest1(AdCPBaseModel):
|
|
|
78
115
|
model_config = ConfigDict(
|
|
79
116
|
extra='forbid',
|
|
80
117
|
)
|
|
81
|
-
active: Annotated[bool | None, Field(description='Pause/resume the entire media buy')] = None
|
|
82
118
|
buyer_ref: Annotated[
|
|
83
119
|
str | None, Field(description="Buyer's reference for the media buy to update")
|
|
84
120
|
] = None
|
|
85
|
-
context:
|
|
86
|
-
dict[str, Any] | None,
|
|
87
|
-
Field(
|
|
88
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
89
|
-
),
|
|
90
|
-
] = None
|
|
121
|
+
context: context_1.ContextObject | None = None
|
|
91
122
|
end_time: Annotated[
|
|
92
123
|
AwareDatetime | None, Field(description='New end date/time in ISO 8601 format')
|
|
93
124
|
] = None
|
|
125
|
+
ext: ext_1.ExtensionObject | None = None
|
|
94
126
|
media_buy_id: Annotated[str, Field(description="Publisher's ID of the media buy to update")]
|
|
95
127
|
packages: Annotated[
|
|
96
128
|
list[Packages | Packages1] | None, Field(description='Package-specific updates')
|
|
97
129
|
] = None
|
|
130
|
+
paused: Annotated[
|
|
131
|
+
bool | None,
|
|
132
|
+
Field(description='Pause/resume the entire media buy (true = paused, false = active)'),
|
|
133
|
+
] = None
|
|
98
134
|
push_notification_config: Annotated[
|
|
99
135
|
push_notification_config_1.PushNotificationConfig | None,
|
|
100
136
|
Field(
|
|
@@ -119,23 +155,22 @@ class UpdateMediaBuyRequest2(AdCPBaseModel):
|
|
|
119
155
|
model_config = ConfigDict(
|
|
120
156
|
extra='forbid',
|
|
121
157
|
)
|
|
122
|
-
active: Annotated[bool | None, Field(description='Pause/resume the entire media buy')] = None
|
|
123
158
|
buyer_ref: Annotated[str, Field(description="Buyer's reference for the media buy to update")]
|
|
124
|
-
context:
|
|
125
|
-
dict[str, Any] | None,
|
|
126
|
-
Field(
|
|
127
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
128
|
-
),
|
|
129
|
-
] = None
|
|
159
|
+
context: context_1.ContextObject | None = None
|
|
130
160
|
end_time: Annotated[
|
|
131
161
|
AwareDatetime | None, Field(description='New end date/time in ISO 8601 format')
|
|
132
162
|
] = None
|
|
163
|
+
ext: ext_1.ExtensionObject | None = None
|
|
133
164
|
media_buy_id: Annotated[
|
|
134
165
|
str | None, Field(description="Publisher's ID of the media buy to update")
|
|
135
166
|
] = None
|
|
136
167
|
packages: Annotated[
|
|
137
168
|
list[Packages2 | Packages3] | None, Field(description='Package-specific updates')
|
|
138
169
|
] = None
|
|
170
|
+
paused: Annotated[
|
|
171
|
+
bool | None,
|
|
172
|
+
Field(description='Pause/resume the entire media buy (true = paused, false = active)'),
|
|
173
|
+
] = None
|
|
139
174
|
push_notification_config: Annotated[
|
|
140
175
|
push_notification_config_1.PushNotificationConfig | None,
|
|
141
176
|
Field(
|
adcp/types/generated_poc/{update_media_buy_response.py → media_buy/update_media_buy_response.py}
RENAMED
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: media_buy/update_media_buy_response.json
|
|
3
|
+
# timestamp: 2025-11-22T19:16:02+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import error
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import package
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
class UpdateMediaBuyResponse2(AdCPBaseModel):
|
|
16
19
|
model_config = ConfigDict(
|
|
17
20
|
extra='forbid',
|
|
18
21
|
)
|
|
19
|
-
context:
|
|
20
|
-
dict[str, Any] | None,
|
|
21
|
-
Field(
|
|
22
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
23
|
-
),
|
|
24
|
-
] = None
|
|
22
|
+
context: context_1.ContextObject | None = None
|
|
25
23
|
errors: Annotated[
|
|
26
24
|
list[error.Error],
|
|
27
25
|
Field(description='Array of errors explaining why the operation failed', min_length=1),
|
|
28
26
|
]
|
|
27
|
+
ext: ext_1.ExtensionObject | None = None
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
class UpdateMediaBuyResponse1(AdCPBaseModel):
|
|
@@ -37,12 +36,8 @@ class UpdateMediaBuyResponse1(AdCPBaseModel):
|
|
|
37
36
|
Field(description='Array of packages that were modified with complete state information'),
|
|
38
37
|
] = None
|
|
39
38
|
buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for the media buy")]
|
|
40
|
-
context:
|
|
41
|
-
|
|
42
|
-
Field(
|
|
43
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
44
|
-
),
|
|
45
|
-
] = None
|
|
39
|
+
context: context_1.ContextObject | None = None
|
|
40
|
+
ext: ext_1.ExtensionObject | None = None
|
|
46
41
|
implementation_date: Annotated[
|
|
47
42
|
AwareDatetime | None,
|
|
48
43
|
Field(description='ISO 8601 timestamp when changes take effect (null if pending approval)'),
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: protocols/adcp_extension.json
|
|
3
|
+
# timestamp: 2025-11-22T16:02:47+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Annotated
|
|
9
|
+
|
|
10
|
+
from adcp.types.base import AdCPBaseModel
|
|
11
|
+
from pydantic import ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ProtocolsSupportedEnum(Enum):
|
|
15
|
+
media_buy = 'media_buy'
|
|
16
|
+
creative = 'creative'
|
|
17
|
+
signals = 'signals'
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class AdcpAgentCardExtension(AdCPBaseModel):
|
|
21
|
+
model_config = ConfigDict(
|
|
22
|
+
extra='forbid',
|
|
23
|
+
)
|
|
24
|
+
adcp_version: Annotated[
|
|
25
|
+
str,
|
|
26
|
+
Field(
|
|
27
|
+
description="Semantic version of the AdCP specification this agent implements (e.g., '2.4.0')",
|
|
28
|
+
pattern='^\\d+\\.\\d+\\.\\d+$',
|
|
29
|
+
),
|
|
30
|
+
]
|
|
31
|
+
protocols_supported: Annotated[
|
|
32
|
+
list[ProtocolsSupportedEnum],
|
|
33
|
+
Field(
|
|
34
|
+
description='AdCP protocol domains supported by this agent. At least one must be specified.',
|
|
35
|
+
min_length=1,
|
|
36
|
+
),
|
|
37
|
+
]
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: signals/activate_signal_request.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import destination
|
|
14
|
+
from ..core import ext as ext_1
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class ActivateSignalRequest(AdCPBaseModel):
|
|
16
18
|
model_config = ConfigDict(
|
|
17
19
|
extra='forbid',
|
|
18
20
|
)
|
|
19
|
-
context:
|
|
20
|
-
dict[str, Any] | None,
|
|
21
|
-
Field(
|
|
22
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
23
|
-
),
|
|
24
|
-
] = None
|
|
21
|
+
context: context_1.ContextObject | None = None
|
|
25
22
|
deployments: Annotated[
|
|
26
23
|
list[destination.Destination1 | destination.Destination2],
|
|
27
24
|
Field(
|
|
@@ -29,6 +26,7 @@ class ActivateSignalRequest(AdCPBaseModel):
|
|
|
29
26
|
min_length=1,
|
|
30
27
|
),
|
|
31
28
|
]
|
|
29
|
+
ext: ext_1.ExtensionObject | None = None
|
|
32
30
|
signal_agent_segment_id: Annotated[
|
|
33
31
|
str, Field(description='The universal identifier for the signal to activate')
|
|
34
32
|
]
|
adcp/types/generated_poc/{activate_signal_response.py → signals/activate_signal_response.py}
RENAMED
|
@@ -1,43 +1,36 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: signals/activate_signal_response.json
|
|
3
|
+
# timestamp: 2025-11-22T19:16:02+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import deployment, error
|
|
14
|
+
from ..core import ext as ext_1
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class ActivateSignalResponse1(AdCPBaseModel):
|
|
16
18
|
model_config = ConfigDict(
|
|
17
19
|
extra='forbid',
|
|
18
20
|
)
|
|
19
|
-
context:
|
|
20
|
-
dict[str, Any] | None,
|
|
21
|
-
Field(
|
|
22
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
23
|
-
),
|
|
24
|
-
] = None
|
|
21
|
+
context: context_1.ContextObject | None = None
|
|
25
22
|
deployments: Annotated[
|
|
26
23
|
list[deployment.Deployment1 | deployment.Deployment2],
|
|
27
24
|
Field(description='Array of deployment results for each deployment target'),
|
|
28
25
|
]
|
|
26
|
+
ext: ext_1.ExtensionObject | None = None
|
|
29
27
|
|
|
30
28
|
|
|
31
29
|
class ActivateSignalResponse2(AdCPBaseModel):
|
|
32
30
|
model_config = ConfigDict(
|
|
33
31
|
extra='forbid',
|
|
34
32
|
)
|
|
35
|
-
context:
|
|
36
|
-
dict[str, Any] | None,
|
|
37
|
-
Field(
|
|
38
|
-
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
39
|
-
),
|
|
40
|
-
] = None
|
|
33
|
+
context: context_1.ContextObject | None = None
|
|
41
34
|
errors: Annotated[
|
|
42
35
|
list[error.Error],
|
|
43
36
|
Field(
|
|
@@ -45,6 +38,7 @@ class ActivateSignalResponse2(AdCPBaseModel):
|
|
|
45
38
|
min_length=1,
|
|
46
39
|
),
|
|
47
40
|
]
|
|
41
|
+
ext: ext_1.ExtensionObject | None = None
|
|
48
42
|
|
|
49
43
|
|
|
50
44
|
class ActivateSignalResponse(RootModel[ActivateSignalResponse1 | ActivateSignalResponse2]):
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: signals/get_signals_request.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import destination
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import signal_filters
|
|
13
16
|
|
|
14
17
|
|
|
15
18
|
class Country(RootModel[str]):
|
|
@@ -36,15 +39,11 @@ class GetSignalsRequest(AdCPBaseModel):
|
|
|
36
39
|
model_config = ConfigDict(
|
|
37
40
|
extra='forbid',
|
|
38
41
|
)
|
|
39
|
-
context:
|
|
40
|
-
dict[str, Any] | None,
|
|
41
|
-
Field(
|
|
42
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
43
|
-
),
|
|
44
|
-
] = None
|
|
42
|
+
context: context_1.ContextObject | None = None
|
|
45
43
|
deliver_to: Annotated[
|
|
46
44
|
DeliverTo, Field(description='Deployment targets where signals need to be activated')
|
|
47
45
|
]
|
|
46
|
+
ext: ext_1.ExtensionObject | None = None
|
|
48
47
|
filters: signal_filters.SignalFilters | None = None
|
|
49
48
|
max_results: Annotated[
|
|
50
49
|
int | None, Field(description='Maximum number of results to return', ge=1)
|