adcp 2.17.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/ADCP_VERSION +1 -1
- adcp/__init__.py +22 -1
- adcp/__main__.py +72 -0
- adcp/protocols/mcp.py +3 -1
- adcp/types/_ergonomic.py +0 -4
- adcp/types/_generated.py +91 -4
- adcp/types/generated_poc/adagents.py +239 -149
- 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 +2 -2
- adcp/types/generated_poc/core/brand_manifest.py +56 -56
- adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
- adcp/types/generated_poc/core/context.py +2 -3
- adcp/types/generated_poc/core/creative_asset.py +14 -14
- adcp/types/generated_poc/core/creative_assignment.py +4 -4
- adcp/types/generated_poc/core/creative_filters.py +20 -20
- 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 +9 -9
- adcp/types/generated_poc/core/ext.py +2 -3
- adcp/types/generated_poc/core/format.py +139 -51
- 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 +27 -0
- adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
- adcp/types/generated_poc/core/measurement.py +9 -9
- adcp/types/generated_poc/core/media_buy.py +8 -8
- 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 +2 -2
- adcp/types/generated_poc/core/product.py +21 -21
- adcp/types/generated_poc/core/product_filters.py +19 -19
- adcp/types/generated_poc/core/promoted_offerings.py +21 -21
- 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 +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 +9 -9
- adcp/types/generated_poc/core/publisher_property_selector.py +14 -14
- adcp/types/generated_poc/core/push_notification_config.py +5 -5
- adcp/types/generated_poc/core/reporting_capabilities.py +9 -9
- 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 +5 -5
- adcp/types/generated_poc/core/sub_asset.py +15 -15
- adcp/types/generated_poc/core/targeting.py +9 -9
- 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 +26 -26
- adcp/types/generated_poc/creative/preview_creative_response.py +31 -30
- adcp/types/generated_poc/creative/preview_render.py +26 -26
- 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 +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 +64 -23
- 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 +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 +4 -4
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +8 -8
- 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 +53 -53
- adcp/types/generated_poc/media_buy/package_request.py +16 -7
- 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 +37 -29
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +8 -8
- adcp/types/generated_poc/pricing_options/cpc_option.py +9 -9
- adcp/types/generated_poc/pricing_options/cpcv_option.py +9 -9
- adcp/types/generated_poc/pricing_options/cpm_auction_option.py +14 -14
- adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +9 -9
- adcp/types/generated_poc/pricing_options/cpp_option.py +14 -14
- adcp/types/generated_poc/pricing_options/cpv_option.py +13 -13
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +16 -16
- adcp/types/generated_poc/pricing_options/vcpm_auction_option.py +14 -14
- adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +9 -9
- 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 +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/utils/__init__.py +24 -1
- adcp/utils/format_assets.py +224 -0
- adcp/utils/preview_cache.py +29 -7
- {adcp-2.17.0.dist-info → adcp-2.19.0.dist-info}/METADATA +1 -1
- adcp-2.19.0.dist-info/RECORD +220 -0
- adcp-2.17.0.dist-info/RECORD +0 -194
- {adcp-2.17.0.dist-info → adcp-2.19.0.dist-info}/WHEEL +0 -0
- {adcp-2.17.0.dist-info → adcp-2.19.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.17.0.dist-info → adcp-2.19.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.17.0.dist-info → adcp-2.19.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creatives_request.json
|
|
3
|
-
# timestamp:
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/list_creatives_response.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-08T19:25:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/package_request.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-14T17:08:13+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -17,12 +17,12 @@ from ..enums import pacing as pacing_1
|
|
|
17
17
|
|
|
18
18
|
class PackageRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="allow",
|
|
21
21
|
)
|
|
22
22
|
bid_price: Annotated[
|
|
23
23
|
float | None,
|
|
24
24
|
Field(
|
|
25
|
-
description=
|
|
25
|
+
description="Bid price for auction-based CPM pricing (required if using cpm-auction-option)",
|
|
26
26
|
ge=0.0,
|
|
27
27
|
),
|
|
28
28
|
] = None
|
|
@@ -34,13 +34,13 @@ class PackageRequest(AdCPBaseModel):
|
|
|
34
34
|
creative_ids: Annotated[
|
|
35
35
|
list[str] | None,
|
|
36
36
|
Field(
|
|
37
|
-
description=
|
|
37
|
+
description="Creative IDs to assign to this package at creation time (references existing library creatives)"
|
|
38
38
|
),
|
|
39
39
|
] = None
|
|
40
40
|
creatives: Annotated[
|
|
41
41
|
list[creative_asset.CreativeAsset] | None,
|
|
42
42
|
Field(
|
|
43
|
-
description=
|
|
43
|
+
description="Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.",
|
|
44
44
|
max_length=100,
|
|
45
45
|
),
|
|
46
46
|
] = None
|
|
@@ -48,16 +48,25 @@ class PackageRequest(AdCPBaseModel):
|
|
|
48
48
|
format_ids: Annotated[
|
|
49
49
|
list[format_id.FormatId] | None,
|
|
50
50
|
Field(
|
|
51
|
-
description=
|
|
51
|
+
description="Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.",
|
|
52
52
|
min_length=1,
|
|
53
53
|
),
|
|
54
54
|
] = None
|
|
55
|
+
impressions: Annotated[
|
|
56
|
+
float | None, Field(description="Impression goal for this package", ge=0.0)
|
|
57
|
+
] = None
|
|
55
58
|
pacing: pacing_1.Pacing | None = None
|
|
59
|
+
paused: Annotated[
|
|
60
|
+
bool | None,
|
|
61
|
+
Field(
|
|
62
|
+
description="Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false."
|
|
63
|
+
),
|
|
64
|
+
] = False
|
|
56
65
|
pricing_option_id: Annotated[
|
|
57
66
|
str,
|
|
58
67
|
Field(
|
|
59
68
|
description="ID of the selected pricing option from the product's pricing_options array"
|
|
60
69
|
),
|
|
61
70
|
]
|
|
62
|
-
product_id: Annotated[str, Field(description=
|
|
71
|
+
product_id: Annotated[str, Field(description="Product ID for this package")]
|
|
63
72
|
targeting_overlay: targeting.TargetingOverlay | None = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/provide_performance_feedback_request.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-08T19:25:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -17,19 +17,19 @@ from ..enums import metric_type as metric_type_1
|
|
|
17
17
|
|
|
18
18
|
class MeasurementPeriod(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="allow",
|
|
21
21
|
)
|
|
22
22
|
end: Annotated[
|
|
23
|
-
AwareDatetime, Field(description=
|
|
23
|
+
AwareDatetime, Field(description="ISO 8601 end timestamp for measurement period")
|
|
24
24
|
]
|
|
25
25
|
start: Annotated[
|
|
26
|
-
AwareDatetime, Field(description=
|
|
26
|
+
AwareDatetime, Field(description="ISO 8601 start timestamp for measurement period")
|
|
27
27
|
]
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
|
|
31
31
|
model_config = ConfigDict(
|
|
32
|
-
extra=
|
|
32
|
+
extra="allow",
|
|
33
33
|
)
|
|
34
34
|
buyer_ref: Annotated[
|
|
35
35
|
str | None, Field(description="Buyer's reference for the media buy", min_length=1)
|
|
@@ -38,33 +38,33 @@ class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
|
|
|
38
38
|
creative_id: Annotated[
|
|
39
39
|
str | None,
|
|
40
40
|
Field(
|
|
41
|
-
description=
|
|
41
|
+
description="Specific creative asset (if feedback is creative-specific)", min_length=1
|
|
42
42
|
),
|
|
43
43
|
] = None
|
|
44
44
|
ext: ext_1.ExtensionObject | None = None
|
|
45
45
|
feedback_source: Annotated[
|
|
46
|
-
feedback_source_1.FeedbackSource | None, Field(description=
|
|
46
|
+
feedback_source_1.FeedbackSource | None, Field(description="Source of the performance data")
|
|
47
47
|
] = feedback_source_1.FeedbackSource.buyer_attribution
|
|
48
48
|
measurement_period: Annotated[
|
|
49
|
-
MeasurementPeriod, Field(description=
|
|
49
|
+
MeasurementPeriod, Field(description="Time period for performance measurement")
|
|
50
50
|
]
|
|
51
51
|
media_buy_id: Annotated[
|
|
52
52
|
str, Field(description="Publisher's media buy identifier", min_length=1)
|
|
53
53
|
]
|
|
54
54
|
metric_type: Annotated[
|
|
55
|
-
metric_type_1.MetricType | None, Field(description=
|
|
55
|
+
metric_type_1.MetricType | None, Field(description="The business metric being measured")
|
|
56
56
|
] = metric_type_1.MetricType.overall_performance
|
|
57
57
|
package_id: Annotated[
|
|
58
58
|
str | None,
|
|
59
59
|
Field(
|
|
60
|
-
description=
|
|
60
|
+
description="Specific package within the media buy (if feedback is package-specific)",
|
|
61
61
|
min_length=1,
|
|
62
62
|
),
|
|
63
63
|
] = None
|
|
64
64
|
performance_index: Annotated[
|
|
65
65
|
float,
|
|
66
66
|
Field(
|
|
67
|
-
description=
|
|
67
|
+
description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)",
|
|
68
68
|
ge=0.0,
|
|
69
69
|
),
|
|
70
70
|
]
|
|
@@ -72,7 +72,7 @@ class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
|
|
|
72
72
|
|
|
73
73
|
class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
|
|
74
74
|
model_config = ConfigDict(
|
|
75
|
-
extra=
|
|
75
|
+
extra="allow",
|
|
76
76
|
)
|
|
77
77
|
buyer_ref: Annotated[
|
|
78
78
|
str, Field(description="Buyer's reference for the media buy", min_length=1)
|
|
@@ -81,33 +81,33 @@ class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
|
|
|
81
81
|
creative_id: Annotated[
|
|
82
82
|
str | None,
|
|
83
83
|
Field(
|
|
84
|
-
description=
|
|
84
|
+
description="Specific creative asset (if feedback is creative-specific)", min_length=1
|
|
85
85
|
),
|
|
86
86
|
] = None
|
|
87
87
|
ext: ext_1.ExtensionObject | None = None
|
|
88
88
|
feedback_source: Annotated[
|
|
89
|
-
feedback_source_1.FeedbackSource | None, Field(description=
|
|
89
|
+
feedback_source_1.FeedbackSource | None, Field(description="Source of the performance data")
|
|
90
90
|
] = feedback_source_1.FeedbackSource.buyer_attribution
|
|
91
91
|
measurement_period: Annotated[
|
|
92
|
-
MeasurementPeriod, Field(description=
|
|
92
|
+
MeasurementPeriod, Field(description="Time period for performance measurement")
|
|
93
93
|
]
|
|
94
94
|
media_buy_id: Annotated[
|
|
95
95
|
str | None, Field(description="Publisher's media buy identifier", min_length=1)
|
|
96
96
|
] = None
|
|
97
97
|
metric_type: Annotated[
|
|
98
|
-
metric_type_1.MetricType | None, Field(description=
|
|
98
|
+
metric_type_1.MetricType | None, Field(description="The business metric being measured")
|
|
99
99
|
] = metric_type_1.MetricType.overall_performance
|
|
100
100
|
package_id: Annotated[
|
|
101
101
|
str | None,
|
|
102
102
|
Field(
|
|
103
|
-
description=
|
|
103
|
+
description="Specific package within the media buy (if feedback is package-specific)",
|
|
104
104
|
min_length=1,
|
|
105
105
|
),
|
|
106
106
|
] = None
|
|
107
107
|
performance_index: Annotated[
|
|
108
108
|
float,
|
|
109
109
|
Field(
|
|
110
|
-
description=
|
|
110
|
+
description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)",
|
|
111
111
|
ge=0.0,
|
|
112
112
|
),
|
|
113
113
|
]
|
|
@@ -119,7 +119,7 @@ class ProvidePerformanceFeedbackRequest(
|
|
|
119
119
|
root: Annotated[
|
|
120
120
|
ProvidePerformanceFeedbackRequest1 | ProvidePerformanceFeedbackRequest2,
|
|
121
121
|
Field(
|
|
122
|
-
description=
|
|
123
|
-
title=
|
|
122
|
+
description="Request payload for provide_performance_feedback task",
|
|
123
|
+
title="Provide Performance Feedback Request",
|
|
124
124
|
),
|
|
125
125
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/provide_performance_feedback_response.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-08T19:25:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -16,25 +16,25 @@ from ..core import ext as ext_1
|
|
|
16
16
|
|
|
17
17
|
class ProvidePerformanceFeedbackResponse1(AdCPBaseModel):
|
|
18
18
|
model_config = ConfigDict(
|
|
19
|
-
extra=
|
|
19
|
+
extra="allow",
|
|
20
20
|
)
|
|
21
21
|
context: context_1.ContextObject | None = None
|
|
22
22
|
ext: ext_1.ExtensionObject | None = None
|
|
23
23
|
success: Annotated[
|
|
24
24
|
Literal[True],
|
|
25
|
-
Field(description=
|
|
25
|
+
Field(description="Whether the performance feedback was successfully received"),
|
|
26
26
|
]
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class ProvidePerformanceFeedbackResponse2(AdCPBaseModel):
|
|
30
30
|
model_config = ConfigDict(
|
|
31
|
-
extra=
|
|
31
|
+
extra="allow",
|
|
32
32
|
)
|
|
33
33
|
context: context_1.ContextObject | None = None
|
|
34
34
|
errors: Annotated[
|
|
35
35
|
list[error.Error],
|
|
36
36
|
Field(
|
|
37
|
-
description=
|
|
37
|
+
description="Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)",
|
|
38
38
|
min_length=1,
|
|
39
39
|
),
|
|
40
40
|
]
|
|
@@ -47,7 +47,7 @@ class ProvidePerformanceFeedbackResponse(
|
|
|
47
47
|
root: Annotated[
|
|
48
48
|
ProvidePerformanceFeedbackResponse1 | ProvidePerformanceFeedbackResponse2,
|
|
49
49
|
Field(
|
|
50
|
-
description=
|
|
51
|
-
title=
|
|
50
|
+
description="Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.",
|
|
51
|
+
title="Provide Performance Feedback Response",
|
|
52
52
|
),
|
|
53
53
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/sync_creatives_async_response_input_required.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-08T19:25:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -15,17 +15,17 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Reason(Enum):
|
|
18
|
-
APPROVAL_REQUIRED =
|
|
19
|
-
ASSET_CONFIRMATION =
|
|
20
|
-
FORMAT_CLARIFICATION =
|
|
18
|
+
APPROVAL_REQUIRED = "APPROVAL_REQUIRED"
|
|
19
|
+
ASSET_CONFIRMATION = "ASSET_CONFIRMATION"
|
|
20
|
+
FORMAT_CLARIFICATION = "FORMAT_CLARIFICATION"
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class SyncCreativesInputRequired(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
|
reason: Annotated[
|
|
30
|
-
Reason | None, Field(description=
|
|
30
|
+
Reason | None, Field(description="Reason code indicating why buyer input is needed")
|
|
31
31
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: media_buy/sync_creatives_async_response_submitted.json
|
|
3
|
-
# timestamp:
|
|
3
|
+
# timestamp: 2026-01-08T19:25:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ from ..core import ext as ext_1
|
|
|
13
13
|
|
|
14
14
|
class SyncCreativesSubmitted(AdCPBaseModel):
|
|
15
15
|
model_config = ConfigDict(
|
|
16
|
-
extra=
|
|
16
|
+
extra="allow",
|
|
17
17
|
)
|
|
18
18
|
context: context_1.ContextObject | None = None
|
|
19
19
|
ext: ext_1.ExtensionObject | None = None
|