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
|
@@ -15,18 +15,18 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Method(Enum):
|
|
18
|
-
random =
|
|
19
|
-
stratified =
|
|
20
|
-
recent =
|
|
21
|
-
failures_only =
|
|
18
|
+
random = "random"
|
|
19
|
+
stratified = "stratified"
|
|
20
|
+
recent = "recent"
|
|
21
|
+
failures_only = "failures_only"
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class Sampling(AdCPBaseModel):
|
|
25
|
-
method: Annotated[Method | None, Field(description=
|
|
25
|
+
method: Annotated[Method | None, Field(description="How to select the sample")] = None
|
|
26
26
|
rate: Annotated[
|
|
27
27
|
float | None,
|
|
28
28
|
Field(
|
|
29
|
-
description=
|
|
29
|
+
description="Sampling rate (0-1). 1.0 = all deliveries, 0.25 = 25% sample.",
|
|
30
30
|
ge=0.0,
|
|
31
31
|
le=1.0,
|
|
32
32
|
),
|
|
@@ -34,8 +34,8 @@ class Sampling(AdCPBaseModel):
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class TimeRange(AdCPBaseModel):
|
|
37
|
-
end: Annotated[AwareDatetime | None, Field(description=
|
|
38
|
-
start: Annotated[AwareDatetime | None, Field(description=
|
|
37
|
+
end: Annotated[AwareDatetime | None, Field(description="End of time range (exclusive)")] = None
|
|
38
|
+
start: Annotated[AwareDatetime | None, Field(description="Start of time range (inclusive)")] = (
|
|
39
39
|
None
|
|
40
40
|
)
|
|
41
41
|
|
|
@@ -43,22 +43,22 @@ class TimeRange(AdCPBaseModel):
|
|
|
43
43
|
class GetMediaBuyArtifactsRequest(AdCPBaseModel):
|
|
44
44
|
context: context_1.ContextObject | None = None
|
|
45
45
|
cursor: Annotated[
|
|
46
|
-
str | None, Field(description=
|
|
46
|
+
str | None, Field(description="Pagination cursor for fetching subsequent pages")
|
|
47
47
|
] = None
|
|
48
48
|
ext: ext_1.ExtensionObject | None = None
|
|
49
49
|
limit: Annotated[
|
|
50
|
-
int | None, Field(description=
|
|
50
|
+
int | None, Field(description="Maximum artifacts to return per request", ge=1, le=10000)
|
|
51
51
|
] = 1000
|
|
52
|
-
media_buy_id: Annotated[str, Field(description=
|
|
52
|
+
media_buy_id: Annotated[str, Field(description="Media buy to get artifacts from")]
|
|
53
53
|
package_ids: Annotated[
|
|
54
|
-
list[str] | None, Field(description=
|
|
54
|
+
list[str] | None, Field(description="Filter to specific packages within the media buy")
|
|
55
55
|
] = None
|
|
56
56
|
sampling: Annotated[
|
|
57
57
|
Sampling | None,
|
|
58
58
|
Field(
|
|
59
|
-
description=
|
|
59
|
+
description="Sampling parameters. Defaults to the sampling rate agreed in the media buy."
|
|
60
60
|
),
|
|
61
61
|
] = None
|
|
62
|
-
time_range: Annotated[TimeRange | None, Field(description=
|
|
62
|
+
time_range: Annotated[TimeRange | None, Field(description="Filter to specific time period")] = (
|
|
63
63
|
None
|
|
64
64
|
)
|
|
@@ -17,38 +17,38 @@ from . import artifact as artifact_1
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class BrandContext(AdCPBaseModel):
|
|
20
|
-
brand_id: Annotated[str | None, Field(description=
|
|
21
|
-
sku_id: Annotated[str | None, Field(description=
|
|
20
|
+
brand_id: Annotated[str | None, Field(description="Brand identifier")] = None
|
|
21
|
+
sku_id: Annotated[str | None, Field(description="Product/SKU identifier if applicable")] = None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class LocalVerdict(Enum):
|
|
25
|
-
pass_ =
|
|
26
|
-
fail =
|
|
27
|
-
unevaluated =
|
|
25
|
+
pass_ = "pass"
|
|
26
|
+
fail = "fail"
|
|
27
|
+
unevaluated = "unevaluated"
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class Pagination(AdCPBaseModel):
|
|
31
|
-
cursor: Annotated[str | None, Field(description=
|
|
32
|
-
has_more: Annotated[bool | None, Field(description=
|
|
31
|
+
cursor: Annotated[str | None, Field(description="Cursor for fetching the next page")] = None
|
|
32
|
+
has_more: Annotated[bool | None, Field(description="Whether more results are available")] = None
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class Method(Enum):
|
|
36
|
-
random =
|
|
37
|
-
stratified =
|
|
38
|
-
recent =
|
|
39
|
-
failures_only =
|
|
36
|
+
random = "random"
|
|
37
|
+
stratified = "stratified"
|
|
38
|
+
recent = "recent"
|
|
39
|
+
failures_only = "failures_only"
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class SamplingInfo(AdCPBaseModel):
|
|
43
|
-
effective_rate: Annotated[float | None, Field(description=
|
|
43
|
+
effective_rate: Annotated[float | None, Field(description="Actual sampling rate achieved")] = (
|
|
44
44
|
None
|
|
45
45
|
)
|
|
46
|
-
method: Annotated[Method | None, Field(description=
|
|
46
|
+
method: Annotated[Method | None, Field(description="Sampling method used")] = None
|
|
47
47
|
sampled_count: Annotated[
|
|
48
|
-
int | None, Field(description=
|
|
48
|
+
int | None, Field(description="Number of artifacts in this response")
|
|
49
49
|
] = None
|
|
50
50
|
total_deliveries: Annotated[
|
|
51
|
-
int | None, Field(description=
|
|
51
|
+
int | None, Field(description="Total deliveries in the time range")
|
|
52
52
|
] = None
|
|
53
53
|
|
|
54
54
|
|
|
@@ -57,51 +57,51 @@ class GetMediaBuyArtifactsResponse2(AdCPBaseModel):
|
|
|
57
57
|
errors: list[error.Error]
|
|
58
58
|
ext: ext_1.ExtensionObject | None = None
|
|
59
59
|
media_buy_id: Annotated[
|
|
60
|
-
Any | None, Field(description=
|
|
60
|
+
Any | None, Field(description="Field must not be present in error response")
|
|
61
61
|
] = None
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
class Artifact(AdCPBaseModel):
|
|
65
|
-
artifact: Annotated[artifact_1.Artifact, Field(description=
|
|
65
|
+
artifact: Annotated[artifact_1.Artifact, Field(description="Full artifact with content assets")]
|
|
66
66
|
brand_context: Annotated[
|
|
67
67
|
BrandContext | None,
|
|
68
68
|
Field(
|
|
69
|
-
description=
|
|
69
|
+
description="Brand information for policy evaluation. Schema TBD - placeholder for brand identifiers."
|
|
70
70
|
),
|
|
71
71
|
] = None
|
|
72
72
|
channel: Annotated[
|
|
73
|
-
str | None, Field(description=
|
|
73
|
+
str | None, Field(description="Channel type (e.g., display, video, audio, social)")
|
|
74
74
|
] = None
|
|
75
75
|
country: Annotated[
|
|
76
|
-
str | None, Field(description=
|
|
76
|
+
str | None, Field(description="ISO 3166-1 alpha-2 country code where delivery occurred")
|
|
77
77
|
] = None
|
|
78
78
|
local_verdict: Annotated[
|
|
79
79
|
LocalVerdict | None, Field(description="Seller's local model verdict for this artifact")
|
|
80
80
|
] = None
|
|
81
81
|
package_id: Annotated[
|
|
82
|
-
str | None, Field(description=
|
|
82
|
+
str | None, Field(description="Which package this delivery belongs to")
|
|
83
83
|
] = None
|
|
84
|
-
record_id: Annotated[str, Field(description=
|
|
85
|
-
timestamp: Annotated[AwareDatetime | None, Field(description=
|
|
84
|
+
record_id: Annotated[str, Field(description="Unique identifier for this delivery record")]
|
|
85
|
+
timestamp: Annotated[AwareDatetime | None, Field(description="When the delivery occurred")] = (
|
|
86
86
|
None
|
|
87
87
|
)
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
class GetMediaBuyArtifactsResponse1(AdCPBaseModel):
|
|
91
91
|
artifacts: Annotated[
|
|
92
|
-
list[Artifact], Field(description=
|
|
92
|
+
list[Artifact], Field(description="Delivery records with full artifact content")
|
|
93
93
|
]
|
|
94
94
|
context: context_1.ContextObject | None = None
|
|
95
95
|
errors: Annotated[
|
|
96
|
-
Any | None, Field(description=
|
|
96
|
+
Any | None, Field(description="Field must not be present in success response")
|
|
97
97
|
] = None
|
|
98
98
|
ext: ext_1.ExtensionObject | None = None
|
|
99
|
-
media_buy_id: Annotated[str, Field(description=
|
|
99
|
+
media_buy_id: Annotated[str, Field(description="Media buy these artifacts belong to")]
|
|
100
100
|
pagination: Annotated[
|
|
101
|
-
Pagination | None, Field(description=
|
|
101
|
+
Pagination | None, Field(description="Pagination information for large result sets")
|
|
102
102
|
] = None
|
|
103
103
|
sampling_info: Annotated[
|
|
104
|
-
SamplingInfo | None, Field(description=
|
|
104
|
+
SamplingInfo | None, Field(description="Information about how the sample was generated")
|
|
105
105
|
] = None
|
|
106
106
|
|
|
107
107
|
|
|
@@ -111,7 +111,7 @@ class GetMediaBuyArtifactsResponse(
|
|
|
111
111
|
root: Annotated[
|
|
112
112
|
GetMediaBuyArtifactsResponse1 | GetMediaBuyArtifactsResponse2,
|
|
113
113
|
Field(
|
|
114
|
-
description=
|
|
115
|
-
title=
|
|
114
|
+
description="Response containing content artifacts from a media buy for validation",
|
|
115
|
+
title="Get Media Buy Artifacts Response",
|
|
116
116
|
),
|
|
117
117
|
]
|
|
@@ -16,16 +16,16 @@ from ..enums import channels as channels_1
|
|
|
16
16
|
|
|
17
17
|
class ListContentStandardsRequest(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
channels: Annotated[
|
|
22
|
-
list[channels_1.MediaChannel] | None, Field(description=
|
|
22
|
+
list[channels_1.MediaChannel] | None, Field(description="Filter by channel")
|
|
23
23
|
] = None
|
|
24
24
|
context: context_1.ContextObject | None = None
|
|
25
25
|
countries: Annotated[
|
|
26
|
-
list[str] | None, Field(description=
|
|
26
|
+
list[str] | None, Field(description="Filter by ISO 3166-1 alpha-2 country codes")
|
|
27
27
|
] = None
|
|
28
28
|
ext: ext_1.ExtensionObject | None = None
|
|
29
|
-
languages: Annotated[list[str] | None, Field(description=
|
|
29
|
+
languages: Annotated[list[str] | None, Field(description="Filter by BCP 47 language tags")] = (
|
|
30
30
|
None
|
|
31
31
|
)
|
|
@@ -20,19 +20,19 @@ class ListContentStandardsResponse2(AdCPBaseModel):
|
|
|
20
20
|
errors: list[error.Error]
|
|
21
21
|
ext: ext_1.ExtensionObject | None = None
|
|
22
22
|
standards: Annotated[
|
|
23
|
-
Any | None, Field(description=
|
|
23
|
+
Any | None, Field(description="Field must not be present in error response")
|
|
24
24
|
] = None
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class ListContentStandardsResponse1(AdCPBaseModel):
|
|
28
28
|
context: context_1.ContextObject | None = None
|
|
29
29
|
errors: Annotated[
|
|
30
|
-
Any | None, Field(description=
|
|
30
|
+
Any | None, Field(description="Field must not be present in success response")
|
|
31
31
|
] = None
|
|
32
32
|
ext: ext_1.ExtensionObject | None = None
|
|
33
33
|
standards: Annotated[
|
|
34
34
|
list[content_standards.ContentStandards],
|
|
35
|
-
Field(description=
|
|
35
|
+
Field(description="Array of content standards configurations matching the filter criteria"),
|
|
36
36
|
]
|
|
37
37
|
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ class ListContentStandardsResponse(
|
|
|
42
42
|
root: Annotated[
|
|
43
43
|
ListContentStandardsResponse1 | ListContentStandardsResponse2,
|
|
44
44
|
Field(
|
|
45
|
-
description=
|
|
46
|
-
title=
|
|
45
|
+
description="Response payload with list of content standards configurations",
|
|
46
|
+
title="List Content Standards Response",
|
|
47
47
|
),
|
|
48
48
|
]
|
|
@@ -17,9 +17,9 @@ from . import artifact
|
|
|
17
17
|
|
|
18
18
|
class Fail(AdCPBaseModel):
|
|
19
19
|
language: Annotated[
|
|
20
|
-
str | None, Field(description=
|
|
20
|
+
str | None, Field(description="BCP 47 language tag for content at this URL")
|
|
21
21
|
] = None
|
|
22
|
-
type: Annotated[Literal[
|
|
22
|
+
type: Annotated[Literal["url"], Field(description="Indicates this is a URL reference")]
|
|
23
23
|
value: Annotated[
|
|
24
24
|
AnyUrl,
|
|
25
25
|
Field(
|
|
@@ -30,9 +30,9 @@ class Fail(AdCPBaseModel):
|
|
|
30
30
|
|
|
31
31
|
class Pass(AdCPBaseModel):
|
|
32
32
|
language: Annotated[
|
|
33
|
-
str | None, Field(description=
|
|
33
|
+
str | None, Field(description="BCP 47 language tag for content at this URL")
|
|
34
34
|
] = None
|
|
35
|
-
type: Annotated[Literal[
|
|
35
|
+
type: Annotated[Literal["url"], Field(description="Indicates this is a URL reference")]
|
|
36
36
|
value: Annotated[
|
|
37
37
|
AnyUrl,
|
|
38
38
|
Field(
|
|
@@ -45,17 +45,17 @@ class Scope(AdCPBaseModel):
|
|
|
45
45
|
channels_any: Annotated[
|
|
46
46
|
list[channels.MediaChannel] | None,
|
|
47
47
|
Field(
|
|
48
|
-
description=
|
|
48
|
+
description="Advertising channels. Standards apply to ANY of the listed channels (OR logic)."
|
|
49
49
|
),
|
|
50
50
|
] = None
|
|
51
51
|
countries_all: Annotated[
|
|
52
52
|
list[str] | None,
|
|
53
53
|
Field(
|
|
54
|
-
description=
|
|
54
|
+
description="ISO 3166-1 alpha-2 country codes. Standards apply in ALL listed countries (AND logic)."
|
|
55
55
|
),
|
|
56
56
|
] = None
|
|
57
57
|
description: Annotated[
|
|
58
|
-
str | None, Field(description=
|
|
58
|
+
str | None, Field(description="Human-readable description of this scope")
|
|
59
59
|
] = None
|
|
60
60
|
languages_any: Annotated[
|
|
61
61
|
list[str] | None,
|
|
@@ -68,22 +68,22 @@ class Scope(AdCPBaseModel):
|
|
|
68
68
|
|
|
69
69
|
class CalibrationExemplars(AdCPBaseModel):
|
|
70
70
|
fail: Annotated[
|
|
71
|
-
list[Fail | artifact.Artifact] | None, Field(description=
|
|
71
|
+
list[Fail | artifact.Artifact] | None, Field(description="Content that fails the standards")
|
|
72
72
|
] = None
|
|
73
73
|
pass_: Annotated[
|
|
74
74
|
list[Pass | artifact.Artifact] | None,
|
|
75
|
-
Field(alias=
|
|
75
|
+
Field(alias="pass", description="Content that passes the standards"),
|
|
76
76
|
] = None
|
|
77
77
|
|
|
78
78
|
|
|
79
79
|
class UpdateContentStandardsRequest(AdCPBaseModel):
|
|
80
80
|
model_config = ConfigDict(
|
|
81
|
-
extra=
|
|
81
|
+
extra="allow",
|
|
82
82
|
)
|
|
83
83
|
calibration_exemplars: Annotated[
|
|
84
84
|
CalibrationExemplars | None,
|
|
85
85
|
Field(
|
|
86
|
-
description=
|
|
86
|
+
description="Updated training/test set to calibrate policy interpretation. Use URL references for pages to be fetched and analyzed, or full artifacts for pre-extracted content."
|
|
87
87
|
),
|
|
88
88
|
] = None
|
|
89
89
|
context: context_1.ContextObject | None = None
|
|
@@ -91,11 +91,11 @@ class UpdateContentStandardsRequest(AdCPBaseModel):
|
|
|
91
91
|
policy: Annotated[
|
|
92
92
|
str | None,
|
|
93
93
|
Field(
|
|
94
|
-
description=
|
|
94
|
+
description="Updated natural language policy describing acceptable and unacceptable content contexts."
|
|
95
95
|
),
|
|
96
96
|
] = None
|
|
97
97
|
scope: Annotated[
|
|
98
98
|
Scope | None,
|
|
99
|
-
Field(description=
|
|
99
|
+
Field(description="Updated scope for where this standards configuration applies"),
|
|
100
100
|
] = None
|
|
101
|
-
standards_id: Annotated[str, Field(description=
|
|
101
|
+
standards_id: Annotated[str, Field(description="ID of the standards configuration to update")]
|
|
@@ -16,19 +16,19 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
class UpdateContentStandardsResponse(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
conflicting_standards_id: Annotated[
|
|
22
22
|
str | None,
|
|
23
23
|
Field(
|
|
24
|
-
description=
|
|
24
|
+
description="If scope change conflicts with another configuration, the ID of the conflicting standards"
|
|
25
25
|
),
|
|
26
26
|
] = None
|
|
27
27
|
context: context_1.ContextObject | None = None
|
|
28
28
|
errors: Annotated[
|
|
29
|
-
list[error.Error] | None, Field(description=
|
|
29
|
+
list[error.Error] | None, Field(description="Errors that occurred during the update")
|
|
30
30
|
] = None
|
|
31
31
|
ext: ext_1.ExtensionObject | None = None
|
|
32
32
|
standards_id: Annotated[
|
|
33
|
-
str | None, Field(description=
|
|
33
|
+
str | None, Field(description="ID of the updated standards configuration")
|
|
34
34
|
] = None
|
|
@@ -15,30 +15,30 @@ from . import artifact as artifact_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class BrandContext(AdCPBaseModel):
|
|
18
|
-
brand_id: Annotated[str | None, Field(description=
|
|
19
|
-
sku_id: Annotated[str | None, Field(description=
|
|
18
|
+
brand_id: Annotated[str | None, Field(description="Brand identifier")] = None
|
|
19
|
+
sku_id: Annotated[str | None, Field(description="Product/SKU identifier if applicable")] = None
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class Record(AdCPBaseModel):
|
|
23
|
-
artifact: Annotated[artifact_1.Artifact, Field(description=
|
|
23
|
+
artifact: Annotated[artifact_1.Artifact, Field(description="Artifact where ad was delivered")]
|
|
24
24
|
brand_context: Annotated[
|
|
25
25
|
BrandContext | None,
|
|
26
26
|
Field(
|
|
27
|
-
description=
|
|
27
|
+
description="Brand information for policy evaluation. Schema TBD - placeholder for brand identifiers."
|
|
28
28
|
),
|
|
29
29
|
] = None
|
|
30
30
|
channel: Annotated[
|
|
31
|
-
str | None, Field(description=
|
|
31
|
+
str | None, Field(description="Channel type (e.g., display, video, audio, social)")
|
|
32
32
|
] = None
|
|
33
33
|
country: Annotated[
|
|
34
|
-
str | None, Field(description=
|
|
34
|
+
str | None, Field(description="ISO 3166-1 alpha-2 country code where delivery occurred")
|
|
35
35
|
] = None
|
|
36
36
|
media_buy_id: Annotated[
|
|
37
37
|
str | None,
|
|
38
|
-
Field(description=
|
|
38
|
+
Field(description="Media buy this record belongs to (when batching across multiple buys)"),
|
|
39
39
|
] = None
|
|
40
|
-
record_id: Annotated[str, Field(description=
|
|
41
|
-
timestamp: Annotated[AwareDatetime | None, Field(description=
|
|
40
|
+
record_id: Annotated[str, Field(description="Unique identifier for this delivery record")]
|
|
41
|
+
timestamp: Annotated[AwareDatetime | None, Field(description="When the delivery occurred")] = (
|
|
42
42
|
None
|
|
43
43
|
)
|
|
44
44
|
|
|
@@ -47,13 +47,13 @@ class ValidateContentDeliveryRequest(AdCPBaseModel):
|
|
|
47
47
|
context: context_1.ContextObject | None = None
|
|
48
48
|
ext: ext_1.ExtensionObject | None = None
|
|
49
49
|
feature_ids: Annotated[
|
|
50
|
-
list[str] | None, Field(description=
|
|
50
|
+
list[str] | None, Field(description="Specific features to evaluate (defaults to all)")
|
|
51
51
|
] = None
|
|
52
52
|
include_passed: Annotated[
|
|
53
|
-
bool | None, Field(description=
|
|
53
|
+
bool | None, Field(description="Include passed records in results")
|
|
54
54
|
] = True
|
|
55
55
|
records: Annotated[
|
|
56
56
|
list[Record],
|
|
57
|
-
Field(description=
|
|
57
|
+
Field(description="Delivery records to validate (max 10,000)", max_length=10000),
|
|
58
58
|
]
|
|
59
|
-
standards_id: Annotated[str, Field(description=
|
|
59
|
+
standards_id: Annotated[str, Field(description="Standards configuration to validate against")]
|
|
@@ -16,10 +16,10 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class Status(Enum):
|
|
19
|
-
passed =
|
|
20
|
-
failed =
|
|
21
|
-
warning =
|
|
22
|
-
unevaluated =
|
|
19
|
+
passed = "passed"
|
|
20
|
+
failed = "failed"
|
|
21
|
+
warning = "warning"
|
|
22
|
+
unevaluated = "unevaluated"
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class Feature(AdCPBaseModel):
|
|
@@ -28,7 +28,7 @@ class Feature(AdCPBaseModel):
|
|
|
28
28
|
rule_id: Annotated[
|
|
29
29
|
str | None,
|
|
30
30
|
Field(
|
|
31
|
-
description=
|
|
31
|
+
description="Which rule triggered this result (e.g., GARM category, Scope3 standard)"
|
|
32
32
|
),
|
|
33
33
|
] = None
|
|
34
34
|
status: Status
|
|
@@ -36,16 +36,16 @@ class Feature(AdCPBaseModel):
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class Verdict(Enum):
|
|
39
|
-
pass_ =
|
|
40
|
-
fail =
|
|
39
|
+
pass_ = "pass"
|
|
40
|
+
fail = "fail"
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
class Result(AdCPBaseModel):
|
|
44
44
|
features: Annotated[
|
|
45
|
-
list[Feature] | None, Field(description=
|
|
45
|
+
list[Feature] | None, Field(description="Optional feature-level breakdown")
|
|
46
46
|
] = None
|
|
47
|
-
record_id: Annotated[str, Field(description=
|
|
48
|
-
verdict: Annotated[Verdict, Field(description=
|
|
47
|
+
record_id: Annotated[str, Field(description="Which delivery record was evaluated")]
|
|
48
|
+
verdict: Annotated[Verdict, Field(description="Overall pass/fail verdict for this record")]
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
class Summary(AdCPBaseModel):
|
|
@@ -57,11 +57,11 @@ class Summary(AdCPBaseModel):
|
|
|
57
57
|
class ValidateContentDeliveryResponse1(AdCPBaseModel):
|
|
58
58
|
context: context_1.ContextObject | None = None
|
|
59
59
|
errors: Annotated[
|
|
60
|
-
Any | None, Field(description=
|
|
60
|
+
Any | None, Field(description="Field must not be present in success response")
|
|
61
61
|
] = None
|
|
62
62
|
ext: ext_1.ExtensionObject | None = None
|
|
63
|
-
results: Annotated[list[Result], Field(description=
|
|
64
|
-
summary: Annotated[Summary, Field(description=
|
|
63
|
+
results: Annotated[list[Result], Field(description="Per-record evaluation results")]
|
|
64
|
+
summary: Annotated[Summary, Field(description="Summary counts across all records")]
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
class ValidateContentDeliveryResponse2(AdCPBaseModel):
|
|
@@ -69,7 +69,7 @@ class ValidateContentDeliveryResponse2(AdCPBaseModel):
|
|
|
69
69
|
errors: list[error.Error]
|
|
70
70
|
ext: ext_1.ExtensionObject | None = None
|
|
71
71
|
summary: Annotated[
|
|
72
|
-
Any | None, Field(description=
|
|
72
|
+
Any | None, Field(description="Field must not be present in error response")
|
|
73
73
|
] = None
|
|
74
74
|
|
|
75
75
|
|
|
@@ -79,7 +79,7 @@ class ValidateContentDeliveryResponse(
|
|
|
79
79
|
root: Annotated[
|
|
80
80
|
ValidateContentDeliveryResponse1 | ValidateContentDeliveryResponse2,
|
|
81
81
|
Field(
|
|
82
|
-
description=
|
|
83
|
-
title=
|
|
82
|
+
description="Response payload with per-record verdicts and optional feature breakdown",
|
|
83
|
+
title="Validate Content Delivery Response",
|
|
84
84
|
),
|
|
85
85
|
]
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/account.json
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+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
|
+
from . import ext as ext_1
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CreditLimit(AdCPBaseModel):
|
|
17
|
+
amount: Annotated[float, Field(ge=0.0)]
|
|
18
|
+
currency: Annotated[str, Field(pattern="^[A-Z]{3}$")]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Status(Enum):
|
|
22
|
+
active = "active"
|
|
23
|
+
suspended = "suspended"
|
|
24
|
+
closed = "closed"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class Account(AdCPBaseModel):
|
|
28
|
+
model_config = ConfigDict(
|
|
29
|
+
extra="forbid",
|
|
30
|
+
)
|
|
31
|
+
account_id: Annotated[str, Field(description="Unique identifier for this account")]
|
|
32
|
+
advertiser: Annotated[
|
|
33
|
+
str | None, Field(description="The advertiser whose rates apply to this account")
|
|
34
|
+
] = None
|
|
35
|
+
billing_proxy: Annotated[
|
|
36
|
+
str | None,
|
|
37
|
+
Field(
|
|
38
|
+
description="Optional intermediary who receives invoices on behalf of the advertiser (e.g., agency)"
|
|
39
|
+
),
|
|
40
|
+
] = None
|
|
41
|
+
credit_limit: Annotated[
|
|
42
|
+
CreditLimit | None, Field(description="Maximum outstanding balance allowed")
|
|
43
|
+
] = None
|
|
44
|
+
ext: ext_1.ExtensionObject | None = None
|
|
45
|
+
name: Annotated[
|
|
46
|
+
str, Field(description="Human-readable account name (e.g., 'Coke', 'Coke c/o Publicis')")
|
|
47
|
+
]
|
|
48
|
+
payment_terms: Annotated[
|
|
49
|
+
str | None, Field(description="Payment terms (e.g., 'net_30', 'prepay')")
|
|
50
|
+
] = None
|
|
51
|
+
rate_card: Annotated[
|
|
52
|
+
str | None, Field(description="Identifier for the rate card applied to this account")
|
|
53
|
+
] = None
|
|
54
|
+
status: Annotated[Status, Field(description="Account status")]
|
|
@@ -12,22 +12,22 @@ from pydantic import ConfigDict, Field, RootModel
|
|
|
12
12
|
|
|
13
13
|
class ActivationKey1(AdCPBaseModel):
|
|
14
14
|
model_config = ConfigDict(
|
|
15
|
-
extra=
|
|
15
|
+
extra="allow",
|
|
16
16
|
)
|
|
17
17
|
segment_id: Annotated[
|
|
18
18
|
str,
|
|
19
|
-
Field(description=
|
|
19
|
+
Field(description="The platform-specific segment identifier to use in campaign targeting"),
|
|
20
20
|
]
|
|
21
|
-
type: Annotated[Literal[
|
|
21
|
+
type: Annotated[Literal["segment_id"], Field(description="Segment ID based targeting")]
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class ActivationKey2(AdCPBaseModel):
|
|
25
25
|
model_config = ConfigDict(
|
|
26
|
-
extra=
|
|
26
|
+
extra="allow",
|
|
27
27
|
)
|
|
28
|
-
key: Annotated[str, Field(description=
|
|
29
|
-
type: Annotated[Literal[
|
|
30
|
-
value: Annotated[str, Field(description=
|
|
28
|
+
key: Annotated[str, Field(description="The targeting parameter key")]
|
|
29
|
+
type: Annotated[Literal["key_value"], Field(description="Key-value pair based targeting")]
|
|
30
|
+
value: Annotated[str, Field(description="The targeting parameter value")]
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class ActivationKey(RootModel[ActivationKey1 | ActivationKey2]):
|
|
@@ -35,6 +35,6 @@ class ActivationKey(RootModel[ActivationKey1 | ActivationKey2]):
|
|
|
35
35
|
ActivationKey1 | ActivationKey2,
|
|
36
36
|
Field(
|
|
37
37
|
description="Universal identifier for using a signal on a destination platform. Can be either a segment ID or a key-value pair depending on the platform's targeting mechanism.",
|
|
38
|
-
title=
|
|
38
|
+
title="Activation Key",
|
|
39
39
|
),
|
|
40
40
|
]
|