adcp 3.0.0__py3-none-any.whl → 3.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- adcp/ADCP_VERSION +1 -1
- adcp/__init__.py +13 -5
- adcp/__main__.py +4 -4
- adcp/adagents.py +5 -9
- adcp/client.py +14 -12
- adcp/protocols/a2a.py +3 -3
- adcp/protocols/base.py +2 -2
- adcp/protocols/mcp.py +3 -3
- adcp/server/base.py +6 -10
- adcp/server/content_standards.py +17 -49
- adcp/server/governance.py +20 -59
- adcp/server/mcp_tools.py +8 -4
- adcp/server/proposal.py +1 -3
- adcp/server/sponsored_intelligence.py +10 -28
- adcp/simple.py +10 -10
- adcp/types/__init__.py +14 -6
- adcp/types/_generated.py +44 -27
- adcp/types/aliases.py +55 -0
- adcp/types/base.py +7 -7
- adcp/types/generated_poc/{protocols → a2ui}/__init__.py +1 -1
- adcp/types/generated_poc/a2ui/component.py +24 -0
- adcp/types/generated_poc/a2ui/surface.py +33 -0
- adcp/types/generated_poc/account/__init__.py +3 -0
- adcp/types/generated_poc/account/list_accounts_request.py +30 -0
- adcp/types/generated_poc/account/list_accounts_response.py +30 -0
- adcp/types/generated_poc/adagents.py +192 -195
- adcp/types/generated_poc/content_standards/artifact.py +69 -69
- adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +13 -13
- adcp/types/generated_poc/content_standards/calibrate_content_request.py +2 -2
- adcp/types/generated_poc/content_standards/calibrate_content_response.py +17 -17
- adcp/types/generated_poc/content_standards/content_standards.py +8 -8
- adcp/types/generated_poc/content_standards/create_content_standards_request.py +13 -13
- adcp/types/generated_poc/content_standards/create_content_standards_response.py +6 -6
- adcp/types/generated_poc/content_standards/get_content_standards_request.py +1 -1
- adcp/types/generated_poc/content_standards/get_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +14 -14
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +30 -30
- adcp/types/generated_poc/content_standards/list_content_standards_request.py +4 -4
- adcp/types/generated_poc/content_standards/list_content_standards_response.py +5 -5
- adcp/types/generated_poc/content_standards/update_content_standards_request.py +14 -14
- adcp/types/generated_poc/content_standards/update_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +13 -13
- adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +16 -16
- adcp/types/generated_poc/core/account.py +54 -0
- adcp/types/generated_poc/core/activation_key.py +8 -8
- adcp/types/generated_poc/core/assets/audio_asset.py +37 -8
- adcp/types/generated_poc/core/assets/css_asset.py +2 -2
- adcp/types/generated_poc/core/assets/daast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/html_asset.py +2 -2
- adcp/types/generated_poc/core/assets/image_asset.py +6 -6
- adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
- adcp/types/generated_poc/core/assets/text_asset.py +2 -2
- adcp/types/generated_poc/core/assets/url_asset.py +3 -3
- adcp/types/generated_poc/core/assets/vast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/video_asset.py +126 -10
- adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
- adcp/types/generated_poc/core/async_response_data.py +2 -2
- adcp/types/generated_poc/core/brand_manifest.py +66 -66
- adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
- adcp/types/generated_poc/core/context.py +1 -1
- adcp/types/generated_poc/core/creative_asset.py +12 -12
- adcp/types/generated_poc/core/creative_assignment.py +3 -3
- adcp/types/generated_poc/core/creative_filters.py +23 -17
- adcp/types/generated_poc/core/creative_manifest.py +4 -4
- adcp/types/generated_poc/core/creative_policy.py +4 -4
- adcp/types/generated_poc/core/delivery_metrics.py +32 -32
- adcp/types/generated_poc/core/deployment.py +20 -20
- adcp/types/generated_poc/core/destination.py +11 -11
- adcp/types/generated_poc/core/error.py +6 -6
- adcp/types/generated_poc/core/ext.py +1 -1
- adcp/types/generated_poc/core/format.py +49 -124
- adcp/types/generated_poc/core/format_id.py +5 -5
- adcp/types/generated_poc/core/frequency_cap.py +2 -2
- adcp/types/generated_poc/core/identifier.py +2 -2
- adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
- adcp/types/generated_poc/core/measurement.py +8 -8
- adcp/types/generated_poc/core/media_buy.py +12 -8
- adcp/types/generated_poc/core/media_buy_features.py +3 -3
- adcp/types/generated_poc/core/offering.py +9 -9
- adcp/types/generated_poc/core/package.py +8 -8
- adcp/types/generated_poc/core/performance_feedback.py +18 -18
- adcp/types/generated_poc/core/placement.py +4 -4
- adcp/types/generated_poc/core/pricing_option.py +1 -1
- adcp/types/generated_poc/core/product.py +27 -21
- adcp/types/generated_poc/core/product_allocation.py +5 -5
- adcp/types/generated_poc/core/product_filters.py +27 -27
- adcp/types/generated_poc/core/promoted_offerings.py +18 -18
- adcp/types/generated_poc/core/promoted_products.py +2 -2
- adcp/types/generated_poc/core/property.py +10 -10
- adcp/types/generated_poc/core/property_id.py +4 -4
- adcp/types/generated_poc/core/property_list_ref.py +4 -4
- adcp/types/generated_poc/core/property_tag.py +4 -4
- adcp/types/generated_poc/core/proposal.py +13 -13
- adcp/types/generated_poc/core/protocol_envelope.py +8 -8
- adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
- adcp/types/generated_poc/core/push_notification_config.py +5 -5
- adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
- adcp/types/generated_poc/core/reporting_webhook.py +10 -10
- adcp/types/generated_poc/core/response.py +4 -4
- adcp/types/generated_poc/core/signal_filters.py +5 -5
- adcp/types/generated_poc/core/start_timing.py +3 -3
- adcp/types/generated_poc/core/sub_asset.py +14 -14
- adcp/types/generated_poc/core/targeting.py +17 -10
- adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
- adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
- adcp/types/generated_poc/creative/preview_creative_response.py +28 -28
- adcp/types/generated_poc/creative/preview_render.py +25 -25
- adcp/types/generated_poc/enums/adcp_domain.py +4 -4
- adcp/types/generated_poc/enums/asset_content_type.py +13 -13
- adcp/types/generated_poc/enums/auth_scheme.py +2 -2
- adcp/types/generated_poc/enums/available_metric.py +9 -9
- adcp/types/generated_poc/enums/channels.py +19 -19
- adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
- adcp/types/generated_poc/enums/creative_action.py +5 -5
- adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
- adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
- adcp/types/generated_poc/enums/creative_status.py +5 -5
- adcp/types/generated_poc/enums/daast_tracking_event.py +11 -11
- adcp/types/generated_poc/enums/daast_version.py +2 -2
- adcp/types/generated_poc/enums/delivery_type.py +2 -2
- adcp/types/generated_poc/enums/dimension_unit.py +4 -4
- adcp/types/generated_poc/enums/feed_format.py +3 -3
- adcp/types/generated_poc/enums/feedback_source.py +4 -4
- adcp/types/generated_poc/enums/format_category.py +7 -7
- adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
- adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
- adcp/types/generated_poc/enums/geo_level.py +4 -4
- adcp/types/generated_poc/enums/history_entry_type.py +2 -2
- adcp/types/generated_poc/enums/http_method.py +2 -2
- adcp/types/generated_poc/enums/identifier_types.py +19 -19
- adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
- adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
- adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
- adcp/types/generated_poc/enums/media_buy_status.py +4 -4
- adcp/types/generated_poc/enums/metric_type.py +8 -8
- adcp/types/generated_poc/enums/metro_system.py +5 -5
- adcp/types/generated_poc/enums/notification_type.py +4 -4
- adcp/types/generated_poc/enums/pacing.py +3 -3
- adcp/types/generated_poc/enums/postal_system.py +9 -9
- adcp/types/generated_poc/enums/preview_output_format.py +2 -2
- adcp/types/generated_poc/enums/pricing_model.py +7 -7
- adcp/types/generated_poc/enums/property_type.py +8 -8
- adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
- adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
- adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
- adcp/types/generated_poc/enums/sort_direction.py +2 -2
- adcp/types/generated_poc/enums/task_status.py +9 -9
- adcp/types/generated_poc/enums/task_type.py +11 -12
- adcp/types/generated_poc/enums/update_frequency.py +4 -4
- adcp/types/generated_poc/enums/url_asset_type.py +3 -3
- adcp/types/generated_poc/enums/validation_mode.py +2 -2
- adcp/types/generated_poc/enums/vast_tracking_event.py +16 -16
- adcp/types/generated_poc/enums/vast_version.py +5 -5
- adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
- adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
- adcp/types/generated_poc/extensions/extension_meta.py +14 -14
- adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
- adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +27 -21
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +15 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
- adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
- adcp/types/generated_poc/media_buy/get_products_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creatives_request.py +23 -23
- adcp/types/generated_poc/media_buy/list_creatives_response.py +53 -49
- adcp/types/generated_poc/media_buy/package_request.py +8 -8
- adcp/types/generated_poc/media_buy/package_update.py +16 -16
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +14 -8
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +33 -29
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +14 -14
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
- adcp/types/generated_poc/pricing_options/cpc_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpcv_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpm_option.py +13 -20
- adcp/types/generated_poc/pricing_options/cpp_option.py +19 -32
- adcp/types/generated_poc/pricing_options/cpv_option.py +19 -32
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +23 -36
- adcp/types/generated_poc/pricing_options/price_guidance.py +26 -0
- adcp/types/generated_poc/pricing_options/vcpm_option.py +13 -26
- adcp/types/generated_poc/property/base_property_source.py +15 -15
- adcp/types/generated_poc/property/create_property_list_request.py +4 -4
- adcp/types/generated_poc/property/create_property_list_response.py +3 -3
- adcp/types/generated_poc/property/delete_property_list_request.py +2 -2
- adcp/types/generated_poc/property/delete_property_list_response.py +3 -3
- adcp/types/generated_poc/property/feature_requirement.py +8 -8
- adcp/types/generated_poc/property/get_property_list_request.py +5 -5
- adcp/types/generated_poc/property/get_property_list_response.py +11 -11
- adcp/types/generated_poc/property/list_property_lists_request.py +5 -5
- adcp/types/generated_poc/property/list_property_lists_response.py +8 -8
- adcp/types/generated_poc/property/property_error.py +10 -10
- adcp/types/generated_poc/property/property_feature.py +4 -4
- adcp/types/generated_poc/property/property_feature_definition.py +18 -18
- adcp/types/generated_poc/property/property_list.py +11 -11
- adcp/types/generated_poc/property/property_list_changed_webhook.py +11 -11
- adcp/types/generated_poc/property/property_list_filters.py +7 -7
- adcp/types/generated_poc/property/update_property_list_request.py +8 -8
- adcp/types/generated_poc/property/update_property_list_response.py +2 -2
- adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +8 -6
- adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +59 -58
- adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
- adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
- adcp/types/generated_poc/signals/get_signals_request.py +8 -8
- adcp/types/generated_poc/signals/get_signals_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +45 -30
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +4 -4
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +23 -23
- adcp/types/generated_poc/sponsored_intelligence/si_identity.py +16 -16
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +5 -5
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +7 -7
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +11 -11
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +37 -23
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +17 -17
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +11 -11
- adcp/utils/format_assets.py +32 -32
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/METADATA +10 -5
- adcp-3.2.0.dist-info/RECORD +268 -0
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -38
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -84
- adcp/types/generated_poc/protocols/adcp_extension.py +0 -50
- adcp-3.0.0.dist-info/RECORD +0 -264
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/WHEEL +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/entry_points.txt +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-3.0.0.dist-info → adcp-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: protocol/get_adcp_capabilities_response.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ class Adcp(AdCPBaseModel):
|
|
|
26
26
|
major_versions: Annotated[
|
|
27
27
|
list[MajorVersion],
|
|
28
28
|
Field(
|
|
29
|
-
description=
|
|
29
|
+
description="AdCP major versions supported by this seller. Major versions indicate breaking changes.",
|
|
30
30
|
min_length=1,
|
|
31
31
|
),
|
|
32
32
|
]
|
|
@@ -37,28 +37,28 @@ class ExtensionsSupportedItem(RootModel[str]):
|
|
|
37
37
|
str,
|
|
38
38
|
Field(
|
|
39
39
|
description="Extension namespace (lowercase alphanumeric with underscores, e.g., 'scope3', 'garm', 'iab_tcf')",
|
|
40
|
-
pattern=
|
|
40
|
+
pattern="^[a-z][a-z0-9_]*$",
|
|
41
41
|
),
|
|
42
42
|
]
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
class Range(AdCPBaseModel):
|
|
46
|
-
max: Annotated[float, Field(description=
|
|
47
|
-
min: Annotated[float, Field(description=
|
|
46
|
+
max: Annotated[float, Field(description="Maximum value")]
|
|
47
|
+
min: Annotated[float, Field(description="Minimum value")]
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
class Type(Enum):
|
|
51
|
-
binary =
|
|
52
|
-
quantitative =
|
|
53
|
-
categorical =
|
|
51
|
+
binary = "binary"
|
|
52
|
+
quantitative = "quantitative"
|
|
53
|
+
categorical = "categorical"
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
class PropertyFeature(AdCPBaseModel):
|
|
57
57
|
categories: Annotated[
|
|
58
|
-
list[str] | None, Field(description=
|
|
58
|
+
list[str] | None, Field(description="For categorical features, the valid values")
|
|
59
59
|
] = None
|
|
60
60
|
description: Annotated[
|
|
61
|
-
str | None, Field(description=
|
|
61
|
+
str | None, Field(description="Human-readable description of what this feature measures")
|
|
62
62
|
] = None
|
|
63
63
|
feature_id: Annotated[
|
|
64
64
|
str,
|
|
@@ -69,11 +69,11 @@ class PropertyFeature(AdCPBaseModel):
|
|
|
69
69
|
methodology_url: Annotated[
|
|
70
70
|
AnyUrl | None,
|
|
71
71
|
Field(
|
|
72
|
-
description=
|
|
72
|
+
description="URL to documentation explaining how this feature is calculated or measured. Helps buyers understand and compare methodologies across vendors."
|
|
73
73
|
),
|
|
74
74
|
] = None
|
|
75
75
|
range: Annotated[
|
|
76
|
-
Range | None, Field(description=
|
|
76
|
+
Range | None, Field(description="For quantitative features, the valid range")
|
|
77
77
|
] = None
|
|
78
78
|
type: Annotated[
|
|
79
79
|
Type,
|
|
@@ -87,13 +87,13 @@ class Governance(AdCPBaseModel):
|
|
|
87
87
|
property_features: Annotated[
|
|
88
88
|
list[PropertyFeature] | None,
|
|
89
89
|
Field(
|
|
90
|
-
description=
|
|
90
|
+
description="Property features this governance agent can evaluate. Each feature describes a score, rating, or certification the agent can provide for properties."
|
|
91
91
|
),
|
|
92
92
|
] = None
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
class MraidVersion(RootModel[str]):
|
|
96
|
-
root: Annotated[str, Field(pattern=
|
|
96
|
+
root: Annotated[str, Field(pattern="^[0-9]+\\.[0-9]+$")]
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
class VastVersion(MraidVersion):
|
|
@@ -103,29 +103,29 @@ class VastVersion(MraidVersion):
|
|
|
103
103
|
class CreativeSpecs(AdCPBaseModel):
|
|
104
104
|
mraid_versions: Annotated[
|
|
105
105
|
list[MraidVersion] | None,
|
|
106
|
-
Field(description=
|
|
106
|
+
Field(description="MRAID versions supported for rich media mobile creatives"),
|
|
107
107
|
] = None
|
|
108
|
-
simid: Annotated[bool | None, Field(description=
|
|
108
|
+
simid: Annotated[bool | None, Field(description="SIMID support for interactive video ads")] = (
|
|
109
109
|
None
|
|
110
110
|
)
|
|
111
111
|
vast_versions: Annotated[
|
|
112
|
-
list[VastVersion] | None, Field(description=
|
|
112
|
+
list[VastVersion] | None, Field(description="VAST versions supported for video creatives")
|
|
113
113
|
] = None
|
|
114
|
-
vpaid: Annotated[bool | None, Field(description=
|
|
114
|
+
vpaid: Annotated[bool | None, Field(description="VPAID support for interactive video ads")] = (
|
|
115
115
|
None
|
|
116
116
|
)
|
|
117
117
|
|
|
118
118
|
|
|
119
119
|
class GeoMetros(AdCPBaseModel):
|
|
120
120
|
eurostat_nuts2: Annotated[
|
|
121
|
-
bool | None, Field(description=
|
|
121
|
+
bool | None, Field(description="Supports Eurostat NUTS Level 2 regions (EU)")
|
|
122
122
|
] = None
|
|
123
123
|
nielsen_dma: Annotated[
|
|
124
124
|
bool | None,
|
|
125
125
|
Field(description="Supports Nielsen DMA codes (US market, e.g., '501' for NYC)"),
|
|
126
126
|
] = None
|
|
127
|
-
uk_itl1: Annotated[bool | None, Field(description=
|
|
128
|
-
uk_itl2: Annotated[bool | None, Field(description=
|
|
127
|
+
uk_itl1: Annotated[bool | None, Field(description="Supports UK ITL Level 1 regions")] = None
|
|
128
|
+
uk_itl2: Annotated[bool | None, Field(description="Supports UK ITL Level 2 regions")] = None
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
class GeoPostalAreas(AdCPBaseModel):
|
|
@@ -164,13 +164,13 @@ class Targeting(AdCPBaseModel):
|
|
|
164
164
|
geo_metros: Annotated[
|
|
165
165
|
GeoMetros | None,
|
|
166
166
|
Field(
|
|
167
|
-
description=
|
|
167
|
+
description="Metro area targeting support. Specifies which classification systems are supported."
|
|
168
168
|
),
|
|
169
169
|
] = None
|
|
170
170
|
geo_postal_areas: Annotated[
|
|
171
171
|
GeoPostalAreas | None,
|
|
172
172
|
Field(
|
|
173
|
-
description=
|
|
173
|
+
description="Postal area targeting support. Specifies which postal code systems are supported. System names encode country and precision."
|
|
174
174
|
),
|
|
175
175
|
] = None
|
|
176
176
|
geo_regions: Annotated[
|
|
@@ -185,27 +185,27 @@ class Execution(AdCPBaseModel):
|
|
|
185
185
|
axe_integrations: Annotated[
|
|
186
186
|
list[AnyUrl] | None,
|
|
187
187
|
Field(
|
|
188
|
-
description=
|
|
188
|
+
description="Agentic ad exchange (AXE) integrations supported. URLs are canonical identifiers for exchanges this seller can execute through."
|
|
189
189
|
),
|
|
190
190
|
] = None
|
|
191
191
|
creative_specs: Annotated[
|
|
192
|
-
CreativeSpecs | None, Field(description=
|
|
192
|
+
CreativeSpecs | None, Field(description="Creative specification support")
|
|
193
193
|
] = None
|
|
194
194
|
targeting: Annotated[
|
|
195
195
|
Targeting | None,
|
|
196
196
|
Field(
|
|
197
|
-
description=
|
|
197
|
+
description="Targeting capabilities. If declared true/supported, buyer can use these targeting parameters and seller MUST honor them."
|
|
198
198
|
),
|
|
199
199
|
] = None
|
|
200
200
|
|
|
201
201
|
|
|
202
202
|
class PrimaryCountry(RootModel[str]):
|
|
203
|
-
root: Annotated[str, Field(pattern=
|
|
203
|
+
root: Annotated[str, Field(pattern="^[A-Z]{2}$")]
|
|
204
204
|
|
|
205
205
|
|
|
206
206
|
class PublisherDomain(RootModel[str]):
|
|
207
207
|
root: Annotated[
|
|
208
|
-
str, Field(pattern=
|
|
208
|
+
str, Field(pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$")
|
|
209
209
|
]
|
|
210
210
|
|
|
211
211
|
|
|
@@ -213,23 +213,23 @@ class Portfolio(AdCPBaseModel):
|
|
|
213
213
|
advertising_policies: Annotated[
|
|
214
214
|
str | None,
|
|
215
215
|
Field(
|
|
216
|
-
description=
|
|
216
|
+
description="Advertising content policies, restrictions, and guidelines",
|
|
217
217
|
max_length=10000,
|
|
218
218
|
),
|
|
219
219
|
] = None
|
|
220
220
|
description: Annotated[
|
|
221
221
|
str | None,
|
|
222
222
|
Field(
|
|
223
|
-
description=
|
|
223
|
+
description="Markdown-formatted description of the inventory portfolio", max_length=5000
|
|
224
224
|
),
|
|
225
225
|
] = None
|
|
226
226
|
primary_channels: Annotated[
|
|
227
227
|
list[channels.MediaChannel] | None,
|
|
228
|
-
Field(description=
|
|
228
|
+
Field(description="Primary advertising channels in this portfolio"),
|
|
229
229
|
] = None
|
|
230
230
|
primary_countries: Annotated[
|
|
231
231
|
list[PrimaryCountry] | None,
|
|
232
|
-
Field(description=
|
|
232
|
+
Field(description="Primary countries (ISO 3166-1 alpha-2) where inventory is concentrated"),
|
|
233
233
|
] = None
|
|
234
234
|
publisher_domains: Annotated[
|
|
235
235
|
list[PublisherDomain],
|
|
@@ -242,46 +242,47 @@ class Portfolio(AdCPBaseModel):
|
|
|
242
242
|
|
|
243
243
|
class Signals(AdCPBaseModel):
|
|
244
244
|
features: Annotated[
|
|
245
|
-
dict[str, bool] | None, Field(description=
|
|
245
|
+
dict[str, bool] | None, Field(description="Optional signals features supported")
|
|
246
246
|
] = None
|
|
247
247
|
|
|
248
248
|
|
|
249
249
|
class Preferred(Enum):
|
|
250
|
-
mcp =
|
|
251
|
-
a2a =
|
|
250
|
+
mcp = "mcp"
|
|
251
|
+
a2a = "a2a"
|
|
252
252
|
|
|
253
253
|
|
|
254
254
|
class Transport(AdCPBaseModel):
|
|
255
255
|
model_config = ConfigDict(
|
|
256
|
-
extra=
|
|
256
|
+
extra="allow",
|
|
257
257
|
)
|
|
258
|
-
type: Annotated[Preferred, Field(description=
|
|
259
|
-
url: Annotated[AnyUrl, Field(description=
|
|
258
|
+
type: Annotated[Preferred, Field(description="Protocol transport type")]
|
|
259
|
+
url: Annotated[AnyUrl, Field(description="Agent endpoint URL for this transport")]
|
|
260
260
|
|
|
261
261
|
|
|
262
262
|
class Endpoint(AdCPBaseModel):
|
|
263
263
|
preferred: Annotated[
|
|
264
|
-
Preferred | None, Field(description=
|
|
264
|
+
Preferred | None, Field(description="Preferred transport when host supports multiple")
|
|
265
265
|
] = None
|
|
266
266
|
transports: Annotated[
|
|
267
267
|
list[Transport],
|
|
268
268
|
Field(
|
|
269
|
-
description=
|
|
269
|
+
description="Available protocol transports. Hosts select based on their capabilities.",
|
|
270
270
|
min_length=1,
|
|
271
271
|
),
|
|
272
272
|
]
|
|
273
273
|
|
|
274
274
|
|
|
275
275
|
class SupportedProtocol(Enum):
|
|
276
|
-
media_buy =
|
|
277
|
-
signals =
|
|
278
|
-
governance =
|
|
279
|
-
sponsored_intelligence =
|
|
276
|
+
media_buy = "media_buy"
|
|
277
|
+
signals = "signals"
|
|
278
|
+
governance = "governance"
|
|
279
|
+
sponsored_intelligence = "sponsored_intelligence"
|
|
280
|
+
creative = "creative"
|
|
280
281
|
|
|
281
282
|
|
|
282
283
|
class MediaBuy(AdCPBaseModel):
|
|
283
284
|
execution: Annotated[
|
|
284
|
-
Execution | None, Field(description=
|
|
285
|
+
Execution | None, Field(description="Technical execution capabilities for media buying")
|
|
285
286
|
] = None
|
|
286
287
|
features: media_buy_features.MediaBuyFeatures | None = None
|
|
287
288
|
portfolio: Annotated[
|
|
@@ -292,62 +293,62 @@ class MediaBuy(AdCPBaseModel):
|
|
|
292
293
|
|
|
293
294
|
class SponsoredIntelligence(AdCPBaseModel):
|
|
294
295
|
brand_manifest_url: Annotated[
|
|
295
|
-
AnyUrl | None, Field(description=
|
|
296
|
+
AnyUrl | None, Field(description="URL to brand manifest with colors, fonts, logos, tone")
|
|
296
297
|
] = None
|
|
297
298
|
capabilities: Annotated[
|
|
298
299
|
si_capabilities.SiCapabilities,
|
|
299
|
-
Field(description=
|
|
300
|
+
Field(description="Modalities, components, and commerce capabilities"),
|
|
300
301
|
]
|
|
301
|
-
endpoint: Annotated[Endpoint, Field(description=
|
|
302
|
+
endpoint: Annotated[Endpoint, Field(description="SI agent endpoint configuration")]
|
|
302
303
|
|
|
303
304
|
|
|
304
305
|
class GetAdcpCapabilitiesResponse(AdCPBaseModel):
|
|
305
306
|
model_config = ConfigDict(
|
|
306
|
-
extra=
|
|
307
|
+
extra="allow",
|
|
307
308
|
)
|
|
308
|
-
adcp: Annotated[Adcp, Field(description=
|
|
309
|
+
adcp: Annotated[Adcp, Field(description="Core AdCP protocol information")]
|
|
309
310
|
context: context_1.ContextObject | None = None
|
|
310
311
|
errors: Annotated[
|
|
311
|
-
list[error.Error] | None, Field(description=
|
|
312
|
+
list[error.Error] | None, Field(description="Task-specific errors and warnings")
|
|
312
313
|
] = None
|
|
313
314
|
ext: ext_1.ExtensionObject | None = None
|
|
314
315
|
extensions_supported: Annotated[
|
|
315
316
|
list[ExtensionsSupportedItem] | None,
|
|
316
317
|
Field(
|
|
317
|
-
description=
|
|
318
|
+
description="Extension namespaces this agent supports. Buyers can expect meaningful data in ext.{namespace} fields on responses from this agent. Extension schemas are published in the AdCP extension registry."
|
|
318
319
|
),
|
|
319
320
|
] = None
|
|
320
321
|
governance: Annotated[
|
|
321
322
|
Governance | None,
|
|
322
323
|
Field(
|
|
323
|
-
description=
|
|
324
|
+
description="Governance protocol capabilities. Only present if governance is in supported_protocols. Governance agents provide property data like compliance scores, brand safety ratings, and sustainability metrics."
|
|
324
325
|
),
|
|
325
326
|
] = None
|
|
326
327
|
last_updated: Annotated[
|
|
327
328
|
AwareDatetime | None,
|
|
328
329
|
Field(
|
|
329
|
-
description=
|
|
330
|
+
description="ISO 8601 timestamp of when capabilities were last updated. Buyers can use this for cache invalidation."
|
|
330
331
|
),
|
|
331
332
|
] = None
|
|
332
333
|
media_buy: Annotated[
|
|
333
334
|
MediaBuy | None,
|
|
334
335
|
Field(
|
|
335
|
-
description=
|
|
336
|
+
description="Media-buy protocol capabilities. Only present if media_buy is in supported_protocols."
|
|
336
337
|
),
|
|
337
338
|
] = None
|
|
338
339
|
signals: Annotated[
|
|
339
340
|
Signals | None,
|
|
340
341
|
Field(
|
|
341
|
-
description=
|
|
342
|
+
description="Signals protocol capabilities. Only present if signals is in supported_protocols. Reserved for future use."
|
|
342
343
|
),
|
|
343
344
|
] = None
|
|
344
345
|
sponsored_intelligence: Annotated[
|
|
345
346
|
SponsoredIntelligence | None,
|
|
346
347
|
Field(
|
|
347
|
-
description=
|
|
348
|
+
description="Sponsored Intelligence protocol capabilities. Only present if sponsored_intelligence is in supported_protocols. SI agents handle conversational brand experiences."
|
|
348
349
|
),
|
|
349
350
|
] = None
|
|
350
351
|
supported_protocols: Annotated[
|
|
351
352
|
list[SupportedProtocol],
|
|
352
|
-
Field(description=
|
|
353
|
+
Field(description="Which AdCP domain protocols this seller supports", min_length=1),
|
|
353
354
|
]
|
|
@@ -16,17 +16,17 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
class ActivateSignalRequest(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
context: context_1.ContextObject | None = None
|
|
22
22
|
deployments: Annotated[
|
|
23
23
|
list[destination.Destination],
|
|
24
24
|
Field(
|
|
25
|
-
description=
|
|
25
|
+
description="Target deployment(s) for activation. If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.",
|
|
26
26
|
min_length=1,
|
|
27
27
|
),
|
|
28
28
|
]
|
|
29
29
|
ext: ext_1.ExtensionObject | None = None
|
|
30
30
|
signal_agent_segment_id: Annotated[
|
|
31
|
-
str, Field(description=
|
|
31
|
+
str, Field(description="The universal identifier for the signal to activate")
|
|
32
32
|
]
|
|
@@ -16,25 +16,25 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
class ActivateSignalResponse1(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
context: context_1.ContextObject | None = None
|
|
22
22
|
deployments: Annotated[
|
|
23
23
|
list[deployment.Deployment],
|
|
24
|
-
Field(description=
|
|
24
|
+
Field(description="Array of deployment results for each deployment target"),
|
|
25
25
|
]
|
|
26
26
|
ext: ext_1.ExtensionObject | None = None
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class ActivateSignalResponse2(AdCPBaseModel):
|
|
30
30
|
model_config = ConfigDict(
|
|
31
|
-
extra=
|
|
31
|
+
extra="allow",
|
|
32
32
|
)
|
|
33
33
|
context: context_1.ContextObject | None = None
|
|
34
34
|
errors: Annotated[
|
|
35
35
|
list[error.Error],
|
|
36
36
|
Field(
|
|
37
|
-
description=
|
|
37
|
+
description="Array of errors explaining why activation failed (e.g., platform connectivity issues, signal definition problems, authentication failures)",
|
|
38
38
|
min_length=1,
|
|
39
39
|
),
|
|
40
40
|
]
|
|
@@ -45,7 +45,7 @@ class ActivateSignalResponse(RootModel[ActivateSignalResponse1 | ActivateSignalR
|
|
|
45
45
|
root: Annotated[
|
|
46
46
|
ActivateSignalResponse1 | ActivateSignalResponse2,
|
|
47
47
|
Field(
|
|
48
|
-
description=
|
|
49
|
-
title=
|
|
48
|
+
description="Response payload for activate_signal task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - the signal is either fully activated or not activated at all.",
|
|
49
|
+
title="Activate Signal Response",
|
|
50
50
|
),
|
|
51
51
|
]
|
|
@@ -16,20 +16,20 @@ from ..core import signal_filters
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class Country(RootModel[str]):
|
|
19
|
-
root: Annotated[str, Field(pattern=
|
|
19
|
+
root: Annotated[str, Field(pattern="^[A-Z]{2}$")]
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class DeliverTo(AdCPBaseModel):
|
|
23
23
|
model_config = ConfigDict(
|
|
24
|
-
extra=
|
|
24
|
+
extra="allow",
|
|
25
25
|
)
|
|
26
26
|
countries: Annotated[
|
|
27
|
-
list[Country], Field(description=
|
|
27
|
+
list[Country], Field(description="Countries where signals will be used (ISO codes)")
|
|
28
28
|
]
|
|
29
29
|
deployments: Annotated[
|
|
30
30
|
list[destination.Destination],
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description="List of deployment targets (DSPs, sales agents, etc.). If the authenticated caller matches one of these deployment targets, activation keys will be included in the response.",
|
|
33
33
|
min_length=1,
|
|
34
34
|
),
|
|
35
35
|
]
|
|
@@ -37,17 +37,17 @@ class DeliverTo(AdCPBaseModel):
|
|
|
37
37
|
|
|
38
38
|
class GetSignalsRequest(AdCPBaseModel):
|
|
39
39
|
model_config = ConfigDict(
|
|
40
|
-
extra=
|
|
40
|
+
extra="allow",
|
|
41
41
|
)
|
|
42
42
|
context: context_1.ContextObject | None = None
|
|
43
43
|
deliver_to: Annotated[
|
|
44
|
-
DeliverTo, Field(description=
|
|
44
|
+
DeliverTo, Field(description="Deployment targets where signals need to be activated")
|
|
45
45
|
]
|
|
46
46
|
ext: ext_1.ExtensionObject | None = None
|
|
47
47
|
filters: signal_filters.SignalFilters | None = None
|
|
48
48
|
max_results: Annotated[
|
|
49
|
-
int | None, Field(description=
|
|
49
|
+
int | None, Field(description="Maximum number of results to return", ge=1)
|
|
50
50
|
] = None
|
|
51
51
|
signal_spec: Annotated[
|
|
52
|
-
str, Field(description=
|
|
52
|
+
str, Field(description="Natural language description of the desired signals")
|
|
53
53
|
]
|
|
@@ -17,42 +17,42 @@ from ..enums import signal_catalog_type
|
|
|
17
17
|
|
|
18
18
|
class Pricing(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="allow",
|
|
21
21
|
)
|
|
22
|
-
cpm: Annotated[float, Field(description=
|
|
23
|
-
currency: Annotated[str, Field(description=
|
|
22
|
+
cpm: Annotated[float, Field(description="Cost per thousand impressions", ge=0.0)]
|
|
23
|
+
currency: Annotated[str, Field(description="Currency code", pattern="^[A-Z]{3}$")]
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class Signal(AdCPBaseModel):
|
|
27
27
|
model_config = ConfigDict(
|
|
28
|
-
extra=
|
|
28
|
+
extra="allow",
|
|
29
29
|
)
|
|
30
30
|
coverage_percentage: Annotated[
|
|
31
|
-
float, Field(description=
|
|
31
|
+
float, Field(description="Percentage of audience coverage", ge=0.0, le=100.0)
|
|
32
32
|
]
|
|
33
|
-
data_provider: Annotated[str, Field(description=
|
|
33
|
+
data_provider: Annotated[str, Field(description="Name of the data provider")]
|
|
34
34
|
deployments: Annotated[
|
|
35
|
-
list[deployment.Deployment], Field(description=
|
|
35
|
+
list[deployment.Deployment], Field(description="Array of deployment targets")
|
|
36
36
|
]
|
|
37
|
-
description: Annotated[str, Field(description=
|
|
38
|
-
name: Annotated[str, Field(description=
|
|
39
|
-
pricing: Annotated[Pricing, Field(description=
|
|
40
|
-
signal_agent_segment_id: Annotated[str, Field(description=
|
|
37
|
+
description: Annotated[str, Field(description="Detailed signal description")]
|
|
38
|
+
name: Annotated[str, Field(description="Human-readable signal name")]
|
|
39
|
+
pricing: Annotated[Pricing, Field(description="Pricing information")]
|
|
40
|
+
signal_agent_segment_id: Annotated[str, Field(description="Unique identifier for the signal")]
|
|
41
41
|
signal_type: Annotated[
|
|
42
|
-
signal_catalog_type.SignalCatalogType, Field(description=
|
|
42
|
+
signal_catalog_type.SignalCatalogType, Field(description="Type of signal")
|
|
43
43
|
]
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
class GetSignalsResponse(AdCPBaseModel):
|
|
47
47
|
model_config = ConfigDict(
|
|
48
|
-
extra=
|
|
48
|
+
extra="allow",
|
|
49
49
|
)
|
|
50
50
|
context: context_1.ContextObject | None = None
|
|
51
51
|
errors: Annotated[
|
|
52
52
|
list[error.Error] | None,
|
|
53
53
|
Field(
|
|
54
|
-
description=
|
|
54
|
+
description="Task-specific errors and warnings (e.g., signal discovery or pricing issues)"
|
|
55
55
|
),
|
|
56
56
|
] = None
|
|
57
57
|
ext: ext_1.ExtensionObject | None = None
|
|
58
|
-
signals: Annotated[list[Signal], Field(description=
|
|
58
|
+
signals: Annotated[list[Signal], Field(description="Array of matching signals")]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: sponsored_intelligence/si_capabilities.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -11,92 +11,107 @@ from adcp.types.base import AdCPBaseModel
|
|
|
11
11
|
from pydantic import ConfigDict, Field
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
class A2ui(AdCPBaseModel):
|
|
15
|
+
model_config = ConfigDict(
|
|
16
|
+
extra="allow",
|
|
17
|
+
)
|
|
18
|
+
catalogs: Annotated[
|
|
19
|
+
list[str] | None,
|
|
20
|
+
Field(description="Supported A2UI component catalogs (e.g., 'si-standard', 'standard')"),
|
|
21
|
+
] = None
|
|
22
|
+
supported: Annotated[bool | None, Field(description="Supports A2UI surface rendering")] = False
|
|
23
|
+
|
|
24
|
+
|
|
14
25
|
class Commerce(AdCPBaseModel):
|
|
15
26
|
model_config = ConfigDict(
|
|
16
|
-
extra=
|
|
27
|
+
extra="allow",
|
|
17
28
|
)
|
|
18
29
|
acp_checkout: Annotated[
|
|
19
|
-
bool | None, Field(description=
|
|
30
|
+
bool | None, Field(description="Supports ACP (Agentic Commerce Protocol) checkout handoff")
|
|
20
31
|
] = None
|
|
21
32
|
|
|
22
33
|
|
|
23
34
|
class StandardEnum(Enum):
|
|
24
|
-
text =
|
|
25
|
-
link =
|
|
26
|
-
image =
|
|
27
|
-
product_card =
|
|
28
|
-
carousel =
|
|
29
|
-
action_button =
|
|
35
|
+
text = "text"
|
|
36
|
+
link = "link"
|
|
37
|
+
image = "image"
|
|
38
|
+
product_card = "product_card"
|
|
39
|
+
carousel = "carousel"
|
|
40
|
+
action_button = "action_button"
|
|
30
41
|
|
|
31
42
|
|
|
32
43
|
class Components(AdCPBaseModel):
|
|
33
44
|
model_config = ConfigDict(
|
|
34
|
-
extra=
|
|
45
|
+
extra="allow",
|
|
35
46
|
)
|
|
36
47
|
extensions: Annotated[
|
|
37
48
|
dict[str, Any] | None,
|
|
38
|
-
Field(description=
|
|
49
|
+
Field(description="Platform-specific extensions (chatgpt_apps_sdk, maps, forms, etc.)"),
|
|
39
50
|
] = None
|
|
40
51
|
standard: Annotated[
|
|
41
52
|
list[StandardEnum] | None,
|
|
42
|
-
Field(description=
|
|
53
|
+
Field(description="Standard components that all SI hosts must render"),
|
|
43
54
|
] = None
|
|
44
55
|
|
|
45
56
|
|
|
46
57
|
class Avatar(AdCPBaseModel):
|
|
47
58
|
model_config = ConfigDict(
|
|
48
|
-
extra=
|
|
59
|
+
extra="allow",
|
|
49
60
|
)
|
|
50
|
-
avatar_id: Annotated[str | None, Field(description=
|
|
61
|
+
avatar_id: Annotated[str | None, Field(description="Brand avatar identifier")] = None
|
|
51
62
|
provider: Annotated[
|
|
52
|
-
str | None, Field(description=
|
|
63
|
+
str | None, Field(description="Avatar provider (d-id, heygen, synthesia, etc.)")
|
|
53
64
|
] = None
|
|
54
65
|
|
|
55
66
|
|
|
56
67
|
class Video(AdCPBaseModel):
|
|
57
68
|
model_config = ConfigDict(
|
|
58
|
-
extra=
|
|
69
|
+
extra="allow",
|
|
59
70
|
)
|
|
60
71
|
formats: Annotated[
|
|
61
|
-
list[str] | None, Field(description=
|
|
72
|
+
list[str] | None, Field(description="Supported video formats (mp4, webm, etc.)")
|
|
62
73
|
] = None
|
|
63
|
-
max_duration_seconds: Annotated[int | None, Field(description=
|
|
74
|
+
max_duration_seconds: Annotated[int | None, Field(description="Maximum video duration")] = None
|
|
64
75
|
|
|
65
76
|
|
|
66
77
|
class Voice(AdCPBaseModel):
|
|
67
78
|
model_config = ConfigDict(
|
|
68
|
-
extra=
|
|
79
|
+
extra="allow",
|
|
69
80
|
)
|
|
70
81
|
provider: Annotated[
|
|
71
|
-
str | None, Field(description=
|
|
82
|
+
str | None, Field(description="TTS provider (elevenlabs, openai, etc.)")
|
|
72
83
|
] = None
|
|
73
|
-
voice_id: Annotated[str | None, Field(description=
|
|
84
|
+
voice_id: Annotated[str | None, Field(description="Brand voice identifier")] = None
|
|
74
85
|
|
|
75
86
|
|
|
76
87
|
class Modalities(AdCPBaseModel):
|
|
77
88
|
model_config = ConfigDict(
|
|
78
|
-
extra=
|
|
89
|
+
extra="allow",
|
|
79
90
|
)
|
|
80
91
|
avatar: Annotated[
|
|
81
|
-
bool | Avatar | None, Field(description=
|
|
92
|
+
bool | Avatar | None, Field(description="Animated video presence with brand avatar")
|
|
82
93
|
] = None
|
|
83
94
|
conversational: Annotated[
|
|
84
|
-
bool | None, Field(description=
|
|
95
|
+
bool | None, Field(description="Pure text exchange - the baseline modality")
|
|
85
96
|
] = True
|
|
86
|
-
video: Annotated[bool | Video | None, Field(description=
|
|
97
|
+
video: Annotated[bool | Video | None, Field(description="Brand video content playback")] = None
|
|
87
98
|
voice: Annotated[
|
|
88
|
-
bool | Voice | None, Field(description=
|
|
99
|
+
bool | Voice | None, Field(description="Audio-based interaction using brand voice")
|
|
89
100
|
] = None
|
|
90
101
|
|
|
91
102
|
|
|
92
103
|
class SiCapabilities(AdCPBaseModel):
|
|
93
104
|
model_config = ConfigDict(
|
|
94
|
-
extra=
|
|
105
|
+
extra="allow",
|
|
95
106
|
)
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
a2ui: Annotated[A2ui | None, Field(description="A2UI (Agent-to-UI) capabilities")] = None
|
|
108
|
+
commerce: Annotated[Commerce | None, Field(description="Commerce capabilities")] = None
|
|
109
|
+
components: Annotated[Components | None, Field(description="Visual components supported")] = (
|
|
98
110
|
None
|
|
99
111
|
)
|
|
112
|
+
mcp_apps: Annotated[
|
|
113
|
+
bool | None, Field(description="Supports MCP Apps for rendering A2UI surfaces in iframes")
|
|
114
|
+
] = False
|
|
100
115
|
modalities: Annotated[
|
|
101
|
-
Modalities | None, Field(description=
|
|
116
|
+
Modalities | None, Field(description="Interaction modalities supported")
|
|
102
117
|
] = None
|