adcp 2.18.0__py3-none-any.whl → 2.19.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 (187) hide show
  1. adcp/__init__.py +1 -1
  2. adcp/protocols/mcp.py +3 -1
  3. adcp/types/_ergonomic.py +0 -4
  4. adcp/types/_generated.py +85 -4
  5. adcp/types/generated_poc/adagents.py +239 -149
  6. adcp/types/generated_poc/core/activation_key.py +8 -8
  7. adcp/types/generated_poc/core/assets/audio_asset.py +5 -5
  8. adcp/types/generated_poc/core/assets/css_asset.py +2 -2
  9. adcp/types/generated_poc/core/assets/daast_asset.py +18 -18
  10. adcp/types/generated_poc/core/assets/html_asset.py +2 -2
  11. adcp/types/generated_poc/core/assets/image_asset.py +6 -6
  12. adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
  13. adcp/types/generated_poc/core/assets/text_asset.py +2 -2
  14. adcp/types/generated_poc/core/assets/url_asset.py +3 -3
  15. adcp/types/generated_poc/core/assets/vast_asset.py +18 -18
  16. adcp/types/generated_poc/core/assets/video_asset.py +7 -7
  17. adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
  18. adcp/types/generated_poc/core/async_response_data.py +2 -2
  19. adcp/types/generated_poc/core/brand_manifest.py +55 -55
  20. adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
  21. adcp/types/generated_poc/core/context.py +1 -1
  22. adcp/types/generated_poc/core/creative_asset.py +13 -13
  23. adcp/types/generated_poc/core/creative_assignment.py +3 -3
  24. adcp/types/generated_poc/core/creative_filters.py +19 -19
  25. adcp/types/generated_poc/core/creative_manifest.py +2 -2
  26. adcp/types/generated_poc/core/creative_policy.py +4 -4
  27. adcp/types/generated_poc/core/delivery_metrics.py +32 -32
  28. adcp/types/generated_poc/core/deployment.py +20 -20
  29. adcp/types/generated_poc/core/destination.py +11 -11
  30. adcp/types/generated_poc/core/error.py +6 -6
  31. adcp/types/generated_poc/core/ext.py +1 -1
  32. adcp/types/generated_poc/core/format.py +67 -66
  33. adcp/types/generated_poc/core/format_id.py +5 -5
  34. adcp/types/generated_poc/core/frequency_cap.py +2 -2
  35. adcp/types/generated_poc/core/identifier.py +27 -0
  36. adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
  37. adcp/types/generated_poc/core/measurement.py +8 -8
  38. adcp/types/generated_poc/core/media_buy.py +7 -7
  39. adcp/types/generated_poc/core/package.py +8 -8
  40. adcp/types/generated_poc/core/performance_feedback.py +18 -18
  41. adcp/types/generated_poc/core/placement.py +4 -4
  42. adcp/types/generated_poc/core/pricing_option.py +2 -2
  43. adcp/types/generated_poc/core/product.py +20 -20
  44. adcp/types/generated_poc/core/product_filters.py +18 -18
  45. adcp/types/generated_poc/core/promoted_offerings.py +20 -20
  46. adcp/types/generated_poc/core/promoted_products.py +2 -2
  47. adcp/types/generated_poc/core/property.py +9 -9
  48. adcp/types/generated_poc/core/property_id.py +4 -4
  49. adcp/types/generated_poc/core/property_list_ref.py +26 -0
  50. adcp/types/generated_poc/core/property_tag.py +4 -4
  51. adcp/types/generated_poc/core/protocol_envelope.py +8 -8
  52. adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
  53. adcp/types/generated_poc/core/push_notification_config.py +5 -5
  54. adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
  55. adcp/types/generated_poc/core/response.py +4 -4
  56. adcp/types/generated_poc/core/signal_filters.py +5 -5
  57. adcp/types/generated_poc/core/start_timing.py +5 -5
  58. adcp/types/generated_poc/core/sub_asset.py +14 -14
  59. adcp/types/generated_poc/core/targeting.py +8 -8
  60. adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
  61. adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
  62. adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
  63. adcp/types/generated_poc/creative/preview_creative_response.py +31 -30
  64. adcp/types/generated_poc/creative/preview_render.py +25 -25
  65. adcp/types/generated_poc/enums/adcp_domain.py +5 -3
  66. adcp/types/generated_poc/enums/asset_content_type.py +13 -13
  67. adcp/types/generated_poc/enums/auth_scheme.py +2 -2
  68. adcp/types/generated_poc/enums/available_metric.py +9 -9
  69. adcp/types/generated_poc/enums/channels.py +9 -9
  70. adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
  71. adcp/types/generated_poc/enums/creative_action.py +5 -5
  72. adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
  73. adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
  74. adcp/types/generated_poc/enums/creative_status.py +4 -4
  75. adcp/types/generated_poc/enums/daast_tracking_event.py +11 -11
  76. adcp/types/generated_poc/enums/daast_version.py +2 -2
  77. adcp/types/generated_poc/enums/delivery_type.py +2 -2
  78. adcp/types/generated_poc/enums/dimension_unit.py +4 -4
  79. adcp/types/generated_poc/enums/feed_format.py +3 -3
  80. adcp/types/generated_poc/enums/feedback_source.py +4 -4
  81. adcp/types/generated_poc/enums/format_category.py +7 -7
  82. adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
  83. adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
  84. adcp/types/generated_poc/enums/history_entry_type.py +2 -2
  85. adcp/types/generated_poc/enums/http_method.py +2 -2
  86. adcp/types/generated_poc/enums/identifier_types.py +19 -19
  87. adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
  88. adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
  89. adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
  90. adcp/types/generated_poc/enums/media_buy_status.py +4 -4
  91. adcp/types/generated_poc/enums/metric_type.py +8 -8
  92. adcp/types/generated_poc/enums/notification_type.py +4 -4
  93. adcp/types/generated_poc/enums/pacing.py +3 -3
  94. adcp/types/generated_poc/enums/preview_output_format.py +2 -2
  95. adcp/types/generated_poc/enums/pricing_model.py +7 -7
  96. adcp/types/generated_poc/enums/property_type.py +7 -7
  97. adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
  98. adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
  99. adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
  100. adcp/types/generated_poc/enums/sort_direction.py +2 -2
  101. adcp/types/generated_poc/enums/standard_format_ids.py +35 -35
  102. adcp/types/generated_poc/enums/task_status.py +9 -9
  103. adcp/types/generated_poc/enums/task_type.py +12 -6
  104. adcp/types/generated_poc/enums/update_frequency.py +4 -4
  105. adcp/types/generated_poc/enums/url_asset_type.py +3 -3
  106. adcp/types/generated_poc/enums/validation_mode.py +2 -2
  107. adcp/types/generated_poc/enums/vast_tracking_event.py +16 -16
  108. adcp/types/generated_poc/enums/vast_version.py +5 -5
  109. adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
  110. adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
  111. adcp/types/generated_poc/extensions/__init__.py +3 -0
  112. adcp/types/generated_poc/extensions/extension_meta.py +50 -0
  113. adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
  114. adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
  115. adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
  116. adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
  117. adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
  118. adcp/types/generated_poc/media_buy/create_media_buy_request.py +25 -25
  119. adcp/types/generated_poc/media_buy/create_media_buy_response.py +7 -7
  120. adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
  121. adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
  122. adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
  123. adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
  124. adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
  125. adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
  126. adcp/types/generated_poc/media_buy/get_products_response.py +10 -4
  127. adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +3 -3
  128. adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +7 -7
  129. adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
  130. adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
  131. adcp/types/generated_poc/media_buy/list_creatives_request.py +24 -24
  132. adcp/types/generated_poc/media_buy/list_creatives_response.py +52 -52
  133. adcp/types/generated_poc/media_buy/package_request.py +16 -7
  134. adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
  135. adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
  136. adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
  137. adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
  138. adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
  139. adcp/types/generated_poc/media_buy/sync_creatives_request.py +7 -7
  140. adcp/types/generated_poc/media_buy/sync_creatives_response.py +15 -15
  141. adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
  142. adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
  143. adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
  144. adcp/types/generated_poc/media_buy/update_media_buy_request.py +37 -29
  145. adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
  146. adcp/types/generated_poc/pricing_options/cpc_option.py +8 -8
  147. adcp/types/generated_poc/pricing_options/cpcv_option.py +8 -8
  148. adcp/types/generated_poc/pricing_options/cpm_auction_option.py +13 -13
  149. adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +8 -8
  150. adcp/types/generated_poc/pricing_options/cpp_option.py +13 -13
  151. adcp/types/generated_poc/pricing_options/cpv_option.py +12 -12
  152. adcp/types/generated_poc/pricing_options/flat_rate_option.py +15 -15
  153. adcp/types/generated_poc/pricing_options/vcpm_auction_option.py +13 -13
  154. adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +8 -8
  155. adcp/types/generated_poc/property/__init__.py +3 -0
  156. adcp/types/generated_poc/property/base_property_source.py +86 -0
  157. adcp/types/generated_poc/property/create_property_list_request.py +43 -0
  158. adcp/types/generated_poc/property/create_property_list_response.py +27 -0
  159. adcp/types/generated_poc/property/delete_property_list_request.py +22 -0
  160. adcp/types/generated_poc/property/delete_property_list_response.py +21 -0
  161. adcp/types/generated_poc/property/feature_requirement.py +42 -0
  162. adcp/types/generated_poc/property/get_property_list_request.py +34 -0
  163. adcp/types/generated_poc/property/get_property_list_response.py +61 -0
  164. adcp/types/generated_poc/property/list_property_features_request.py +25 -0
  165. adcp/types/generated_poc/property/list_property_features_response.py +24 -0
  166. adcp/types/generated_poc/property/list_property_lists_request.py +29 -0
  167. adcp/types/generated_poc/property/list_property_lists_response.py +39 -0
  168. adcp/types/generated_poc/property/property_error.py +33 -0
  169. adcp/types/generated_poc/property/property_feature.py +22 -0
  170. adcp/types/generated_poc/property/property_feature_definition.py +80 -0
  171. adcp/types/generated_poc/property/property_list.py +62 -0
  172. adcp/types/generated_poc/property/property_list_changed_webhook.py +51 -0
  173. adcp/types/generated_poc/property/property_list_filters.py +47 -0
  174. adcp/types/generated_poc/property/update_property_list_request.py +46 -0
  175. adcp/types/generated_poc/property/update_property_list_response.py +21 -0
  176. adcp/types/generated_poc/protocols/adcp_extension.py +26 -10
  177. adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
  178. adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
  179. adcp/types/generated_poc/signals/get_signals_request.py +8 -8
  180. adcp/types/generated_poc/signals/get_signals_response.py +15 -15
  181. {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/METADATA +1 -1
  182. adcp-2.19.0.dist-info/RECORD +220 -0
  183. adcp-2.18.0.dist-info/RECORD +0 -195
  184. {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/WHEEL +0 -0
  185. {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/entry_points.txt +0 -0
  186. {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/licenses/LICENSE +0 -0
  187. {adcp-2.18.0.dist-info → adcp-2.19.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/package_request.json
3
- # timestamp: 2026-01-08T19:25:24+00:00
3
+ # timestamp: 2026-01-14T17:08:13+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -17,12 +17,12 @@ from ..enums import pacing as pacing_1
17
17
 
18
18
  class PackageRequest(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='allow',
20
+ extra="allow",
21
21
  )
22
22
  bid_price: Annotated[
23
23
  float | None,
24
24
  Field(
25
- description='Bid price for auction-based CPM pricing (required if using cpm-auction-option)',
25
+ description="Bid price for auction-based CPM pricing (required if using cpm-auction-option)",
26
26
  ge=0.0,
27
27
  ),
28
28
  ] = None
@@ -34,13 +34,13 @@ class PackageRequest(AdCPBaseModel):
34
34
  creative_ids: Annotated[
35
35
  list[str] | None,
36
36
  Field(
37
- description='Creative IDs to assign to this package at creation time (references existing library creatives)'
37
+ description="Creative IDs to assign to this package at creation time (references existing library creatives)"
38
38
  ),
39
39
  ] = None
40
40
  creatives: Annotated[
41
41
  list[creative_asset.CreativeAsset] | None,
42
42
  Field(
43
- description='Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.',
43
+ description="Full creative objects to upload and assign to this package at creation time (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.",
44
44
  max_length=100,
45
45
  ),
46
46
  ] = None
@@ -48,16 +48,25 @@ class PackageRequest(AdCPBaseModel):
48
48
  format_ids: Annotated[
49
49
  list[format_id.FormatId] | None,
50
50
  Field(
51
- description='Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.',
51
+ description="Array of format IDs that will be used for this package - must be supported by the product. If omitted, defaults to all formats supported by the product.",
52
52
  min_length=1,
53
53
  ),
54
54
  ] = None
55
+ impressions: Annotated[
56
+ float | None, Field(description="Impression goal for this package", ge=0.0)
57
+ ] = None
55
58
  pacing: pacing_1.Pacing | None = None
59
+ paused: Annotated[
60
+ bool | None,
61
+ Field(
62
+ description="Whether this package should be created in a paused state. Paused packages do not deliver impressions. Defaults to false."
63
+ ),
64
+ ] = False
56
65
  pricing_option_id: Annotated[
57
66
  str,
58
67
  Field(
59
68
  description="ID of the selected pricing option from the product's pricing_options array"
60
69
  ),
61
70
  ]
62
- product_id: Annotated[str, Field(description='Product ID for this package')]
71
+ product_id: Annotated[str, Field(description="Product ID for this package")]
63
72
  targeting_overlay: targeting.TargetingOverlay | None = None
@@ -17,19 +17,19 @@ from ..enums import metric_type as metric_type_1
17
17
 
18
18
  class MeasurementPeriod(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='allow',
20
+ extra="allow",
21
21
  )
22
22
  end: Annotated[
23
- AwareDatetime, Field(description='ISO 8601 end timestamp for measurement period')
23
+ AwareDatetime, Field(description="ISO 8601 end timestamp for measurement period")
24
24
  ]
25
25
  start: Annotated[
26
- AwareDatetime, Field(description='ISO 8601 start timestamp for measurement period')
26
+ AwareDatetime, Field(description="ISO 8601 start timestamp for measurement period")
27
27
  ]
28
28
 
29
29
 
30
30
  class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='allow',
32
+ extra="allow",
33
33
  )
34
34
  buyer_ref: Annotated[
35
35
  str | None, Field(description="Buyer's reference for the media buy", min_length=1)
@@ -38,33 +38,33 @@ class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
38
38
  creative_id: Annotated[
39
39
  str | None,
40
40
  Field(
41
- description='Specific creative asset (if feedback is creative-specific)', min_length=1
41
+ description="Specific creative asset (if feedback is creative-specific)", min_length=1
42
42
  ),
43
43
  ] = None
44
44
  ext: ext_1.ExtensionObject | None = None
45
45
  feedback_source: Annotated[
46
- feedback_source_1.FeedbackSource | None, Field(description='Source of the performance data')
46
+ feedback_source_1.FeedbackSource | None, Field(description="Source of the performance data")
47
47
  ] = feedback_source_1.FeedbackSource.buyer_attribution
48
48
  measurement_period: Annotated[
49
- MeasurementPeriod, Field(description='Time period for performance measurement')
49
+ MeasurementPeriod, Field(description="Time period for performance measurement")
50
50
  ]
51
51
  media_buy_id: Annotated[
52
52
  str, Field(description="Publisher's media buy identifier", min_length=1)
53
53
  ]
54
54
  metric_type: Annotated[
55
- metric_type_1.MetricType | None, Field(description='The business metric being measured')
55
+ metric_type_1.MetricType | None, Field(description="The business metric being measured")
56
56
  ] = metric_type_1.MetricType.overall_performance
57
57
  package_id: Annotated[
58
58
  str | None,
59
59
  Field(
60
- description='Specific package within the media buy (if feedback is package-specific)',
60
+ description="Specific package within the media buy (if feedback is package-specific)",
61
61
  min_length=1,
62
62
  ),
63
63
  ] = None
64
64
  performance_index: Annotated[
65
65
  float,
66
66
  Field(
67
- description='Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)',
67
+ description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)",
68
68
  ge=0.0,
69
69
  ),
70
70
  ]
@@ -72,7 +72,7 @@ class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
72
72
 
73
73
  class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
74
74
  model_config = ConfigDict(
75
- extra='allow',
75
+ extra="allow",
76
76
  )
77
77
  buyer_ref: Annotated[
78
78
  str, Field(description="Buyer's reference for the media buy", min_length=1)
@@ -81,33 +81,33 @@ class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
81
81
  creative_id: Annotated[
82
82
  str | None,
83
83
  Field(
84
- description='Specific creative asset (if feedback is creative-specific)', min_length=1
84
+ description="Specific creative asset (if feedback is creative-specific)", min_length=1
85
85
  ),
86
86
  ] = None
87
87
  ext: ext_1.ExtensionObject | None = None
88
88
  feedback_source: Annotated[
89
- feedback_source_1.FeedbackSource | None, Field(description='Source of the performance data')
89
+ feedback_source_1.FeedbackSource | None, Field(description="Source of the performance data")
90
90
  ] = feedback_source_1.FeedbackSource.buyer_attribution
91
91
  measurement_period: Annotated[
92
- MeasurementPeriod, Field(description='Time period for performance measurement')
92
+ MeasurementPeriod, Field(description="Time period for performance measurement")
93
93
  ]
94
94
  media_buy_id: Annotated[
95
95
  str | None, Field(description="Publisher's media buy identifier", min_length=1)
96
96
  ] = None
97
97
  metric_type: Annotated[
98
- metric_type_1.MetricType | None, Field(description='The business metric being measured')
98
+ metric_type_1.MetricType | None, Field(description="The business metric being measured")
99
99
  ] = metric_type_1.MetricType.overall_performance
100
100
  package_id: Annotated[
101
101
  str | None,
102
102
  Field(
103
- description='Specific package within the media buy (if feedback is package-specific)',
103
+ description="Specific package within the media buy (if feedback is package-specific)",
104
104
  min_length=1,
105
105
  ),
106
106
  ] = None
107
107
  performance_index: Annotated[
108
108
  float,
109
109
  Field(
110
- description='Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)',
110
+ description="Normalized performance score (0.0 = no value, 1.0 = expected, >1.0 = above expected)",
111
111
  ge=0.0,
112
112
  ),
113
113
  ]
@@ -119,7 +119,7 @@ class ProvidePerformanceFeedbackRequest(
119
119
  root: Annotated[
120
120
  ProvidePerformanceFeedbackRequest1 | ProvidePerformanceFeedbackRequest2,
121
121
  Field(
122
- description='Request payload for provide_performance_feedback task',
123
- title='Provide Performance Feedback Request',
122
+ description="Request payload for provide_performance_feedback task",
123
+ title="Provide Performance Feedback Request",
124
124
  ),
125
125
  ]
@@ -16,25 +16,25 @@ from ..core import ext as ext_1
16
16
 
17
17
  class ProvidePerformanceFeedbackResponse1(AdCPBaseModel):
18
18
  model_config = ConfigDict(
19
- extra='allow',
19
+ extra="allow",
20
20
  )
21
21
  context: context_1.ContextObject | None = None
22
22
  ext: ext_1.ExtensionObject | None = None
23
23
  success: Annotated[
24
24
  Literal[True],
25
- Field(description='Whether the performance feedback was successfully received'),
25
+ Field(description="Whether the performance feedback was successfully received"),
26
26
  ]
27
27
 
28
28
 
29
29
  class ProvidePerformanceFeedbackResponse2(AdCPBaseModel):
30
30
  model_config = ConfigDict(
31
- extra='allow',
31
+ extra="allow",
32
32
  )
33
33
  context: context_1.ContextObject | None = None
34
34
  errors: Annotated[
35
35
  list[error.Error],
36
36
  Field(
37
- description='Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)',
37
+ description="Array of errors explaining why feedback was rejected (e.g., invalid measurement period, missing campaign data)",
38
38
  min_length=1,
39
39
  ),
40
40
  ]
@@ -47,7 +47,7 @@ class ProvidePerformanceFeedbackResponse(
47
47
  root: Annotated[
48
48
  ProvidePerformanceFeedbackResponse1 | ProvidePerformanceFeedbackResponse2,
49
49
  Field(
50
- description='Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.',
51
- title='Provide Performance Feedback Response',
50
+ description="Response payload for provide_performance_feedback task. Returns either success confirmation OR error information, never both.",
51
+ title="Provide Performance Feedback Response",
52
52
  ),
53
53
  ]
@@ -15,17 +15,17 @@ from ..core import ext as ext_1
15
15
 
16
16
 
17
17
  class Reason(Enum):
18
- APPROVAL_REQUIRED = 'APPROVAL_REQUIRED'
19
- ASSET_CONFIRMATION = 'ASSET_CONFIRMATION'
20
- FORMAT_CLARIFICATION = 'FORMAT_CLARIFICATION'
18
+ APPROVAL_REQUIRED = "APPROVAL_REQUIRED"
19
+ ASSET_CONFIRMATION = "ASSET_CONFIRMATION"
20
+ FORMAT_CLARIFICATION = "FORMAT_CLARIFICATION"
21
21
 
22
22
 
23
23
  class SyncCreativesInputRequired(AdCPBaseModel):
24
24
  model_config = ConfigDict(
25
- extra='allow',
25
+ extra="allow",
26
26
  )
27
27
  context: context_1.ContextObject | None = None
28
28
  ext: ext_1.ExtensionObject | None = None
29
29
  reason: Annotated[
30
- Reason | None, Field(description='Reason code indicating why buyer input is needed')
30
+ Reason | None, Field(description="Reason code indicating why buyer input is needed")
31
31
  ] = None
@@ -13,7 +13,7 @@ from ..core import ext as ext_1
13
13
 
14
14
  class SyncCreativesSubmitted(AdCPBaseModel):
15
15
  model_config = ConfigDict(
16
- extra='allow',
16
+ extra="allow",
17
17
  )
18
18
  context: context_1.ContextObject | None = None
19
19
  ext: ext_1.ExtensionObject | None = None
@@ -15,23 +15,23 @@ from ..core import ext as ext_1
15
15
 
16
16
  class SyncCreativesWorking(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='allow',
18
+ extra="allow",
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
21
  creatives_processed: Annotated[
22
- int | None, Field(description='Number of creatives processed so far', ge=0)
22
+ int | None, Field(description="Number of creatives processed so far", ge=0)
23
23
  ] = None
24
24
  creatives_total: Annotated[
25
- int | None, Field(description='Total number of creatives to process', ge=0)
25
+ int | None, Field(description="Total number of creatives to process", ge=0)
26
26
  ] = None
27
27
  current_step: Annotated[
28
- str | None, Field(description='Current step or phase of the operation')
28
+ str | None, Field(description="Current step or phase of the operation")
29
29
  ] = None
30
30
  ext: ext_1.ExtensionObject | None = None
31
31
  percentage: Annotated[
32
- float | None, Field(description='Completion percentage (0-100)', ge=0.0, le=100.0)
32
+ float | None, Field(description="Completion percentage (0-100)", ge=0.0, le=100.0)
33
33
  ] = None
34
- step_number: Annotated[int | None, Field(description='Current step number', ge=1)] = None
34
+ step_number: Annotated[int | None, Field(description="Current step number", ge=1)] = None
35
35
  total_steps: Annotated[
36
- int | None, Field(description='Total number of steps in the operation', ge=1)
36
+ int | None, Field(description="Total number of steps in the operation", ge=1)
37
37
  ] = None
@@ -18,41 +18,41 @@ from ..enums import validation_mode as validation_mode_1
18
18
 
19
19
  class SyncCreativesRequest(AdCPBaseModel):
20
20
  model_config = ConfigDict(
21
- extra='allow',
21
+ extra="allow",
22
22
  )
23
23
  assignments: Annotated[
24
24
  dict[str, list[str]] | None,
25
- Field(description='Optional bulk assignment of creatives to packages'),
25
+ Field(description="Optional bulk assignment of creatives to packages"),
26
26
  ] = None
27
27
  context: context_1.ContextObject | None = None
28
28
  creative_ids: Annotated[
29
29
  list[str] | None,
30
30
  Field(
31
- description='Optional filter to limit sync scope to specific creative IDs. When provided, only these creatives will be created/updated. Other creatives in the library are unaffected. Useful for partial updates and error recovery.',
31
+ description="Optional filter to limit sync scope to specific creative IDs. When provided, only these creatives will be created/updated. Other creatives in the library are unaffected. Useful for partial updates and error recovery.",
32
32
  max_length=100,
33
33
  ),
34
34
  ] = None
35
35
  creatives: Annotated[
36
36
  list[creative_asset.CreativeAsset],
37
- Field(description='Array of creative assets to sync (create or update)', max_length=100),
37
+ Field(description="Array of creative assets to sync (create or update)", max_length=100),
38
38
  ]
39
39
  delete_missing: Annotated[
40
40
  bool | None,
41
41
  Field(
42
- description='When true, creatives not included in this sync will be archived. Use with caution for full library replacement.'
42
+ description="When true, creatives not included in this sync will be archived. Use with caution for full library replacement."
43
43
  ),
44
44
  ] = False
45
45
  dry_run: Annotated[
46
46
  bool | None,
47
47
  Field(
48
- description='When true, preview changes without applying them. Returns what would be created/updated/deleted.'
48
+ description="When true, preview changes without applying them. Returns what would be created/updated/deleted."
49
49
  ),
50
50
  ] = False
51
51
  ext: ext_1.ExtensionObject | None = None
52
52
  push_notification_config: Annotated[
53
53
  push_notification_config_1.PushNotificationConfig | None,
54
54
  Field(
55
- description='Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL).'
55
+ description="Optional webhook configuration for async sync notifications. Publisher will send webhook when sync completes if operation takes longer than immediate response time (typically for large bulk operations or manual approval/HITL)."
56
56
  ),
57
57
  ] = None
58
58
  validation_mode: Annotated[
@@ -17,28 +17,28 @@ from ..enums import creative_action
17
17
 
18
18
  class Creative(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='allow',
20
+ extra="allow",
21
21
  )
22
22
  action: Annotated[
23
- creative_action.CreativeAction, Field(description='Action taken for this creative')
23
+ creative_action.CreativeAction, Field(description="Action taken for this creative")
24
24
  ]
25
25
  assigned_to: Annotated[
26
26
  list[str] | None,
27
27
  Field(
28
- description='Package IDs this creative was successfully assigned to (only present when assignments were requested)'
28
+ description="Package IDs this creative was successfully assigned to (only present when assignments were requested)"
29
29
  ),
30
30
  ] = None
31
31
  assignment_errors: Annotated[
32
32
  dict[str, str] | None,
33
33
  Field(
34
- description='Assignment errors by package ID (only present when assignment failures occurred)'
34
+ description="Assignment errors by package ID (only present when assignment failures occurred)"
35
35
  ),
36
36
  ] = None
37
37
  changes: Annotated[
38
38
  list[str] | None,
39
39
  Field(description="Field names that were modified (only present when action='updated')"),
40
40
  ] = None
41
- creative_id: Annotated[str, Field(description='Creative ID from the request')]
41
+ creative_id: Annotated[str, Field(description="Creative ID from the request")]
42
42
  errors: Annotated[
43
43
  list[str] | None,
44
44
  Field(description="Validation or processing errors (only present when action='failed')"),
@@ -46,26 +46,26 @@ class Creative(AdCPBaseModel):
46
46
  expires_at: Annotated[
47
47
  AwareDatetime | None,
48
48
  Field(
49
- description='ISO 8601 timestamp when preview link expires (only present when preview_url exists)'
49
+ description="ISO 8601 timestamp when preview link expires (only present when preview_url exists)"
50
50
  ),
51
51
  ] = None
52
52
  platform_id: Annotated[
53
- str | None, Field(description='Platform-specific ID assigned to the creative')
53
+ str | None, Field(description="Platform-specific ID assigned to the creative")
54
54
  ] = None
55
55
  preview_url: Annotated[
56
56
  AnyUrl | None,
57
57
  Field(
58
- description='Preview URL for generative creatives (only present for generative formats)'
58
+ description="Preview URL for generative creatives (only present for generative formats)"
59
59
  ),
60
60
  ] = None
61
61
  warnings: Annotated[
62
- list[str] | None, Field(description='Non-fatal warnings about this creative')
62
+ list[str] | None, Field(description="Non-fatal warnings about this creative")
63
63
  ] = None
64
64
 
65
65
 
66
66
  class SyncCreativesResponse1(AdCPBaseModel):
67
67
  model_config = ConfigDict(
68
- extra='allow',
68
+ extra="allow",
69
69
  )
70
70
  context: context_1.ContextObject | None = None
71
71
  creatives: Annotated[
@@ -75,20 +75,20 @@ class SyncCreativesResponse1(AdCPBaseModel):
75
75
  ),
76
76
  ]
77
77
  dry_run: Annotated[
78
- bool | None, Field(description='Whether this was a dry run (no actual changes made)')
78
+ bool | None, Field(description="Whether this was a dry run (no actual changes made)")
79
79
  ] = None
80
80
  ext: ext_1.ExtensionObject | None = None
81
81
 
82
82
 
83
83
  class SyncCreativesResponse2(AdCPBaseModel):
84
84
  model_config = ConfigDict(
85
- extra='allow',
85
+ extra="allow",
86
86
  )
87
87
  context: context_1.ContextObject | None = None
88
88
  errors: Annotated[
89
89
  list[error.Error],
90
90
  Field(
91
- description='Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)',
91
+ description="Operation-level errors that prevented processing any creatives (e.g., authentication failure, service unavailable, invalid request format)",
92
92
  min_length=1,
93
93
  ),
94
94
  ]
@@ -99,7 +99,7 @@ class SyncCreativesResponse(RootModel[SyncCreativesResponse1 | SyncCreativesResp
99
99
  root: Annotated[
100
100
  SyncCreativesResponse1 | SyncCreativesResponse2,
101
101
  Field(
102
- 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.',
103
- title='Sync Creatives Response',
102
+ 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.",
103
+ title="Sync Creatives Response",
104
104
  ),
105
105
  ]
@@ -15,16 +15,16 @@ from ..core import ext as ext_1
15
15
 
16
16
 
17
17
  class Reason(Enum):
18
- APPROVAL_REQUIRED = 'APPROVAL_REQUIRED'
19
- CHANGE_CONFIRMATION = 'CHANGE_CONFIRMATION'
18
+ APPROVAL_REQUIRED = "APPROVAL_REQUIRED"
19
+ CHANGE_CONFIRMATION = "CHANGE_CONFIRMATION"
20
20
 
21
21
 
22
22
  class UpdateMediaBuyInputRequired(AdCPBaseModel):
23
23
  model_config = ConfigDict(
24
- extra='allow',
24
+ extra="allow",
25
25
  )
26
26
  context: context_1.ContextObject | None = None
27
27
  ext: ext_1.ExtensionObject | None = None
28
28
  reason: Annotated[
29
- Reason | None, Field(description='Reason code indicating why input is needed')
29
+ Reason | None, Field(description="Reason code indicating why input is needed")
30
30
  ] = None
@@ -13,7 +13,7 @@ from ..core import ext as ext_1
13
13
 
14
14
  class UpdateMediaBuySubmitted(AdCPBaseModel):
15
15
  model_config = ConfigDict(
16
- extra='allow',
16
+ extra="allow",
17
17
  )
18
18
  context: context_1.ContextObject | None = None
19
19
  ext: ext_1.ExtensionObject | None = None
@@ -15,17 +15,17 @@ from ..core import ext as ext_1
15
15
 
16
16
  class UpdateMediaBuyWorking(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='allow',
18
+ extra="allow",
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
21
  current_step: Annotated[
22
- str | None, Field(description='Current step or phase of the operation')
22
+ str | None, Field(description="Current step or phase of the operation")
23
23
  ] = None
24
24
  ext: ext_1.ExtensionObject | None = None
25
25
  percentage: Annotated[
26
- float | None, Field(description='Completion percentage (0-100)', ge=0.0, le=100.0)
26
+ float | None, Field(description="Completion percentage (0-100)", ge=0.0, le=100.0)
27
27
  ] = None
28
- step_number: Annotated[int | None, Field(description='Current step number', ge=1)] = None
28
+ step_number: Annotated[int | None, Field(description="Current step number", ge=1)] = None
29
29
  total_steps: Annotated[
30
- int | None, Field(description='Total number of steps in the operation', ge=1)
30
+ int | None, Field(description="Total number of steps in the operation", ge=1)
31
31
  ] = None