adcp 2.18.0__py3-none-any.whl → 3.0.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 +6 -14
- adcp/__main__.py +94 -51
- adcp/adagents.py +91 -19
- adcp/client.py +865 -0
- adcp/protocols/a2a.py +84 -0
- adcp/protocols/base.py +101 -0
- adcp/protocols/mcp.py +87 -1
- adcp/server/__init__.py +49 -0
- adcp/server/base.py +368 -0
- adcp/server/content_standards.py +561 -0
- adcp/server/governance.py +491 -0
- adcp/server/mcp_tools.py +471 -0
- adcp/server/proposal.py +334 -0
- adcp/server/sponsored_intelligence.py +444 -0
- adcp/types/__init__.py +111 -23
- adcp/types/_ergonomic.py +35 -18
- adcp/types/_generated.py +419 -44
- adcp/types/aliases.py +13 -20
- adcp/types/base.py +1 -1
- adcp/types/generated_poc/adagents.py +103 -6
- adcp/types/generated_poc/content_standards/__init__.py +3 -0
- adcp/types/generated_poc/content_standards/artifact.py +208 -0
- adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +64 -0
- adcp/types/generated_poc/content_standards/calibrate_content_request.py +17 -0
- adcp/types/generated_poc/content_standards/calibrate_content_response.py +74 -0
- adcp/types/generated_poc/content_standards/content_standards.py +66 -0
- adcp/types/generated_poc/content_standards/create_content_standards_request.py +97 -0
- adcp/types/generated_poc/content_standards/create_content_standards_response.py +52 -0
- adcp/types/generated_poc/content_standards/get_content_standards_request.py +21 -0
- adcp/types/generated_poc/content_standards/get_content_standards_response.py +43 -0
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +64 -0
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +117 -0
- adcp/types/generated_poc/content_standards/list_content_standards_request.py +31 -0
- adcp/types/generated_poc/content_standards/list_content_standards_response.py +48 -0
- adcp/types/generated_poc/content_standards/update_content_standards_request.py +101 -0
- adcp/types/generated_poc/content_standards/update_content_standards_response.py +34 -0
- adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +59 -0
- adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +85 -0
- adcp/types/generated_poc/core/activation_key.py +1 -1
- adcp/types/generated_poc/core/assets/audio_asset.py +1 -1
- adcp/types/generated_poc/core/assets/css_asset.py +1 -1
- adcp/types/generated_poc/core/assets/daast_asset.py +1 -1
- adcp/types/generated_poc/core/assets/html_asset.py +1 -1
- adcp/types/generated_poc/core/assets/image_asset.py +1 -1
- adcp/types/generated_poc/core/assets/javascript_asset.py +1 -1
- adcp/types/generated_poc/core/assets/text_asset.py +1 -1
- adcp/types/generated_poc/core/assets/url_asset.py +1 -1
- adcp/types/generated_poc/core/assets/vast_asset.py +1 -1
- adcp/types/generated_poc/core/assets/video_asset.py +1 -1
- adcp/types/generated_poc/core/assets/webhook_asset.py +1 -1
- adcp/types/generated_poc/core/async_response_data.py +1 -1
- adcp/types/generated_poc/core/brand_manifest.py +68 -5
- adcp/types/generated_poc/core/brand_manifest_ref.py +1 -1
- adcp/types/generated_poc/core/context.py +1 -1
- adcp/types/generated_poc/core/creative_asset.py +8 -7
- adcp/types/generated_poc/core/creative_assignment.py +1 -1
- adcp/types/generated_poc/core/creative_filters.py +4 -14
- adcp/types/generated_poc/core/creative_manifest.py +1 -1
- adcp/types/generated_poc/core/creative_policy.py +1 -1
- adcp/types/generated_poc/core/delivery_metrics.py +1 -1
- adcp/types/generated_poc/core/deployment.py +1 -1
- adcp/types/generated_poc/core/destination.py +1 -1
- adcp/types/generated_poc/core/error.py +1 -1
- adcp/types/generated_poc/core/ext.py +1 -1
- adcp/types/generated_poc/core/format.py +6 -5
- adcp/types/generated_poc/core/format_id.py +1 -1
- adcp/types/generated_poc/core/frequency_cap.py +1 -1
- adcp/types/generated_poc/core/identifier.py +27 -0
- adcp/types/generated_poc/core/mcp_webhook_payload.py +1 -1
- adcp/types/generated_poc/core/measurement.py +1 -1
- adcp/types/generated_poc/core/media_buy.py +1 -1
- adcp/types/generated_poc/core/media_buy_features.py +29 -0
- adcp/types/generated_poc/core/offering.py +80 -0
- adcp/types/generated_poc/core/package.py +1 -1
- adcp/types/generated_poc/core/performance_feedback.py +1 -1
- adcp/types/generated_poc/core/placement.py +1 -1
- adcp/types/generated_poc/core/pricing_option.py +8 -14
- adcp/types/generated_poc/core/product.py +1 -1
- adcp/types/generated_poc/core/product_allocation.py +48 -0
- adcp/types/generated_poc/core/product_filters.py +72 -7
- adcp/types/generated_poc/core/promoted_offerings.py +12 -21
- adcp/types/generated_poc/core/promoted_products.py +1 -1
- adcp/types/generated_poc/core/property.py +1 -1
- adcp/types/generated_poc/core/property_id.py +1 -1
- adcp/types/generated_poc/core/property_list_ref.py +26 -0
- adcp/types/generated_poc/core/property_tag.py +1 -1
- adcp/types/generated_poc/core/proposal.py +64 -0
- adcp/types/generated_poc/core/protocol_envelope.py +1 -1
- adcp/types/generated_poc/core/publisher_property_selector.py +1 -1
- adcp/types/generated_poc/core/push_notification_config.py +1 -1
- adcp/types/generated_poc/core/reporting_capabilities.py +1 -1
- adcp/types/generated_poc/core/reporting_webhook.py +70 -0
- adcp/types/generated_poc/core/response.py +1 -1
- adcp/types/generated_poc/core/signal_filters.py +1 -1
- adcp/types/generated_poc/core/start_timing.py +4 -4
- adcp/types/generated_poc/core/sub_asset.py +1 -1
- adcp/types/generated_poc/core/targeting.py +55 -14
- adcp/types/generated_poc/creative/list_creative_formats_request.py +1 -1
- adcp/types/generated_poc/creative/list_creative_formats_response.py +1 -1
- adcp/types/generated_poc/creative/preview_creative_request.py +1 -1
- adcp/types/generated_poc/creative/preview_creative_response.py +3 -2
- adcp/types/generated_poc/creative/preview_render.py +1 -1
- adcp/types/generated_poc/enums/adcp_domain.py +3 -1
- adcp/types/generated_poc/enums/asset_content_type.py +1 -1
- adcp/types/generated_poc/enums/auth_scheme.py +1 -1
- adcp/types/generated_poc/enums/available_metric.py +1 -1
- adcp/types/generated_poc/enums/channels.py +18 -8
- adcp/types/generated_poc/enums/co_branding_requirement.py +1 -1
- adcp/types/generated_poc/enums/creative_action.py +1 -1
- adcp/types/generated_poc/enums/creative_agent_capability.py +1 -1
- adcp/types/generated_poc/enums/creative_sort_field.py +1 -1
- adcp/types/generated_poc/enums/creative_status.py +2 -1
- adcp/types/generated_poc/enums/daast_tracking_event.py +1 -1
- adcp/types/generated_poc/enums/daast_version.py +1 -1
- adcp/types/generated_poc/enums/delivery_type.py +1 -1
- adcp/types/generated_poc/enums/dimension_unit.py +1 -1
- adcp/types/generated_poc/enums/feed_format.py +1 -1
- adcp/types/generated_poc/enums/feedback_source.py +1 -1
- adcp/types/generated_poc/enums/format_category.py +1 -1
- adcp/types/generated_poc/enums/format_id_parameter.py +1 -1
- adcp/types/generated_poc/enums/frequency_cap_scope.py +1 -1
- adcp/types/generated_poc/enums/geo_level.py +14 -0
- adcp/types/generated_poc/enums/history_entry_type.py +1 -1
- adcp/types/generated_poc/enums/http_method.py +1 -1
- adcp/types/generated_poc/enums/identifier_types.py +1 -1
- adcp/types/generated_poc/enums/javascript_module_type.py +1 -1
- adcp/types/generated_poc/enums/landing_page_requirement.py +1 -1
- adcp/types/generated_poc/enums/markdown_flavor.py +1 -1
- adcp/types/generated_poc/enums/media_buy_status.py +1 -1
- adcp/types/generated_poc/enums/metric_type.py +1 -1
- adcp/types/generated_poc/enums/metro_system.py +15 -0
- adcp/types/generated_poc/enums/notification_type.py +1 -1
- adcp/types/generated_poc/enums/pacing.py +1 -1
- adcp/types/generated_poc/enums/postal_system.py +19 -0
- adcp/types/generated_poc/enums/preview_output_format.py +1 -1
- adcp/types/generated_poc/enums/pricing_model.py +1 -1
- adcp/types/generated_poc/enums/property_type.py +2 -1
- adcp/types/generated_poc/enums/publisher_identifier_types.py +1 -1
- adcp/types/generated_poc/enums/reporting_frequency.py +1 -1
- adcp/types/generated_poc/enums/signal_catalog_type.py +1 -1
- adcp/types/generated_poc/enums/sort_direction.py +1 -1
- adcp/types/generated_poc/enums/task_status.py +1 -1
- adcp/types/generated_poc/enums/task_type.py +7 -1
- adcp/types/generated_poc/enums/update_frequency.py +1 -1
- adcp/types/generated_poc/enums/url_asset_type.py +1 -1
- adcp/types/generated_poc/enums/validation_mode.py +1 -1
- adcp/types/generated_poc/enums/vast_tracking_event.py +1 -1
- adcp/types/generated_poc/enums/vast_version.py +1 -1
- adcp/types/generated_poc/enums/webhook_response_type.py +1 -1
- adcp/types/generated_poc/enums/webhook_security_method.py +1 -1
- adcp/types/generated_poc/extensions/__init__.py +3 -0
- adcp/types/generated_poc/extensions/extension_meta.py +58 -0
- adcp/types/generated_poc/media_buy/build_creative_request.py +1 -1
- adcp/types/generated_poc/media_buy/build_creative_response.py +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +54 -26
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +1 -1
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +1 -1
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_request.py +18 -3
- adcp/types/generated_poc/media_buy/get_products_response.py +14 -2
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +1 -1
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +2 -2
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +1 -1
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +1 -1
- adcp/types/generated_poc/media_buy/list_creatives_request.py +2 -2
- adcp/types/generated_poc/media_buy/list_creatives_response.py +7 -10
- adcp/types/generated_poc/media_buy/package_request.py +15 -6
- adcp/types/generated_poc/media_buy/package_update.py +119 -0
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +1 -1
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +20 -108
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +1 -1
- adcp/types/generated_poc/pricing_options/cpc_option.py +35 -10
- adcp/types/generated_poc/pricing_options/cpcv_option.py +35 -10
- adcp/types/generated_poc/pricing_options/{cpm_auction_option.py → cpm_option.py} +23 -19
- adcp/types/generated_poc/pricing_options/cpp_option.py +39 -16
- adcp/types/generated_poc/pricing_options/cpv_option.py +37 -18
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +45 -39
- adcp/types/generated_poc/pricing_options/{vcpm_auction_option.py → vcpm_option.py} +23 -14
- adcp/types/generated_poc/property/__init__.py +3 -0
- adcp/types/generated_poc/property/base_property_source.py +86 -0
- adcp/types/generated_poc/property/create_property_list_request.py +43 -0
- adcp/types/generated_poc/property/create_property_list_response.py +27 -0
- adcp/types/generated_poc/property/delete_property_list_request.py +22 -0
- adcp/types/generated_poc/property/delete_property_list_response.py +21 -0
- adcp/types/generated_poc/property/feature_requirement.py +42 -0
- adcp/types/generated_poc/property/get_property_list_request.py +34 -0
- adcp/types/generated_poc/property/get_property_list_response.py +61 -0
- adcp/types/generated_poc/property/list_property_lists_request.py +29 -0
- adcp/types/generated_poc/property/list_property_lists_response.py +39 -0
- adcp/types/generated_poc/property/property_error.py +33 -0
- adcp/types/generated_poc/property/property_feature.py +22 -0
- adcp/types/generated_poc/property/property_feature_definition.py +80 -0
- adcp/types/generated_poc/property/property_list.py +62 -0
- adcp/types/generated_poc/property/property_list_changed_webhook.py +51 -0
- adcp/types/generated_poc/property/property_list_filters.py +47 -0
- adcp/types/generated_poc/property/update_property_list_request.py +46 -0
- adcp/types/generated_poc/property/update_property_list_response.py +21 -0
- adcp/types/generated_poc/protocol/__init__.py +3 -0
- adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +34 -0
- adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +353 -0
- adcp/types/generated_poc/protocols/adcp_extension.py +18 -5
- adcp/types/generated_poc/signals/activate_signal_request.py +1 -1
- adcp/types/generated_poc/signals/activate_signal_response.py +1 -1
- adcp/types/generated_poc/signals/get_signals_request.py +1 -1
- adcp/types/generated_poc/signals/get_signals_response.py +1 -1
- adcp/types/generated_poc/sponsored_intelligence/__init__.py +3 -0
- adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +102 -0
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +34 -0
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +100 -0
- adcp/types/generated_poc/sponsored_intelligence/si_identity.py +78 -0
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +46 -0
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +44 -0
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +58 -0
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +101 -0
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +60 -0
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +54 -0
- adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +30 -0
- adcp/utils/format_assets.py +5 -5
- adcp/utils/preview_cache.py +2 -2
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/METADATA +1 -1
- adcp-3.0.0.dist-info/RECORD +264 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/WHEEL +1 -1
- adcp/types/generated_poc/enums/standard_format_ids.py +0 -45
- adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +0 -43
- adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +0 -47
- adcp-2.18.0.dist-info/RECORD +0 -195
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/reporting_webhook.json
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+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 AnyUrl, ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
from ..enums import auth_scheme, available_metric
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Authentication(AdCPBaseModel):
|
|
17
|
+
model_config = ConfigDict(
|
|
18
|
+
extra='forbid',
|
|
19
|
+
)
|
|
20
|
+
credentials: Annotated[
|
|
21
|
+
str,
|
|
22
|
+
Field(
|
|
23
|
+
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.',
|
|
24
|
+
min_length=32,
|
|
25
|
+
),
|
|
26
|
+
]
|
|
27
|
+
schemes: Annotated[
|
|
28
|
+
list[auth_scheme.AuthenticationScheme],
|
|
29
|
+
Field(
|
|
30
|
+
description="Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for signature verification (recommended for production)",
|
|
31
|
+
max_length=1,
|
|
32
|
+
min_length=1,
|
|
33
|
+
),
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class ReportingFrequency(Enum):
|
|
38
|
+
hourly = 'hourly'
|
|
39
|
+
daily = 'daily'
|
|
40
|
+
monthly = 'monthly'
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class ReportingWebhook(AdCPBaseModel):
|
|
44
|
+
model_config = ConfigDict(
|
|
45
|
+
extra='allow',
|
|
46
|
+
)
|
|
47
|
+
authentication: Annotated[
|
|
48
|
+
Authentication,
|
|
49
|
+
Field(description='Authentication configuration for webhook delivery (A2A-compatible)'),
|
|
50
|
+
]
|
|
51
|
+
reporting_frequency: Annotated[
|
|
52
|
+
ReportingFrequency,
|
|
53
|
+
Field(
|
|
54
|
+
description='Frequency for automated reporting delivery. Must be supported by all products in the media buy.'
|
|
55
|
+
),
|
|
56
|
+
]
|
|
57
|
+
requested_metrics: Annotated[
|
|
58
|
+
list[available_metric.AvailableMetric] | None,
|
|
59
|
+
Field(
|
|
60
|
+
description="Optional list of metrics to include in webhook notifications. If omitted, all available metrics are included. Must be subset of product's available_metrics."
|
|
61
|
+
),
|
|
62
|
+
] = None
|
|
63
|
+
token: Annotated[
|
|
64
|
+
str | None,
|
|
65
|
+
Field(
|
|
66
|
+
description='Optional client-provided token for webhook validation. Echoed back in webhook payload to validate request authenticity.',
|
|
67
|
+
min_length=16,
|
|
68
|
+
),
|
|
69
|
+
] = None
|
|
70
|
+
url: Annotated[AnyUrl, Field(description='Webhook endpoint URL for reporting notifications')]
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: core/start_timing.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated
|
|
7
|
+
from typing import Annotated, Literal
|
|
8
8
|
|
|
9
9
|
from pydantic import AwareDatetime, Field, RootModel
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class StartTiming(RootModel[
|
|
12
|
+
class StartTiming(RootModel[Literal['asap'] | AwareDatetime]):
|
|
13
13
|
root: Annotated[
|
|
14
|
-
|
|
14
|
+
Literal['asap'] | AwareDatetime,
|
|
15
15
|
Field(
|
|
16
16
|
description="Campaign start timing: 'asap' or ISO 8601 date-time", title='Start Timing'
|
|
17
17
|
),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: core/targeting.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,13 +9,54 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
+
from ..enums import metro_system, postal_system
|
|
12
13
|
from . import frequency_cap as frequency_cap_1
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
class
|
|
16
|
+
class GeoCountry(RootModel[str]):
|
|
16
17
|
root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
|
|
17
18
|
|
|
18
19
|
|
|
20
|
+
class GeoMetro(AdCPBaseModel):
|
|
21
|
+
model_config = ConfigDict(
|
|
22
|
+
extra='forbid',
|
|
23
|
+
)
|
|
24
|
+
system: Annotated[
|
|
25
|
+
metro_system.MetroAreaSystem,
|
|
26
|
+
Field(description="Metro area classification system (e.g., 'nielsen_dma', 'uk_itl2')"),
|
|
27
|
+
]
|
|
28
|
+
values: Annotated[
|
|
29
|
+
list[str],
|
|
30
|
+
Field(
|
|
31
|
+
description="Metro codes within the system (e.g., ['501', '602'] for Nielsen DMAs)",
|
|
32
|
+
min_length=1,
|
|
33
|
+
),
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class GeoPostalArea(AdCPBaseModel):
|
|
38
|
+
model_config = ConfigDict(
|
|
39
|
+
extra='forbid',
|
|
40
|
+
)
|
|
41
|
+
system: Annotated[
|
|
42
|
+
postal_system.PostalCodeSystem,
|
|
43
|
+
Field(
|
|
44
|
+
description="Postal code system (e.g., 'us_zip', 'gb_outward'). System name encodes country and precision."
|
|
45
|
+
),
|
|
46
|
+
]
|
|
47
|
+
values: Annotated[
|
|
48
|
+
list[str],
|
|
49
|
+
Field(
|
|
50
|
+
description="Postal codes within the system (e.g., ['10001', '10002'] for us_zip)",
|
|
51
|
+
min_length=1,
|
|
52
|
+
),
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class GeoRegion(RootModel[str]):
|
|
57
|
+
root: Annotated[str, Field(pattern='^[A-Z]{2}-[A-Z0-9]{1,3}$')]
|
|
58
|
+
|
|
59
|
+
|
|
19
60
|
class TargetingOverlay(AdCPBaseModel):
|
|
20
61
|
model_config = ConfigDict(
|
|
21
62
|
extra='allow',
|
|
@@ -27,27 +68,27 @@ class TargetingOverlay(AdCPBaseModel):
|
|
|
27
68
|
str | None, Field(description='AXE segment ID to include for targeting')
|
|
28
69
|
] = None
|
|
29
70
|
frequency_cap: frequency_cap_1.FrequencyCap | None = None
|
|
30
|
-
|
|
31
|
-
list[
|
|
71
|
+
geo_countries: Annotated[
|
|
72
|
+
list[GeoCountry] | None,
|
|
32
73
|
Field(
|
|
33
|
-
description=
|
|
74
|
+
description="Restrict delivery to specific countries. ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE')."
|
|
34
75
|
),
|
|
35
76
|
] = None
|
|
36
|
-
|
|
37
|
-
list[
|
|
77
|
+
geo_metros: Annotated[
|
|
78
|
+
list[GeoMetro] | None,
|
|
38
79
|
Field(
|
|
39
|
-
description='Restrict delivery to specific metro areas
|
|
80
|
+
description='Restrict delivery to specific metro areas. Each entry specifies the classification system and target values. Seller must declare supported systems in get_adcp_capabilities.'
|
|
40
81
|
),
|
|
41
82
|
] = None
|
|
42
|
-
|
|
43
|
-
list[
|
|
83
|
+
geo_postal_areas: Annotated[
|
|
84
|
+
list[GeoPostalArea] | None,
|
|
44
85
|
Field(
|
|
45
|
-
description='Restrict delivery to specific postal
|
|
86
|
+
description='Restrict delivery to specific postal areas. Each entry specifies the postal system and target values. Seller must declare supported systems in get_adcp_capabilities.'
|
|
46
87
|
),
|
|
47
88
|
] = None
|
|
48
|
-
|
|
49
|
-
list[
|
|
89
|
+
geo_regions: Annotated[
|
|
90
|
+
list[GeoRegion] | None,
|
|
50
91
|
Field(
|
|
51
|
-
description=
|
|
92
|
+
description="Restrict delivery to specific regions/states. ISO 3166-2 subdivision codes (e.g., 'US-CA', 'GB-SCT')."
|
|
52
93
|
),
|
|
53
94
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: creative/preview_creative_response.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -109,7 +109,8 @@ class Results(AdCPBaseModel):
|
|
|
109
109
|
success: Annotated[Literal[True], Field(description='Whether this preview request succeeded')]
|
|
110
110
|
|
|
111
111
|
|
|
112
|
-
Preview2
|
|
112
|
+
class Preview2(Preview1):
|
|
113
|
+
pass
|
|
113
114
|
|
|
114
115
|
|
|
115
116
|
class Response1(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: enums/adcp_domain.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -10,3 +10,5 @@ from enum import Enum
|
|
|
10
10
|
class AdcpDomain(Enum):
|
|
11
11
|
media_buy = 'media-buy'
|
|
12
12
|
signals = 'signals'
|
|
13
|
+
governance = 'governance'
|
|
14
|
+
creative = 'creative'
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: enums/channels.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
from enum import Enum
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class MediaChannel(Enum):
|
|
11
11
|
display = 'display'
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
dooh = 'dooh'
|
|
12
|
+
olv = 'olv'
|
|
13
|
+
social = 'social'
|
|
14
|
+
search = 'search'
|
|
16
15
|
ctv = 'ctv'
|
|
16
|
+
linear_tv = 'linear_tv'
|
|
17
|
+
radio = 'radio'
|
|
18
|
+
streaming_audio = 'streaming_audio'
|
|
17
19
|
podcast = 'podcast'
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
dooh = 'dooh'
|
|
21
|
+
ooh = 'ooh'
|
|
22
|
+
print = 'print'
|
|
23
|
+
cinema = 'cinema'
|
|
24
|
+
email = 'email'
|
|
25
|
+
gaming = 'gaming'
|
|
26
|
+
retail_media = 'retail_media'
|
|
27
|
+
influencer = 'influencer'
|
|
28
|
+
affiliate = 'affiliate'
|
|
29
|
+
product_placement = 'product_placement'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: enums/creative_status.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -12,3 +12,4 @@ class CreativeStatus(Enum):
|
|
|
12
12
|
approved = 'approved'
|
|
13
13
|
rejected = 'rejected'
|
|
14
14
|
pending_review = 'pending_review'
|
|
15
|
+
archived = 'archived'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: enums/geo_level.json
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class GeographicTargetingLevel(Enum):
|
|
11
|
+
country = 'country'
|
|
12
|
+
region = 'region'
|
|
13
|
+
metro = 'metro'
|
|
14
|
+
postal_area = 'postal_area'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: enums/metro_system.json
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class MetroAreaSystem(Enum):
|
|
11
|
+
nielsen_dma = 'nielsen_dma'
|
|
12
|
+
uk_itl1 = 'uk_itl1'
|
|
13
|
+
uk_itl2 = 'uk_itl2'
|
|
14
|
+
eurostat_nuts2 = 'eurostat_nuts2'
|
|
15
|
+
custom = 'custom'
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: enums/postal_system.json
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PostalCodeSystem(Enum):
|
|
11
|
+
us_zip = 'us_zip'
|
|
12
|
+
us_zip_plus_four = 'us_zip_plus_four'
|
|
13
|
+
gb_outward = 'gb_outward'
|
|
14
|
+
gb_full = 'gb_full'
|
|
15
|
+
ca_fsa = 'ca_fsa'
|
|
16
|
+
ca_full = 'ca_full'
|
|
17
|
+
de_plz = 'de_plz'
|
|
18
|
+
fr_code_postal = 'fr_code_postal'
|
|
19
|
+
au_postcode = 'au_postcode'
|