adcp 2.18.0__py3-none-any.whl → 2.19.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/__init__.py +1 -1
- adcp/protocols/mcp.py +3 -1
- adcp/types/_ergonomic.py +0 -4
- adcp/types/_generated.py +85 -4
- adcp/types/generated_poc/adagents.py +239 -149
- adcp/types/generated_poc/core/activation_key.py +8 -8
- adcp/types/generated_poc/core/assets/audio_asset.py +5 -5
- 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 +7 -7
- 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 +55 -55
- 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 +13 -13
- adcp/types/generated_poc/core/creative_assignment.py +3 -3
- adcp/types/generated_poc/core/creative_filters.py +19 -19
- adcp/types/generated_poc/core/creative_manifest.py +2 -2
- 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 +67 -66
- 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 +27 -0
- 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 +7 -7
- 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 +2 -2
- adcp/types/generated_poc/core/product.py +20 -20
- adcp/types/generated_poc/core/product_filters.py +18 -18
- adcp/types/generated_poc/core/promoted_offerings.py +20 -20
- adcp/types/generated_poc/core/promoted_products.py +2 -2
- adcp/types/generated_poc/core/property.py +9 -9
- adcp/types/generated_poc/core/property_id.py +4 -4
- adcp/types/generated_poc/core/property_list_ref.py +26 -0
- adcp/types/generated_poc/core/property_tag.py +4 -4
- 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/response.py +4 -4
- adcp/types/generated_poc/core/signal_filters.py +5 -5
- adcp/types/generated_poc/core/start_timing.py +5 -5
- adcp/types/generated_poc/core/sub_asset.py +14 -14
- adcp/types/generated_poc/core/targeting.py +8 -8
- 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 +31 -30
- adcp/types/generated_poc/creative/preview_render.py +25 -25
- adcp/types/generated_poc/enums/adcp_domain.py +5 -3
- 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 +9 -9
- 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 +4 -4
- 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/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/notification_type.py +4 -4
- adcp/types/generated_poc/enums/pacing.py +3 -3
- 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 +7 -7
- 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/standard_format_ids.py +35 -35
- adcp/types/generated_poc/enums/task_status.py +9 -9
- adcp/types/generated_poc/enums/task_type.py +12 -6
- 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/__init__.py +3 -0
- adcp/types/generated_poc/extensions/extension_meta.py +50 -0
- 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 +25 -25
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +7 -7
- 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 +10 -4
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +3 -3
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +7 -7
- 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 +24 -24
- adcp/types/generated_poc/media_buy/list_creatives_response.py +52 -52
- adcp/types/generated_poc/media_buy/package_request.py +16 -7
- 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 +7 -7
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +15 -15
- 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 +37 -29
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
- adcp/types/generated_poc/pricing_options/cpc_option.py +8 -8
- adcp/types/generated_poc/pricing_options/cpcv_option.py +8 -8
- adcp/types/generated_poc/pricing_options/cpm_auction_option.py +13 -13
- adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +8 -8
- adcp/types/generated_poc/pricing_options/cpp_option.py +13 -13
- adcp/types/generated_poc/pricing_options/cpv_option.py +12 -12
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +15 -15
- adcp/types/generated_poc/pricing_options/vcpm_auction_option.py +13 -13
- adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +8 -8
- adcp/types/generated_poc/property/__init__.py +3 -0
- adcp/types/generated_poc/property/base_property_source.py +86 -0
- adcp/types/generated_poc/property/create_property_list_request.py +43 -0
- adcp/types/generated_poc/property/create_property_list_response.py +27 -0
- adcp/types/generated_poc/property/delete_property_list_request.py +22 -0
- adcp/types/generated_poc/property/delete_property_list_response.py +21 -0
- adcp/types/generated_poc/property/feature_requirement.py +42 -0
- adcp/types/generated_poc/property/get_property_list_request.py +34 -0
- adcp/types/generated_poc/property/get_property_list_response.py +61 -0
- adcp/types/generated_poc/property/list_property_features_request.py +25 -0
- adcp/types/generated_poc/property/list_property_features_response.py +24 -0
- adcp/types/generated_poc/property/list_property_lists_request.py +29 -0
- adcp/types/generated_poc/property/list_property_lists_response.py +39 -0
- adcp/types/generated_poc/property/property_error.py +33 -0
- adcp/types/generated_poc/property/property_feature.py +22 -0
- adcp/types/generated_poc/property/property_feature_definition.py +80 -0
- adcp/types/generated_poc/property/property_list.py +62 -0
- adcp/types/generated_poc/property/property_list_changed_webhook.py +51 -0
- adcp/types/generated_poc/property/property_list_filters.py +47 -0
- adcp/types/generated_poc/property/update_property_list_request.py +46 -0
- adcp/types/generated_poc/property/update_property_list_response.py +21 -0
- adcp/types/generated_poc/protocols/adcp_extension.py +26 -10
- 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-2.18.0.dist-info → adcp-2.19.0.dist-info}/METADATA +1 -1
- adcp-2.19.0.dist-info/RECORD +220 -0
- adcp-2.18.0.dist-info/RECORD +0 -195
- {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/WHEEL +0 -0
- {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/top_level.txt +0 -0
|
@@ -16,23 +16,23 @@ from ..core import product
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class Reason(Enum):
|
|
19
|
-
CLARIFICATION_NEEDED =
|
|
20
|
-
BUDGET_REQUIRED =
|
|
19
|
+
CLARIFICATION_NEEDED = "CLARIFICATION_NEEDED"
|
|
20
|
+
BUDGET_REQUIRED = "BUDGET_REQUIRED"
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class GetProductsInputRequired(AdCPBaseModel):
|
|
24
24
|
model_config = ConfigDict(
|
|
25
|
-
extra=
|
|
25
|
+
extra="allow",
|
|
26
26
|
)
|
|
27
27
|
context: context_1.ContextObject | None = None
|
|
28
28
|
ext: ext_1.ExtensionObject | None = None
|
|
29
29
|
partial_results: Annotated[
|
|
30
30
|
list[product.Product] | None,
|
|
31
|
-
Field(description=
|
|
31
|
+
Field(description="Partial product results that may help inform the clarification"),
|
|
32
32
|
] = None
|
|
33
33
|
reason: Annotated[
|
|
34
|
-
Reason | None, Field(description=
|
|
34
|
+
Reason | None, Field(description="Reason code indicating why input is needed")
|
|
35
35
|
] = None
|
|
36
36
|
suggestions: Annotated[
|
|
37
|
-
list[str] | None, Field(description=
|
|
37
|
+
list[str] | None, Field(description="Suggested values or options for the required input")
|
|
38
38
|
] = None
|
|
@@ -15,10 +15,10 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class GetProductsSubmitted(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="allow",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
21
|
estimated_completion: Annotated[
|
|
22
|
-
AwareDatetime | None, Field(description=
|
|
22
|
+
AwareDatetime | None, Field(description="Estimated completion time for the search")
|
|
23
23
|
] = None
|
|
24
24
|
ext: ext_1.ExtensionObject | None = None
|
|
@@ -15,7 +15,7 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class GetProductsWorking(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="allow",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
21
|
current_step: Annotated[
|
|
@@ -27,9 +27,9 @@ class GetProductsWorking(AdCPBaseModel):
|
|
|
27
27
|
ext: ext_1.ExtensionObject | None = None
|
|
28
28
|
percentage: Annotated[
|
|
29
29
|
float | None,
|
|
30
|
-
Field(description=
|
|
30
|
+
Field(description="Progress percentage of the search operation", ge=0.0, le=100.0),
|
|
31
31
|
] = None
|
|
32
|
-
step_number: Annotated[int | None, Field(description=
|
|
32
|
+
step_number: Annotated[int | None, Field(description="Current step number (1-indexed)")] = None
|
|
33
33
|
total_steps: Annotated[
|
|
34
|
-
int | None, Field(description=
|
|
34
|
+
int | None, Field(description="Total number of steps in the search process")
|
|
35
35
|
] = None
|
|
@@ -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-14T17:08:13+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -12,22 +12,28 @@ from pydantic import ConfigDict, Field
|
|
|
12
12
|
from ..core import brand_manifest_ref
|
|
13
13
|
from ..core import context as context_1
|
|
14
14
|
from ..core import ext as ext_1
|
|
15
|
-
from ..core import product_filters
|
|
15
|
+
from ..core import product_filters, property_list_ref
|
|
16
16
|
|
|
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, Field(description=
|
|
29
|
+
str | None, Field(description="Natural language description of campaign requirements")
|
|
30
30
|
] = None
|
|
31
31
|
context: context_1.ContextObject | None = None
|
|
32
32
|
ext: ext_1.ExtensionObject | None = None
|
|
33
33
|
filters: product_filters.ProductFilters | None = None
|
|
34
|
+
property_list: Annotated[
|
|
35
|
+
property_list_ref.PropertyListReference | None,
|
|
36
|
+
Field(
|
|
37
|
+
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."
|
|
38
|
+
),
|
|
39
|
+
] = 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-14T17:08:13+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -17,12 +17,18 @@ from ..core import product
|
|
|
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
|
+
property_list_applied: Annotated[
|
|
30
|
+
bool | None,
|
|
31
|
+
Field(
|
|
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
|
|
@@ -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
|
|
@@ -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,7 +56,7 @@ 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
|
),
|
|
@@ -64,14 +64,14 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
|
|
|
64
64
|
primary_channels: Annotated[
|
|
65
65
|
list[channels.AdvertisingChannels] | 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
|
|
@@ -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
|
|
@@ -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-14T17:08:13+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
|
-
format =
|
|
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
|
|
@@ -30,83 +30,83 @@ from ..enums import creative_status, sort_direction
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class Status(Enum):
|
|
33
|
-
active =
|
|
34
|
-
paused =
|
|
35
|
-
ended =
|
|
33
|
+
active = "active"
|
|
34
|
+
paused = "paused"
|
|
35
|
+
ended = "ended"
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
class AssignedPackage(AdCPBaseModel):
|
|
39
39
|
model_config = ConfigDict(
|
|
40
|
-
extra=
|
|
40
|
+
extra="allow",
|
|
41
41
|
)
|
|
42
|
-
assigned_date: Annotated[AwareDatetime, Field(description=
|
|
43
|
-
package_id: Annotated[str, Field(description=
|
|
44
|
-
package_name: Annotated[str | None, Field(description=
|
|
45
|
-
status: Annotated[Status, Field(description=
|
|
42
|
+
assigned_date: Annotated[AwareDatetime, Field(description="When this assignment was created")]
|
|
43
|
+
package_id: Annotated[str, Field(description="Package identifier")]
|
|
44
|
+
package_name: Annotated[str | None, Field(description="Human-readable package name")] = None
|
|
45
|
+
status: Annotated[Status, Field(description="Status of this specific assignment")]
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
class Assignments(AdCPBaseModel):
|
|
49
49
|
model_config = ConfigDict(
|
|
50
|
-
extra=
|
|
50
|
+
extra="allow",
|
|
51
51
|
)
|
|
52
52
|
assigned_packages: Annotated[
|
|
53
53
|
list[AssignedPackage] | None,
|
|
54
|
-
Field(description=
|
|
54
|
+
Field(description="List of packages this creative is assigned to"),
|
|
55
55
|
] = None
|
|
56
56
|
assignment_count: Annotated[
|
|
57
|
-
int, Field(description=
|
|
57
|
+
int, Field(description="Total number of active package assignments", ge=0)
|
|
58
58
|
]
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
class Performance(AdCPBaseModel):
|
|
62
62
|
model_config = ConfigDict(
|
|
63
|
-
extra=
|
|
63
|
+
extra="allow",
|
|
64
64
|
)
|
|
65
65
|
clicks: Annotated[
|
|
66
|
-
int | None, Field(description=
|
|
66
|
+
int | None, Field(description="Total clicks across all assignments", ge=0)
|
|
67
67
|
] = None
|
|
68
68
|
conversion_rate: Annotated[
|
|
69
|
-
float | None, Field(description=
|
|
69
|
+
float | None, Field(description="Conversion rate across all assignments", ge=0.0, le=1.0)
|
|
70
70
|
] = None
|
|
71
71
|
ctr: Annotated[
|
|
72
|
-
float | None, Field(description=
|
|
72
|
+
float | None, Field(description="Click-through rate (clicks/impressions)", ge=0.0, le=1.0)
|
|
73
73
|
] = None
|
|
74
74
|
impressions: Annotated[
|
|
75
|
-
int | None, Field(description=
|
|
75
|
+
int | None, Field(description="Total impressions across all assignments", ge=0)
|
|
76
76
|
] = None
|
|
77
77
|
last_updated: Annotated[
|
|
78
|
-
AwareDatetime, Field(description=
|
|
78
|
+
AwareDatetime, Field(description="When performance data was last updated")
|
|
79
79
|
]
|
|
80
80
|
performance_score: Annotated[
|
|
81
|
-
float | None, Field(description=
|
|
81
|
+
float | None, Field(description="Aggregated performance score (0-100)", ge=0.0, le=100.0)
|
|
82
82
|
] = None
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
class Pagination(AdCPBaseModel):
|
|
86
86
|
model_config = ConfigDict(
|
|
87
|
-
extra=
|
|
87
|
+
extra="allow",
|
|
88
88
|
)
|
|
89
89
|
current_page: Annotated[
|
|
90
|
-
int | None, Field(description=
|
|
90
|
+
int | None, Field(description="Current page number (1-based)", ge=1)
|
|
91
91
|
] = None
|
|
92
|
-
has_more: Annotated[bool, Field(description=
|
|
93
|
-
limit: Annotated[int, Field(description=
|
|
94
|
-
offset: Annotated[int, Field(description=
|
|
92
|
+
has_more: Annotated[bool, Field(description="Whether more results are available")]
|
|
93
|
+
limit: Annotated[int, Field(description="Maximum number of results requested", ge=1)]
|
|
94
|
+
offset: Annotated[int, Field(description="Number of results skipped", ge=0)]
|
|
95
95
|
total_pages: Annotated[
|
|
96
|
-
int | None, Field(description=
|
|
96
|
+
int | None, Field(description="Total number of pages available", ge=0)
|
|
97
97
|
] = None
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
class StatusSummary(AdCPBaseModel):
|
|
101
101
|
model_config = ConfigDict(
|
|
102
|
-
extra=
|
|
102
|
+
extra="allow",
|
|
103
103
|
)
|
|
104
|
-
approved: Annotated[int | None, Field(description=
|
|
105
|
-
archived: Annotated[int | None, Field(description=
|
|
104
|
+
approved: Annotated[int | None, Field(description="Number of approved creatives", ge=0)] = None
|
|
105
|
+
archived: Annotated[int | None, Field(description="Number of archived creatives", ge=0)] = None
|
|
106
106
|
pending_review: Annotated[
|
|
107
|
-
int | None, Field(description=
|
|
107
|
+
int | None, Field(description="Number of creatives pending review", ge=0)
|
|
108
108
|
] = None
|
|
109
|
-
rejected: Annotated[int | None, Field(description=
|
|
109
|
+
rejected: Annotated[int | None, Field(description="Number of rejected creatives", ge=0)] = None
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
class SortApplied(AdCPBaseModel):
|
|
@@ -116,26 +116,26 @@ class SortApplied(AdCPBaseModel):
|
|
|
116
116
|
|
|
117
117
|
class QuerySummary(AdCPBaseModel):
|
|
118
118
|
model_config = ConfigDict(
|
|
119
|
-
extra=
|
|
119
|
+
extra="allow",
|
|
120
120
|
)
|
|
121
121
|
filters_applied: Annotated[
|
|
122
|
-
list[str] | None, Field(description=
|
|
122
|
+
list[str] | None, Field(description="List of filters that were applied to the query")
|
|
123
123
|
] = None
|
|
124
124
|
returned: Annotated[
|
|
125
|
-
int, Field(description=
|
|
125
|
+
int, Field(description="Number of creatives returned in this response", ge=0)
|
|
126
126
|
]
|
|
127
127
|
sort_applied: Annotated[
|
|
128
|
-
SortApplied | None, Field(description=
|
|
128
|
+
SortApplied | None, Field(description="Sort order that was applied")
|
|
129
129
|
] = None
|
|
130
130
|
total_matching: Annotated[
|
|
131
131
|
int,
|
|
132
|
-
Field(description=
|
|
132
|
+
Field(description="Total number of creatives matching filters (across all pages)", ge=0),
|
|
133
133
|
]
|
|
134
134
|
|
|
135
135
|
|
|
136
136
|
class Creative(AdCPBaseModel):
|
|
137
137
|
model_config = ConfigDict(
|
|
138
|
-
extra=
|
|
138
|
+
extra="allow",
|
|
139
139
|
)
|
|
140
140
|
assets: Annotated[
|
|
141
141
|
dict[
|
|
@@ -153,60 +153,60 @@ class Creative(AdCPBaseModel):
|
|
|
153
153
|
| url_asset.UrlAsset,
|
|
154
154
|
]
|
|
155
155
|
| None,
|
|
156
|
-
Field(description=
|
|
156
|
+
Field(description="Assets for this creative, keyed by asset_role"),
|
|
157
157
|
] = None
|
|
158
158
|
assignments: Annotated[
|
|
159
159
|
Assignments | None,
|
|
160
|
-
Field(description=
|
|
160
|
+
Field(description="Current package assignments (included when include_assignments=true)"),
|
|
161
161
|
] = None
|
|
162
162
|
created_date: Annotated[
|
|
163
|
-
AwareDatetime, Field(description=
|
|
163
|
+
AwareDatetime, Field(description="When the creative was uploaded to the library")
|
|
164
164
|
]
|
|
165
|
-
creative_id: Annotated[str, Field(description=
|
|
165
|
+
creative_id: Annotated[str, Field(description="Unique identifier for the creative")]
|
|
166
166
|
format_id: Annotated[
|
|
167
167
|
format_id_1.FormatId,
|
|
168
|
-
Field(description=
|
|
168
|
+
Field(description="Format identifier specifying which format this creative conforms to"),
|
|
169
169
|
]
|
|
170
|
-
name: Annotated[str, Field(description=
|
|
170
|
+
name: Annotated[str, Field(description="Human-readable creative name")]
|
|
171
171
|
performance: Annotated[
|
|
172
172
|
Performance | None,
|
|
173
173
|
Field(
|
|
174
|
-
description=
|
|
174
|
+
description="Aggregated performance metrics (included when include_performance=true)"
|
|
175
175
|
),
|
|
176
176
|
] = None
|
|
177
177
|
status: Annotated[
|
|
178
|
-
creative_status.CreativeStatus, Field(description=
|
|
178
|
+
creative_status.CreativeStatus, Field(description="Current approval status of the creative")
|
|
179
179
|
]
|
|
180
180
|
sub_assets: Annotated[
|
|
181
181
|
list[sub_asset.SubAsset] | None,
|
|
182
182
|
Field(
|
|
183
|
-
description=
|
|
183
|
+
description="Sub-assets for multi-asset formats (included when include_sub_assets=true)"
|
|
184
184
|
),
|
|
185
185
|
] = None
|
|
186
186
|
tags: Annotated[
|
|
187
|
-
list[str] | None, Field(description=
|
|
187
|
+
list[str] | None, Field(description="User-defined tags for organization and searchability")
|
|
188
188
|
] = None
|
|
189
|
-
updated_date: Annotated[AwareDatetime, Field(description=
|
|
189
|
+
updated_date: Annotated[AwareDatetime, Field(description="When the creative was last modified")]
|
|
190
190
|
|
|
191
191
|
|
|
192
192
|
class ListCreativesResponse(AdCPBaseModel):
|
|
193
193
|
model_config = ConfigDict(
|
|
194
|
-
extra=
|
|
194
|
+
extra="allow",
|
|
195
195
|
)
|
|
196
196
|
context: context_1.ContextObject | None = None
|
|
197
197
|
creatives: Annotated[
|
|
198
|
-
list[Creative], Field(description=
|
|
198
|
+
list[Creative], Field(description="Array of creative assets matching the query")
|
|
199
199
|
]
|
|
200
200
|
ext: ext_1.ExtensionObject | None = None
|
|
201
201
|
format_summary: Annotated[
|
|
202
|
-
dict[str, int] | None, Field(description=
|
|
202
|
+
dict[str, int] | None, Field(description="Breakdown of creatives by format type")
|
|
203
203
|
] = None
|
|
204
204
|
pagination: Annotated[
|
|
205
|
-
Pagination, Field(description=
|
|
205
|
+
Pagination, Field(description="Pagination information for navigating results")
|
|
206
206
|
]
|
|
207
207
|
query_summary: Annotated[
|
|
208
|
-
QuerySummary, Field(description=
|
|
208
|
+
QuerySummary, Field(description="Summary of the query that was executed")
|
|
209
209
|
]
|
|
210
210
|
status_summary: Annotated[
|
|
211
|
-
StatusSummary | None, Field(description=
|
|
211
|
+
StatusSummary | None, Field(description="Breakdown of creatives by status")
|
|
212
212
|
] = None
|