adcp 2.3.0__py3-none-any.whl → 2.4.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.
Files changed (107) hide show
  1. adcp/__init__.py +1 -1
  2. adcp/types/generated.py +36 -531
  3. adcp/types/generated_poc/__init__.py +1 -1
  4. adcp/types/generated_poc/activate_signal_request.py +5 -5
  5. adcp/types/generated_poc/activate_signal_response.py +9 -9
  6. adcp/types/generated_poc/activation_key.py +8 -8
  7. adcp/types/generated_poc/adagents.py +46 -46
  8. adcp/types/generated_poc/asset_type.py +19 -19
  9. adcp/types/generated_poc/audio_asset.py +6 -6
  10. adcp/types/generated_poc/brand_manifest.py +73 -73
  11. adcp/types/generated_poc/build_creative_request.py +6 -6
  12. adcp/types/generated_poc/build_creative_response.py +9 -9
  13. adcp/types/generated_poc/channels.py +10 -10
  14. adcp/types/generated_poc/cpc_option.py +12 -8
  15. adcp/types/generated_poc/cpcv_option.py +12 -8
  16. adcp/types/generated_poc/cpm_auction_option.py +17 -13
  17. adcp/types/generated_poc/cpm_fixed_option.py +12 -8
  18. adcp/types/generated_poc/cpp_option.py +17 -13
  19. adcp/types/generated_poc/cpv_option.py +16 -12
  20. adcp/types/generated_poc/create_media_buy_request.py +29 -29
  21. adcp/types/generated_poc/create_media_buy_response.py +11 -11
  22. adcp/types/generated_poc/creative_asset.py +13 -13
  23. adcp/types/generated_poc/creative_assignment.py +4 -4
  24. adcp/types/generated_poc/creative_manifest.py +4 -4
  25. adcp/types/generated_poc/creative_policy.py +11 -11
  26. adcp/types/generated_poc/creative_status.py +5 -5
  27. adcp/types/generated_poc/css_asset.py +3 -3
  28. adcp/types/generated_poc/daast_asset.py +30 -30
  29. adcp/types/generated_poc/delivery_metrics.py +33 -33
  30. adcp/types/generated_poc/delivery_type.py +3 -3
  31. adcp/types/generated_poc/deployment.py +21 -21
  32. adcp/types/generated_poc/destination.py +10 -10
  33. adcp/types/generated_poc/error.py +7 -7
  34. adcp/types/generated_poc/flat_rate_option.py +16 -16
  35. adcp/types/generated_poc/format.py +70 -70
  36. adcp/types/generated_poc/format_id.py +3 -3
  37. adcp/types/generated_poc/frequency_cap.py +3 -3
  38. adcp/types/generated_poc/frequency_cap_scope.py +4 -4
  39. adcp/types/generated_poc/get_media_buy_delivery_request.py +21 -21
  40. adcp/types/generated_poc/get_media_buy_delivery_response.py +46 -46
  41. adcp/types/generated_poc/get_products_request.py +23 -23
  42. adcp/types/generated_poc/get_products_response.py +5 -5
  43. adcp/types/generated_poc/get_signals_request.py +19 -19
  44. adcp/types/generated_poc/get_signals_response.py +20 -20
  45. adcp/types/generated_poc/html_asset.py +3 -3
  46. adcp/types/generated_poc/identifier_types.py +20 -20
  47. adcp/types/generated_poc/image_asset.py +7 -7
  48. adcp/types/generated_poc/javascript_asset.py +7 -7
  49. adcp/types/generated_poc/list_authorized_properties_request.py +5 -5
  50. adcp/types/generated_poc/list_authorized_properties_response.py +9 -9
  51. adcp/types/generated_poc/list_creative_formats_request.py +22 -22
  52. adcp/types/generated_poc/list_creative_formats_response.py +11 -11
  53. adcp/types/generated_poc/list_creatives_request.py +51 -51
  54. adcp/types/generated_poc/list_creatives_response.py +61 -61
  55. adcp/types/generated_poc/markdown_asset.py +7 -7
  56. adcp/types/generated_poc/measurement.py +9 -9
  57. adcp/types/generated_poc/media_buy.py +8 -8
  58. adcp/types/generated_poc/media_buy_status.py +5 -5
  59. adcp/types/generated_poc/pacing.py +4 -4
  60. adcp/types/generated_poc/package.py +8 -8
  61. adcp/types/generated_poc/package_request.py +7 -7
  62. adcp/types/generated_poc/package_status.py +5 -5
  63. adcp/types/generated_poc/performance_feedback.py +31 -31
  64. adcp/types/generated_poc/placement.py +4 -4
  65. adcp/types/generated_poc/preview_creative_request.py +28 -28
  66. adcp/types/generated_poc/preview_creative_response.py +31 -31
  67. adcp/types/generated_poc/preview_render.py +36 -28
  68. adcp/types/generated_poc/pricing_model.py +8 -8
  69. adcp/types/generated_poc/product.py +32 -31
  70. adcp/types/generated_poc/promoted_offerings.py +29 -29
  71. adcp/types/generated_poc/promoted_products.py +3 -3
  72. adcp/types/generated_poc/property.py +18 -18
  73. adcp/types/generated_poc/protocol_envelope.py +9 -9
  74. adcp/types/generated_poc/provide_performance_feedback_request.py +24 -24
  75. adcp/types/generated_poc/provide_performance_feedback_response.py +9 -9
  76. adcp/types/generated_poc/publisher_identifier_types.py +6 -6
  77. adcp/types/generated_poc/push_notification_config.py +9 -9
  78. adcp/types/generated_poc/reporting_capabilities.py +21 -21
  79. adcp/types/generated_poc/response.py +5 -5
  80. adcp/types/generated_poc/standard_format_ids.py +36 -36
  81. adcp/types/generated_poc/sub_asset.py +13 -13
  82. adcp/types/generated_poc/sync_creatives_request.py +11 -11
  83. adcp/types/generated_poc/sync_creatives_response.py +23 -23
  84. adcp/types/generated_poc/targeting.py +9 -9
  85. adcp/types/generated_poc/task_status.py +10 -10
  86. adcp/types/generated_poc/task_type.py +6 -6
  87. adcp/types/generated_poc/tasks_get_request.py +5 -5
  88. adcp/types/generated_poc/tasks_get_response.py +35 -35
  89. adcp/types/generated_poc/tasks_list_request.py +36 -36
  90. adcp/types/generated_poc/tasks_list_response.py +35 -35
  91. adcp/types/generated_poc/text_asset.py +3 -3
  92. adcp/types/generated_poc/update_media_buy_request.py +27 -27
  93. adcp/types/generated_poc/update_media_buy_response.py +11 -11
  94. adcp/types/generated_poc/url_asset.py +7 -7
  95. adcp/types/generated_poc/vast_asset.py +38 -38
  96. adcp/types/generated_poc/vcpm_auction_option.py +17 -13
  97. adcp/types/generated_poc/vcpm_fixed_option.py +12 -8
  98. adcp/types/generated_poc/video_asset.py +8 -8
  99. adcp/types/generated_poc/webhook_asset.py +19 -19
  100. adcp/types/generated_poc/webhook_payload.py +18 -18
  101. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/METADATA +1 -1
  102. adcp-2.4.0.dist-info/RECORD +132 -0
  103. adcp-2.3.0.dist-info/RECORD +0 -132
  104. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/WHEEL +0 -0
  105. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/entry_points.txt +0 -0
  106. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/licenses/LICENSE +0 -0
  107. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: javascript-asset.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,14 +12,14 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
 
14
14
  class ModuleType(Enum):
15
- esm = "esm"
16
- commonjs = "commonjs"
17
- script = "script"
15
+ esm = 'esm'
16
+ commonjs = 'commonjs'
17
+ script = 'script'
18
18
 
19
19
 
20
20
  class JavascriptAsset(AdCPBaseModel):
21
21
  model_config = ConfigDict(
22
- extra="forbid",
22
+ extra='forbid',
23
23
  )
24
- content: Annotated[str, Field(description="JavaScript content")]
25
- module_type: Annotated[ModuleType | None, Field(description="JavaScript module type")] = None
24
+ content: Annotated[str, Field(description='JavaScript content')]
25
+ module_type: Annotated[ModuleType | None, Field(description='JavaScript module type')] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: list-authorized-properties-request.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -15,25 +15,25 @@ class PublisherDomain(RootModel[str]):
15
15
  str,
16
16
  Field(
17
17
  description="Publisher domain to filter by (e.g., 'cnn.com', 'espn.com')",
18
- pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
18
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
19
19
  ),
20
20
  ]
21
21
 
22
22
 
23
23
  class ListAuthorizedPropertiesRequest(AdCPBaseModel):
24
24
  model_config = ConfigDict(
25
- extra="forbid",
25
+ extra='forbid',
26
26
  )
27
27
  context: Annotated[
28
28
  dict[str, Any] | None,
29
29
  Field(
30
- 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."
30
+ 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.'
31
31
  ),
32
32
  ] = None
33
33
  publisher_domains: Annotated[
34
34
  list[PublisherDomain] | None,
35
35
  Field(
36
- description="Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.",
36
+ description='Filter to specific publisher domains (optional). If omitted, returns all publishers this agent represents.',
37
37
  min_length=1,
38
38
  ),
39
39
  ] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: list-authorized-properties-response.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -13,7 +13,7 @@ from . import channels, error
13
13
 
14
14
 
15
15
  class PrimaryCountry(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 PublisherDomain(RootModel[str]):
@@ -21,14 +21,14 @@ class PublisherDomain(RootModel[str]):
21
21
  str,
22
22
  Field(
23
23
  description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
24
- pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
24
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
25
25
  ),
26
26
  ]
27
27
 
28
28
 
29
29
  class ListAuthorizedPropertiesResponse(AdCPBaseModel):
30
30
  model_config = ConfigDict(
31
- extra="forbid",
31
+ extra='forbid',
32
32
  )
33
33
  advertising_policies: Annotated[
34
34
  str | None,
@@ -41,12 +41,12 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
41
41
  context: Annotated[
42
42
  dict[str, Any] | None,
43
43
  Field(
44
- description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers."
44
+ description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
45
45
  ),
46
46
  ] = None
47
47
  errors: Annotated[
48
48
  list[error.Error] | None,
49
- Field(description="Task-specific errors and warnings (e.g., property availability issues)"),
49
+ Field(description='Task-specific errors and warnings (e.g., property availability issues)'),
50
50
  ] = None
51
51
  last_updated: Annotated[
52
52
  AwareDatetime | None,
@@ -57,7 +57,7 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
57
57
  portfolio_description: Annotated[
58
58
  str | None,
59
59
  Field(
60
- description="Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.",
60
+ description='Markdown-formatted description of the property portfolio, including inventory types, audience characteristics, and special features.',
61
61
  max_length=5000,
62
62
  min_length=1,
63
63
  ),
@@ -65,14 +65,14 @@ class ListAuthorizedPropertiesResponse(AdCPBaseModel):
65
65
  primary_channels: Annotated[
66
66
  list[channels.AdvertisingChannels] | None,
67
67
  Field(
68
- description="Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.",
68
+ description='Primary advertising channels represented in this property portfolio. Helps buying agents quickly filter relevance.',
69
69
  min_length=1,
70
70
  ),
71
71
  ] = None
72
72
  primary_countries: Annotated[
73
73
  list[PrimaryCountry] | None,
74
74
  Field(
75
- description="Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.",
75
+ description='Primary countries (ISO 3166-1 alpha-2 codes) where properties are concentrated. Helps buying agents quickly filter relevance.',
76
76
  min_length=1,
77
77
  ),
78
78
  ] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: list-creative-formats-request.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -14,25 +14,25 @@ from . import format_id
14
14
 
15
15
 
16
16
  class AssetType(Enum):
17
- image = "image"
18
- video = "video"
19
- audio = "audio"
20
- text = "text"
21
- html = "html"
22
- javascript = "javascript"
23
- url = "url"
17
+ image = 'image'
18
+ video = 'video'
19
+ audio = 'audio'
20
+ text = 'text'
21
+ html = 'html'
22
+ javascript = 'javascript'
23
+ url = 'url'
24
24
 
25
25
 
26
26
  class Type(Enum):
27
- audio = "audio"
28
- video = "video"
29
- display = "display"
30
- dooh = "dooh"
27
+ audio = 'audio'
28
+ video = 'video'
29
+ display = 'display'
30
+ dooh = 'dooh'
31
31
 
32
32
 
33
33
  class ListCreativeFormatsRequest(AdCPBaseModel):
34
34
  model_config = ConfigDict(
35
- extra="forbid",
35
+ extra='forbid',
36
36
  )
37
37
  asset_types: Annotated[
38
38
  list[AssetType] | None,
@@ -43,51 +43,51 @@ class ListCreativeFormatsRequest(AdCPBaseModel):
43
43
  context: Annotated[
44
44
  dict[str, Any] | None,
45
45
  Field(
46
- 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."
46
+ 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.'
47
47
  ),
48
48
  ] = None
49
49
  format_ids: Annotated[
50
50
  list[format_id.FormatId] | None,
51
51
  Field(
52
- description="Return only these specific format IDs (e.g., from get_products response)"
52
+ description='Return only these specific format IDs (e.g., from get_products response)'
53
53
  ),
54
54
  ] = None
55
55
  is_responsive: Annotated[
56
56
  bool | None,
57
57
  Field(
58
- description="Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions."
58
+ description='Filter for responsive formats that adapt to container size. When true, returns formats without fixed dimensions.'
59
59
  ),
60
60
  ] = None
61
61
  max_height: Annotated[
62
62
  int | None,
63
63
  Field(
64
- description="Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits."
64
+ description='Maximum height in pixels (inclusive). Returns formats where ANY render has height <= this value. For multi-render formats, matches if at least one render fits.'
65
65
  ),
66
66
  ] = None
67
67
  max_width: Annotated[
68
68
  int | None,
69
69
  Field(
70
- description="Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits."
70
+ description='Maximum width in pixels (inclusive). Returns formats where ANY render has width <= this value. For multi-render formats, matches if at least one render fits.'
71
71
  ),
72
72
  ] = None
73
73
  min_height: Annotated[
74
74
  int | None,
75
75
  Field(
76
- description="Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value."
76
+ description='Minimum height in pixels (inclusive). Returns formats where ANY render has height >= this value.'
77
77
  ),
78
78
  ] = None
79
79
  min_width: Annotated[
80
80
  int | None,
81
81
  Field(
82
- description="Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value."
82
+ description='Minimum width in pixels (inclusive). Returns formats where ANY render has width >= this value.'
83
83
  ),
84
84
  ] = None
85
85
  name_search: Annotated[
86
- str | None, Field(description="Search for formats by name (case-insensitive partial match)")
86
+ str | None, Field(description='Search for formats by name (case-insensitive partial match)')
87
87
  ] = None
88
88
  type: Annotated[
89
89
  Type | None,
90
90
  Field(
91
- description="Filter by format type (technical categories with distinct requirements)"
91
+ description='Filter by format type (technical categories with distinct requirements)'
92
92
  ),
93
93
  ] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: list-creative-formats-response.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -14,15 +14,15 @@ from . import error, format
14
14
 
15
15
 
16
16
  class Capability(Enum):
17
- validation = "validation"
18
- assembly = "assembly"
19
- generation = "generation"
20
- preview = "preview"
17
+ validation = 'validation'
18
+ assembly = 'assembly'
19
+ generation = 'generation'
20
+ preview = 'preview'
21
21
 
22
22
 
23
23
  class CreativeAgent(AdCPBaseModel):
24
24
  agent_name: Annotated[
25
- str | None, Field(description="Human-readable name for the creative agent")
25
+ str | None, Field(description='Human-readable name for the creative agent')
26
26
  ] = None
27
27
  agent_url: Annotated[
28
28
  AnyUrl,
@@ -31,29 +31,29 @@ class CreativeAgent(AdCPBaseModel):
31
31
  ),
32
32
  ]
33
33
  capabilities: Annotated[
34
- list[Capability] | None, Field(description="Capabilities this creative agent provides")
34
+ list[Capability] | None, Field(description='Capabilities this creative agent provides')
35
35
  ] = None
36
36
 
37
37
 
38
38
  class ListCreativeFormatsResponse(AdCPBaseModel):
39
39
  model_config = ConfigDict(
40
- extra="forbid",
40
+ extra='forbid',
41
41
  )
42
42
  context: Annotated[
43
43
  dict[str, Any] | None,
44
44
  Field(
45
- description="Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers."
45
+ description='Initiator-provided context echoed inside the task payload. Opaque metadata such as UI/session hints, correlation tokens, or tracking identifiers.'
46
46
  ),
47
47
  ] = None
48
48
  creative_agents: Annotated[
49
49
  list[CreativeAgent] | None,
50
50
  Field(
51
- 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."
51
+ 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.'
52
52
  ),
53
53
  ] = None
54
54
  errors: Annotated[
55
55
  list[error.Error] | None,
56
- Field(description="Task-specific errors and warnings (e.g., format availability issues)"),
56
+ Field(description='Task-specific errors and warnings (e.g., format availability issues)'),
57
57
  ] = None
58
58
  formats: Annotated[
59
59
  list[format.Format],
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: list-creatives-request.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -14,141 +14,141 @@ from . import creative_status
14
14
 
15
15
 
16
16
  class FieldModel(Enum):
17
- creative_id = "creative_id"
18
- name = "name"
19
- format = "format"
20
- status = "status"
21
- created_date = "created_date"
22
- updated_date = "updated_date"
23
- tags = "tags"
24
- assignments = "assignments"
25
- performance = "performance"
26
- sub_assets = "sub_assets"
17
+ creative_id = 'creative_id'
18
+ name = 'name'
19
+ format = 'format'
20
+ status = 'status'
21
+ created_date = 'created_date'
22
+ updated_date = 'updated_date'
23
+ tags = 'tags'
24
+ assignments = 'assignments'
25
+ performance = 'performance'
26
+ sub_assets = 'sub_assets'
27
27
 
28
28
 
29
29
  class Filters(AdCPBaseModel):
30
30
  model_config = ConfigDict(
31
- extra="forbid",
31
+ extra='forbid',
32
32
  )
33
33
  assigned_to_package: Annotated[
34
- str | None, Field(description="Filter creatives assigned to this specific package")
34
+ str | None, Field(description='Filter creatives assigned to this specific package')
35
35
  ] = None
36
36
  assigned_to_packages: Annotated[
37
- list[str] | None, Field(description="Filter creatives assigned to any of these packages")
37
+ list[str] | None, Field(description='Filter creatives assigned to any of these packages')
38
38
  ] = None
39
39
  created_after: Annotated[
40
40
  AwareDatetime | None,
41
- Field(description="Filter creatives created after this date (ISO 8601)"),
41
+ Field(description='Filter creatives created after this date (ISO 8601)'),
42
42
  ] = None
43
43
  created_before: Annotated[
44
44
  AwareDatetime | None,
45
- Field(description="Filter creatives created before this date (ISO 8601)"),
45
+ Field(description='Filter creatives created before this date (ISO 8601)'),
46
46
  ] = None
47
47
  creative_ids: Annotated[
48
- list[str] | None, Field(description="Filter by specific creative IDs", max_length=100)
48
+ list[str] | None, Field(description='Filter by specific creative IDs', max_length=100)
49
49
  ] = None
50
50
  format: Annotated[
51
51
  str | None,
52
- Field(description="Filter by creative format type (e.g., video, audio, display)"),
52
+ Field(description='Filter by creative format type (e.g., video, audio, display)'),
53
53
  ] = None
54
54
  formats: Annotated[
55
- list[str] | None, Field(description="Filter by multiple creative format types")
55
+ list[str] | None, Field(description='Filter by multiple creative format types')
56
56
  ] = None
57
57
  has_performance_data: Annotated[
58
- bool | None, Field(description="Filter creatives that have performance data when true")
58
+ bool | None, Field(description='Filter creatives that have performance data when true')
59
59
  ] = None
60
60
  name_contains: Annotated[
61
61
  str | None,
62
- Field(description="Filter by creative names containing this text (case-insensitive)"),
62
+ Field(description='Filter by creative names containing this text (case-insensitive)'),
63
63
  ] = None
64
64
  status: Annotated[
65
65
  creative_status.CreativeStatus | None,
66
- Field(description="Filter by creative approval status"),
66
+ Field(description='Filter by creative approval status'),
67
67
  ] = None
68
68
  statuses: Annotated[
69
69
  list[creative_status.CreativeStatus] | None,
70
- Field(description="Filter by multiple creative statuses"),
70
+ Field(description='Filter by multiple creative statuses'),
71
71
  ] = None
72
72
  tags: Annotated[
73
- list[str] | None, Field(description="Filter by creative tags (all tags must match)")
73
+ list[str] | None, Field(description='Filter by creative tags (all tags must match)')
74
74
  ] = None
75
75
  tags_any: Annotated[
76
- list[str] | None, Field(description="Filter by creative tags (any tag must match)")
76
+ list[str] | None, Field(description='Filter by creative tags (any tag must match)')
77
77
  ] = None
78
78
  unassigned: Annotated[
79
79
  bool | None,
80
80
  Field(
81
- description="Filter for unassigned creatives when true, assigned creatives when false"
81
+ description='Filter for unassigned creatives when true, assigned creatives when false'
82
82
  ),
83
83
  ] = None
84
84
  updated_after: Annotated[
85
85
  AwareDatetime | None,
86
- Field(description="Filter creatives last updated after this date (ISO 8601)"),
86
+ Field(description='Filter creatives last updated after this date (ISO 8601)'),
87
87
  ] = None
88
88
  updated_before: Annotated[
89
89
  AwareDatetime | None,
90
- Field(description="Filter creatives last updated before this date (ISO 8601)"),
90
+ Field(description='Filter creatives last updated before this date (ISO 8601)'),
91
91
  ] = None
92
92
 
93
93
 
94
94
  class Pagination(AdCPBaseModel):
95
95
  model_config = ConfigDict(
96
- extra="forbid",
96
+ extra='forbid',
97
97
  )
98
98
  limit: Annotated[
99
- int | None, Field(description="Maximum number of creatives to return", ge=1, le=100)
99
+ int | None, Field(description='Maximum number of creatives to return', ge=1, le=100)
100
100
  ] = 50
101
- offset: Annotated[int | None, Field(description="Number of creatives to skip", ge=0)] = 0
101
+ offset: Annotated[int | None, Field(description='Number of creatives to skip', ge=0)] = 0
102
102
 
103
103
 
104
104
  class Direction(Enum):
105
- asc = "asc"
106
- desc = "desc"
105
+ asc = 'asc'
106
+ desc = 'desc'
107
107
 
108
108
 
109
109
  class Field1(Enum):
110
- created_date = "created_date"
111
- updated_date = "updated_date"
112
- name = "name"
113
- status = "status"
114
- assignment_count = "assignment_count"
115
- performance_score = "performance_score"
110
+ created_date = 'created_date'
111
+ updated_date = 'updated_date'
112
+ name = 'name'
113
+ status = 'status'
114
+ assignment_count = 'assignment_count'
115
+ performance_score = 'performance_score'
116
116
 
117
117
 
118
118
  class Sort(AdCPBaseModel):
119
119
  model_config = ConfigDict(
120
- extra="forbid",
120
+ extra='forbid',
121
121
  )
122
- direction: Annotated[Direction | None, Field(description="Sort direction")] = Direction.desc
123
- field: Annotated[Field1 | None, Field(description="Field to sort by")] = Field1.created_date
122
+ direction: Annotated[Direction | None, Field(description='Sort direction')] = Direction.desc
123
+ field: Annotated[Field1 | None, Field(description='Field to sort by')] = Field1.created_date
124
124
 
125
125
 
126
126
  class ListCreativesRequest(AdCPBaseModel):
127
127
  model_config = ConfigDict(
128
- extra="forbid",
128
+ extra='forbid',
129
129
  )
130
130
  context: Annotated[
131
131
  dict[str, Any] | None,
132
132
  Field(
133
- 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."
133
+ 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.'
134
134
  ),
135
135
  ] = None
136
136
  fields: Annotated[
137
137
  list[FieldModel] | None,
138
- Field(description="Specific fields to include in response (omit for all fields)"),
138
+ Field(description='Specific fields to include in response (omit for all fields)'),
139
139
  ] = None
140
140
  filters: Annotated[
141
- Filters | None, Field(description="Filter criteria for querying creatives")
141
+ Filters | None, Field(description='Filter criteria for querying creatives')
142
142
  ] = None
143
143
  include_assignments: Annotated[
144
- bool | None, Field(description="Include package assignment information in response")
144
+ bool | None, Field(description='Include package assignment information in response')
145
145
  ] = True
146
146
  include_performance: Annotated[
147
- bool | None, Field(description="Include aggregated performance metrics in response")
147
+ bool | None, Field(description='Include aggregated performance metrics in response')
148
148
  ] = False
149
149
  include_sub_assets: Annotated[
150
150
  bool | None,
151
- Field(description="Include sub-assets (for carousel/native formats) in response"),
151
+ Field(description='Include sub-assets (for carousel/native formats) in response'),
152
152
  ] = False
153
- pagination: Annotated[Pagination | None, Field(description="Pagination parameters")] = None
154
- sort: Annotated[Sort | None, Field(description="Sorting parameters")] = None
153
+ pagination: Annotated[Pagination | None, Field(description='Pagination parameters')] = None
154
+ sort: Annotated[Sort | None, Field(description='Sorting parameters')] = None