adcp 2.11.1__py3-none-any.whl → 2.12.1__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 -0
- adcp/__init__.py +24 -3
- adcp/__main__.py +31 -3
- adcp/client.py +16 -0
- adcp/protocols/a2a.py +178 -25
- adcp/protocols/base.py +23 -4
- adcp/protocols/mcp.py +44 -0
- adcp/types/__init__.py +2 -26
- adcp/types/_generated.py +179 -158
- adcp/types/generated_poc/adagents.py +221 -25
- adcp/types/generated_poc/core/__init__.py +3 -0
- adcp/types/generated_poc/{activation_key.py → core/activation_key.py} +2 -2
- adcp/types/generated_poc/core/assets/__init__.py +3 -0
- adcp/types/generated_poc/{audio_asset.py → core/assets/audio_asset.py} +2 -2
- adcp/types/generated_poc/{css_asset.py → core/assets/css_asset.py} +2 -2
- adcp/types/generated_poc/{daast_asset.py → core/assets/daast_asset.py} +4 -4
- adcp/types/generated_poc/{html_asset.py → core/assets/html_asset.py} +2 -2
- adcp/types/generated_poc/core/assets/image_asset.py +19 -0
- adcp/types/generated_poc/{javascript_asset.py → core/assets/javascript_asset.py} +3 -3
- adcp/types/generated_poc/{text_asset.py → core/assets/text_asset.py} +2 -2
- adcp/types/generated_poc/{url_asset.py → core/assets/url_asset.py} +3 -3
- adcp/types/generated_poc/{vast_asset.py → core/assets/vast_asset.py} +4 -4
- adcp/types/generated_poc/{video_asset.py → core/assets/video_asset.py} +7 -11
- adcp/types/generated_poc/{webhook_asset.py → core/assets/webhook_asset.py} +3 -3
- adcp/types/generated_poc/{brand_manifest.py → core/brand_manifest.py} +3 -3
- adcp/types/generated_poc/core/context.py +15 -0
- adcp/types/generated_poc/{creative_asset.py → core/creative_asset.py} +25 -6
- adcp/types/generated_poc/{creative_assignment.py → core/creative_assignment.py} +2 -2
- adcp/types/generated_poc/{creative_filters.py → core/creative_filters.py} +12 -3
- adcp/types/generated_poc/{creative_manifest.py → core/creative_manifest.py} +13 -6
- adcp/types/generated_poc/{creative_policy.py → core/creative_policy.py} +3 -3
- adcp/types/generated_poc/{delivery_metrics.py → core/delivery_metrics.py} +2 -2
- adcp/types/generated_poc/{deployment.py → core/deployment.py} +2 -2
- adcp/types/generated_poc/{destination.py → core/destination.py} +2 -2
- adcp/types/generated_poc/core/dimensions.py +18 -0
- adcp/types/generated_poc/{error.py → core/error.py} +2 -2
- adcp/types/generated_poc/core/ext.py +15 -0
- adcp/types/generated_poc/{format.py → core/format.py} +85 -54
- adcp/types/generated_poc/core/format_id.py +50 -0
- adcp/types/generated_poc/{frequency_cap.py → core/frequency_cap.py} +2 -2
- adcp/types/generated_poc/{measurement.py → core/measurement.py} +2 -2
- adcp/types/generated_poc/{media_buy.py → core/media_buy.py} +6 -3
- adcp/types/generated_poc/{package.py → core/package.py} +13 -6
- adcp/types/generated_poc/{performance_feedback.py → core/performance_feedback.py} +4 -4
- adcp/types/generated_poc/{placement.py → core/placement.py} +3 -3
- adcp/types/generated_poc/{product.py → core/product.py} +16 -6
- adcp/types/generated_poc/core/product_filters.py +97 -0
- adcp/types/generated_poc/{promoted_offerings.py → core/promoted_offerings.py} +2 -2
- adcp/types/generated_poc/{promoted_products.py → core/promoted_products.py} +2 -2
- adcp/types/generated_poc/{property.py → core/property.py} +5 -4
- adcp/types/generated_poc/{property_id.py → core/property_id.py} +2 -2
- adcp/types/generated_poc/{property_tag.py → core/property_tag.py} +2 -2
- adcp/types/generated_poc/{protocol_envelope.py → core/protocol_envelope.py} +3 -3
- adcp/types/generated_poc/{publisher_property_selector.py → core/publisher_property_selector.py} +2 -2
- adcp/types/generated_poc/{push_notification_config.py → core/push_notification_config.py} +3 -3
- adcp/types/generated_poc/{reporting_capabilities.py → core/reporting_capabilities.py} +3 -3
- adcp/types/generated_poc/{response.py → core/response.py} +2 -2
- adcp/types/generated_poc/{signal_filters.py → core/signal_filters.py} +3 -3
- adcp/types/generated_poc/{sub_asset.py → core/sub_asset.py} +2 -2
- adcp/types/generated_poc/{targeting.py → core/targeting.py} +2 -2
- adcp/types/generated_poc/{webhook_payload.py → core/webhook_payload.py} +4 -4
- adcp/types/generated_poc/creative/__init__.py +3 -0
- adcp/types/generated_poc/creative/list_creative_formats_request.py +88 -0
- adcp/types/generated_poc/creative/list_creative_formats_response.py +55 -0
- adcp/types/generated_poc/{preview_creative_request.py → creative/preview_creative_request.py} +13 -18
- adcp/types/generated_poc/{preview_creative_response.py → creative/preview_creative_response.py} +8 -14
- adcp/types/generated_poc/{preview_render.py → creative/preview_render.py} +2 -2
- adcp/types/generated_poc/enums/__init__.py +3 -0
- adcp/types/generated_poc/{adcp_domain.py → enums/adcp_domain.py} +2 -2
- adcp/types/generated_poc/{asset_content_type.py → enums/asset_content_type.py} +2 -2
- adcp/types/generated_poc/{auth_scheme.py → enums/auth_scheme.py} +2 -2
- adcp/types/generated_poc/{available_metric.py → enums/available_metric.py} +2 -2
- adcp/types/generated_poc/{channels.py → enums/channels.py} +2 -2
- adcp/types/generated_poc/{co_branding_requirement.py → enums/co_branding_requirement.py} +2 -2
- adcp/types/generated_poc/{creative_action.py → enums/creative_action.py} +2 -2
- adcp/types/generated_poc/{creative_agent_capability.py → enums/creative_agent_capability.py} +2 -2
- adcp/types/generated_poc/{creative_sort_field.py → enums/creative_sort_field.py} +2 -2
- adcp/types/generated_poc/{creative_status.py → enums/creative_status.py} +2 -2
- adcp/types/generated_poc/{daast_tracking_event.py → enums/daast_tracking_event.py} +2 -2
- adcp/types/generated_poc/{daast_version.py → enums/daast_version.py} +2 -2
- adcp/types/generated_poc/{delivery_type.py → enums/delivery_type.py} +2 -2
- adcp/types/generated_poc/{dimension_unit.py → enums/dimension_unit.py} +2 -2
- adcp/types/generated_poc/{feed_format.py → enums/feed_format.py} +2 -2
- adcp/types/generated_poc/{feedback_source.py → enums/feedback_source.py} +2 -2
- adcp/types/generated_poc/{format_category.py → enums/format_category.py} +2 -2
- adcp/types/generated_poc/enums/format_id_parameter.py +12 -0
- adcp/types/generated_poc/{frequency_cap_scope.py → enums/frequency_cap_scope.py} +2 -2
- adcp/types/generated_poc/{history_entry_type.py → enums/history_entry_type.py} +2 -2
- adcp/types/generated_poc/{http_method.py → enums/http_method.py} +2 -2
- adcp/types/generated_poc/{identifier_types.py → enums/identifier_types.py} +2 -2
- adcp/types/generated_poc/{javascript_module_type.py → enums/javascript_module_type.py} +2 -2
- adcp/types/generated_poc/{landing_page_requirement.py → enums/landing_page_requirement.py} +2 -2
- adcp/types/generated_poc/{markdown_flavor.py → enums/markdown_flavor.py} +2 -2
- adcp/types/generated_poc/{media_buy_status.py → enums/media_buy_status.py} +2 -2
- adcp/types/generated_poc/{metric_type.py → enums/metric_type.py} +2 -2
- adcp/types/generated_poc/{notification_type.py → enums/notification_type.py} +2 -2
- adcp/types/generated_poc/{pacing.py → enums/pacing.py} +2 -2
- adcp/types/generated_poc/{preview_output_format.py → enums/preview_output_format.py} +2 -2
- adcp/types/generated_poc/{pricing_model.py → enums/pricing_model.py} +2 -2
- adcp/types/generated_poc/{property_type.py → enums/property_type.py} +2 -2
- adcp/types/generated_poc/{publisher_identifier_types.py → enums/publisher_identifier_types.py} +2 -2
- adcp/types/generated_poc/{reporting_frequency.py → enums/reporting_frequency.py} +2 -2
- adcp/types/generated_poc/{signal_catalog_type.py → enums/signal_catalog_type.py} +2 -2
- adcp/types/generated_poc/{sort_direction.py → enums/sort_direction.py} +2 -2
- adcp/types/generated_poc/{standard_format_ids.py → enums/standard_format_ids.py} +2 -2
- adcp/types/generated_poc/{task_status.py → enums/task_status.py} +2 -2
- adcp/types/generated_poc/{task_type.py → enums/task_type.py} +2 -2
- adcp/types/generated_poc/{update_frequency.py → enums/update_frequency.py} +2 -2
- adcp/types/generated_poc/{url_asset_type.py → enums/url_asset_type.py} +2 -2
- adcp/types/generated_poc/{validation_mode.py → enums/validation_mode.py} +2 -2
- adcp/types/generated_poc/{vast_tracking_event.py → enums/vast_tracking_event.py} +2 -2
- adcp/types/generated_poc/{vast_version.py → enums/vast_version.py} +2 -2
- adcp/types/generated_poc/{webhook_response_type.py → enums/webhook_response_type.py} +2 -2
- adcp/types/generated_poc/{webhook_security_method.py → enums/webhook_security_method.py} +2 -2
- adcp/types/generated_poc/media_buy/__init__.py +3 -0
- adcp/types/generated_poc/{build_creative_request.py → media_buy/build_creative_request.py} +9 -11
- adcp/types/generated_poc/{build_creative_response.py → media_buy/build_creative_response.py} +11 -17
- adcp/types/generated_poc/{create_media_buy_request.py → media_buy/create_media_buy_request.py} +9 -11
- adcp/types/generated_poc/{create_media_buy_response.py → media_buy/create_media_buy_response.py} +11 -16
- adcp/types/generated_poc/{get_media_buy_delivery_request.py → media_buy/get_media_buy_delivery_request.py} +8 -10
- adcp/types/generated_poc/{get_media_buy_delivery_response.py → media_buy/get_media_buy_delivery_response.py} +27 -12
- adcp/types/generated_poc/{get_products_request.py → media_buy/get_products_request.py} +9 -11
- adcp/types/generated_poc/{get_products_response.py → media_buy/get_products_response.py} +9 -10
- adcp/types/generated_poc/{list_authorized_properties_request.py → media_buy/list_authorized_properties_request.py} +8 -9
- adcp/types/generated_poc/{list_authorized_properties_response.py → media_buy/list_authorized_properties_response.py} +9 -10
- adcp/types/generated_poc/{list_creative_formats_request.py → media_buy/list_creative_formats_request.py} +9 -10
- adcp/types/generated_poc/{list_creative_formats_response.py → media_buy/list_creative_formats_response.py} +10 -10
- adcp/types/generated_poc/{list_creatives_request.py → media_buy/list_creatives_request.py} +9 -10
- adcp/types/generated_poc/{list_creatives_response.py → media_buy/list_creatives_response.py} +14 -15
- adcp/types/generated_poc/{package_request.py → media_buy/package_request.py} +7 -5
- adcp/types/generated_poc/{provide_performance_feedback_request.py → media_buy/provide_performance_feedback_request.py} +11 -17
- adcp/types/generated_poc/{provide_performance_feedback_response.py → media_buy/provide_performance_feedback_response.py} +10 -16
- adcp/types/generated_poc/{sync_creatives_request.py → media_buy/sync_creatives_request.py} +14 -15
- adcp/types/generated_poc/{sync_creatives_response.py → media_buy/sync_creatives_response.py} +11 -16
- adcp/types/generated_poc/{update_media_buy_request.py → media_buy/update_media_buy_request.py} +63 -28
- adcp/types/generated_poc/{update_media_buy_response.py → media_buy/update_media_buy_response.py} +11 -16
- adcp/types/generated_poc/pricing_options/__init__.py +3 -0
- adcp/types/generated_poc/{cpc_option.py → pricing_options/cpc_option.py} +2 -2
- adcp/types/generated_poc/{cpcv_option.py → pricing_options/cpcv_option.py} +2 -2
- adcp/types/generated_poc/{cpm_auction_option.py → pricing_options/cpm_auction_option.py} +2 -2
- adcp/types/generated_poc/{cpm_fixed_option.py → pricing_options/cpm_fixed_option.py} +2 -2
- adcp/types/generated_poc/{cpp_option.py → pricing_options/cpp_option.py} +2 -2
- adcp/types/generated_poc/{cpv_option.py → pricing_options/cpv_option.py} +2 -2
- adcp/types/generated_poc/{flat_rate_option.py → pricing_options/flat_rate_option.py} +2 -2
- adcp/types/generated_poc/{vcpm_auction_option.py → pricing_options/vcpm_auction_option.py} +2 -2
- adcp/types/generated_poc/{vcpm_fixed_option.py → pricing_options/vcpm_fixed_option.py} +2 -2
- adcp/types/generated_poc/protocols/__init__.py +3 -0
- adcp/types/generated_poc/protocols/adcp_extension.py +37 -0
- adcp/types/generated_poc/signals/__init__.py +3 -0
- adcp/types/generated_poc/{activate_signal_request.py → signals/activate_signal_request.py} +8 -10
- adcp/types/generated_poc/{activate_signal_response.py → signals/activate_signal_response.py} +10 -16
- adcp/types/generated_poc/{get_signals_request.py → signals/get_signals_request.py} +9 -10
- adcp/types/generated_poc/{get_signals_response.py → signals/get_signals_response.py} +9 -10
- adcp/utils/preview_cache.py +15 -3
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/METADATA +1 -1
- adcp-2.12.1.dist-info/RECORD +176 -0
- adcp/types/generated_poc/format_id.py +0 -29
- adcp/types/generated_poc/image_asset.py +0 -23
- adcp/types/generated_poc/markdown_asset.py +0 -39
- adcp/types/generated_poc/package_status.py +0 -14
- adcp/types/generated_poc/product_filters.py +0 -36
- adcp/types/generated_poc/tasks_get_request.py +0 -29
- adcp/types/generated_poc/tasks_get_response.py +0 -112
- adcp/types/generated_poc/tasks_list_request.py +0 -115
- adcp/types/generated_poc/tasks_list_response.py +0 -122
- adcp-2.11.1.dist-info/RECORD +0 -166
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/WHEEL +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/entry_points.txt +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.11.1.dist-info → adcp-2.12.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: core/product_filters.json
|
|
3
|
+
# timestamp: 2025-11-22T19:54:03+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from datetime import date
|
|
8
|
+
from typing import Annotated
|
|
9
|
+
|
|
10
|
+
from adcp.types.base import AdCPBaseModel
|
|
11
|
+
from pydantic import ConfigDict, Field, RootModel
|
|
12
|
+
|
|
13
|
+
from ..enums import channels as channels_1
|
|
14
|
+
from ..enums import delivery_type as delivery_type_1
|
|
15
|
+
from ..enums import format_category
|
|
16
|
+
from . import format_id
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class BudgetRange(AdCPBaseModel):
|
|
20
|
+
model_config = ConfigDict(
|
|
21
|
+
extra='forbid',
|
|
22
|
+
)
|
|
23
|
+
currency: Annotated[
|
|
24
|
+
str,
|
|
25
|
+
Field(
|
|
26
|
+
description="ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP')", pattern='^[A-Z]{3}$'
|
|
27
|
+
),
|
|
28
|
+
]
|
|
29
|
+
max: Annotated[float | None, Field(description='Maximum budget amount', ge=0.0)] = None
|
|
30
|
+
min: Annotated[float, Field(description='Minimum budget amount', ge=0.0)]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class BudgetRange1(AdCPBaseModel):
|
|
34
|
+
model_config = ConfigDict(
|
|
35
|
+
extra='forbid',
|
|
36
|
+
)
|
|
37
|
+
currency: Annotated[
|
|
38
|
+
str,
|
|
39
|
+
Field(
|
|
40
|
+
description="ISO 4217 currency code (e.g., 'USD', 'EUR', 'GBP')", pattern='^[A-Z]{3}$'
|
|
41
|
+
),
|
|
42
|
+
]
|
|
43
|
+
max: Annotated[float, Field(description='Maximum budget amount', ge=0.0)]
|
|
44
|
+
min: Annotated[float | None, Field(description='Minimum budget amount', ge=0.0)] = None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class Country(RootModel[str]):
|
|
48
|
+
root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class ProductFilters(AdCPBaseModel):
|
|
52
|
+
model_config = ConfigDict(
|
|
53
|
+
extra='forbid',
|
|
54
|
+
)
|
|
55
|
+
budget_range: Annotated[
|
|
56
|
+
BudgetRange | BudgetRange1 | None,
|
|
57
|
+
Field(description='Budget range to filter appropriate products'),
|
|
58
|
+
] = None
|
|
59
|
+
channels: Annotated[
|
|
60
|
+
list[channels_1.AdvertisingChannels] | None,
|
|
61
|
+
Field(description="Filter by advertising channels (e.g., ['display', 'video', 'dooh'])"),
|
|
62
|
+
] = None
|
|
63
|
+
countries: Annotated[
|
|
64
|
+
list[Country] | None,
|
|
65
|
+
Field(
|
|
66
|
+
description="Filter by target countries using ISO 3166-1 alpha-2 country codes (e.g., ['US', 'CA', 'GB'])"
|
|
67
|
+
),
|
|
68
|
+
] = None
|
|
69
|
+
delivery_type: delivery_type_1.DeliveryType | None = None
|
|
70
|
+
end_date: Annotated[
|
|
71
|
+
date | None,
|
|
72
|
+
Field(
|
|
73
|
+
description='Campaign end date (ISO 8601 date format: YYYY-MM-DD) for availability checks'
|
|
74
|
+
),
|
|
75
|
+
] = None
|
|
76
|
+
format_ids: Annotated[
|
|
77
|
+
list[format_id.FormatId] | None, Field(description='Filter by specific format IDs')
|
|
78
|
+
] = None
|
|
79
|
+
format_types: Annotated[
|
|
80
|
+
list[format_category.FormatCategory] | None, Field(description='Filter by format types')
|
|
81
|
+
] = None
|
|
82
|
+
is_fixed_price: Annotated[
|
|
83
|
+
bool | None, Field(description='Filter for fixed price vs auction products')
|
|
84
|
+
] = None
|
|
85
|
+
min_exposures: Annotated[
|
|
86
|
+
int | None,
|
|
87
|
+
Field(description='Minimum exposures/impressions needed for measurement validity', ge=1),
|
|
88
|
+
] = None
|
|
89
|
+
standard_formats_only: Annotated[
|
|
90
|
+
bool | None, Field(description='Only return products accepting IAB standard formats')
|
|
91
|
+
] = None
|
|
92
|
+
start_date: Annotated[
|
|
93
|
+
date | None,
|
|
94
|
+
Field(
|
|
95
|
+
description='Campaign start date (ISO 8601 date format: YYYY-MM-DD) for availability checks'
|
|
96
|
+
),
|
|
97
|
+
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename: property.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/property.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,8 +9,9 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from
|
|
12
|
+
from ..enums import identifier_types
|
|
13
|
+
from ..enums import property_type as property_type_1
|
|
14
|
+
from . import property_tag
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class Identifier(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/protocol_envelope.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,8 +9,8 @@ from typing import Annotated, Any
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field
|
|
11
11
|
|
|
12
|
+
from ..enums import task_status
|
|
12
13
|
from . import push_notification_config as push_notification_config_1
|
|
13
|
-
from . import task_status
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class ProtocolEnvelope(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/push_notification_config.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AnyUrl, ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..enums import auth_scheme
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class Authentication(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/reporting_capabilities.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..enums import available_metric, reporting_frequency
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ReportingCapabilities(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/signal_filters.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ from typing import Annotated
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
12
|
+
from ..enums import signal_catalog_type
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class SignalFilters(AdCPBaseModel):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: core/webhook_payload.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,8 +9,8 @@ from typing import Annotated, Any
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AwareDatetime, ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from
|
|
12
|
+
from ..enums import adcp_domain, task_status
|
|
13
|
+
from ..enums import task_type as task_type_1
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Progress(AdCPBaseModel):
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: creative/list_creative_formats_request.json
|
|
3
|
+
# timestamp: 2025-11-22T19:54:03+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from typing import Annotated
|
|
9
|
+
|
|
10
|
+
from adcp.types.base import AdCPBaseModel
|
|
11
|
+
from pydantic import ConfigDict, Field
|
|
12
|
+
|
|
13
|
+
from ..core import context as context_1
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import format_id
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AssetType(Enum):
|
|
19
|
+
image = 'image'
|
|
20
|
+
video = 'video'
|
|
21
|
+
audio = 'audio'
|
|
22
|
+
text = 'text'
|
|
23
|
+
html = 'html'
|
|
24
|
+
javascript = 'javascript'
|
|
25
|
+
url = 'url'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Type(Enum):
|
|
29
|
+
audio = 'audio'
|
|
30
|
+
video = 'video'
|
|
31
|
+
display = 'display'
|
|
32
|
+
dooh = 'dooh'
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ListCreativeFormatsRequestCreativeAgent(AdCPBaseModel):
|
|
36
|
+
model_config = ConfigDict(
|
|
37
|
+
extra='forbid',
|
|
38
|
+
)
|
|
39
|
+
asset_types: Annotated[
|
|
40
|
+
list[AssetType] | None,
|
|
41
|
+
Field(
|
|
42
|
+
description="Filter to formats that include these asset types. For third-party tags, search for 'html' or 'javascript'. E.g., ['image', 'text'] returns formats with images and text, ['javascript'] returns formats accepting JavaScript tags."
|
|
43
|
+
),
|
|
44
|
+
] = None
|
|
45
|
+
context: context_1.ContextObject | None = None
|
|
46
|
+
ext: ext_1.ExtensionObject | None = None
|
|
47
|
+
format_ids: Annotated[
|
|
48
|
+
list[format_id.FormatId] | None, Field(description='Return only these specific format IDs')
|
|
49
|
+
] = None
|
|
50
|
+
is_responsive: Annotated[
|
|
51
|
+
bool | None,
|
|
52
|
+
Field(
|
|
53
|
+
description='Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.'
|
|
54
|
+
),
|
|
55
|
+
] = None
|
|
56
|
+
max_height: Annotated[
|
|
57
|
+
int | None,
|
|
58
|
+
Field(
|
|
59
|
+
description='Maximum height in pixels (inclusive). Returns formats with height <= this value. Omit for responsive/fluid formats.'
|
|
60
|
+
),
|
|
61
|
+
] = None
|
|
62
|
+
max_width: Annotated[
|
|
63
|
+
int | None,
|
|
64
|
+
Field(
|
|
65
|
+
description='Maximum width in pixels (inclusive). Returns formats with width <= this value. Omit for responsive/fluid formats.'
|
|
66
|
+
),
|
|
67
|
+
] = None
|
|
68
|
+
min_height: Annotated[
|
|
69
|
+
int | None,
|
|
70
|
+
Field(
|
|
71
|
+
description='Minimum height in pixels (inclusive). Returns formats with height >= this value.'
|
|
72
|
+
),
|
|
73
|
+
] = None
|
|
74
|
+
min_width: Annotated[
|
|
75
|
+
int | None,
|
|
76
|
+
Field(
|
|
77
|
+
description='Minimum width in pixels (inclusive). Returns formats with width >= this value.'
|
|
78
|
+
),
|
|
79
|
+
] = None
|
|
80
|
+
name_search: Annotated[
|
|
81
|
+
str | None, Field(description='Search for formats by name (case-insensitive partial match)')
|
|
82
|
+
] = None
|
|
83
|
+
type: Annotated[
|
|
84
|
+
Type | None,
|
|
85
|
+
Field(
|
|
86
|
+
description='Filter by format type (technical categories with distinct requirements)'
|
|
87
|
+
),
|
|
88
|
+
] = None
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: creative/list_creative_formats_response.json
|
|
3
|
+
# timestamp: 2025-11-22T15:23:24+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Annotated
|
|
8
|
+
|
|
9
|
+
from adcp.types.base import AdCPBaseModel
|
|
10
|
+
from pydantic import AnyUrl, ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import error
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import format
|
|
16
|
+
from ..enums import creative_agent_capability
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class CreativeAgent(AdCPBaseModel):
|
|
20
|
+
agent_name: Annotated[
|
|
21
|
+
str | None, Field(description='Human-readable name for the creative agent')
|
|
22
|
+
] = None
|
|
23
|
+
agent_url: Annotated[
|
|
24
|
+
AnyUrl,
|
|
25
|
+
Field(
|
|
26
|
+
description="Base URL for the creative agent (e.g., 'https://reference.adcp.org', 'https://dco.example.com'). Call list_creative_formats on this URL to get its formats."
|
|
27
|
+
),
|
|
28
|
+
]
|
|
29
|
+
capabilities: Annotated[
|
|
30
|
+
list[creative_agent_capability.CreativeAgentCapability] | None,
|
|
31
|
+
Field(description='Capabilities this creative agent provides'),
|
|
32
|
+
] = None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ListCreativeFormatsResponseCreativeAgent(AdCPBaseModel):
|
|
36
|
+
model_config = ConfigDict(
|
|
37
|
+
extra='forbid',
|
|
38
|
+
)
|
|
39
|
+
context: context_1.ContextObject | None = None
|
|
40
|
+
creative_agents: Annotated[
|
|
41
|
+
list[CreativeAgent] | None,
|
|
42
|
+
Field(
|
|
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
|
+
),
|
|
45
|
+
] = None
|
|
46
|
+
errors: Annotated[
|
|
47
|
+
list[error.Error] | None, Field(description='Task-specific errors and warnings')
|
|
48
|
+
] = None
|
|
49
|
+
ext: ext_1.ExtensionObject | None = None
|
|
50
|
+
formats: Annotated[
|
|
51
|
+
list[format.Format],
|
|
52
|
+
Field(
|
|
53
|
+
description="Full format definitions for all formats this agent supports. Each format's authoritative source is indicated by its agent_url field."
|
|
54
|
+
),
|
|
55
|
+
]
|
adcp/types/generated_poc/{preview_creative_request.py → creative/preview_creative_request.py}
RENAMED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: creative/preview_creative_request.json
|
|
3
|
+
# timestamp: 2025-11-22T19:54:03+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from typing import Annotated,
|
|
7
|
+
from typing import Annotated, Literal
|
|
8
8
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import creative_manifest as creative_manifest_1
|
|
14
|
+
from ..core import ext as ext_1
|
|
15
|
+
from ..core import format_id as format_id_1
|
|
16
|
+
from ..enums import preview_output_format
|
|
15
17
|
|
|
16
18
|
|
|
17
19
|
class Input(AdCPBaseModel):
|
|
@@ -56,18 +58,14 @@ class PreviewCreativeRequest1(AdCPBaseModel):
|
|
|
56
58
|
model_config = ConfigDict(
|
|
57
59
|
extra='forbid',
|
|
58
60
|
)
|
|
59
|
-
context:
|
|
60
|
-
dict[str, Any] | None,
|
|
61
|
-
Field(
|
|
62
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
63
|
-
),
|
|
64
|
-
] = None
|
|
61
|
+
context: context_1.ContextObject | None = None
|
|
65
62
|
creative_manifest: Annotated[
|
|
66
63
|
creative_manifest_1.CreativeManifest,
|
|
67
64
|
Field(
|
|
68
65
|
description='Complete creative manifest with all required assets (including promoted_offerings if required by the format)'
|
|
69
66
|
),
|
|
70
67
|
]
|
|
68
|
+
ext: ext_1.ExtensionObject | None = None
|
|
71
69
|
format_id: Annotated[
|
|
72
70
|
format_id_1.FormatId, Field(description='Format identifier for rendering the preview')
|
|
73
71
|
]
|
|
@@ -122,12 +120,8 @@ class PreviewCreativeRequest2(AdCPBaseModel):
|
|
|
122
120
|
model_config = ConfigDict(
|
|
123
121
|
extra='forbid',
|
|
124
122
|
)
|
|
125
|
-
context:
|
|
126
|
-
|
|
127
|
-
Field(
|
|
128
|
-
description='Initiator-provided context included in the request payload. Agents must echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
129
|
-
),
|
|
130
|
-
] = None
|
|
123
|
+
context: context_1.ContextObject | None = None
|
|
124
|
+
ext: ext_1.ExtensionObject | None = None
|
|
131
125
|
output_format: Annotated[
|
|
132
126
|
preview_output_format.PreviewOutputFormat | None,
|
|
133
127
|
Field(
|
|
@@ -152,6 +146,7 @@ class PreviewCreativeRequest(RootModel[PreviewCreativeRequest1 | PreviewCreative
|
|
|
152
146
|
root: Annotated[
|
|
153
147
|
PreviewCreativeRequest1 | PreviewCreativeRequest2,
|
|
154
148
|
Field(
|
|
149
|
+
discriminator='request_type',
|
|
155
150
|
description='Request to generate previews of one or more creative manifests. Accepts either a single creative request or an array of requests for batch processing.',
|
|
156
151
|
title='Preview Creative Request',
|
|
157
152
|
),
|
adcp/types/generated_poc/{preview_creative_response.py → creative/preview_creative_response.py}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
|
-
# filename:
|
|
3
|
-
# timestamp: 2025-11-
|
|
2
|
+
# filename: creative/preview_creative_response.json
|
|
3
|
+
# timestamp: 2025-11-22T19:16:02+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,6 +9,8 @@ from typing import Annotated, Any, Literal
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import AnyUrl, AwareDatetime, ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
+
from ..core import context as context_1
|
|
13
|
+
from ..core import ext as ext_1
|
|
12
14
|
from . import preview_render
|
|
13
15
|
|
|
14
16
|
|
|
@@ -64,15 +66,11 @@ class PreviewCreativeResponse1(AdCPBaseModel):
|
|
|
64
66
|
model_config = ConfigDict(
|
|
65
67
|
extra='forbid',
|
|
66
68
|
)
|
|
67
|
-
context:
|
|
68
|
-
dict[str, Any] | None,
|
|
69
|
-
Field(
|
|
70
|
-
description='Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
71
|
-
),
|
|
72
|
-
] = None
|
|
69
|
+
context: context_1.ContextObject | None = None
|
|
73
70
|
expires_at: Annotated[
|
|
74
71
|
AwareDatetime, Field(description='ISO 8601 timestamp when preview links expire')
|
|
75
72
|
]
|
|
73
|
+
ext: ext_1.ExtensionObject | None = None
|
|
76
74
|
interactive_url: Annotated[
|
|
77
75
|
AnyUrl | None,
|
|
78
76
|
Field(
|
|
@@ -146,12 +144,8 @@ class PreviewCreativeResponse2(AdCPBaseModel):
|
|
|
146
144
|
model_config = ConfigDict(
|
|
147
145
|
extra='forbid',
|
|
148
146
|
)
|
|
149
|
-
context:
|
|
150
|
-
|
|
151
|
-
Field(
|
|
152
|
-
description='Initiator-provided context echoed inside the preview payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
153
|
-
),
|
|
154
|
-
] = None
|
|
147
|
+
context: context_1.ContextObject | None = None
|
|
148
|
+
ext: ext_1.ExtensionObject | None = None
|
|
155
149
|
response_type: Annotated[
|
|
156
150
|
Literal['batch'],
|
|
157
151
|
Field(description='Discriminator indicating this is a batch preview response'),
|