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