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,20 +15,20 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class GetPropertyListRequest(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
|
-
cursor: Annotated[str | None, Field(description=
|
|
21
|
+
cursor: Annotated[str | None, Field(description="Pagination cursor for large result sets")] = (
|
|
22
22
|
None
|
|
23
23
|
)
|
|
24
24
|
ext: ext_1.ExtensionObject | None = None
|
|
25
|
-
list_id: Annotated[str, Field(description=
|
|
25
|
+
list_id: Annotated[str, Field(description="ID of the property list to retrieve")]
|
|
26
26
|
max_results: Annotated[
|
|
27
|
-
int | None, Field(description=
|
|
27
|
+
int | None, Field(description="Maximum identifiers to return (for large lists)", ge=1)
|
|
28
28
|
] = None
|
|
29
29
|
resolve: Annotated[
|
|
30
30
|
bool | None,
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description="Whether to apply filters and return resolved identifiers (default: true)"
|
|
33
33
|
),
|
|
34
34
|
] = True
|
|
@@ -16,20 +16,20 @@ from . import property_list
|
|
|
16
16
|
|
|
17
17
|
class Pagination(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="forbid",
|
|
20
20
|
)
|
|
21
|
-
cursor: Annotated[str | None, Field(description=
|
|
22
|
-
has_more: Annotated[bool | None, Field(description=
|
|
21
|
+
cursor: Annotated[str | None, Field(description="Cursor for next page")] = None
|
|
22
|
+
has_more: Annotated[bool | None, Field(description="Whether more results are available")] = None
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class GetPropertyListResponse(AdCPBaseModel):
|
|
26
26
|
model_config = ConfigDict(
|
|
27
|
-
extra=
|
|
27
|
+
extra="forbid",
|
|
28
28
|
)
|
|
29
29
|
cache_valid_until: Annotated[
|
|
30
30
|
AwareDatetime | None,
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description="Cache expiration timestamp. Re-fetch the list after this time to get updated identifiers."
|
|
33
33
|
),
|
|
34
34
|
] = None
|
|
35
35
|
coverage_gaps: Annotated[
|
|
@@ -42,20 +42,20 @@ class GetPropertyListResponse(AdCPBaseModel):
|
|
|
42
42
|
identifiers: Annotated[
|
|
43
43
|
list[identifier.Identifier] | None,
|
|
44
44
|
Field(
|
|
45
|
-
description=
|
|
45
|
+
description="Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use."
|
|
46
46
|
),
|
|
47
47
|
] = None
|
|
48
48
|
list: Annotated[
|
|
49
49
|
property_list.PropertyList,
|
|
50
|
-
Field(description=
|
|
50
|
+
Field(description="The property list metadata (always returned)"),
|
|
51
51
|
]
|
|
52
|
-
pagination: Annotated[Pagination | None, Field(description=
|
|
52
|
+
pagination: Annotated[Pagination | None, Field(description="Pagination information")] = None
|
|
53
53
|
resolved_at: Annotated[
|
|
54
|
-
AwareDatetime | None, Field(description=
|
|
54
|
+
AwareDatetime | None, Field(description="When the list was resolved")
|
|
55
55
|
] = None
|
|
56
56
|
returned_count: Annotated[
|
|
57
|
-
int | None, Field(description=
|
|
57
|
+
int | None, Field(description="Number of identifiers returned in this response")
|
|
58
58
|
] = None
|
|
59
59
|
total_count: Annotated[
|
|
60
|
-
int | None, Field(description=
|
|
60
|
+
int | None, Field(description="Total number of identifiers in resolved list")
|
|
61
61
|
] = None
|
|
@@ -15,15 +15,15 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class ListPropertyListsRequest(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
|
-
cursor: Annotated[str | None, Field(description=
|
|
21
|
+
cursor: Annotated[str | None, Field(description="Pagination cursor")] = None
|
|
22
22
|
ext: ext_1.ExtensionObject | None = None
|
|
23
|
-
max_results: Annotated[int | None, Field(description=
|
|
23
|
+
max_results: Annotated[int | None, Field(description="Maximum lists to return", ge=1)] = 100
|
|
24
24
|
name_contains: Annotated[
|
|
25
|
-
str | None, Field(description=
|
|
25
|
+
str | None, Field(description="Filter to lists whose name contains this string")
|
|
26
26
|
] = None
|
|
27
27
|
principal: Annotated[
|
|
28
|
-
str | None, Field(description=
|
|
28
|
+
str | None, Field(description="Filter to lists owned by this principal")
|
|
29
29
|
] = None
|
|
@@ -15,25 +15,25 @@ from . import property_list
|
|
|
15
15
|
|
|
16
16
|
class Pagination(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
|
-
cursor: Annotated[str | None, Field(description=
|
|
21
|
-
has_more: Annotated[bool | None, Field(description=
|
|
20
|
+
cursor: Annotated[str | None, Field(description="Cursor for next page")] = None
|
|
21
|
+
has_more: Annotated[bool | None, Field(description="Whether more results are available")] = None
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class ListPropertyListsResponse(AdCPBaseModel):
|
|
25
25
|
model_config = ConfigDict(
|
|
26
|
-
extra=
|
|
26
|
+
extra="forbid",
|
|
27
27
|
)
|
|
28
28
|
ext: ext_1.ExtensionObject | None = None
|
|
29
29
|
lists: Annotated[
|
|
30
30
|
list[property_list.PropertyList],
|
|
31
|
-
Field(description=
|
|
31
|
+
Field(description="Array of property lists (metadata only, not resolved properties)"),
|
|
32
32
|
]
|
|
33
|
-
pagination: Annotated[Pagination | None, Field(description=
|
|
33
|
+
pagination: Annotated[Pagination | None, Field(description="Pagination information")] = None
|
|
34
34
|
returned_count: Annotated[
|
|
35
|
-
int | None, Field(description=
|
|
35
|
+
int | None, Field(description="Number of lists returned in this response")
|
|
36
36
|
] = None
|
|
37
37
|
total_count: Annotated[
|
|
38
|
-
int | None, Field(description=
|
|
38
|
+
int | None, Field(description="Total number of lists matching criteria")
|
|
39
39
|
] = None
|
|
@@ -14,20 +14,20 @@ from ..core import property as property_1
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Code(Enum):
|
|
17
|
-
PROPERTY_NOT_FOUND =
|
|
18
|
-
PROPERTY_NOT_MONITORED =
|
|
19
|
-
LIST_NOT_FOUND =
|
|
20
|
-
LIST_ACCESS_DENIED =
|
|
21
|
-
METHODOLOGY_NOT_SUPPORTED =
|
|
22
|
-
JURISDICTION_NOT_SUPPORTED =
|
|
17
|
+
PROPERTY_NOT_FOUND = "PROPERTY_NOT_FOUND"
|
|
18
|
+
PROPERTY_NOT_MONITORED = "PROPERTY_NOT_MONITORED"
|
|
19
|
+
LIST_NOT_FOUND = "LIST_NOT_FOUND"
|
|
20
|
+
LIST_ACCESS_DENIED = "LIST_ACCESS_DENIED"
|
|
21
|
+
METHODOLOGY_NOT_SUPPORTED = "METHODOLOGY_NOT_SUPPORTED"
|
|
22
|
+
JURISDICTION_NOT_SUPPORTED = "JURISDICTION_NOT_SUPPORTED"
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
class PropertyError(AdCPBaseModel):
|
|
26
26
|
model_config = ConfigDict(
|
|
27
|
-
extra=
|
|
27
|
+
extra="forbid",
|
|
28
28
|
)
|
|
29
|
-
code: Annotated[Code, Field(description=
|
|
30
|
-
message: Annotated[str, Field(description=
|
|
29
|
+
code: Annotated[Code, Field(description="Error code")]
|
|
30
|
+
message: Annotated[str, Field(description="Human-readable error message")]
|
|
31
31
|
property: Annotated[
|
|
32
|
-
property_1.Property | None, Field(description=
|
|
32
|
+
property_1.Property | None, Field(description="The property that caused the error")
|
|
33
33
|
] = None
|
|
@@ -12,11 +12,11 @@ from pydantic import ConfigDict, Field
|
|
|
12
12
|
|
|
13
13
|
class PropertyFeature(AdCPBaseModel):
|
|
14
14
|
model_config = ConfigDict(
|
|
15
|
-
extra=
|
|
15
|
+
extra="forbid",
|
|
16
16
|
)
|
|
17
|
-
feature_id: Annotated[str, Field(description=
|
|
17
|
+
feature_id: Annotated[str, Field(description="Identifier for the feature being assessed")]
|
|
18
18
|
source: Annotated[
|
|
19
19
|
str | None,
|
|
20
|
-
Field(description=
|
|
20
|
+
Field(description="Source of the feature data (e.g., app_store_privacy_label, tcf_string)"),
|
|
21
21
|
] = None
|
|
22
|
-
value: Annotated[str, Field(description=
|
|
22
|
+
value: Annotated[str, Field(description="The feature value")]
|
|
@@ -15,42 +15,42 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class Coverage(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
countries: Annotated[
|
|
21
|
-
list[str] | None, Field(description=
|
|
21
|
+
list[str] | None, Field(description="Countries where this feature is available")
|
|
22
22
|
] = None
|
|
23
23
|
property_types: Annotated[
|
|
24
|
-
list[str] | None, Field(description=
|
|
24
|
+
list[str] | None, Field(description="Property types this feature applies to")
|
|
25
25
|
] = None
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class Range(AdCPBaseModel):
|
|
29
29
|
model_config = ConfigDict(
|
|
30
|
-
extra=
|
|
30
|
+
extra="forbid",
|
|
31
31
|
)
|
|
32
|
-
max: Annotated[float, Field(description=
|
|
33
|
-
min: Annotated[float, Field(description=
|
|
32
|
+
max: Annotated[float, Field(description="Maximum value")]
|
|
33
|
+
min: Annotated[float, Field(description="Minimum value")]
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class Type(Enum):
|
|
37
|
-
binary =
|
|
38
|
-
quantitative =
|
|
39
|
-
categorical =
|
|
37
|
+
binary = "binary"
|
|
38
|
+
quantitative = "quantitative"
|
|
39
|
+
categorical = "categorical"
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class PropertyFeatureDefinition(AdCPBaseModel):
|
|
43
43
|
model_config = ConfigDict(
|
|
44
|
-
extra=
|
|
44
|
+
extra="forbid",
|
|
45
45
|
)
|
|
46
46
|
allowed_values: Annotated[
|
|
47
|
-
list[str] | None, Field(description=
|
|
47
|
+
list[str] | None, Field(description="For categorical features, the set of valid values")
|
|
48
48
|
] = None
|
|
49
49
|
coverage: Annotated[
|
|
50
|
-
Coverage | None, Field(description=
|
|
50
|
+
Coverage | None, Field(description="What this feature covers (empty arrays = all)")
|
|
51
51
|
] = None
|
|
52
52
|
description: Annotated[
|
|
53
|
-
str | None, Field(description=
|
|
53
|
+
str | None, Field(description="Description of what this feature measures or represents")
|
|
54
54
|
] = None
|
|
55
55
|
ext: ext_1.ExtensionObject | None = None
|
|
56
56
|
feature_id: Annotated[
|
|
@@ -62,19 +62,19 @@ class PropertyFeatureDefinition(AdCPBaseModel):
|
|
|
62
62
|
methodology_url: Annotated[
|
|
63
63
|
AnyUrl,
|
|
64
64
|
Field(
|
|
65
|
-
description=
|
|
65
|
+
description="URL to documentation explaining how this feature is calculated/measured"
|
|
66
66
|
),
|
|
67
67
|
]
|
|
68
68
|
methodology_version: Annotated[
|
|
69
|
-
str | None, Field(description=
|
|
69
|
+
str | None, Field(description="Version identifier for the methodology (for audit trails)")
|
|
70
70
|
] = None
|
|
71
|
-
name: Annotated[str, Field(description=
|
|
71
|
+
name: Annotated[str, Field(description="Human-readable name for the feature")]
|
|
72
72
|
range: Annotated[
|
|
73
|
-
Range | None, Field(description=
|
|
73
|
+
Range | None, Field(description="For quantitative features, the valid range of values")
|
|
74
74
|
] = None
|
|
75
75
|
type: Annotated[
|
|
76
76
|
Type,
|
|
77
77
|
Field(
|
|
78
|
-
description=
|
|
78
|
+
description="The type of values this feature produces: binary (true/false), quantitative (numeric range), categorical (enumerated values)"
|
|
79
79
|
),
|
|
80
80
|
]
|
|
@@ -15,7 +15,7 @@ from . import base_property_source, property_list_filters
|
|
|
15
15
|
|
|
16
16
|
class PropertyList(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
base_properties: Annotated[
|
|
21
21
|
list[base_property_source.BasePropertySource] | None,
|
|
@@ -25,16 +25,16 @@ class PropertyList(AdCPBaseModel):
|
|
|
25
25
|
] = None
|
|
26
26
|
brand_manifest: Annotated[
|
|
27
27
|
brand_manifest_1.BrandManifest | None,
|
|
28
|
-
Field(description=
|
|
28
|
+
Field(description="Brand identity used to automatically apply appropriate rules"),
|
|
29
29
|
] = None
|
|
30
30
|
cache_duration_hours: Annotated[
|
|
31
31
|
int | None,
|
|
32
32
|
Field(
|
|
33
|
-
description=
|
|
33
|
+
description="Recommended cache duration for resolved list. Consumers should re-fetch after this period.",
|
|
34
34
|
ge=1,
|
|
35
35
|
),
|
|
36
36
|
] = 24
|
|
37
|
-
created_at: Annotated[AwareDatetime | None, Field(description=
|
|
37
|
+
created_at: Annotated[AwareDatetime | None, Field(description="When the list was created")] = (
|
|
38
38
|
None
|
|
39
39
|
)
|
|
40
40
|
description: Annotated[str | None, Field(description="Description of the list's purpose")] = (
|
|
@@ -42,21 +42,21 @@ class PropertyList(AdCPBaseModel):
|
|
|
42
42
|
)
|
|
43
43
|
filters: Annotated[
|
|
44
44
|
property_list_filters.PropertyListFilters | None,
|
|
45
|
-
Field(description=
|
|
45
|
+
Field(description="Dynamic filters applied when resolving the list"),
|
|
46
46
|
] = None
|
|
47
|
-
list_id: Annotated[str, Field(description=
|
|
48
|
-
name: Annotated[str, Field(description=
|
|
47
|
+
list_id: Annotated[str, Field(description="Unique identifier for this property list")]
|
|
48
|
+
name: Annotated[str, Field(description="Human-readable name for the list")]
|
|
49
49
|
principal: Annotated[
|
|
50
|
-
str | None, Field(description=
|
|
50
|
+
str | None, Field(description="Principal identity that owns this list")
|
|
51
51
|
] = None
|
|
52
52
|
property_count: Annotated[
|
|
53
53
|
int | None,
|
|
54
|
-
Field(description=
|
|
54
|
+
Field(description="Number of properties in the resolved list (at time of last resolution)"),
|
|
55
55
|
] = None
|
|
56
56
|
updated_at: Annotated[
|
|
57
|
-
AwareDatetime | None, Field(description=
|
|
57
|
+
AwareDatetime | None, Field(description="When the list was last modified")
|
|
58
58
|
] = None
|
|
59
59
|
webhook_url: Annotated[
|
|
60
60
|
AnyUrl | None,
|
|
61
|
-
Field(description=
|
|
61
|
+
Field(description="URL to receive notifications when the resolved list changes"),
|
|
62
62
|
] = None
|
|
@@ -14,35 +14,35 @@ from ..core import ext as ext_1
|
|
|
14
14
|
|
|
15
15
|
class ChangeSummary(AdCPBaseModel):
|
|
16
16
|
model_config = ConfigDict(
|
|
17
|
-
extra=
|
|
17
|
+
extra="forbid",
|
|
18
18
|
)
|
|
19
19
|
properties_added: Annotated[
|
|
20
|
-
int | None, Field(description=
|
|
20
|
+
int | None, Field(description="Number of properties added since last resolution")
|
|
21
21
|
] = None
|
|
22
22
|
properties_removed: Annotated[
|
|
23
|
-
int | None, Field(description=
|
|
23
|
+
int | None, Field(description="Number of properties removed since last resolution")
|
|
24
24
|
] = None
|
|
25
25
|
total_properties: Annotated[
|
|
26
|
-
int | None, Field(description=
|
|
26
|
+
int | None, Field(description="Total properties in the resolved list")
|
|
27
27
|
] = None
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class PropertyListChangedWebhook(AdCPBaseModel):
|
|
31
31
|
model_config = ConfigDict(
|
|
32
|
-
extra=
|
|
32
|
+
extra="forbid",
|
|
33
33
|
)
|
|
34
34
|
cache_valid_until: Annotated[
|
|
35
35
|
AwareDatetime | None,
|
|
36
|
-
Field(description=
|
|
36
|
+
Field(description="When the consumer should refresh from the governance agent"),
|
|
37
37
|
] = None
|
|
38
38
|
change_summary: Annotated[
|
|
39
|
-
ChangeSummary | None, Field(description=
|
|
39
|
+
ChangeSummary | None, Field(description="Summary of changes to the resolved list")
|
|
40
40
|
] = None
|
|
41
|
-
event: Annotated[Literal[
|
|
41
|
+
event: Annotated[Literal["property_list_changed"], Field(description="The event type")]
|
|
42
42
|
ext: ext_1.ExtensionObject | None = None
|
|
43
|
-
list_id: Annotated[str, Field(description=
|
|
44
|
-
list_name: Annotated[str | None, Field(description=
|
|
45
|
-
resolved_at: Annotated[AwareDatetime, Field(description=
|
|
43
|
+
list_id: Annotated[str, Field(description="ID of the property list that changed")]
|
|
44
|
+
list_name: Annotated[str | None, Field(description="Name of the property list")] = None
|
|
45
|
+
resolved_at: Annotated[AwareDatetime, Field(description="When the list was re-resolved")]
|
|
46
46
|
signature: Annotated[
|
|
47
47
|
str,
|
|
48
48
|
Field(
|
|
@@ -15,33 +15,33 @@ from . import feature_requirement
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class CountriesAllItem(RootModel[str]):
|
|
18
|
-
root: Annotated[str, Field(pattern=
|
|
18
|
+
root: Annotated[str, Field(pattern="^[A-Z]{2}$")]
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class PropertyListFilters(AdCPBaseModel):
|
|
22
22
|
model_config = ConfigDict(
|
|
23
|
-
extra=
|
|
23
|
+
extra="forbid",
|
|
24
24
|
)
|
|
25
25
|
channels_any: Annotated[
|
|
26
26
|
list[channels.MediaChannel],
|
|
27
|
-
Field(description=
|
|
27
|
+
Field(description="Property must support ANY of the listed channels. Required."),
|
|
28
28
|
]
|
|
29
29
|
countries_all: Annotated[
|
|
30
30
|
list[CountriesAllItem],
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description="Property must have feature data for ALL listed countries (ISO codes). Required."
|
|
33
33
|
),
|
|
34
34
|
]
|
|
35
35
|
exclude_identifiers: Annotated[
|
|
36
36
|
list[identifier.Identifier] | None,
|
|
37
|
-
Field(description=
|
|
37
|
+
Field(description="Identifiers to always exclude from results"),
|
|
38
38
|
] = None
|
|
39
39
|
feature_requirements: Annotated[
|
|
40
40
|
list[feature_requirement.FeatureRequirement] | None,
|
|
41
41
|
Field(
|
|
42
|
-
description=
|
|
42
|
+
description="Feature-based requirements. Property must pass ALL requirements (AND logic)."
|
|
43
43
|
),
|
|
44
44
|
] = None
|
|
45
45
|
property_types: Annotated[
|
|
46
|
-
list[property_type.PropertyType] | None, Field(description=
|
|
46
|
+
list[property_type.PropertyType] | None, Field(description="Filter to these property types")
|
|
47
47
|
] = None
|
|
@@ -17,30 +17,30 @@ from . import base_property_source, property_list_filters
|
|
|
17
17
|
|
|
18
18
|
class UpdatePropertyListRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="forbid",
|
|
21
21
|
)
|
|
22
22
|
base_properties: Annotated[
|
|
23
23
|
list[base_property_source.BasePropertySource] | None,
|
|
24
24
|
Field(
|
|
25
|
-
description=
|
|
25
|
+
description="Complete replacement for the base properties list (not a patch). Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers)."
|
|
26
26
|
),
|
|
27
27
|
] = None
|
|
28
28
|
brand_manifest: Annotated[
|
|
29
29
|
brand_manifest_1.BrandManifest | None,
|
|
30
|
-
Field(description=
|
|
30
|
+
Field(description="Update brand identity and requirements"),
|
|
31
31
|
] = None
|
|
32
32
|
context: context_1.ContextObject | None = None
|
|
33
|
-
description: Annotated[str | None, Field(description=
|
|
33
|
+
description: Annotated[str | None, Field(description="New description")] = None
|
|
34
34
|
ext: ext_1.ExtensionObject | None = None
|
|
35
35
|
filters: Annotated[
|
|
36
36
|
property_list_filters.PropertyListFilters | None,
|
|
37
|
-
Field(description=
|
|
37
|
+
Field(description="Complete replacement for the filters (not a patch)"),
|
|
38
38
|
] = None
|
|
39
|
-
list_id: Annotated[str, Field(description=
|
|
40
|
-
name: Annotated[str | None, Field(description=
|
|
39
|
+
list_id: Annotated[str, Field(description="ID of the property list to update")]
|
|
40
|
+
name: Annotated[str | None, Field(description="New name for the list")] = None
|
|
41
41
|
webhook_url: Annotated[
|
|
42
42
|
AnyUrl | None,
|
|
43
43
|
Field(
|
|
44
|
-
description=
|
|
44
|
+
description="Update the webhook URL for list change notifications (set to empty string to remove)"
|
|
45
45
|
),
|
|
46
46
|
] = None
|
|
@@ -15,7 +15,7 @@ from . import property_list
|
|
|
15
15
|
|
|
16
16
|
class UpdatePropertyListResponse(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
ext: ext_1.ExtensionObject | None = None
|
|
21
|
-
list: Annotated[property_list.PropertyList, Field(description=
|
|
21
|
+
list: Annotated[property_list.PropertyList, Field(description="The updated property list")]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: protocol/get_adcp_capabilities_request.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -15,20 +15,22 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Protocol(Enum):
|
|
18
|
-
media_buy =
|
|
19
|
-
signals =
|
|
20
|
-
|
|
18
|
+
media_buy = "media_buy"
|
|
19
|
+
signals = "signals"
|
|
20
|
+
governance = "governance"
|
|
21
|
+
sponsored_intelligence = "sponsored_intelligence"
|
|
22
|
+
creative = "creative"
|
|
21
23
|
|
|
22
24
|
|
|
23
25
|
class GetAdcpCapabilitiesRequest(AdCPBaseModel):
|
|
24
26
|
model_config = ConfigDict(
|
|
25
|
-
extra=
|
|
27
|
+
extra="allow",
|
|
26
28
|
)
|
|
27
29
|
context: context_1.ContextObject | None = None
|
|
28
30
|
ext: ext_1.ExtensionObject | None = None
|
|
29
31
|
protocols: Annotated[
|
|
30
32
|
list[Protocol] | None,
|
|
31
33
|
Field(
|
|
32
|
-
description=
|
|
34
|
+
description="Specific protocols to query capabilities for. If omitted, returns capabilities for all supported protocols."
|
|
33
35
|
),
|
|
34
36
|
] = None
|