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: media_buy/get_products_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,16 +17,19 @@ from ..core import product_filters, property_list_ref
|
|
|
17
17
|
|
|
18
18
|
class GetProductsRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra='allow',
|
|
21
21
|
)
|
|
22
22
|
brand_manifest: Annotated[
|
|
23
23
|
brand_manifest_ref.BrandManifestReference | None,
|
|
24
24
|
Field(
|
|
25
|
-
description=
|
|
25
|
+
description='Brand information manifest providing brand context, assets, and product catalog. Can be provided inline or as a URL reference to a hosted manifest.'
|
|
26
26
|
),
|
|
27
27
|
] = None
|
|
28
28
|
brief: Annotated[
|
|
29
|
-
str | None,
|
|
29
|
+
str | None,
|
|
30
|
+
Field(
|
|
31
|
+
description="Natural language description of campaign requirements. When refining a proposal, can include instructions like 'focus more on German speakers' or 'increase mobile allocation'."
|
|
32
|
+
),
|
|
30
33
|
] = None
|
|
31
34
|
context: context_1.ContextObject | None = None
|
|
32
35
|
ext: ext_1.ExtensionObject | None = None
|
|
@@ -34,6 +37,12 @@ class GetProductsRequest(AdCPBaseModel):
|
|
|
34
37
|
property_list: Annotated[
|
|
35
38
|
property_list_ref.PropertyListReference | None,
|
|
36
39
|
Field(
|
|
37
|
-
description=
|
|
40
|
+
description='[AdCP 3.0] Reference to an externally managed property list. When provided, the sales agent should filter products to only those available on properties in the list.'
|
|
41
|
+
),
|
|
42
|
+
] = None
|
|
43
|
+
proposal_id: Annotated[
|
|
44
|
+
str | None,
|
|
45
|
+
Field(
|
|
46
|
+
description='Optional proposal ID to refine. When provided with a brief, the publisher will use the brief as refinement instructions for the specified proposal and return an updated version.'
|
|
38
47
|
),
|
|
39
48
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/get_products_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
|
|
|
@@ -12,23 +12,29 @@ from pydantic import ConfigDict, Field
|
|
|
12
12
|
from ..core import context as context_1
|
|
13
13
|
from ..core import error
|
|
14
14
|
from ..core import ext as ext_1
|
|
15
|
-
from ..core import product
|
|
15
|
+
from ..core import product, proposal
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class GetProductsResponse(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra='allow',
|
|
21
21
|
)
|
|
22
22
|
context: context_1.ContextObject | None = None
|
|
23
23
|
errors: Annotated[
|
|
24
24
|
list[error.Error] | None,
|
|
25
|
-
Field(description=
|
|
25
|
+
Field(description='Task-specific errors and warnings (e.g., product filtering issues)'),
|
|
26
26
|
] = None
|
|
27
27
|
ext: ext_1.ExtensionObject | None = None
|
|
28
|
-
products: Annotated[list[product.Product], Field(description=
|
|
28
|
+
products: Annotated[list[product.Product], Field(description='Array of matching products')]
|
|
29
29
|
property_list_applied: Annotated[
|
|
30
30
|
bool | None,
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description='[AdCP 3.0] Indicates whether property_list filtering was applied. True if the agent filtered products based on the provided property_list. Absent or false if property_list was not provided or not supported by this agent.'
|
|
33
|
+
),
|
|
34
|
+
] = None
|
|
35
|
+
proposals: Annotated[
|
|
36
|
+
list[proposal.Proposal] | None,
|
|
37
|
+
Field(
|
|
38
|
+
description='Optional array of proposed media plans with budget allocations across products. Publishers include proposals when they can provide strategic guidance based on the brief. Proposals are actionable - buyers can refine them via subsequent get_products calls or execute them directly via create_media_buy.'
|
|
33
39
|
),
|
|
34
40
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_authorized_properties_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
|
|
|
@@ -18,21 +18,21 @@ class PublisherDomain(RootModel[str]):
|
|
|
18
18
|
str,
|
|
19
19
|
Field(
|
|
20
20
|
description="Publisher domain to filter by (e.g., 'cnn.com', 'espn.com')",
|
|
21
|
-
pattern=
|
|
21
|
+
pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
|
|
22
22
|
),
|
|
23
23
|
]
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
class ListAuthorizedPropertiesRequest(AdCPBaseModel):
|
|
27
27
|
model_config = ConfigDict(
|
|
28
|
-
extra=
|
|
28
|
+
extra='allow',
|
|
29
29
|
)
|
|
30
30
|
context: context_1.ContextObject | None = None
|
|
31
31
|
ext: ext_1.ExtensionObject | None = None
|
|
32
32
|
publisher_domains: Annotated[
|
|
33
33
|
list[PublisherDomain] | None,
|
|
34
34
|
Field(
|
|
35
|
-
description=
|
|
35
|
+
description='Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.',
|
|
36
36
|
min_length=1,
|
|
37
37
|
),
|
|
38
38
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_authorized_properties_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,7 +16,7 @@ from ..enums import channels
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class PrimaryCountry(RootModel[str]):
|
|
19
|
-
root: Annotated[str, Field(pattern=
|
|
19
|
+
root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class PublisherDomain(RootModel[str]):
|
|
@@ -24,14 +24,14 @@ class PublisherDomain(RootModel[str]):
|
|
|
24
24
|
str,
|
|
25
25
|
Field(
|
|
26
26
|
description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
|
|
27
|
-
pattern=
|
|
27
|
+
pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
|
|
28
28
|
),
|
|
29
29
|
]
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class ListAuthorizedPropertiesResponse(AdCPBaseModel):
|
|
33
33
|
model_config = ConfigDict(
|
|
34
|
-
extra=
|
|
34
|
+
extra='allow',
|
|
35
35
|
)
|
|
36
36
|
advertising_policies: Annotated[
|
|
37
37
|
str | None,
|
|
@@ -44,7 +44,7 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
|
|
|
44
44
|
context: context_1.ContextObject | None = None
|
|
45
45
|
errors: Annotated[
|
|
46
46
|
list[error.Error] | None,
|
|
47
|
-
Field(description=
|
|
47
|
+
Field(description='Task-specific errors and warnings (e.g., property availability issues)'),
|
|
48
48
|
] = None
|
|
49
49
|
ext: ext_1.ExtensionObject | None = None
|
|
50
50
|
last_updated: Annotated[
|
|
@@ -56,22 +56,22 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
|
|
|
56
56
|
portfolio_description: Annotated[
|
|
57
57
|
str | None,
|
|
58
58
|
Field(
|
|
59
|
-
description=
|
|
59
|
+
description='Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.',
|
|
60
60
|
max_length=5000,
|
|
61
61
|
min_length=1,
|
|
62
62
|
),
|
|
63
63
|
] = None
|
|
64
64
|
primary_channels: Annotated[
|
|
65
|
-
list[channels.
|
|
65
|
+
list[channels.MediaChannel] | None,
|
|
66
66
|
Field(
|
|
67
|
-
description=
|
|
67
|
+
description='Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.',
|
|
68
68
|
min_length=1,
|
|
69
69
|
),
|
|
70
70
|
] = None
|
|
71
71
|
primary_countries: Annotated[
|
|
72
72
|
list[PrimaryCountry] | None,
|
|
73
73
|
Field(
|
|
74
|
-
description=
|
|
74
|
+
description='Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.',
|
|
75
75
|
min_length=1,
|
|
76
76
|
),
|
|
77
77
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creative_formats_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,7 +17,7 @@ from ..enums import asset_content_type, format_category
|
|
|
17
17
|
|
|
18
18
|
class ListCreativeFormatsRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra='allow',
|
|
21
21
|
)
|
|
22
22
|
asset_types: Annotated[
|
|
23
23
|
list[asset_content_type.AssetContentType] | None,
|
|
@@ -30,45 +30,45 @@ class ListCreativeFormatsRequest(AdCPBaseModel):
|
|
|
30
30
|
format_ids: Annotated[
|
|
31
31
|
list[format_id.FormatId] | None,
|
|
32
32
|
Field(
|
|
33
|
-
description=
|
|
33
|
+
description='Return only these specific format IDs (e.g., from get_products response)'
|
|
34
34
|
),
|
|
35
35
|
] = None
|
|
36
36
|
is_responsive: Annotated[
|
|
37
37
|
bool | None,
|
|
38
38
|
Field(
|
|
39
|
-
description=
|
|
39
|
+
description='Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.'
|
|
40
40
|
),
|
|
41
41
|
] = None
|
|
42
42
|
max_height: Annotated[
|
|
43
43
|
int | None,
|
|
44
44
|
Field(
|
|
45
|
-
description=
|
|
45
|
+
description='Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits.'
|
|
46
46
|
),
|
|
47
47
|
] = None
|
|
48
48
|
max_width: Annotated[
|
|
49
49
|
int | None,
|
|
50
50
|
Field(
|
|
51
|
-
description=
|
|
51
|
+
description='Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits.'
|
|
52
52
|
),
|
|
53
53
|
] = None
|
|
54
54
|
min_height: Annotated[
|
|
55
55
|
int | None,
|
|
56
56
|
Field(
|
|
57
|
-
description=
|
|
57
|
+
description='Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value.'
|
|
58
58
|
),
|
|
59
59
|
] = None
|
|
60
60
|
min_width: Annotated[
|
|
61
61
|
int | None,
|
|
62
62
|
Field(
|
|
63
|
-
description=
|
|
63
|
+
description='Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value.'
|
|
64
64
|
),
|
|
65
65
|
] = None
|
|
66
66
|
name_search: Annotated[
|
|
67
|
-
str | None, Field(description=
|
|
67
|
+
str | None, Field(description='Search for formats by name (case-insensitive partial match)')
|
|
68
68
|
] = None
|
|
69
69
|
type: Annotated[
|
|
70
70
|
format_category.FormatCategory | None,
|
|
71
71
|
Field(
|
|
72
|
-
description=
|
|
72
|
+
description='Filter by format type (technical categories with distinct requirements)'
|
|
73
73
|
),
|
|
74
74
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creative_formats_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
|
|
|
@@ -18,7 +18,7 @@ from ..enums import creative_agent_capability
|
|
|
18
18
|
|
|
19
19
|
class CreativeAgent(AdCPBaseModel):
|
|
20
20
|
agent_name: Annotated[
|
|
21
|
-
str | None, Field(description=
|
|
21
|
+
str | None, Field(description='Human-readable name for the creative agent')
|
|
22
22
|
] = None
|
|
23
23
|
agent_url: Annotated[
|
|
24
24
|
AnyUrl,
|
|
@@ -28,24 +28,24 @@ class CreativeAgent(AdCPBaseModel):
|
|
|
28
28
|
]
|
|
29
29
|
capabilities: Annotated[
|
|
30
30
|
list[creative_agent_capability.CreativeAgentCapability] | None,
|
|
31
|
-
Field(description=
|
|
31
|
+
Field(description='Capabilities this creative agent provides'),
|
|
32
32
|
] = None
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class ListCreativeFormatsResponse(AdCPBaseModel):
|
|
36
36
|
model_config = ConfigDict(
|
|
37
|
-
extra=
|
|
37
|
+
extra='allow',
|
|
38
38
|
)
|
|
39
39
|
context: context_1.ContextObject | None = None
|
|
40
40
|
creative_agents: Annotated[
|
|
41
41
|
list[CreativeAgent] | None,
|
|
42
42
|
Field(
|
|
43
|
-
description=
|
|
43
|
+
description='Optional: Creative agents that provide additional formats. Buyers can recursively query these agents to discover more formats. No authentication required for list_creative_formats.'
|
|
44
44
|
),
|
|
45
45
|
] = None
|
|
46
46
|
errors: Annotated[
|
|
47
47
|
list[error.Error] | None,
|
|
48
|
-
Field(description=
|
|
48
|
+
Field(description='Task-specific errors and warnings (e.g., format availability issues)'),
|
|
49
49
|
] = None
|
|
50
50
|
ext: ext_1.ExtensionObject | None = None
|
|
51
51
|
formats: Annotated[
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creatives_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,60 +17,60 @@ from ..enums import creative_sort_field, sort_direction
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class FieldModel(Enum):
|
|
20
|
-
creative_id =
|
|
21
|
-
name =
|
|
22
|
-
|
|
23
|
-
status =
|
|
24
|
-
created_date =
|
|
25
|
-
updated_date =
|
|
26
|
-
tags =
|
|
27
|
-
assignments =
|
|
28
|
-
performance =
|
|
29
|
-
sub_assets =
|
|
20
|
+
creative_id = 'creative_id'
|
|
21
|
+
name = 'name'
|
|
22
|
+
format_ = 'format'
|
|
23
|
+
status = 'status'
|
|
24
|
+
created_date = 'created_date'
|
|
25
|
+
updated_date = 'updated_date'
|
|
26
|
+
tags = 'tags'
|
|
27
|
+
assignments = 'assignments'
|
|
28
|
+
performance = 'performance'
|
|
29
|
+
sub_assets = 'sub_assets'
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class Pagination(AdCPBaseModel):
|
|
33
33
|
model_config = ConfigDict(
|
|
34
|
-
extra=
|
|
34
|
+
extra='allow',
|
|
35
35
|
)
|
|
36
36
|
limit: Annotated[
|
|
37
|
-
int | None, Field(description=
|
|
37
|
+
int | None, Field(description='Maximum number of creatives to return', ge=1, le=100)
|
|
38
38
|
] = 50
|
|
39
|
-
offset: Annotated[int | None, Field(description=
|
|
39
|
+
offset: Annotated[int | None, Field(description='Number of creatives to skip', ge=0)] = 0
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class Sort(AdCPBaseModel):
|
|
43
43
|
model_config = ConfigDict(
|
|
44
|
-
extra=
|
|
44
|
+
extra='allow',
|
|
45
45
|
)
|
|
46
46
|
direction: Annotated[
|
|
47
|
-
sort_direction.SortDirection | None, Field(description=
|
|
47
|
+
sort_direction.SortDirection | None, Field(description='Sort direction')
|
|
48
48
|
] = sort_direction.SortDirection.desc
|
|
49
49
|
field: Annotated[
|
|
50
|
-
creative_sort_field.CreativeSortField | None, Field(description=
|
|
50
|
+
creative_sort_field.CreativeSortField | None, Field(description='Field to sort by')
|
|
51
51
|
] = creative_sort_field.CreativeSortField.created_date
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class ListCreativesRequest(AdCPBaseModel):
|
|
55
55
|
model_config = ConfigDict(
|
|
56
|
-
extra=
|
|
56
|
+
extra='allow',
|
|
57
57
|
)
|
|
58
58
|
context: context_1.ContextObject | None = None
|
|
59
59
|
ext: ext_1.ExtensionObject | None = None
|
|
60
60
|
fields: Annotated[
|
|
61
61
|
list[FieldModel] | None,
|
|
62
|
-
Field(description=
|
|
62
|
+
Field(description='Specific fields to include in response (omit for all fields)'),
|
|
63
63
|
] = None
|
|
64
64
|
filters: creative_filters.CreativeFilters | None = None
|
|
65
65
|
include_assignments: Annotated[
|
|
66
|
-
bool | None, Field(description=
|
|
66
|
+
bool | None, Field(description='Include package assignment information in response')
|
|
67
67
|
] = True
|
|
68
68
|
include_performance: Annotated[
|
|
69
|
-
bool | None, Field(description=
|
|
69
|
+
bool | None, Field(description='Include aggregated performance metrics in response')
|
|
70
70
|
] = False
|
|
71
71
|
include_sub_assets: Annotated[
|
|
72
72
|
bool | None,
|
|
73
|
-
Field(description=
|
|
73
|
+
Field(description='Include sub-assets (for carousel/native formats) in response'),
|
|
74
74
|
] = False
|
|
75
|
-
pagination: Annotated[Pagination | None, Field(description=
|
|
76
|
-
sort: Annotated[Sort | None, Field(description=
|
|
75
|
+
pagination: Annotated[Pagination | None, Field(description='Pagination parameters')] = None
|
|
76
|
+
sort: Annotated[Sort | None, Field(description='Sorting parameters')] = None
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creatives_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
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
@@ -29,84 +28,82 @@ from ..core.assets import (
|
|
|
29
28
|
from ..enums import creative_status, sort_direction
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
class Status(Enum):
|
|
33
|
-
active = "active"
|
|
34
|
-
paused = "paused"
|
|
35
|
-
ended = "ended"
|
|
36
|
-
|
|
37
|
-
|
|
38
31
|
class AssignedPackage(AdCPBaseModel):
|
|
39
32
|
model_config = ConfigDict(
|
|
40
|
-
extra=
|
|
33
|
+
extra='allow',
|
|
41
34
|
)
|
|
42
|
-
assigned_date: Annotated[AwareDatetime, Field(description=
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
35
|
+
assigned_date: Annotated[AwareDatetime, Field(description='When this assignment was created')]
|
|
36
|
+
buyer_ref: Annotated[
|
|
37
|
+
str | None, Field(description="Buyer's reference identifier for this package")
|
|
38
|
+
] = None
|
|
39
|
+
package_id: Annotated[str, Field(description='Package identifier')]
|
|
46
40
|
|
|
47
41
|
|
|
48
42
|
class Assignments(AdCPBaseModel):
|
|
49
43
|
model_config = ConfigDict(
|
|
50
|
-
extra=
|
|
44
|
+
extra='allow',
|
|
51
45
|
)
|
|
52
46
|
assigned_packages: Annotated[
|
|
53
47
|
list[AssignedPackage] | None,
|
|
54
|
-
Field(description=
|
|
48
|
+
Field(description='List of packages this creative is assigned to'),
|
|
55
49
|
] = None
|
|
56
50
|
assignment_count: Annotated[
|
|
57
|
-
int, Field(description=
|
|
51
|
+
int, Field(description='Total number of active package assignments', ge=0)
|
|
58
52
|
]
|
|
59
53
|
|
|
60
54
|
|
|
61
55
|
class Performance(AdCPBaseModel):
|
|
62
56
|
model_config = ConfigDict(
|
|
63
|
-
extra=
|
|
57
|
+
extra='allow',
|
|
64
58
|
)
|
|
65
59
|
clicks: Annotated[
|
|
66
|
-
int | None, Field(description=
|
|
60
|
+
int | None, Field(description='Total clicks across all assignments', ge=0)
|
|
67
61
|
] = None
|
|
68
62
|
conversion_rate: Annotated[
|
|
69
|
-
float | None, Field(description=
|
|
63
|
+
float | None, Field(description='Conversion rate across all assignments', ge=0.0, le=1.0)
|
|
70
64
|
] = None
|
|
71
65
|
ctr: Annotated[
|
|
72
|
-
float | None, Field(description=
|
|
66
|
+
float | None, Field(description='Click-through rate (clicks/impressions)', ge=0.0, le=1.0)
|
|
73
67
|
] = None
|
|
74
68
|
impressions: Annotated[
|
|
75
|
-
int | None, Field(description=
|
|
69
|
+
int | None, Field(description='Total impressions across all assignments', ge=0)
|
|
76
70
|
] = None
|
|
77
71
|
last_updated: Annotated[
|
|
78
|
-
AwareDatetime, Field(description=
|
|
72
|
+
AwareDatetime, Field(description='When performance data was last updated')
|
|
79
73
|
]
|
|
80
74
|
performance_score: Annotated[
|
|
81
|
-
float | None, Field(description=
|
|
75
|
+
float | None, Field(description='Aggregated performance score (0-100)', ge=0.0, le=100.0)
|
|
82
76
|
] = None
|
|
83
77
|
|
|
84
78
|
|
|
85
79
|
class Pagination(AdCPBaseModel):
|
|
86
80
|
model_config = ConfigDict(
|
|
87
|
-
extra=
|
|
81
|
+
extra='allow',
|
|
88
82
|
)
|
|
89
83
|
current_page: Annotated[
|
|
90
|
-
int | None, Field(description=
|
|
84
|
+
int | None, Field(description='Current page number (1-based)', ge=1)
|
|
91
85
|
] = None
|
|
92
|
-
has_more: Annotated[bool, Field(description=
|
|
93
|
-
limit: Annotated[int, Field(description=
|
|
94
|
-
offset: Annotated[int, Field(description=
|
|
86
|
+
has_more: Annotated[bool, Field(description='Whether more results are available')]
|
|
87
|
+
limit: Annotated[int, Field(description='Maximum number of results requested', ge=1)]
|
|
88
|
+
offset: Annotated[int, Field(description='Number of results skipped', ge=0)]
|
|
95
89
|
total_pages: Annotated[
|
|
96
|
-
int | None, Field(description=
|
|
90
|
+
int | None, Field(description='Total number of pages available', ge=0)
|
|
97
91
|
] = None
|
|
98
92
|
|
|
99
93
|
|
|
100
94
|
class StatusSummary(AdCPBaseModel):
|
|
101
95
|
model_config = ConfigDict(
|
|
102
|
-
extra=
|
|
96
|
+
extra='allow',
|
|
103
97
|
)
|
|
104
|
-
approved: Annotated[int | None, Field(description=
|
|
105
|
-
archived: Annotated[int | None, Field(description=
|
|
98
|
+
approved: Annotated[int | None, Field(description='Number of approved creatives', ge=0)] = None
|
|
99
|
+
archived: Annotated[int | None, Field(description='Number of archived creatives', ge=0)] = None
|
|
106
100
|
pending_review: Annotated[
|
|
107
|
-
int | None, Field(description=
|
|
101
|
+
int | None, Field(description='Number of creatives pending review', ge=0)
|
|
102
|
+
] = None
|
|
103
|
+
processing: Annotated[
|
|
104
|
+
int | None, Field(description='Number of creatives being processed', ge=0)
|
|
108
105
|
] = None
|
|
109
|
-
rejected: Annotated[int | None, Field(description=
|
|
106
|
+
rejected: Annotated[int | None, Field(description='Number of rejected creatives', ge=0)] = None
|
|
110
107
|
|
|
111
108
|
|
|
112
109
|
class SortApplied(AdCPBaseModel):
|
|
@@ -116,26 +113,26 @@ class SortApplied(AdCPBaseModel):
|
|
|
116
113
|
|
|
117
114
|
class QuerySummary(AdCPBaseModel):
|
|
118
115
|
model_config = ConfigDict(
|
|
119
|
-
extra=
|
|
116
|
+
extra='allow',
|
|
120
117
|
)
|
|
121
118
|
filters_applied: Annotated[
|
|
122
|
-
list[str] | None, Field(description=
|
|
119
|
+
list[str] | None, Field(description='List of filters that were applied to the query')
|
|
123
120
|
] = None
|
|
124
121
|
returned: Annotated[
|
|
125
|
-
int, Field(description=
|
|
122
|
+
int, Field(description='Number of creatives returned in this response', ge=0)
|
|
126
123
|
]
|
|
127
124
|
sort_applied: Annotated[
|
|
128
|
-
SortApplied | None, Field(description=
|
|
125
|
+
SortApplied | None, Field(description='Sort order that was applied')
|
|
129
126
|
] = None
|
|
130
127
|
total_matching: Annotated[
|
|
131
128
|
int,
|
|
132
|
-
Field(description=
|
|
129
|
+
Field(description='Total number of creatives matching filters (across all pages)', ge=0),
|
|
133
130
|
]
|
|
134
131
|
|
|
135
132
|
|
|
136
133
|
class Creative(AdCPBaseModel):
|
|
137
134
|
model_config = ConfigDict(
|
|
138
|
-
extra=
|
|
135
|
+
extra='allow',
|
|
139
136
|
)
|
|
140
137
|
assets: Annotated[
|
|
141
138
|
dict[
|
|
@@ -153,60 +150,60 @@ class Creative(AdCPBaseModel):
|
|
|
153
150
|
| url_asset.UrlAsset,
|
|
154
151
|
]
|
|
155
152
|
| None,
|
|
156
|
-
Field(description=
|
|
153
|
+
Field(description='Assets for this creative, keyed by asset_role'),
|
|
157
154
|
] = None
|
|
158
155
|
assignments: Annotated[
|
|
159
156
|
Assignments | None,
|
|
160
|
-
Field(description=
|
|
157
|
+
Field(description='Current package assignments (included when include_assignments=true)'),
|
|
161
158
|
] = None
|
|
162
159
|
created_date: Annotated[
|
|
163
|
-
AwareDatetime, Field(description=
|
|
160
|
+
AwareDatetime, Field(description='When the creative was uploaded to the library')
|
|
164
161
|
]
|
|
165
|
-
creative_id: Annotated[str, Field(description=
|
|
162
|
+
creative_id: Annotated[str, Field(description='Unique identifier for the creative')]
|
|
166
163
|
format_id: Annotated[
|
|
167
164
|
format_id_1.FormatId,
|
|
168
|
-
Field(description=
|
|
165
|
+
Field(description='Format identifier specifying which format this creative conforms to'),
|
|
169
166
|
]
|
|
170
|
-
name: Annotated[str, Field(description=
|
|
167
|
+
name: Annotated[str, Field(description='Human-readable creative name')]
|
|
171
168
|
performance: Annotated[
|
|
172
169
|
Performance | None,
|
|
173
170
|
Field(
|
|
174
|
-
description=
|
|
171
|
+
description='Aggregated performance metrics (included when include_performance=true)'
|
|
175
172
|
),
|
|
176
173
|
] = None
|
|
177
174
|
status: Annotated[
|
|
178
|
-
creative_status.CreativeStatus, Field(description=
|
|
175
|
+
creative_status.CreativeStatus, Field(description='Current approval status of the creative')
|
|
179
176
|
]
|
|
180
177
|
sub_assets: Annotated[
|
|
181
178
|
list[sub_asset.SubAsset] | None,
|
|
182
179
|
Field(
|
|
183
|
-
description=
|
|
180
|
+
description='Sub-assets for multi-asset formats (included when include_sub_assets=true)'
|
|
184
181
|
),
|
|
185
182
|
] = None
|
|
186
183
|
tags: Annotated[
|
|
187
|
-
list[str] | None, Field(description=
|
|
184
|
+
list[str] | None, Field(description='User-defined tags for organization and searchability')
|
|
188
185
|
] = None
|
|
189
|
-
updated_date: Annotated[AwareDatetime, Field(description=
|
|
186
|
+
updated_date: Annotated[AwareDatetime, Field(description='When the creative was last modified')]
|
|
190
187
|
|
|
191
188
|
|
|
192
189
|
class ListCreativesResponse(AdCPBaseModel):
|
|
193
190
|
model_config = ConfigDict(
|
|
194
|
-
extra=
|
|
191
|
+
extra='allow',
|
|
195
192
|
)
|
|
196
193
|
context: context_1.ContextObject | None = None
|
|
197
194
|
creatives: Annotated[
|
|
198
|
-
list[Creative], Field(description=
|
|
195
|
+
list[Creative], Field(description='Array of creative assets matching the query')
|
|
199
196
|
]
|
|
200
197
|
ext: ext_1.ExtensionObject | None = None
|
|
201
198
|
format_summary: Annotated[
|
|
202
|
-
dict[str, int] | None, Field(description=
|
|
199
|
+
dict[str, int] | None, Field(description='Breakdown of creatives by format type')
|
|
203
200
|
] = None
|
|
204
201
|
pagination: Annotated[
|
|
205
|
-
Pagination, Field(description=
|
|
202
|
+
Pagination, Field(description='Pagination information for navigating results')
|
|
206
203
|
]
|
|
207
204
|
query_summary: Annotated[
|
|
208
|
-
QuerySummary, Field(description=
|
|
205
|
+
QuerySummary, Field(description='Summary of the query that was executed')
|
|
209
206
|
]
|
|
210
207
|
status_summary: Annotated[
|
|
211
|
-
StatusSummary | None, Field(description=
|
|
208
|
+
StatusSummary | None, Field(description='Breakdown of creatives by status')
|
|
212
209
|
] = None
|