adcp 2.19.0__py3-none-any.whl → 3.1.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 +14 -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 +115 -23
- adcp/types/_ergonomic.py +35 -14
- adcp/types/_generated.py +346 -52
- adcp/types/aliases.py +68 -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.1.0.dist-info}/METADATA +1 -1
- adcp-3.1.0.dist-info/RECORD +264 -0
- {adcp-2.19.0.dist-info → adcp-3.1.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.1.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.19.0.dist-info → adcp-3.1.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.19.0.dist-info → adcp-3.1.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/list_property_lists_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
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/list_property_lists_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
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_error.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_feature.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,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')]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_feature_definition.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_list.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_list_changed_webhook.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/property_list_filters.json
|
|
3
|
-
# timestamp: 2026-01-
|
|
3
|
+
# timestamp: 2026-01-25T21:17:54+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
-
list[channels.
|
|
27
|
-
Field(description=
|
|
26
|
+
list[channels.MediaChannel],
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/update_property_list_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
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/update_property_list_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
|
|
|
@@ -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')]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: protocol/get_adcp_capabilities_request.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 ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
from ..core import context as context_1
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Protocol(Enum):
|
|
18
|
+
media_buy = 'media_buy'
|
|
19
|
+
signals = 'signals'
|
|
20
|
+
sponsored_intelligence = 'sponsored_intelligence'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class GetAdcpCapabilitiesRequest(AdCPBaseModel):
|
|
24
|
+
model_config = ConfigDict(
|
|
25
|
+
extra='allow',
|
|
26
|
+
)
|
|
27
|
+
context: context_1.ContextObject | None = None
|
|
28
|
+
ext: ext_1.ExtensionObject | None = None
|
|
29
|
+
protocols: Annotated[
|
|
30
|
+
list[Protocol] | None,
|
|
31
|
+
Field(
|
|
32
|
+
description='Specific protocols to query capabilities for. If omitted, returns capabilities for all supported protocols.'
|
|
33
|
+
),
|
|
34
|
+
] = None
|