adcp 2.19.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 +84 -0
- 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 -14
- adcp/types/_generated.py +346 -52
- adcp/types/aliases.py +13 -20
- adcp/types/base.py +1 -1
- adcp/types/generated_poc/adagents.py +196 -189
- 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 +9 -9
- adcp/types/generated_poc/core/assets/audio_asset.py +6 -6
- adcp/types/generated_poc/core/assets/css_asset.py +3 -3
- adcp/types/generated_poc/core/assets/daast_asset.py +19 -19
- adcp/types/generated_poc/core/assets/html_asset.py +3 -3
- adcp/types/generated_poc/core/assets/image_asset.py +7 -7
- adcp/types/generated_poc/core/assets/javascript_asset.py +4 -4
- adcp/types/generated_poc/core/assets/text_asset.py +3 -3
- adcp/types/generated_poc/core/assets/url_asset.py +4 -4
- adcp/types/generated_poc/core/assets/vast_asset.py +19 -19
- adcp/types/generated_poc/core/assets/video_asset.py +8 -8
- adcp/types/generated_poc/core/assets/webhook_asset.py +10 -10
- adcp/types/generated_poc/core/async_response_data.py +3 -3
- adcp/types/generated_poc/core/brand_manifest.py +122 -59
- adcp/types/generated_poc/core/brand_manifest_ref.py +10 -10
- adcp/types/generated_poc/core/context.py +2 -2
- adcp/types/generated_poc/core/creative_asset.py +20 -19
- adcp/types/generated_poc/core/creative_assignment.py +4 -4
- adcp/types/generated_poc/core/creative_filters.py +18 -28
- adcp/types/generated_poc/core/creative_manifest.py +3 -3
- adcp/types/generated_poc/core/creative_policy.py +5 -5
- adcp/types/generated_poc/core/delivery_metrics.py +33 -33
- adcp/types/generated_poc/core/deployment.py +21 -21
- adcp/types/generated_poc/core/destination.py +12 -12
- adcp/types/generated_poc/core/error.py +7 -7
- adcp/types/generated_poc/core/ext.py +2 -2
- adcp/types/generated_poc/core/format.py +66 -66
- adcp/types/generated_poc/core/format_id.py +6 -6
- adcp/types/generated_poc/core/frequency_cap.py +3 -3
- adcp/types/generated_poc/core/identifier.py +3 -3
- adcp/types/generated_poc/core/mcp_webhook_payload.py +11 -11
- adcp/types/generated_poc/core/measurement.py +9 -9
- adcp/types/generated_poc/core/media_buy.py +8 -8
- 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 +9 -9
- adcp/types/generated_poc/core/performance_feedback.py +19 -19
- adcp/types/generated_poc/core/placement.py +5 -5
- adcp/types/generated_poc/core/pricing_option.py +9 -15
- adcp/types/generated_poc/core/product.py +21 -21
- adcp/types/generated_poc/core/product_allocation.py +48 -0
- adcp/types/generated_poc/core/product_filters.py +89 -24
- adcp/types/generated_poc/core/promoted_offerings.py +29 -38
- adcp/types/generated_poc/core/promoted_products.py +3 -3
- adcp/types/generated_poc/core/property.py +10 -10
- adcp/types/generated_poc/core/property_id.py +5 -5
- adcp/types/generated_poc/core/property_list_ref.py +5 -5
- adcp/types/generated_poc/core/property_tag.py +5 -5
- adcp/types/generated_poc/core/proposal.py +64 -0
- adcp/types/generated_poc/core/protocol_envelope.py +9 -9
- adcp/types/generated_poc/core/publisher_property_selector.py +14 -14
- adcp/types/generated_poc/core/push_notification_config.py +6 -6
- adcp/types/generated_poc/core/reporting_capabilities.py +9 -9
- adcp/types/generated_poc/core/reporting_webhook.py +70 -0
- adcp/types/generated_poc/core/response.py +5 -5
- adcp/types/generated_poc/core/signal_filters.py +6 -6
- adcp/types/generated_poc/core/start_timing.py +4 -4
- adcp/types/generated_poc/core/sub_asset.py +15 -15
- adcp/types/generated_poc/core/targeting.py +59 -18
- adcp/types/generated_poc/creative/list_creative_formats_request.py +21 -21
- adcp/types/generated_poc/creative/list_creative_formats_response.py +6 -6
- adcp/types/generated_poc/creative/preview_creative_request.py +25 -25
- adcp/types/generated_poc/creative/preview_creative_response.py +29 -29
- adcp/types/generated_poc/creative/preview_render.py +26 -26
- adcp/types/generated_poc/enums/adcp_domain.py +5 -5
- adcp/types/generated_poc/enums/asset_content_type.py +14 -14
- adcp/types/generated_poc/enums/auth_scheme.py +3 -3
- adcp/types/generated_poc/enums/available_metric.py +10 -10
- adcp/types/generated_poc/enums/channels.py +21 -11
- adcp/types/generated_poc/enums/co_branding_requirement.py +4 -4
- adcp/types/generated_poc/enums/creative_action.py +6 -6
- adcp/types/generated_poc/enums/creative_agent_capability.py +5 -5
- adcp/types/generated_poc/enums/creative_sort_field.py +7 -7
- adcp/types/generated_poc/enums/creative_status.py +6 -5
- adcp/types/generated_poc/enums/daast_tracking_event.py +12 -12
- adcp/types/generated_poc/enums/daast_version.py +3 -3
- adcp/types/generated_poc/enums/delivery_type.py +3 -3
- adcp/types/generated_poc/enums/dimension_unit.py +5 -5
- adcp/types/generated_poc/enums/feed_format.py +4 -4
- adcp/types/generated_poc/enums/feedback_source.py +5 -5
- adcp/types/generated_poc/enums/format_category.py +8 -8
- adcp/types/generated_poc/enums/format_id_parameter.py +3 -3
- adcp/types/generated_poc/enums/frequency_cap_scope.py +4 -4
- adcp/types/generated_poc/enums/geo_level.py +14 -0
- adcp/types/generated_poc/enums/history_entry_type.py +3 -3
- adcp/types/generated_poc/enums/http_method.py +3 -3
- adcp/types/generated_poc/enums/identifier_types.py +20 -20
- adcp/types/generated_poc/enums/javascript_module_type.py +4 -4
- adcp/types/generated_poc/enums/landing_page_requirement.py +4 -4
- adcp/types/generated_poc/enums/markdown_flavor.py +3 -3
- adcp/types/generated_poc/enums/media_buy_status.py +5 -5
- adcp/types/generated_poc/enums/metric_type.py +9 -9
- adcp/types/generated_poc/enums/metro_system.py +15 -0
- adcp/types/generated_poc/enums/notification_type.py +5 -5
- adcp/types/generated_poc/enums/pacing.py +4 -4
- adcp/types/generated_poc/enums/postal_system.py +19 -0
- adcp/types/generated_poc/enums/preview_output_format.py +3 -3
- adcp/types/generated_poc/enums/pricing_model.py +8 -8
- adcp/types/generated_poc/enums/property_type.py +9 -8
- adcp/types/generated_poc/enums/publisher_identifier_types.py +6 -6
- adcp/types/generated_poc/enums/reporting_frequency.py +4 -4
- adcp/types/generated_poc/enums/signal_catalog_type.py +4 -4
- adcp/types/generated_poc/enums/sort_direction.py +3 -3
- adcp/types/generated_poc/enums/task_status.py +10 -10
- adcp/types/generated_poc/enums/task_type.py +12 -12
- adcp/types/generated_poc/enums/update_frequency.py +5 -5
- adcp/types/generated_poc/enums/url_asset_type.py +4 -4
- adcp/types/generated_poc/enums/validation_mode.py +3 -3
- adcp/types/generated_poc/enums/vast_tracking_event.py +17 -17
- adcp/types/generated_poc/enums/vast_version.py +6 -6
- adcp/types/generated_poc/enums/webhook_response_type.py +5 -5
- adcp/types/generated_poc/enums/webhook_security_method.py +4 -4
- adcp/types/generated_poc/extensions/extension_meta.py +20 -12
- adcp/types/generated_poc/media_buy/build_creative_request.py +5 -5
- adcp/types/generated_poc/media_buy/build_creative_response.py +7 -7
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +6 -6
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +6 -6
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +65 -37
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +8 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +9 -9
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +52 -52
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +7 -7
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +3 -3
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/get_products_request.py +14 -5
- adcp/types/generated_poc/media_buy/get_products_response.py +12 -6
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +4 -4
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +9 -9
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +10 -10
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +6 -6
- adcp/types/generated_poc/media_buy/list_creatives_request.py +24 -24
- adcp/types/generated_poc/media_buy/list_creatives_response.py +54 -57
- adcp/types/generated_poc/media_buy/package_request.py +12 -12
- adcp/types/generated_poc/media_buy/package_update.py +119 -0
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +20 -20
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +7 -7
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +6 -6
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +8 -8
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +8 -8
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +16 -16
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +6 -6
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +28 -124
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +8 -8
- adcp/types/generated_poc/pricing_options/cpc_option.py +40 -15
- adcp/types/generated_poc/pricing_options/cpcv_option.py +41 -16
- adcp/types/generated_poc/pricing_options/cpm_option.py +62 -0
- adcp/types/generated_poc/pricing_options/cpp_option.py +46 -23
- adcp/types/generated_poc/pricing_options/cpv_option.py +45 -26
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +53 -47
- adcp/types/generated_poc/pricing_options/vcpm_option.py +70 -0
- adcp/types/generated_poc/property/base_property_source.py +16 -16
- adcp/types/generated_poc/property/create_property_list_request.py +5 -5
- adcp/types/generated_poc/property/create_property_list_response.py +4 -4
- adcp/types/generated_poc/property/delete_property_list_request.py +3 -3
- adcp/types/generated_poc/property/delete_property_list_response.py +4 -4
- adcp/types/generated_poc/property/feature_requirement.py +8 -8
- adcp/types/generated_poc/property/get_property_list_request.py +6 -6
- adcp/types/generated_poc/property/get_property_list_response.py +12 -12
- adcp/types/generated_poc/property/list_property_lists_request.py +6 -6
- adcp/types/generated_poc/property/list_property_lists_response.py +9 -9
- adcp/types/generated_poc/property/property_error.py +11 -11
- adcp/types/generated_poc/property/property_feature.py +5 -5
- adcp/types/generated_poc/property/property_feature_definition.py +19 -19
- adcp/types/generated_poc/property/property_list.py +12 -12
- adcp/types/generated_poc/property/property_list_changed_webhook.py +12 -12
- adcp/types/generated_poc/property/property_list_filters.py +9 -9
- adcp/types/generated_poc/property/update_property_list_request.py +9 -9
- adcp/types/generated_poc/property/update_property_list_response.py +3 -3
- 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 +14 -17
- adcp/types/generated_poc/signals/activate_signal_request.py +4 -4
- adcp/types/generated_poc/signals/activate_signal_response.py +7 -7
- adcp/types/generated_poc/signals/get_signals_request.py +9 -9
- adcp/types/generated_poc/signals/get_signals_response.py +16 -16
- 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.19.0.dist-info → adcp-3.0.0.dist-info}/METADATA +1 -1
- adcp-3.0.0.dist-info/RECORD +264 -0
- {adcp-2.19.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_auction_option.py +0 -58
- adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +0 -43
- adcp/types/generated_poc/pricing_options/vcpm_auction_option.py +0 -61
- adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +0 -47
- adcp/types/generated_poc/property/list_property_features_request.py +0 -25
- adcp/types/generated_poc/property/list_property_features_response.py +0 -24
- adcp-2.19.0.dist-info/RECORD +0 -220
- {adcp-2.19.0.dist-info → adcp-3.0.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.19.0.dist-info → adcp-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.19.0.dist-info → adcp-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: protocol/get_adcp_capabilities_response.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, AwareDatetime, ConfigDict, Field, RootModel
|
|
12
|
+
|
|
13
|
+
from ..core import context as context_1
|
|
14
|
+
from ..core import error
|
|
15
|
+
from ..core import ext as ext_1
|
|
16
|
+
from ..core import media_buy_features
|
|
17
|
+
from ..enums import channels
|
|
18
|
+
from ..sponsored_intelligence import si_capabilities
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MajorVersion(RootModel[int]):
|
|
22
|
+
root: Annotated[int, Field(ge=1)]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Adcp(AdCPBaseModel):
|
|
26
|
+
major_versions: Annotated[
|
|
27
|
+
list[MajorVersion],
|
|
28
|
+
Field(
|
|
29
|
+
description='AdCP major versions supported by this seller. Major versions indicate breaking changes.',
|
|
30
|
+
min_length=1,
|
|
31
|
+
),
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ExtensionsSupportedItem(RootModel[str]):
|
|
36
|
+
root: Annotated[
|
|
37
|
+
str,
|
|
38
|
+
Field(
|
|
39
|
+
description="Extension namespace (lowercase alphanumeric with underscores, e.g., 'scope3', 'garm', 'iab_tcf')",
|
|
40
|
+
pattern='^[a-z][a-z0-9_]*$',
|
|
41
|
+
),
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class Range(AdCPBaseModel):
|
|
46
|
+
max: Annotated[float, Field(description='Maximum value')]
|
|
47
|
+
min: Annotated[float, Field(description='Minimum value')]
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class Type(Enum):
|
|
51
|
+
binary = 'binary'
|
|
52
|
+
quantitative = 'quantitative'
|
|
53
|
+
categorical = 'categorical'
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class PropertyFeature(AdCPBaseModel):
|
|
57
|
+
categories: Annotated[
|
|
58
|
+
list[str] | None, Field(description='For categorical features, the valid values')
|
|
59
|
+
] = None
|
|
60
|
+
description: Annotated[
|
|
61
|
+
str | None, Field(description='Human-readable description of what this feature measures')
|
|
62
|
+
] = None
|
|
63
|
+
feature_id: Annotated[
|
|
64
|
+
str,
|
|
65
|
+
Field(
|
|
66
|
+
description="Unique identifier for this feature (e.g., 'consent_quality', 'coppa_certified', 'carbon_score')"
|
|
67
|
+
),
|
|
68
|
+
]
|
|
69
|
+
methodology_url: Annotated[
|
|
70
|
+
AnyUrl | None,
|
|
71
|
+
Field(
|
|
72
|
+
description='URL to documentation explaining how this feature is calculated or measured. Helps buyers understand and compare methodologies across vendors.'
|
|
73
|
+
),
|
|
74
|
+
] = None
|
|
75
|
+
range: Annotated[
|
|
76
|
+
Range | None, Field(description='For quantitative features, the valid range')
|
|
77
|
+
] = None
|
|
78
|
+
type: Annotated[
|
|
79
|
+
Type,
|
|
80
|
+
Field(
|
|
81
|
+
description="Data type: 'binary' for yes/no, 'quantitative' for numeric scores, 'categorical' for enum values"
|
|
82
|
+
),
|
|
83
|
+
]
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class Governance(AdCPBaseModel):
|
|
87
|
+
property_features: Annotated[
|
|
88
|
+
list[PropertyFeature] | None,
|
|
89
|
+
Field(
|
|
90
|
+
description='Property features this governance agent can evaluate. Each feature describes a score, rating, or certification the agent can provide for properties.'
|
|
91
|
+
),
|
|
92
|
+
] = None
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class MraidVersion(RootModel[str]):
|
|
96
|
+
root: Annotated[str, Field(pattern='^[0-9]+\\.[0-9]+$')]
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class VastVersion(MraidVersion):
|
|
100
|
+
pass
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class CreativeSpecs(AdCPBaseModel):
|
|
104
|
+
mraid_versions: Annotated[
|
|
105
|
+
list[MraidVersion] | None,
|
|
106
|
+
Field(description='MRAID versions supported for rich media mobile creatives'),
|
|
107
|
+
] = None
|
|
108
|
+
simid: Annotated[bool | None, Field(description='SIMID support for interactive video ads')] = (
|
|
109
|
+
None
|
|
110
|
+
)
|
|
111
|
+
vast_versions: Annotated[
|
|
112
|
+
list[VastVersion] | None, Field(description='VAST versions supported for video creatives')
|
|
113
|
+
] = None
|
|
114
|
+
vpaid: Annotated[bool | None, Field(description='VPAID support for interactive video ads')] = (
|
|
115
|
+
None
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class GeoMetros(AdCPBaseModel):
|
|
120
|
+
eurostat_nuts2: Annotated[
|
|
121
|
+
bool | None, Field(description='Supports Eurostat NUTS Level 2 regions (EU)')
|
|
122
|
+
] = None
|
|
123
|
+
nielsen_dma: Annotated[
|
|
124
|
+
bool | None,
|
|
125
|
+
Field(description="Supports Nielsen DMA codes (US market, e.g., '501' for NYC)"),
|
|
126
|
+
] = None
|
|
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
|
+
|
|
130
|
+
|
|
131
|
+
class GeoPostalAreas(AdCPBaseModel):
|
|
132
|
+
au_postcode: Annotated[
|
|
133
|
+
bool | None, Field(description="Australian postcode, 4 digits (e.g., '2000')")
|
|
134
|
+
] = None
|
|
135
|
+
ca_fsa: Annotated[
|
|
136
|
+
bool | None, Field(description="Canadian Forward Sortation Area (e.g., 'K1A')")
|
|
137
|
+
] = None
|
|
138
|
+
ca_full: Annotated[
|
|
139
|
+
bool | None, Field(description="Canadian full postal code (e.g., 'K1A 0B1')")
|
|
140
|
+
] = None
|
|
141
|
+
de_plz: Annotated[
|
|
142
|
+
bool | None, Field(description="German Postleitzahl, 5 digits (e.g., '10115')")
|
|
143
|
+
] = None
|
|
144
|
+
fr_code_postal: Annotated[
|
|
145
|
+
bool | None, Field(description="French code postal, 5 digits (e.g., '75001')")
|
|
146
|
+
] = None
|
|
147
|
+
gb_full: Annotated[bool | None, Field(description="UK full postcode (e.g., 'SW1A 1AA')")] = None
|
|
148
|
+
gb_outward: Annotated[
|
|
149
|
+
bool | None, Field(description="UK postcode district / outward code (e.g., 'SW1', 'EC1')")
|
|
150
|
+
] = None
|
|
151
|
+
us_zip: Annotated[bool | None, Field(description="US 5-digit ZIP codes (e.g., '10001')")] = None
|
|
152
|
+
us_zip_plus_four: Annotated[
|
|
153
|
+
bool | None, Field(description="US 9-digit ZIP+4 codes (e.g., '10001-1234')")
|
|
154
|
+
] = None
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class Targeting(AdCPBaseModel):
|
|
158
|
+
geo_countries: Annotated[
|
|
159
|
+
bool | None,
|
|
160
|
+
Field(
|
|
161
|
+
description="Supports country-level geo targeting using ISO 3166-1 alpha-2 codes (e.g., 'US', 'GB', 'DE')"
|
|
162
|
+
),
|
|
163
|
+
] = None
|
|
164
|
+
geo_metros: Annotated[
|
|
165
|
+
GeoMetros | None,
|
|
166
|
+
Field(
|
|
167
|
+
description='Metro area targeting support. Specifies which classification systems are supported.'
|
|
168
|
+
),
|
|
169
|
+
] = None
|
|
170
|
+
geo_postal_areas: Annotated[
|
|
171
|
+
GeoPostalAreas | None,
|
|
172
|
+
Field(
|
|
173
|
+
description='Postal area targeting support. Specifies which postal code systems are supported. System names encode country and precision.'
|
|
174
|
+
),
|
|
175
|
+
] = None
|
|
176
|
+
geo_regions: Annotated[
|
|
177
|
+
bool | None,
|
|
178
|
+
Field(
|
|
179
|
+
description="Supports region/state-level geo targeting using ISO 3166-2 subdivision codes (e.g., 'US-NY', 'GB-SCT', 'DE-BY')"
|
|
180
|
+
),
|
|
181
|
+
] = None
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class Execution(AdCPBaseModel):
|
|
185
|
+
axe_integrations: Annotated[
|
|
186
|
+
list[AnyUrl] | None,
|
|
187
|
+
Field(
|
|
188
|
+
description='Agentic ad exchange (AXE) integrations supported. URLs are canonical identifiers for exchanges this seller can execute through.'
|
|
189
|
+
),
|
|
190
|
+
] = None
|
|
191
|
+
creative_specs: Annotated[
|
|
192
|
+
CreativeSpecs | None, Field(description='Creative specification support')
|
|
193
|
+
] = None
|
|
194
|
+
targeting: Annotated[
|
|
195
|
+
Targeting | None,
|
|
196
|
+
Field(
|
|
197
|
+
description='Targeting capabilities. If declared true/supported, buyer can use these targeting parameters and seller MUST honor them.'
|
|
198
|
+
),
|
|
199
|
+
] = None
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class PrimaryCountry(RootModel[str]):
|
|
203
|
+
root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class PublisherDomain(RootModel[str]):
|
|
207
|
+
root: Annotated[
|
|
208
|
+
str, Field(pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$')
|
|
209
|
+
]
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class Portfolio(AdCPBaseModel):
|
|
213
|
+
advertising_policies: Annotated[
|
|
214
|
+
str | None,
|
|
215
|
+
Field(
|
|
216
|
+
description='Advertising content policies, restrictions, and guidelines',
|
|
217
|
+
max_length=10000,
|
|
218
|
+
),
|
|
219
|
+
] = None
|
|
220
|
+
description: Annotated[
|
|
221
|
+
str | None,
|
|
222
|
+
Field(
|
|
223
|
+
description='Markdown-formatted description of the inventory portfolio', max_length=5000
|
|
224
|
+
),
|
|
225
|
+
] = None
|
|
226
|
+
primary_channels: Annotated[
|
|
227
|
+
list[channels.MediaChannel] | None,
|
|
228
|
+
Field(description='Primary advertising channels in this portfolio'),
|
|
229
|
+
] = None
|
|
230
|
+
primary_countries: Annotated[
|
|
231
|
+
list[PrimaryCountry] | None,
|
|
232
|
+
Field(description='Primary countries (ISO 3166-1 alpha-2) where inventory is concentrated'),
|
|
233
|
+
] = None
|
|
234
|
+
publisher_domains: Annotated[
|
|
235
|
+
list[PublisherDomain],
|
|
236
|
+
Field(
|
|
237
|
+
description="Publisher domains this seller is authorized to represent. Buyers should fetch each publisher's adagents.json for property definitions.",
|
|
238
|
+
min_length=1,
|
|
239
|
+
),
|
|
240
|
+
]
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class Signals(AdCPBaseModel):
|
|
244
|
+
features: Annotated[
|
|
245
|
+
dict[str, bool] | None, Field(description='Optional signals features supported')
|
|
246
|
+
] = None
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class Preferred(Enum):
|
|
250
|
+
mcp = 'mcp'
|
|
251
|
+
a2a = 'a2a'
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
class Transport(AdCPBaseModel):
|
|
255
|
+
model_config = ConfigDict(
|
|
256
|
+
extra='allow',
|
|
257
|
+
)
|
|
258
|
+
type: Annotated[Preferred, Field(description='Protocol transport type')]
|
|
259
|
+
url: Annotated[AnyUrl, Field(description='Agent endpoint URL for this transport')]
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class Endpoint(AdCPBaseModel):
|
|
263
|
+
preferred: Annotated[
|
|
264
|
+
Preferred | None, Field(description='Preferred transport when host supports multiple')
|
|
265
|
+
] = None
|
|
266
|
+
transports: Annotated[
|
|
267
|
+
list[Transport],
|
|
268
|
+
Field(
|
|
269
|
+
description='Available protocol transports. Hosts select based on their capabilities.',
|
|
270
|
+
min_length=1,
|
|
271
|
+
),
|
|
272
|
+
]
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
class SupportedProtocol(Enum):
|
|
276
|
+
media_buy = 'media_buy'
|
|
277
|
+
signals = 'signals'
|
|
278
|
+
governance = 'governance'
|
|
279
|
+
sponsored_intelligence = 'sponsored_intelligence'
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
class MediaBuy(AdCPBaseModel):
|
|
283
|
+
execution: Annotated[
|
|
284
|
+
Execution | None, Field(description='Technical execution capabilities for media buying')
|
|
285
|
+
] = None
|
|
286
|
+
features: media_buy_features.MediaBuyFeatures | None = None
|
|
287
|
+
portfolio: Annotated[
|
|
288
|
+
Portfolio | None,
|
|
289
|
+
Field(description="Information about the seller's media inventory portfolio"),
|
|
290
|
+
] = None
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
class SponsoredIntelligence(AdCPBaseModel):
|
|
294
|
+
brand_manifest_url: Annotated[
|
|
295
|
+
AnyUrl | None, Field(description='URL to brand manifest with colors, fonts, logos, tone')
|
|
296
|
+
] = None
|
|
297
|
+
capabilities: Annotated[
|
|
298
|
+
si_capabilities.SiCapabilities,
|
|
299
|
+
Field(description='Modalities, components, and commerce capabilities'),
|
|
300
|
+
]
|
|
301
|
+
endpoint: Annotated[Endpoint, Field(description='SI agent endpoint configuration')]
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
class GetAdcpCapabilitiesResponse(AdCPBaseModel):
|
|
305
|
+
model_config = ConfigDict(
|
|
306
|
+
extra='allow',
|
|
307
|
+
)
|
|
308
|
+
adcp: Annotated[Adcp, Field(description='Core AdCP protocol information')]
|
|
309
|
+
context: context_1.ContextObject | None = None
|
|
310
|
+
errors: Annotated[
|
|
311
|
+
list[error.Error] | None, Field(description='Task-specific errors and warnings')
|
|
312
|
+
] = None
|
|
313
|
+
ext: ext_1.ExtensionObject | None = None
|
|
314
|
+
extensions_supported: Annotated[
|
|
315
|
+
list[ExtensionsSupportedItem] | None,
|
|
316
|
+
Field(
|
|
317
|
+
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
|
+
] = None
|
|
320
|
+
governance: Annotated[
|
|
321
|
+
Governance | None,
|
|
322
|
+
Field(
|
|
323
|
+
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
|
+
] = None
|
|
326
|
+
last_updated: Annotated[
|
|
327
|
+
AwareDatetime | None,
|
|
328
|
+
Field(
|
|
329
|
+
description='ISO 8601 timestamp of when capabilities were last updated. Buyers can use this for cache invalidation.'
|
|
330
|
+
),
|
|
331
|
+
] = None
|
|
332
|
+
media_buy: Annotated[
|
|
333
|
+
MediaBuy | None,
|
|
334
|
+
Field(
|
|
335
|
+
description='Media-buy protocol capabilities. Only present if media_buy is in supported_protocols.'
|
|
336
|
+
),
|
|
337
|
+
] = None
|
|
338
|
+
signals: Annotated[
|
|
339
|
+
Signals | None,
|
|
340
|
+
Field(
|
|
341
|
+
description='Signals protocol capabilities. Only present if signals is in supported_protocols. Reserved for future use.'
|
|
342
|
+
),
|
|
343
|
+
] = None
|
|
344
|
+
sponsored_intelligence: Annotated[
|
|
345
|
+
SponsoredIntelligence | None,
|
|
346
|
+
Field(
|
|
347
|
+
description='Sponsored Intelligence protocol capabilities. Only present if sponsored_intelligence is in supported_protocols. SI agents handle conversational brand experiences.'
|
|
348
|
+
),
|
|
349
|
+
] = None
|
|
350
|
+
supported_protocols: Annotated[
|
|
351
|
+
list[SupportedProtocol],
|
|
352
|
+
Field(description='Which AdCP domain protocols this seller supports', min_length=1),
|
|
353
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: protocols/adcp_extension.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -12,42 +12,39 @@ from pydantic import ConfigDict, Field, RootModel
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ExtensionsSupportedItem(RootModel[str]):
|
|
15
|
-
root: Annotated[
|
|
16
|
-
str,
|
|
17
|
-
Field(
|
|
18
|
-
description="Extension namespace (e.g., 'sustainability'). Must be lowercase alphanumeric with underscores.",
|
|
19
|
-
pattern="^[a-z][a-z0-9_]*$",
|
|
20
|
-
),
|
|
21
|
-
]
|
|
15
|
+
root: Annotated[str, Field(pattern='^[a-z][a-z0-9_]*$')]
|
|
22
16
|
|
|
23
17
|
|
|
24
18
|
class ProtocolsSupportedEnum(Enum):
|
|
25
|
-
media_buy =
|
|
26
|
-
creative =
|
|
27
|
-
signals =
|
|
19
|
+
media_buy = 'media_buy'
|
|
20
|
+
creative = 'creative'
|
|
21
|
+
signals = 'signals'
|
|
28
22
|
|
|
29
23
|
|
|
30
|
-
class
|
|
24
|
+
class AdcpAgentCardExtensionParamsDeprecated(AdCPBaseModel):
|
|
31
25
|
model_config = ConfigDict(
|
|
32
|
-
extra=
|
|
26
|
+
extra='allow',
|
|
33
27
|
)
|
|
34
28
|
adcp_version: Annotated[
|
|
35
29
|
str,
|
|
36
30
|
Field(
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
deprecated=True,
|
|
32
|
+
description='DEPRECATED: Use get_adcp_capabilities response adcp.major_versions instead.',
|
|
33
|
+
pattern='^\\d+\\.\\d+\\.\\d+$',
|
|
39
34
|
),
|
|
40
35
|
]
|
|
41
36
|
extensions_supported: Annotated[
|
|
42
37
|
list[ExtensionsSupportedItem] | None,
|
|
43
38
|
Field(
|
|
44
|
-
|
|
39
|
+
deprecated=True,
|
|
40
|
+
description='DEPRECATED: Typed extensions can be declared in get_adcp_capabilities ext field.',
|
|
45
41
|
),
|
|
46
42
|
] = None
|
|
47
43
|
protocols_supported: Annotated[
|
|
48
44
|
list[ProtocolsSupportedEnum],
|
|
49
45
|
Field(
|
|
50
|
-
|
|
46
|
+
deprecated=True,
|
|
47
|
+
description='DEPRECATED: Use get_adcp_capabilities response supported_protocols instead.',
|
|
51
48
|
min_length=1,
|
|
52
49
|
),
|
|
53
50
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: signals/activate_signal_request.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: signals/activate_signal_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
|
|
|
@@ -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
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: signals/get_signals_request.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: signals/get_signals_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
|
|
|
@@ -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')]
|