adcp 2.9.0__py3-none-any.whl → 2.11.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 +57 -53
- adcp/client.py +9 -11
- adcp/simple.py +105 -1
- adcp/types/__init__.py +330 -300
- adcp/types/_generated.py +99 -65
- adcp/types/generated_poc/adcp_domain.py +12 -0
- adcp/types/generated_poc/auth_scheme.py +12 -0
- adcp/types/generated_poc/available_metric.py +19 -0
- adcp/types/generated_poc/co_branding_requirement.py +13 -0
- adcp/types/generated_poc/creative_action.py +15 -0
- adcp/types/generated_poc/creative_agent_capability.py +14 -0
- adcp/types/generated_poc/creative_filters.py +77 -0
- adcp/types/generated_poc/creative_policy.py +9 -15
- adcp/types/generated_poc/creative_sort_field.py +16 -0
- adcp/types/generated_poc/daast_asset.py +9 -24
- adcp/types/generated_poc/daast_tracking_event.py +21 -0
- adcp/types/generated_poc/daast_version.py +12 -0
- adcp/types/generated_poc/dimension_unit.py +14 -0
- adcp/types/generated_poc/feed_format.py +13 -0
- adcp/types/generated_poc/feedback_source.py +14 -0
- adcp/types/generated_poc/format.py +5 -11
- adcp/types/generated_poc/get_media_buy_delivery_request.py +3 -19
- adcp/types/generated_poc/get_products_request.py +3 -36
- adcp/types/generated_poc/get_signals_request.py +3 -26
- adcp/types/generated_poc/get_signals_response.py +5 -10
- adcp/types/generated_poc/history_entry_type.py +12 -0
- adcp/types/generated_poc/http_method.py +12 -0
- adcp/types/generated_poc/javascript_asset.py +6 -8
- adcp/types/generated_poc/javascript_module_type.py +13 -0
- adcp/types/generated_poc/landing_page_requirement.py +13 -0
- adcp/types/generated_poc/list_creative_formats_response.py +4 -11
- adcp/types/generated_poc/list_creatives_request.py +10 -87
- adcp/types/generated_poc/list_creatives_response.py +13 -17
- adcp/types/generated_poc/markdown_asset.py +4 -8
- adcp/types/generated_poc/markdown_flavor.py +12 -0
- adcp/types/generated_poc/metric_type.py +18 -0
- adcp/types/generated_poc/notification_type.py +14 -0
- adcp/types/generated_poc/performance_feedback.py +9 -20
- adcp/types/generated_poc/preview_creative_request.py +8 -13
- adcp/types/generated_poc/preview_output_format.py +12 -0
- adcp/types/generated_poc/product_filters.py +36 -0
- adcp/types/generated_poc/property.py +5 -13
- adcp/types/generated_poc/property_type.py +17 -0
- adcp/types/generated_poc/provide_performance_feedback_request.py +71 -25
- adcp/types/generated_poc/push_notification_config.py +3 -7
- adcp/types/generated_poc/reporting_capabilities.py +4 -21
- adcp/types/generated_poc/reporting_frequency.py +13 -0
- adcp/types/generated_poc/signal_catalog_type.py +13 -0
- adcp/types/generated_poc/signal_filters.py +29 -0
- adcp/types/generated_poc/sort_direction.py +12 -0
- adcp/types/generated_poc/sync_creatives_request.py +4 -9
- adcp/types/generated_poc/sync_creatives_response.py +5 -12
- adcp/types/generated_poc/tasks_list_request.py +9 -15
- adcp/types/generated_poc/update_frequency.py +14 -0
- adcp/types/generated_poc/url_asset.py +3 -8
- adcp/types/generated_poc/url_asset_type.py +13 -0
- adcp/types/generated_poc/validation_mode.py +12 -0
- adcp/types/generated_poc/vast_asset.py +13 -36
- adcp/types/generated_poc/vast_tracking_event.py +26 -0
- adcp/types/generated_poc/vast_version.py +15 -0
- adcp/types/generated_poc/webhook_asset.py +10 -22
- adcp/types/generated_poc/webhook_payload.py +3 -9
- adcp/types/generated_poc/webhook_response_type.py +14 -0
- adcp/types/generated_poc/webhook_security_method.py +13 -0
- adcp/utils/preview_cache.py +5 -5
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/METADATA +1 -1
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/RECORD +71 -38
- adcp/types/stable.py +0 -449
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/WHEEL +0 -0
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.9.0.dist-info → adcp-2.11.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: performance-feedback.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -10,12 +10,8 @@ from typing import Annotated
|
|
|
10
10
|
from adcp.types.base import AdCPBaseModel
|
|
11
11
|
from pydantic import AwareDatetime, ConfigDict, Field
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
buyer_attribution = 'buyer_attribution'
|
|
16
|
-
third_party_measurement = 'third_party_measurement'
|
|
17
|
-
platform_analytics = 'platform_analytics'
|
|
18
|
-
verification_partner = 'verification_partner'
|
|
13
|
+
from . import feedback_source as feedback_source_1
|
|
14
|
+
from . import metric_type as metric_type_1
|
|
19
15
|
|
|
20
16
|
|
|
21
17
|
class MeasurementPeriod(AdCPBaseModel):
|
|
@@ -30,17 +26,6 @@ class MeasurementPeriod(AdCPBaseModel):
|
|
|
30
26
|
]
|
|
31
27
|
|
|
32
28
|
|
|
33
|
-
class MetricType(Enum):
|
|
34
|
-
overall_performance = 'overall_performance'
|
|
35
|
-
conversion_rate = 'conversion_rate'
|
|
36
|
-
brand_lift = 'brand_lift'
|
|
37
|
-
click_through_rate = 'click_through_rate'
|
|
38
|
-
completion_rate = 'completion_rate'
|
|
39
|
-
viewability = 'viewability'
|
|
40
|
-
brand_safety = 'brand_safety'
|
|
41
|
-
cost_efficiency = 'cost_efficiency'
|
|
42
|
-
|
|
43
|
-
|
|
44
29
|
class Status(Enum):
|
|
45
30
|
accepted = 'accepted'
|
|
46
31
|
queued = 'queued'
|
|
@@ -64,12 +49,16 @@ class PerformanceFeedback(AdCPBaseModel):
|
|
|
64
49
|
feedback_id: Annotated[
|
|
65
50
|
str, Field(description='Unique identifier for this performance feedback submission')
|
|
66
51
|
]
|
|
67
|
-
feedback_source: Annotated[
|
|
52
|
+
feedback_source: Annotated[
|
|
53
|
+
feedback_source_1.FeedbackSource, Field(description='Source of the performance data')
|
|
54
|
+
]
|
|
68
55
|
measurement_period: Annotated[
|
|
69
56
|
MeasurementPeriod, Field(description='Time period for performance measurement')
|
|
70
57
|
]
|
|
71
58
|
media_buy_id: Annotated[str, Field(description="Publisher's media buy identifier")]
|
|
72
|
-
metric_type: Annotated[
|
|
59
|
+
metric_type: Annotated[
|
|
60
|
+
metric_type_1.MetricType, Field(description='The business metric being measured')
|
|
61
|
+
]
|
|
73
62
|
package_id: Annotated[
|
|
74
63
|
str | None,
|
|
75
64
|
Field(
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: preview-creative-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated, Any, Literal
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
@@ -12,6 +11,7 @@ from pydantic import ConfigDict, Field, RootModel
|
|
|
12
11
|
|
|
13
12
|
from . import creative_manifest as creative_manifest_1
|
|
14
13
|
from . import format_id as format_id_1
|
|
14
|
+
from . import preview_output_format
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Input(AdCPBaseModel):
|
|
@@ -38,11 +38,6 @@ class Input(AdCPBaseModel):
|
|
|
38
38
|
]
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
class OutputFormat(Enum):
|
|
42
|
-
url = 'url'
|
|
43
|
-
html = 'html'
|
|
44
|
-
|
|
45
|
-
|
|
46
41
|
class Input2(AdCPBaseModel):
|
|
47
42
|
model_config = ConfigDict(
|
|
48
43
|
extra='forbid',
|
|
@@ -83,11 +78,11 @@ class PreviewCreativeRequest1(AdCPBaseModel):
|
|
|
83
78
|
),
|
|
84
79
|
] = None
|
|
85
80
|
output_format: Annotated[
|
|
86
|
-
|
|
81
|
+
preview_output_format.PreviewOutputFormat | None,
|
|
87
82
|
Field(
|
|
88
83
|
description="Output format for previews. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding). Default: 'url' for backward compatibility."
|
|
89
84
|
),
|
|
90
|
-
] =
|
|
85
|
+
] = preview_output_format.PreviewOutputFormat.url
|
|
91
86
|
request_type: Annotated[
|
|
92
87
|
Literal['single'],
|
|
93
88
|
Field(description='Discriminator indicating this is a single preview request'),
|
|
@@ -113,11 +108,11 @@ class Request(AdCPBaseModel):
|
|
|
113
108
|
Field(description='Array of input sets for generating multiple preview variants'),
|
|
114
109
|
] = None
|
|
115
110
|
output_format: Annotated[
|
|
116
|
-
|
|
111
|
+
preview_output_format.PreviewOutputFormat | None,
|
|
117
112
|
Field(
|
|
118
113
|
description="Output format for this preview. 'url' returns preview_url, 'html' returns preview_html."
|
|
119
114
|
),
|
|
120
|
-
] =
|
|
115
|
+
] = preview_output_format.PreviewOutputFormat.url
|
|
121
116
|
template_id: Annotated[
|
|
122
117
|
str | None, Field(description='Specific template ID for custom format rendering')
|
|
123
118
|
] = None
|
|
@@ -134,11 +129,11 @@ class PreviewCreativeRequest2(AdCPBaseModel):
|
|
|
134
129
|
),
|
|
135
130
|
] = None
|
|
136
131
|
output_format: Annotated[
|
|
137
|
-
|
|
132
|
+
preview_output_format.PreviewOutputFormat | None,
|
|
138
133
|
Field(
|
|
139
134
|
description="Default output format for all requests in this batch. Individual requests can override this. 'url' returns preview_url (iframe-embeddable URL), 'html' returns preview_html (raw HTML for direct embedding)."
|
|
140
135
|
),
|
|
141
|
-
] =
|
|
136
|
+
] = preview_output_format.PreviewOutputFormat.url
|
|
142
137
|
request_type: Annotated[
|
|
143
138
|
Literal['batch'],
|
|
144
139
|
Field(description='Discriminator indicating this is a batch preview request'),
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: product-filters.json
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+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 ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
from . import delivery_type as delivery_type_1
|
|
13
|
+
from . import format_category, format_id
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ProductFilters(AdCPBaseModel):
|
|
17
|
+
model_config = ConfigDict(
|
|
18
|
+
extra='forbid',
|
|
19
|
+
)
|
|
20
|
+
delivery_type: delivery_type_1.DeliveryType | None = None
|
|
21
|
+
format_ids: Annotated[
|
|
22
|
+
list[format_id.FormatId] | None, Field(description='Filter by specific format IDs')
|
|
23
|
+
] = None
|
|
24
|
+
format_types: Annotated[
|
|
25
|
+
list[format_category.FormatCategory] | None, Field(description='Filter by format types')
|
|
26
|
+
] = None
|
|
27
|
+
is_fixed_price: Annotated[
|
|
28
|
+
bool | None, Field(description='Filter for fixed price vs auction products')
|
|
29
|
+
] = None
|
|
30
|
+
min_exposures: Annotated[
|
|
31
|
+
int | None,
|
|
32
|
+
Field(description='Minimum exposures/impressions needed for measurement validity', ge=1),
|
|
33
|
+
] = None
|
|
34
|
+
standard_formats_only: Annotated[
|
|
35
|
+
bool | None, Field(description='Only return products accepting IAB standard formats')
|
|
36
|
+
] = None
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
11
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
12
11
|
|
|
13
12
|
from . import identifier_types
|
|
13
|
+
from . import property_type as property_type_1
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Identifier(AdCPBaseModel):
|
|
@@ -29,16 +29,6 @@ class Identifier(AdCPBaseModel):
|
|
|
29
29
|
]
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
class PropertyType(Enum):
|
|
33
|
-
website = 'website'
|
|
34
|
-
mobile_app = 'mobile_app'
|
|
35
|
-
ctv_app = 'ctv_app'
|
|
36
|
-
dooh = 'dooh'
|
|
37
|
-
podcast = 'podcast'
|
|
38
|
-
radio = 'radio'
|
|
39
|
-
streaming_audio = 'streaming_audio'
|
|
40
|
-
|
|
41
|
-
|
|
42
32
|
class Tag(RootModel[str]):
|
|
43
33
|
root: Annotated[
|
|
44
34
|
str,
|
|
@@ -64,7 +54,9 @@ class Property(AdCPBaseModel):
|
|
|
64
54
|
pattern='^[a-z0-9_]+$',
|
|
65
55
|
),
|
|
66
56
|
] = None
|
|
67
|
-
property_type: Annotated[
|
|
57
|
+
property_type: Annotated[
|
|
58
|
+
property_type_1.PropertyType, Field(description='Type of advertising property')
|
|
59
|
+
]
|
|
68
60
|
publisher_domain: Annotated[
|
|
69
61
|
str | None,
|
|
70
62
|
Field(
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: property-type.json
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class PropertyType(Enum):
|
|
11
|
+
website = 'website'
|
|
12
|
+
mobile_app = 'mobile_app'
|
|
13
|
+
ctv_app = 'ctv_app'
|
|
14
|
+
dooh = 'dooh'
|
|
15
|
+
podcast = 'podcast'
|
|
16
|
+
radio = 'radio'
|
|
17
|
+
streaming_audio = 'streaming_audio'
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: provide-performance-feedback-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T15:57:17+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated, Any
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
11
|
-
from pydantic import AwareDatetime, ConfigDict, Field
|
|
10
|
+
from pydantic import AwareDatetime, ConfigDict, Field, RootModel
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
buyer_attribution = 'buyer_attribution'
|
|
16
|
-
third_party_measurement = 'third_party_measurement'
|
|
17
|
-
platform_analytics = 'platform_analytics'
|
|
18
|
-
verification_partner = 'verification_partner'
|
|
12
|
+
from . import feedback_source as feedback_source_1
|
|
13
|
+
from . import metric_type as metric_type_1
|
|
19
14
|
|
|
20
15
|
|
|
21
16
|
class MeasurementPeriod(AdCPBaseModel):
|
|
@@ -30,21 +25,13 @@ class MeasurementPeriod(AdCPBaseModel):
|
|
|
30
25
|
]
|
|
31
26
|
|
|
32
27
|
|
|
33
|
-
class
|
|
34
|
-
overall_performance = 'overall_performance'
|
|
35
|
-
conversion_rate = 'conversion_rate'
|
|
36
|
-
brand_lift = 'brand_lift'
|
|
37
|
-
click_through_rate = 'click_through_rate'
|
|
38
|
-
completion_rate = 'completion_rate'
|
|
39
|
-
viewability = 'viewability'
|
|
40
|
-
brand_safety = 'brand_safety'
|
|
41
|
-
cost_efficiency = 'cost_efficiency'
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class ProvidePerformanceFeedbackRequest(AdCPBaseModel):
|
|
28
|
+
class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
|
|
45
29
|
model_config = ConfigDict(
|
|
46
30
|
extra='forbid',
|
|
47
31
|
)
|
|
32
|
+
buyer_ref: Annotated[
|
|
33
|
+
str | None, Field(description="Buyer's reference for the media buy", min_length=1)
|
|
34
|
+
] = None
|
|
48
35
|
context: Annotated[
|
|
49
36
|
dict[str, Any] | None,
|
|
50
37
|
Field(
|
|
@@ -58,8 +45,8 @@ class ProvidePerformanceFeedbackRequest(AdCPBaseModel):
|
|
|
58
45
|
),
|
|
59
46
|
] = None
|
|
60
47
|
feedback_source: Annotated[
|
|
61
|
-
FeedbackSource | None, Field(description='Source of the performance data')
|
|
62
|
-
] = FeedbackSource.buyer_attribution
|
|
48
|
+
feedback_source_1.FeedbackSource | None, Field(description='Source of the performance data')
|
|
49
|
+
] = feedback_source_1.FeedbackSource.buyer_attribution
|
|
63
50
|
measurement_period: Annotated[
|
|
64
51
|
MeasurementPeriod, Field(description='Time period for performance measurement')
|
|
65
52
|
]
|
|
@@ -67,8 +54,55 @@ class ProvidePerformanceFeedbackRequest(AdCPBaseModel):
|
|
|
67
54
|
str, Field(description="Publisher's media buy identifier", min_length=1)
|
|
68
55
|
]
|
|
69
56
|
metric_type: Annotated[
|
|
70
|
-
MetricType | None, Field(description='The business metric being measured')
|
|
71
|
-
] = MetricType.overall_performance
|
|
57
|
+
metric_type_1.MetricType | None, Field(description='The business metric being measured')
|
|
58
|
+
] = metric_type_1.MetricType.overall_performance
|
|
59
|
+
package_id: Annotated[
|
|
60
|
+
str | None,
|
|
61
|
+
Field(
|
|
62
|
+
description='Specific package within the media buy (if feedback is package-specific)',
|
|
63
|
+
min_length=1,
|
|
64
|
+
),
|
|
65
|
+
] = None
|
|
66
|
+
performance_index: Annotated[
|
|
67
|
+
float,
|
|
68
|
+
Field(
|
|
69
|
+
description='Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)',
|
|
70
|
+
ge=0.0,
|
|
71
|
+
),
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
|
|
76
|
+
model_config = ConfigDict(
|
|
77
|
+
extra='forbid',
|
|
78
|
+
)
|
|
79
|
+
buyer_ref: Annotated[
|
|
80
|
+
str, Field(description="Buyer's reference for the media buy", min_length=1)
|
|
81
|
+
]
|
|
82
|
+
context: Annotated[
|
|
83
|
+
dict[str, Any] | None,
|
|
84
|
+
Field(
|
|
85
|
+
description='Initiator-provided context included in the request payload. Agentsmust echo this value back unchanged in responses and webhooks. Use for UI/session hints, correlation tokens, or tracking metadata.'
|
|
86
|
+
),
|
|
87
|
+
] = None
|
|
88
|
+
creative_id: Annotated[
|
|
89
|
+
str | None,
|
|
90
|
+
Field(
|
|
91
|
+
description='Specific creative asset (if feedback is creative-specific)', min_length=1
|
|
92
|
+
),
|
|
93
|
+
] = None
|
|
94
|
+
feedback_source: Annotated[
|
|
95
|
+
feedback_source_1.FeedbackSource | None, Field(description='Source of the performance data')
|
|
96
|
+
] = feedback_source_1.FeedbackSource.buyer_attribution
|
|
97
|
+
measurement_period: Annotated[
|
|
98
|
+
MeasurementPeriod, Field(description='Time period for performance measurement')
|
|
99
|
+
]
|
|
100
|
+
media_buy_id: Annotated[
|
|
101
|
+
str | None, Field(description="Publisher's media buy identifier", min_length=1)
|
|
102
|
+
] = None
|
|
103
|
+
metric_type: Annotated[
|
|
104
|
+
metric_type_1.MetricType | None, Field(description='The business metric being measured')
|
|
105
|
+
] = metric_type_1.MetricType.overall_performance
|
|
72
106
|
package_id: Annotated[
|
|
73
107
|
str | None,
|
|
74
108
|
Field(
|
|
@@ -83,3 +117,15 @@ class ProvidePerformanceFeedbackRequest(AdCPBaseModel):
|
|
|
83
117
|
ge=0.0,
|
|
84
118
|
),
|
|
85
119
|
]
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class ProvidePerformanceFeedbackRequest(
|
|
123
|
+
RootModel[ProvidePerformanceFeedbackRequest1 | ProvidePerformanceFeedbackRequest2]
|
|
124
|
+
):
|
|
125
|
+
root: Annotated[
|
|
126
|
+
ProvidePerformanceFeedbackRequest1 | ProvidePerformanceFeedbackRequest2,
|
|
127
|
+
Field(
|
|
128
|
+
description='Request payload for provide_performance_feedback task',
|
|
129
|
+
title='Provide Performance Feedback Request',
|
|
130
|
+
),
|
|
131
|
+
]
|
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: push-notification-config.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
11
10
|
from pydantic import AnyUrl, ConfigDict, Field
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
class Scheme(Enum):
|
|
15
|
-
Bearer = 'Bearer'
|
|
16
|
-
HMAC_SHA256 = 'HMAC-SHA256'
|
|
12
|
+
from . import auth_scheme
|
|
17
13
|
|
|
18
14
|
|
|
19
15
|
class Authentication(AdCPBaseModel):
|
|
@@ -28,7 +24,7 @@ class Authentication(AdCPBaseModel):
|
|
|
28
24
|
),
|
|
29
25
|
]
|
|
30
26
|
schemes: Annotated[
|
|
31
|
-
list[
|
|
27
|
+
list[auth_scheme.AuthenticationScheme],
|
|
32
28
|
Field(
|
|
33
29
|
description="Array of authentication schemes. Supported: ['Bearer'] for simple token auth, ['HMAC-SHA256'] for signature verification (recommended for production)",
|
|
34
30
|
max_length=1,
|
|
@@ -1,32 +1,15 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: reporting-capabilities.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
11
10
|
from pydantic import ConfigDict, Field
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
class AvailableMetric(Enum):
|
|
15
|
-
impressions = 'impressions'
|
|
16
|
-
spend = 'spend'
|
|
17
|
-
clicks = 'clicks'
|
|
18
|
-
ctr = 'ctr'
|
|
19
|
-
video_completions = 'video_completions'
|
|
20
|
-
completion_rate = 'completion_rate'
|
|
21
|
-
conversions = 'conversions'
|
|
22
|
-
viewability = 'viewability'
|
|
23
|
-
engagement_rate = 'engagement_rate'
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class AvailableReportingFrequency(Enum):
|
|
27
|
-
hourly = 'hourly'
|
|
28
|
-
daily = 'daily'
|
|
29
|
-
monthly = 'monthly'
|
|
12
|
+
from . import available_metric, reporting_frequency
|
|
30
13
|
|
|
31
14
|
|
|
32
15
|
class ReportingCapabilities(AdCPBaseModel):
|
|
@@ -34,7 +17,7 @@ class ReportingCapabilities(AdCPBaseModel):
|
|
|
34
17
|
extra='forbid',
|
|
35
18
|
)
|
|
36
19
|
available_metrics: Annotated[
|
|
37
|
-
list[AvailableMetric],
|
|
20
|
+
list[available_metric.AvailableMetric],
|
|
38
21
|
Field(
|
|
39
22
|
description='Metrics available in reporting. Impressions and spend are always implicitly included.',
|
|
40
23
|
examples=[
|
|
@@ -44,7 +27,7 @@ class ReportingCapabilities(AdCPBaseModel):
|
|
|
44
27
|
),
|
|
45
28
|
]
|
|
46
29
|
available_reporting_frequencies: Annotated[
|
|
47
|
-
list[
|
|
30
|
+
list[reporting_frequency.ReportingFrequency],
|
|
48
31
|
Field(description='Supported reporting frequency options', min_length=1),
|
|
49
32
|
]
|
|
50
33
|
expected_delay_minutes: Annotated[
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: reporting-frequency.json
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ReportingFrequency(Enum):
|
|
11
|
+
hourly = 'hourly'
|
|
12
|
+
daily = 'daily'
|
|
13
|
+
monthly = 'monthly'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: signal-catalog-type.json
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SignalCatalogType(Enum):
|
|
11
|
+
marketplace = 'marketplace'
|
|
12
|
+
custom = 'custom'
|
|
13
|
+
owned = 'owned'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: signal-filters.json
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+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 ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
from . import signal_catalog_type
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SignalFilters(AdCPBaseModel):
|
|
16
|
+
model_config = ConfigDict(
|
|
17
|
+
extra='forbid',
|
|
18
|
+
)
|
|
19
|
+
catalog_types: Annotated[
|
|
20
|
+
list[signal_catalog_type.SignalCatalogType] | None,
|
|
21
|
+
Field(description='Filter by catalog type'),
|
|
22
|
+
] = None
|
|
23
|
+
data_providers: Annotated[
|
|
24
|
+
list[str] | None, Field(description='Filter by specific data providers')
|
|
25
|
+
] = None
|
|
26
|
+
max_cpm: Annotated[float | None, Field(description='Maximum CPM price filter', ge=0.0)] = None
|
|
27
|
+
min_coverage_percentage: Annotated[
|
|
28
|
+
float | None, Field(description='Minimum coverage requirement', ge=0.0, le=100.0)
|
|
29
|
+
] = None
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: sync-creatives-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated, Any
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
@@ -12,11 +11,7 @@ from pydantic import ConfigDict, Field
|
|
|
12
11
|
|
|
13
12
|
from . import creative_asset
|
|
14
13
|
from . import push_notification_config as push_notification_config_1
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class ValidationMode(Enum):
|
|
18
|
-
strict = 'strict'
|
|
19
|
-
lenient = 'lenient'
|
|
14
|
+
from . import validation_mode as validation_mode_1
|
|
20
15
|
|
|
21
16
|
|
|
22
17
|
class SyncCreativesRequest(AdCPBaseModel):
|
|
@@ -62,8 +57,8 @@ class SyncCreativesRequest(AdCPBaseModel):
|
|
|
62
57
|
),
|
|
63
58
|
] = None
|
|
64
59
|
validation_mode: Annotated[
|
|
65
|
-
ValidationMode | None,
|
|
60
|
+
validation_mode_1.ValidationMode | None,
|
|
66
61
|
Field(
|
|
67
62
|
description="Validation strictness. 'strict' fails entire sync on any validation error. 'lenient' processes valid creatives and reports errors."
|
|
68
63
|
),
|
|
69
|
-
] = ValidationMode.strict
|
|
64
|
+
] = validation_mode_1.ValidationMode.strict
|
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: sync-creatives-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
-
from enum import Enum
|
|
8
7
|
from typing import Annotated, Any
|
|
9
8
|
|
|
10
9
|
from adcp.types.base import AdCPBaseModel
|
|
11
10
|
from pydantic import AnyUrl, AwareDatetime, ConfigDict, Field, RootModel
|
|
12
11
|
|
|
13
|
-
from . import error
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class Action(Enum):
|
|
17
|
-
created = 'created'
|
|
18
|
-
updated = 'updated'
|
|
19
|
-
unchanged = 'unchanged'
|
|
20
|
-
failed = 'failed'
|
|
21
|
-
deleted = 'deleted'
|
|
12
|
+
from . import creative_action, error
|
|
22
13
|
|
|
23
14
|
|
|
24
15
|
class Creative(AdCPBaseModel):
|
|
25
16
|
model_config = ConfigDict(
|
|
26
17
|
extra='forbid',
|
|
27
18
|
)
|
|
28
|
-
action: Annotated[
|
|
19
|
+
action: Annotated[
|
|
20
|
+
creative_action.CreativeAction, Field(description='Action taken for this creative')
|
|
21
|
+
]
|
|
29
22
|
assigned_to: Annotated[
|
|
30
23
|
list[str] | None,
|
|
31
24
|
Field(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: tasks-list-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-21T12:49:05+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -10,15 +10,10 @@ from typing import Annotated, Any
|
|
|
10
10
|
from adcp.types.base import AdCPBaseModel
|
|
11
11
|
from pydantic import AwareDatetime, ConfigDict, Field
|
|
12
12
|
|
|
13
|
-
from . import task_status
|
|
13
|
+
from . import adcp_domain, sort_direction, task_status
|
|
14
14
|
from . import task_type as task_type_1
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class Domain(Enum):
|
|
18
|
-
media_buy = 'media-buy'
|
|
19
|
-
signals = 'signals'
|
|
20
|
-
|
|
21
|
-
|
|
22
17
|
class Filters(AdCPBaseModel):
|
|
23
18
|
model_config = ConfigDict(
|
|
24
19
|
extra='forbid',
|
|
@@ -35,9 +30,11 @@ class Filters(AdCPBaseModel):
|
|
|
35
30
|
created_before: Annotated[
|
|
36
31
|
AwareDatetime | None, Field(description='Filter tasks created before this date (ISO 8601)')
|
|
37
32
|
] = None
|
|
38
|
-
domain: Annotated[
|
|
33
|
+
domain: Annotated[
|
|
34
|
+
adcp_domain.AdcpDomain | None, Field(description='Filter by single AdCP domain')
|
|
35
|
+
] = None
|
|
39
36
|
domains: Annotated[
|
|
40
|
-
list[
|
|
37
|
+
list[adcp_domain.AdcpDomain] | None, Field(description='Filter by multiple AdCP domains')
|
|
41
38
|
] = None
|
|
42
39
|
has_webhook: Annotated[
|
|
43
40
|
bool | None, Field(description='Filter tasks that have webhook configuration when true')
|
|
@@ -77,11 +74,6 @@ class Pagination(AdCPBaseModel):
|
|
|
77
74
|
offset: Annotated[int | None, Field(description='Number of tasks to skip', ge=0)] = 0
|
|
78
75
|
|
|
79
76
|
|
|
80
|
-
class Direction(Enum):
|
|
81
|
-
asc = 'asc'
|
|
82
|
-
desc = 'desc'
|
|
83
|
-
|
|
84
|
-
|
|
85
77
|
class Field1(Enum):
|
|
86
78
|
created_at = 'created_at'
|
|
87
79
|
updated_at = 'updated_at'
|
|
@@ -94,7 +86,9 @@ class Sort(AdCPBaseModel):
|
|
|
94
86
|
model_config = ConfigDict(
|
|
95
87
|
extra='forbid',
|
|
96
88
|
)
|
|
97
|
-
direction: Annotated[
|
|
89
|
+
direction: Annotated[
|
|
90
|
+
sort_direction.SortDirection | None, Field(description='Sort direction')
|
|
91
|
+
] = sort_direction.SortDirection.desc
|
|
98
92
|
field: Annotated[Field1 | None, Field(description='Field to sort by')] = Field1.created_at
|
|
99
93
|
|
|
100
94
|
|