adcp 2.3.0__py3-none-any.whl → 2.4.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/__init__.py +88 -39
- adcp/__main__.py +1 -1
- adcp/client.py +9 -9
- adcp/simple.py +1 -1
- adcp/testing/test_helpers.py +1 -1
- adcp/types/__init__.py +66 -2
- adcp/types/_generated.py +175 -0
- adcp/types/aliases.py +1 -1
- adcp/types/generated_poc/__init__.py +1 -1
- adcp/types/generated_poc/activate_signal_request.py +5 -5
- adcp/types/generated_poc/activate_signal_response.py +9 -9
- adcp/types/generated_poc/activation_key.py +8 -8
- adcp/types/generated_poc/adagents.py +46 -46
- adcp/types/generated_poc/asset_type.py +19 -19
- adcp/types/generated_poc/audio_asset.py +6 -6
- adcp/types/generated_poc/brand_manifest.py +61 -120
- adcp/types/generated_poc/build_creative_request.py +6 -6
- adcp/types/generated_poc/build_creative_response.py +9 -9
- adcp/types/generated_poc/channels.py +10 -10
- adcp/types/generated_poc/cpc_option.py +12 -8
- adcp/types/generated_poc/cpcv_option.py +12 -8
- adcp/types/generated_poc/cpm_auction_option.py +17 -13
- adcp/types/generated_poc/cpm_fixed_option.py +12 -8
- adcp/types/generated_poc/cpp_option.py +17 -13
- adcp/types/generated_poc/cpv_option.py +16 -12
- adcp/types/generated_poc/create_media_buy_request.py +30 -30
- adcp/types/generated_poc/create_media_buy_response.py +11 -11
- adcp/types/generated_poc/creative_asset.py +13 -13
- adcp/types/generated_poc/creative_assignment.py +4 -4
- adcp/types/generated_poc/creative_manifest.py +4 -4
- adcp/types/generated_poc/creative_policy.py +11 -11
- adcp/types/generated_poc/creative_status.py +5 -5
- adcp/types/generated_poc/css_asset.py +3 -3
- adcp/types/generated_poc/daast_asset.py +30 -30
- adcp/types/generated_poc/delivery_metrics.py +33 -33
- adcp/types/generated_poc/delivery_type.py +3 -3
- adcp/types/generated_poc/deployment.py +21 -21
- adcp/types/generated_poc/destination.py +10 -10
- adcp/types/generated_poc/error.py +7 -7
- adcp/types/generated_poc/flat_rate_option.py +16 -16
- adcp/types/generated_poc/format.py +70 -70
- adcp/types/generated_poc/format_id.py +3 -3
- adcp/types/generated_poc/frequency_cap.py +3 -3
- adcp/types/generated_poc/frequency_cap_scope.py +4 -4
- adcp/types/generated_poc/get_media_buy_delivery_request.py +21 -21
- adcp/types/generated_poc/get_media_buy_delivery_response.py +46 -46
- adcp/types/generated_poc/get_products_request.py +24 -24
- adcp/types/generated_poc/get_products_response.py +5 -5
- adcp/types/generated_poc/get_signals_request.py +19 -19
- adcp/types/generated_poc/get_signals_response.py +20 -20
- adcp/types/generated_poc/html_asset.py +3 -3
- adcp/types/generated_poc/identifier_types.py +20 -20
- adcp/types/generated_poc/image_asset.py +7 -7
- adcp/types/generated_poc/javascript_asset.py +7 -7
- adcp/types/generated_poc/list_authorized_properties_request.py +5 -5
- adcp/types/generated_poc/list_authorized_properties_response.py +9 -9
- adcp/types/generated_poc/list_creative_formats_request.py +22 -22
- adcp/types/generated_poc/list_creative_formats_response.py +11 -11
- adcp/types/generated_poc/list_creatives_request.py +51 -51
- adcp/types/generated_poc/list_creatives_response.py +57 -72
- adcp/types/generated_poc/markdown_asset.py +7 -7
- adcp/types/generated_poc/measurement.py +9 -9
- adcp/types/generated_poc/media_buy.py +8 -8
- adcp/types/generated_poc/media_buy_status.py +5 -5
- adcp/types/generated_poc/pacing.py +4 -4
- adcp/types/generated_poc/package.py +8 -8
- adcp/types/generated_poc/package_request.py +7 -7
- adcp/types/generated_poc/package_status.py +5 -5
- adcp/types/generated_poc/performance_feedback.py +31 -31
- adcp/types/generated_poc/placement.py +4 -4
- adcp/types/generated_poc/preview_creative_request.py +28 -28
- adcp/types/generated_poc/preview_creative_response.py +31 -31
- adcp/types/generated_poc/preview_render.py +36 -28
- adcp/types/generated_poc/pricing_model.py +8 -8
- adcp/types/generated_poc/product.py +53 -43
- adcp/types/generated_poc/promoted_offerings.py +30 -30
- adcp/types/generated_poc/promoted_products.py +3 -3
- adcp/types/generated_poc/property.py +18 -18
- adcp/types/generated_poc/protocol_envelope.py +9 -9
- adcp/types/generated_poc/provide_performance_feedback_request.py +24 -24
- adcp/types/generated_poc/provide_performance_feedback_response.py +9 -9
- adcp/types/generated_poc/publisher_identifier_types.py +6 -6
- adcp/types/generated_poc/push_notification_config.py +9 -9
- adcp/types/generated_poc/reporting_capabilities.py +21 -21
- adcp/types/generated_poc/response.py +5 -5
- adcp/types/generated_poc/standard_format_ids.py +36 -36
- adcp/types/generated_poc/sub_asset.py +13 -13
- adcp/types/generated_poc/sync_creatives_request.py +11 -11
- adcp/types/generated_poc/sync_creatives_response.py +23 -23
- adcp/types/generated_poc/targeting.py +9 -9
- adcp/types/generated_poc/task_status.py +10 -10
- adcp/types/generated_poc/task_type.py +6 -6
- adcp/types/generated_poc/tasks_get_request.py +5 -5
- adcp/types/generated_poc/tasks_get_response.py +35 -35
- adcp/types/generated_poc/tasks_list_request.py +36 -36
- adcp/types/generated_poc/tasks_list_response.py +35 -35
- adcp/types/generated_poc/text_asset.py +3 -3
- adcp/types/generated_poc/update_media_buy_request.py +27 -27
- adcp/types/generated_poc/update_media_buy_response.py +11 -11
- adcp/types/generated_poc/url_asset.py +7 -7
- adcp/types/generated_poc/vast_asset.py +38 -38
- adcp/types/generated_poc/vcpm_auction_option.py +17 -13
- adcp/types/generated_poc/vcpm_fixed_option.py +12 -8
- adcp/types/generated_poc/video_asset.py +8 -8
- adcp/types/generated_poc/webhook_asset.py +19 -19
- adcp/types/generated_poc/webhook_payload.py +18 -18
- adcp/types/stable.py +175 -0
- adcp/utils/preview_cache.py +6 -6
- {adcp-2.3.0.dist-info → adcp-2.4.1.dist-info}/METADATA +29 -4
- adcp-2.4.1.dist-info/RECORD +129 -0
- adcp/types/generated.py +0 -614
- adcp/types/generated_poc/brand_manifest_ref.py +0 -361
- adcp/types/generated_poc/index.py +0 -17
- adcp/types/generated_poc/pricing_option.py +0 -365
- adcp/types/generated_poc/start_timing.py +0 -13
- adcp-2.3.0.dist-info/RECORD +0 -132
- {adcp-2.3.0.dist-info → adcp-2.4.1.dist-info}/WHEEL +0 -0
- {adcp-2.3.0.dist-info → adcp-2.4.1.dist-info}/entry_points.txt +0 -0
- {adcp-2.3.0.dist-info → adcp-2.4.1.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.3.0.dist-info → adcp-2.4.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: sync-creatives-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -14,35 +14,35 @@ from . import error
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Action(Enum):
|
|
17
|
-
created =
|
|
18
|
-
updated =
|
|
19
|
-
unchanged =
|
|
20
|
-
failed =
|
|
21
|
-
deleted =
|
|
17
|
+
created = 'created'
|
|
18
|
+
updated = 'updated'
|
|
19
|
+
unchanged = 'unchanged'
|
|
20
|
+
failed = 'failed'
|
|
21
|
+
deleted = 'deleted'
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
class Creative(AdCPBaseModel):
|
|
25
25
|
model_config = ConfigDict(
|
|
26
|
-
extra=
|
|
26
|
+
extra='forbid',
|
|
27
27
|
)
|
|
28
|
-
action: Annotated[Action, Field(description=
|
|
28
|
+
action: Annotated[Action, Field(description='Action taken for this creative')]
|
|
29
29
|
assigned_to: Annotated[
|
|
30
30
|
list[str] | None,
|
|
31
31
|
Field(
|
|
32
|
-
description=
|
|
32
|
+
description='Package IDs this creative was successfully assigned to (only present when assignments were requested)'
|
|
33
33
|
),
|
|
34
34
|
] = None
|
|
35
35
|
assignment_errors: Annotated[
|
|
36
36
|
dict[str, str] | None,
|
|
37
37
|
Field(
|
|
38
|
-
description=
|
|
38
|
+
description='Assignment errors by package ID (only present when assignment failures occurred)'
|
|
39
39
|
),
|
|
40
40
|
] = None
|
|
41
41
|
changes: Annotated[
|
|
42
42
|
list[str] | None,
|
|
43
43
|
Field(description="Field names that were modified (only present when action='updated')"),
|
|
44
44
|
] = None
|
|
45
|
-
creative_id: Annotated[str, Field(description=
|
|
45
|
+
creative_id: Annotated[str, Field(description='Creative ID from the request')]
|
|
46
46
|
errors: Annotated[
|
|
47
47
|
list[str] | None,
|
|
48
48
|
Field(description="Validation or processing errors (only present when action='failed')"),
|
|
@@ -50,31 +50,31 @@ class Creative(AdCPBaseModel):
|
|
|
50
50
|
expires_at: Annotated[
|
|
51
51
|
AwareDatetime | None,
|
|
52
52
|
Field(
|
|
53
|
-
description=
|
|
53
|
+
description='ISO 8601 timestamp when preview link expires (only present when preview_url exists)'
|
|
54
54
|
),
|
|
55
55
|
] = None
|
|
56
56
|
platform_id: Annotated[
|
|
57
|
-
str | None, Field(description=
|
|
57
|
+
str | None, Field(description='Platform-specific ID assigned to the creative')
|
|
58
58
|
] = None
|
|
59
59
|
preview_url: Annotated[
|
|
60
60
|
AnyUrl | None,
|
|
61
61
|
Field(
|
|
62
|
-
description=
|
|
62
|
+
description='Preview URL for generative creatives (only present for generative formats)'
|
|
63
63
|
),
|
|
64
64
|
] = None
|
|
65
65
|
warnings: Annotated[
|
|
66
|
-
list[str] | None, Field(description=
|
|
66
|
+
list[str] | None, Field(description='Non-fatal warnings about this creative')
|
|
67
67
|
] = None
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
class SyncCreativesResponse1(AdCPBaseModel):
|
|
71
71
|
model_config = ConfigDict(
|
|
72
|
-
extra=
|
|
72
|
+
extra='forbid',
|
|
73
73
|
)
|
|
74
74
|
context: Annotated[
|
|
75
75
|
dict[str, Any] | None,
|
|
76
76
|
Field(
|
|
77
|
-
description=
|
|
77
|
+
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
78
78
|
),
|
|
79
79
|
] = None
|
|
80
80
|
creatives: Annotated[
|
|
@@ -84,24 +84,24 @@ class SyncCreativesResponse1(AdCPBaseModel):
|
|
|
84
84
|
),
|
|
85
85
|
]
|
|
86
86
|
dry_run: Annotated[
|
|
87
|
-
bool | None, Field(description=
|
|
87
|
+
bool | None, Field(description='Whether this was a dry run (no actual changes made)')
|
|
88
88
|
] = None
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
class SyncCreativesResponse2(AdCPBaseModel):
|
|
92
92
|
model_config = ConfigDict(
|
|
93
|
-
extra=
|
|
93
|
+
extra='forbid',
|
|
94
94
|
)
|
|
95
95
|
context: Annotated[
|
|
96
96
|
dict[str, Any] | None,
|
|
97
97
|
Field(
|
|
98
|
-
description=
|
|
98
|
+
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
99
99
|
),
|
|
100
100
|
] = None
|
|
101
101
|
errors: Annotated[
|
|
102
102
|
list[error.Error],
|
|
103
103
|
Field(
|
|
104
|
-
description=
|
|
104
|
+
description='Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)',
|
|
105
105
|
min_length=1,
|
|
106
106
|
),
|
|
107
107
|
]
|
|
@@ -111,7 +111,7 @@ class SyncCreativesResponse(RootModel[SyncCreativesResponse1 | SyncCreativesResp
|
|
|
111
111
|
root: Annotated[
|
|
112
112
|
SyncCreativesResponse1 | SyncCreativesResponse2,
|
|
113
113
|
Field(
|
|
114
|
-
description=
|
|
115
|
-
title=
|
|
114
|
+
description='Response from creative sync operation. Returns either per-creative results (best-effort processing) OR operation-level errors (complete failure). This enforces atomic semantics at the operation level while allowing per-item failures within successful operations.',
|
|
115
|
+
title='Sync Creatives Response',
|
|
116
116
|
),
|
|
117
117
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: targeting.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -13,41 +13,41 @@ from . import frequency_cap as frequency_cap_1
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class GeoCountryAnyOfItem(RootModel[str]):
|
|
16
|
-
root: Annotated[str, Field(pattern=
|
|
16
|
+
root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class TargetingOverlay(AdCPBaseModel):
|
|
20
20
|
model_config = ConfigDict(
|
|
21
|
-
extra=
|
|
21
|
+
extra='forbid',
|
|
22
22
|
)
|
|
23
23
|
axe_exclude_segment: Annotated[
|
|
24
|
-
str | None, Field(description=
|
|
24
|
+
str | None, Field(description='AXE segment ID to exclude from targeting')
|
|
25
25
|
] = None
|
|
26
26
|
axe_include_segment: Annotated[
|
|
27
|
-
str | None, Field(description=
|
|
27
|
+
str | None, Field(description='AXE segment ID to include for targeting')
|
|
28
28
|
] = None
|
|
29
29
|
frequency_cap: frequency_cap_1.FrequencyCap | None = None
|
|
30
30
|
geo_country_any_of: Annotated[
|
|
31
31
|
list[GeoCountryAnyOfItem] | None,
|
|
32
32
|
Field(
|
|
33
|
-
description=
|
|
33
|
+
description='Restrict delivery to specific countries (ISO codes). Use for regulatory compliance or RCT testing.'
|
|
34
34
|
),
|
|
35
35
|
] = None
|
|
36
36
|
geo_metro_any_of: Annotated[
|
|
37
37
|
list[str] | None,
|
|
38
38
|
Field(
|
|
39
|
-
description=
|
|
39
|
+
description='Restrict delivery to specific metro areas (DMA codes). Use for regulatory compliance or RCT testing.'
|
|
40
40
|
),
|
|
41
41
|
] = None
|
|
42
42
|
geo_postal_code_any_of: Annotated[
|
|
43
43
|
list[str] | None,
|
|
44
44
|
Field(
|
|
45
|
-
description=
|
|
45
|
+
description='Restrict delivery to specific postal/ZIP codes. Use for regulatory compliance or RCT testing.'
|
|
46
46
|
),
|
|
47
47
|
] = None
|
|
48
48
|
geo_region_any_of: Annotated[
|
|
49
49
|
list[str] | None,
|
|
50
50
|
Field(
|
|
51
|
-
description=
|
|
51
|
+
description='Restrict delivery to specific regions/states. Use for regulatory compliance or RCT testing.'
|
|
52
52
|
),
|
|
53
53
|
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: task-status.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -8,12 +8,12 @@ from enum import Enum
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class TaskStatus(Enum):
|
|
11
|
-
submitted =
|
|
12
|
-
working =
|
|
13
|
-
input_required =
|
|
14
|
-
completed =
|
|
15
|
-
canceled =
|
|
16
|
-
failed =
|
|
17
|
-
rejected =
|
|
18
|
-
auth_required =
|
|
19
|
-
unknown =
|
|
11
|
+
submitted = 'submitted'
|
|
12
|
+
working = 'working'
|
|
13
|
+
input_required = 'input-required'
|
|
14
|
+
completed = 'completed'
|
|
15
|
+
canceled = 'canceled'
|
|
16
|
+
failed = 'failed'
|
|
17
|
+
rejected = 'rejected'
|
|
18
|
+
auth_required = 'auth-required'
|
|
19
|
+
unknown = 'unknown'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: task-type.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ from enum import Enum
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class TaskType(Enum):
|
|
11
|
-
create_media_buy =
|
|
12
|
-
update_media_buy =
|
|
13
|
-
sync_creatives =
|
|
14
|
-
activate_signal =
|
|
15
|
-
get_signals =
|
|
11
|
+
create_media_buy = 'create_media_buy'
|
|
12
|
+
update_media_buy = 'update_media_buy'
|
|
13
|
+
sync_creatives = 'sync_creatives'
|
|
14
|
+
activate_signal = 'activate_signal'
|
|
15
|
+
get_signals = 'get_signals'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: tasks-get-request.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -12,18 +12,18 @@ from pydantic import ConfigDict, Field
|
|
|
12
12
|
|
|
13
13
|
class TasksGetRequest(AdCPBaseModel):
|
|
14
14
|
model_config = ConfigDict(
|
|
15
|
-
extra=
|
|
15
|
+
extra='forbid',
|
|
16
16
|
)
|
|
17
17
|
context: Annotated[
|
|
18
18
|
dict[str, Any] | None,
|
|
19
19
|
Field(
|
|
20
|
-
description=
|
|
20
|
+
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.'
|
|
21
21
|
),
|
|
22
22
|
] = None
|
|
23
23
|
include_history: Annotated[
|
|
24
24
|
bool | None,
|
|
25
25
|
Field(
|
|
26
|
-
description=
|
|
26
|
+
description='Include full conversation history for this task (may increase response size)'
|
|
27
27
|
),
|
|
28
28
|
] = False
|
|
29
|
-
task_id: Annotated[str, Field(description=
|
|
29
|
+
task_id: Annotated[str, Field(description='Unique identifier of the task to retrieve')]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: tasks-get-response.json
|
|
3
|
-
# timestamp: 2025-11-
|
|
3
|
+
# timestamp: 2025-11-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -15,98 +15,98 @@ from . import task_type as task_type_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Domain(Enum):
|
|
18
|
-
media_buy =
|
|
19
|
-
signals =
|
|
18
|
+
media_buy = 'media-buy'
|
|
19
|
+
signals = 'signals'
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class Details(AdCPBaseModel):
|
|
23
23
|
model_config = ConfigDict(
|
|
24
|
-
extra=
|
|
24
|
+
extra='allow',
|
|
25
25
|
)
|
|
26
|
-
domain: Annotated[Domain | None, Field(description=
|
|
27
|
-
operation: Annotated[str | None, Field(description=
|
|
26
|
+
domain: Annotated[Domain | None, Field(description='AdCP domain where error occurred')] = None
|
|
27
|
+
operation: Annotated[str | None, Field(description='Specific operation that failed')] = None
|
|
28
28
|
specific_context: Annotated[
|
|
29
|
-
dict[str, Any] | None, Field(description=
|
|
29
|
+
dict[str, Any] | None, Field(description='Domain-specific error context')
|
|
30
30
|
] = None
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
class Error(AdCPBaseModel):
|
|
34
34
|
model_config = ConfigDict(
|
|
35
|
-
extra=
|
|
35
|
+
extra='forbid',
|
|
36
36
|
)
|
|
37
|
-
code: Annotated[str, Field(description=
|
|
38
|
-
details: Annotated[Details | None, Field(description=
|
|
39
|
-
message: Annotated[str, Field(description=
|
|
37
|
+
code: Annotated[str, Field(description='Error code for programmatic handling')]
|
|
38
|
+
details: Annotated[Details | None, Field(description='Additional error context')] = None
|
|
39
|
+
message: Annotated[str, Field(description='Detailed error message')]
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class Type(Enum):
|
|
43
|
-
request =
|
|
44
|
-
response =
|
|
43
|
+
request = 'request'
|
|
44
|
+
response = 'response'
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
class HistoryItem(AdCPBaseModel):
|
|
48
48
|
model_config = ConfigDict(
|
|
49
|
-
extra=
|
|
49
|
+
extra='forbid',
|
|
50
50
|
)
|
|
51
|
-
data: Annotated[dict[str, Any], Field(description=
|
|
52
|
-
timestamp: Annotated[AwareDatetime, Field(description=
|
|
51
|
+
data: Annotated[dict[str, Any], Field(description='The full request or response payload')]
|
|
52
|
+
timestamp: Annotated[AwareDatetime, Field(description='When this exchange occurred (ISO 8601)')]
|
|
53
53
|
type: Annotated[
|
|
54
|
-
Type, Field(description=
|
|
54
|
+
Type, Field(description='Whether this was a request from client or response from server')
|
|
55
55
|
]
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
class Progress(AdCPBaseModel):
|
|
59
59
|
model_config = ConfigDict(
|
|
60
|
-
extra=
|
|
60
|
+
extra='forbid',
|
|
61
61
|
)
|
|
62
62
|
current_step: Annotated[
|
|
63
|
-
str | None, Field(description=
|
|
63
|
+
str | None, Field(description='Current step or phase of the operation')
|
|
64
64
|
] = None
|
|
65
65
|
percentage: Annotated[
|
|
66
|
-
float | None, Field(description=
|
|
66
|
+
float | None, Field(description='Completion percentage (0-100)', ge=0.0, le=100.0)
|
|
67
67
|
] = None
|
|
68
|
-
step_number: Annotated[int | None, Field(description=
|
|
68
|
+
step_number: Annotated[int | None, Field(description='Current step number', ge=1)] = None
|
|
69
69
|
total_steps: Annotated[
|
|
70
|
-
int | None, Field(description=
|
|
70
|
+
int | None, Field(description='Total number of steps in the operation', ge=1)
|
|
71
71
|
] = None
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
class TasksGetResponse(AdCPBaseModel):
|
|
75
75
|
model_config = ConfigDict(
|
|
76
|
-
extra=
|
|
76
|
+
extra='forbid',
|
|
77
77
|
)
|
|
78
78
|
completed_at: Annotated[
|
|
79
79
|
AwareDatetime | None,
|
|
80
80
|
Field(
|
|
81
|
-
description=
|
|
81
|
+
description='When the task completed (ISO 8601, only for completed/failed/canceled tasks)'
|
|
82
82
|
),
|
|
83
83
|
] = None
|
|
84
84
|
context: Annotated[
|
|
85
85
|
dict[str, Any] | None,
|
|
86
86
|
Field(
|
|
87
|
-
description=
|
|
87
|
+
description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
|
|
88
88
|
),
|
|
89
89
|
] = None
|
|
90
90
|
created_at: Annotated[
|
|
91
|
-
AwareDatetime, Field(description=
|
|
91
|
+
AwareDatetime, Field(description='When the task was initially created (ISO 8601)')
|
|
92
92
|
]
|
|
93
|
-
domain: Annotated[Domain, Field(description=
|
|
94
|
-
error: Annotated[Error | None, Field(description=
|
|
93
|
+
domain: Annotated[Domain, Field(description='AdCP domain this task belongs to')]
|
|
94
|
+
error: Annotated[Error | None, Field(description='Error details for failed tasks')] = None
|
|
95
95
|
has_webhook: Annotated[
|
|
96
|
-
bool | None, Field(description=
|
|
96
|
+
bool | None, Field(description='Whether this task has webhook configuration')
|
|
97
97
|
] = None
|
|
98
98
|
history: Annotated[
|
|
99
99
|
list[HistoryItem] | None,
|
|
100
100
|
Field(
|
|
101
|
-
description=
|
|
101
|
+
description='Complete conversation history for this task (only included if include_history was true in request)'
|
|
102
102
|
),
|
|
103
103
|
] = None
|
|
104
104
|
progress: Annotated[
|
|
105
|
-
Progress | None, Field(description=
|
|
105
|
+
Progress | None, Field(description='Progress information for long-running tasks')
|
|
106
106
|
] = None
|
|
107
|
-
status: Annotated[task_status.TaskStatus, Field(description=
|
|
108
|
-
task_id: Annotated[str, Field(description=
|
|
109
|
-
task_type: Annotated[task_type_1.TaskType, Field(description=
|
|
107
|
+
status: Annotated[task_status.TaskStatus, Field(description='Current task status')]
|
|
108
|
+
task_id: Annotated[str, Field(description='Unique identifier for this task')]
|
|
109
|
+
task_type: Annotated[task_type_1.TaskType, Field(description='Type of AdCP operation')]
|
|
110
110
|
updated_at: Annotated[
|
|
111
|
-
AwareDatetime, Field(description=
|
|
111
|
+
AwareDatetime, Field(description='When the task was last updated (ISO 8601)')
|
|
112
112
|
]
|
|
@@ -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-18T03:35:10+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -15,107 +15,107 @@ from . import task_type as task_type_1
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Domain(Enum):
|
|
18
|
-
media_buy =
|
|
19
|
-
signals =
|
|
18
|
+
media_buy = 'media-buy'
|
|
19
|
+
signals = 'signals'
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class Filters(AdCPBaseModel):
|
|
23
23
|
model_config = ConfigDict(
|
|
24
|
-
extra=
|
|
24
|
+
extra='forbid',
|
|
25
25
|
)
|
|
26
26
|
context_contains: Annotated[
|
|
27
27
|
str | None,
|
|
28
28
|
Field(
|
|
29
|
-
description=
|
|
29
|
+
description='Filter tasks where context contains this text (searches buyer_ref, media_buy_id, signal_id, etc.)'
|
|
30
30
|
),
|
|
31
31
|
] = None
|
|
32
32
|
created_after: Annotated[
|
|
33
|
-
AwareDatetime | None, Field(description=
|
|
33
|
+
AwareDatetime | None, Field(description='Filter tasks created after this date (ISO 8601)')
|
|
34
34
|
] = None
|
|
35
35
|
created_before: Annotated[
|
|
36
|
-
AwareDatetime | None, Field(description=
|
|
36
|
+
AwareDatetime | None, Field(description='Filter tasks created before this date (ISO 8601)')
|
|
37
37
|
] = None
|
|
38
|
-
domain: Annotated[Domain | None, Field(description=
|
|
38
|
+
domain: Annotated[Domain | None, Field(description='Filter by single AdCP domain')] = None
|
|
39
39
|
domains: Annotated[
|
|
40
|
-
list[Domain] | None, Field(description=
|
|
40
|
+
list[Domain] | None, Field(description='Filter by multiple AdCP domains')
|
|
41
41
|
] = None
|
|
42
42
|
has_webhook: Annotated[
|
|
43
|
-
bool | None, Field(description=
|
|
43
|
+
bool | None, Field(description='Filter tasks that have webhook configuration when true')
|
|
44
44
|
] = None
|
|
45
45
|
status: Annotated[
|
|
46
|
-
task_status.TaskStatus | None, Field(description=
|
|
46
|
+
task_status.TaskStatus | None, Field(description='Filter by single task status')
|
|
47
47
|
] = None
|
|
48
48
|
statuses: Annotated[
|
|
49
|
-
list[task_status.TaskStatus] | None, Field(description=
|
|
49
|
+
list[task_status.TaskStatus] | None, Field(description='Filter by multiple task statuses')
|
|
50
50
|
] = None
|
|
51
51
|
task_ids: Annotated[
|
|
52
|
-
list[str] | None, Field(description=
|
|
52
|
+
list[str] | None, Field(description='Filter by specific task IDs', max_length=100)
|
|
53
53
|
] = None
|
|
54
54
|
task_type: Annotated[
|
|
55
|
-
task_type_1.TaskType | None, Field(description=
|
|
55
|
+
task_type_1.TaskType | None, Field(description='Filter by single task type')
|
|
56
56
|
] = None
|
|
57
57
|
task_types: Annotated[
|
|
58
|
-
list[task_type_1.TaskType] | None, Field(description=
|
|
58
|
+
list[task_type_1.TaskType] | None, Field(description='Filter by multiple task types')
|
|
59
59
|
] = None
|
|
60
60
|
updated_after: Annotated[
|
|
61
61
|
AwareDatetime | None,
|
|
62
|
-
Field(description=
|
|
62
|
+
Field(description='Filter tasks last updated after this date (ISO 8601)'),
|
|
63
63
|
] = None
|
|
64
64
|
updated_before: Annotated[
|
|
65
65
|
AwareDatetime | None,
|
|
66
|
-
Field(description=
|
|
66
|
+
Field(description='Filter tasks last updated before this date (ISO 8601)'),
|
|
67
67
|
] = None
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
class Pagination(AdCPBaseModel):
|
|
71
71
|
model_config = ConfigDict(
|
|
72
|
-
extra=
|
|
72
|
+
extra='forbid',
|
|
73
73
|
)
|
|
74
74
|
limit: Annotated[
|
|
75
|
-
int | None, Field(description=
|
|
75
|
+
int | None, Field(description='Maximum number of tasks to return', ge=1, le=100)
|
|
76
76
|
] = 50
|
|
77
|
-
offset: Annotated[int | None, Field(description=
|
|
77
|
+
offset: Annotated[int | None, Field(description='Number of tasks to skip', ge=0)] = 0
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class Direction(Enum):
|
|
81
|
-
asc =
|
|
82
|
-
desc =
|
|
81
|
+
asc = 'asc'
|
|
82
|
+
desc = 'desc'
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
class Field1(Enum):
|
|
86
|
-
created_at =
|
|
87
|
-
updated_at =
|
|
88
|
-
status =
|
|
89
|
-
task_type =
|
|
90
|
-
domain =
|
|
86
|
+
created_at = 'created_at'
|
|
87
|
+
updated_at = 'updated_at'
|
|
88
|
+
status = 'status'
|
|
89
|
+
task_type = 'task_type'
|
|
90
|
+
domain = 'domain'
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
class Sort(AdCPBaseModel):
|
|
94
94
|
model_config = ConfigDict(
|
|
95
|
-
extra=
|
|
95
|
+
extra='forbid',
|
|
96
96
|
)
|
|
97
|
-
direction: Annotated[Direction | None, Field(description=
|
|
98
|
-
field: Annotated[Field1 | None, Field(description=
|
|
97
|
+
direction: Annotated[Direction | None, Field(description='Sort direction')] = Direction.desc
|
|
98
|
+
field: Annotated[Field1 | None, Field(description='Field to sort by')] = Field1.created_at
|
|
99
99
|
|
|
100
100
|
|
|
101
101
|
class TasksListRequest(AdCPBaseModel):
|
|
102
102
|
model_config = ConfigDict(
|
|
103
|
-
extra=
|
|
103
|
+
extra='forbid',
|
|
104
104
|
)
|
|
105
105
|
context: Annotated[
|
|
106
106
|
dict[str, Any] | None,
|
|
107
107
|
Field(
|
|
108
|
-
description=
|
|
108
|
+
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.'
|
|
109
109
|
),
|
|
110
110
|
] = None
|
|
111
|
-
filters: Annotated[Filters | None, Field(description=
|
|
111
|
+
filters: Annotated[Filters | None, Field(description='Filter criteria for querying tasks')] = (
|
|
112
112
|
None
|
|
113
113
|
)
|
|
114
114
|
include_history: Annotated[
|
|
115
115
|
bool | None,
|
|
116
116
|
Field(
|
|
117
|
-
description=
|
|
117
|
+
description='Include full conversation history for each task (may significantly increase response size)'
|
|
118
118
|
),
|
|
119
119
|
] = False
|
|
120
|
-
pagination: Annotated[Pagination | None, Field(description=
|
|
121
|
-
sort: Annotated[Sort | None, Field(description=
|
|
120
|
+
pagination: Annotated[Pagination | None, Field(description='Pagination parameters')] = None
|
|
121
|
+
sort: Annotated[Sort | None, Field(description='Sorting parameters')] = None
|