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/update_media_buy_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
 
@@ -19,19 +19,19 @@ from ..enums import pacing as pacing_1
19
19
 
20
20
  class Packages(AdCPBaseModel):
21
21
  model_config = ConfigDict(
22
- extra='allow',
22
+ extra="allow",
23
23
  )
24
24
  bid_price: Annotated[
25
25
  float | None,
26
26
  Field(
27
- description='Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)',
27
+ description="Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)",
28
28
  ge=0.0,
29
29
  ),
30
30
  ] = None
31
31
  budget: Annotated[
32
32
  float | None,
33
33
  Field(
34
- description='Updated budget allocation for this package in the currency specified by the pricing option',
34
+ description="Updated budget allocation for this package in the currency specified by the pricing option",
35
35
  ge=0.0,
36
36
  ),
37
37
  ] = None
@@ -41,44 +41,47 @@ class Packages(AdCPBaseModel):
41
41
  creative_assignments: Annotated[
42
42
  list[creative_assignment.CreativeAssignment] | None,
43
43
  Field(
44
- description='Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids.'
44
+ description="Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids."
45
45
  ),
46
46
  ] = None
47
47
  creative_ids: Annotated[
48
48
  list[str] | None,
49
- Field(description='Update creative assignments (references existing library creatives)'),
49
+ Field(description="Update creative assignments (references existing library creatives)"),
50
50
  ] = None
51
51
  creatives: Annotated[
52
52
  list[creative_asset.CreativeAsset] | None,
53
53
  Field(
54
- description='Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.',
54
+ description="Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.",
55
55
  max_length=100,
56
56
  ),
57
57
  ] = None
58
+ impressions: Annotated[
59
+ float | None, Field(description="Updated impression goal for this package", ge=0.0)
60
+ ] = None
58
61
  pacing: pacing_1.Pacing | None = None
59
62
  package_id: Annotated[str, Field(description="Publisher's ID of package to update")]
60
63
  paused: Annotated[
61
64
  bool | None,
62
- Field(description='Pause/resume specific package (true = paused, false = active)'),
65
+ Field(description="Pause/resume specific package (true = paused, false = active)"),
63
66
  ] = None
64
67
  targeting_overlay: targeting.TargetingOverlay | None = None
65
68
 
66
69
 
67
70
  class Packages1(AdCPBaseModel):
68
71
  model_config = ConfigDict(
69
- extra='allow',
72
+ extra="allow",
70
73
  )
71
74
  bid_price: Annotated[
72
75
  float | None,
73
76
  Field(
74
- description='Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)',
77
+ description="Updated bid price for auction-based pricing options (only applies when pricing_option is auction-based)",
75
78
  ge=0.0,
76
79
  ),
77
80
  ] = None
78
81
  budget: Annotated[
79
82
  float | None,
80
83
  Field(
81
- description='Updated budget allocation for this package in the currency specified by the pricing option',
84
+ description="Updated budget allocation for this package in the currency specified by the pricing option",
82
85
  ge=0.0,
83
86
  ),
84
87
  ] = None
@@ -86,90 +89,95 @@ class Packages1(AdCPBaseModel):
86
89
  creative_assignments: Annotated[
87
90
  list[creative_assignment.CreativeAssignment] | None,
88
91
  Field(
89
- description='Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids.'
92
+ description="Full creative assignment objects with weights and placement targeting (alternative to creative_ids - provides granular control over weights and placement targeting). Uses replacement semantics like creative_ids."
90
93
  ),
91
94
  ] = None
92
95
  creative_ids: Annotated[
93
96
  list[str] | None,
94
- Field(description='Update creative assignments (references existing library creatives)'),
97
+ Field(description="Update creative assignments (references existing library creatives)"),
95
98
  ] = None
96
99
  creatives: Annotated[
97
100
  list[creative_asset.CreativeAsset] | None,
98
101
  Field(
99
- description='Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.',
102
+ description="Full creative objects to upload and assign to this package (alternative to creative_ids - creatives will be added to library). Supports both static and generative creatives.",
100
103
  max_length=100,
101
104
  ),
102
105
  ] = None
106
+ impressions: Annotated[
107
+ float | None, Field(description="Updated impression goal for this package", ge=0.0)
108
+ ] = None
103
109
  pacing: pacing_1.Pacing | None = None
104
110
  package_id: Annotated[str | None, Field(description="Publisher's ID of package to update")] = (
105
111
  None
106
112
  )
107
113
  paused: Annotated[
108
114
  bool | None,
109
- Field(description='Pause/resume specific package (true = paused, false = active)'),
115
+ Field(description="Pause/resume specific package (true = paused, false = active)"),
110
116
  ] = None
111
117
  targeting_overlay: targeting.TargetingOverlay | None = None
112
118
 
113
119
 
114
120
  class UpdateMediaBuyRequest1(AdCPBaseModel):
115
121
  model_config = ConfigDict(
116
- extra='allow',
122
+ extra="allow",
117
123
  )
118
124
  buyer_ref: Annotated[
119
125
  str | None, Field(description="Buyer's reference for the media buy to update")
120
126
  ] = None
121
127
  context: context_1.ContextObject | None = None
122
128
  end_time: Annotated[
123
- AwareDatetime | None, Field(description='New end date/time in ISO 8601 format')
129
+ AwareDatetime | None, Field(description="New end date/time in ISO 8601 format")
124
130
  ] = None
125
131
  ext: ext_1.ExtensionObject | None = None
126
132
  media_buy_id: Annotated[str, Field(description="Publisher's ID of the media buy to update")]
127
133
  packages: Annotated[
128
- list[Packages | Packages1] | None, Field(description='Package-specific updates')
134
+ list[Packages | Packages1] | None, Field(description="Package-specific updates")
129
135
  ] = None
130
136
  paused: Annotated[
131
137
  bool | None,
132
- Field(description='Pause/resume the entire media buy (true = paused, false = active)'),
138
+ Field(description="Pause/resume the entire media buy (true = paused, false = active)"),
133
139
  ] = None
134
140
  push_notification_config: Annotated[
135
141
  push_notification_config_1.PushNotificationConfig | None,
136
142
  Field(
137
- description='Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.'
143
+ description="Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time."
138
144
  ),
139
145
  ] = None
140
146
  start_time: start_timing.StartTiming | None = None
141
147
 
142
148
 
143
- Packages2 = Packages
149
+ class Packages2(Packages):
150
+ pass
144
151
 
145
152
 
146
- Packages3 = Packages1
153
+ class Packages3(Packages1):
154
+ pass
147
155
 
148
156
 
149
157
  class UpdateMediaBuyRequest2(AdCPBaseModel):
150
158
  model_config = ConfigDict(
151
- extra='allow',
159
+ extra="allow",
152
160
  )
153
161
  buyer_ref: Annotated[str, Field(description="Buyer's reference for the media buy to update")]
154
162
  context: context_1.ContextObject | None = None
155
163
  end_time: Annotated[
156
- AwareDatetime | None, Field(description='New end date/time in ISO 8601 format')
164
+ AwareDatetime | None, Field(description="New end date/time in ISO 8601 format")
157
165
  ] = None
158
166
  ext: ext_1.ExtensionObject | None = None
159
167
  media_buy_id: Annotated[
160
168
  str | None, Field(description="Publisher's ID of the media buy to update")
161
169
  ] = None
162
170
  packages: Annotated[
163
- list[Packages2 | Packages3] | None, Field(description='Package-specific updates')
171
+ list[Packages2 | Packages3] | None, Field(description="Package-specific updates")
164
172
  ] = None
165
173
  paused: Annotated[
166
174
  bool | None,
167
- Field(description='Pause/resume the entire media buy (true = paused, false = active)'),
175
+ Field(description="Pause/resume the entire media buy (true = paused, false = active)"),
168
176
  ] = None
169
177
  push_notification_config: Annotated[
170
178
  push_notification_config_1.PushNotificationConfig | None,
171
179
  Field(
172
- description='Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time.'
180
+ description="Optional webhook configuration for async update notifications. Publisher will send webhook when update completes if operation takes longer than immediate response time."
173
181
  ),
174
182
  ] = None
175
183
  start_time: start_timing.StartTiming | None = None
@@ -179,7 +187,7 @@ class UpdateMediaBuyRequest(RootModel[UpdateMediaBuyRequest1 | UpdateMediaBuyReq
179
187
  root: Annotated[
180
188
  UpdateMediaBuyRequest1 | UpdateMediaBuyRequest2,
181
189
  Field(
182
- description='Request parameters for updating campaign and package settings',
183
- title='Update Media Buy Request',
190
+ description="Request parameters for updating campaign and package settings",
191
+ title="Update Media Buy Request",
184
192
  ),
185
193
  ]
@@ -17,30 +17,30 @@ from ..core import package
17
17
 
18
18
  class UpdateMediaBuyResponse2(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='allow',
20
+ extra="allow",
21
21
  )
22
22
  context: context_1.ContextObject | None = None
23
23
  errors: Annotated[
24
24
  list[error.Error],
25
- Field(description='Array of errors explaining why the operation failed', min_length=1),
25
+ Field(description="Array of errors explaining why the operation failed", min_length=1),
26
26
  ]
27
27
  ext: ext_1.ExtensionObject | None = None
28
28
 
29
29
 
30
30
  class UpdateMediaBuyResponse1(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='allow',
32
+ extra="allow",
33
33
  )
34
34
  affected_packages: Annotated[
35
35
  list[package.Package] | None,
36
- Field(description='Array of packages that were modified with complete state information'),
36
+ Field(description="Array of packages that were modified with complete state information"),
37
37
  ] = None
38
38
  buyer_ref: Annotated[str, Field(description="Buyer's reference identifier for the media buy")]
39
39
  context: context_1.ContextObject | None = None
40
40
  ext: ext_1.ExtensionObject | None = None
41
41
  implementation_date: Annotated[
42
42
  AwareDatetime | None,
43
- Field(description='ISO 8601 timestamp when changes take effect (null if pending approval)'),
43
+ Field(description="ISO 8601 timestamp when changes take effect (null if pending approval)"),
44
44
  ] = None
45
45
  media_buy_id: Annotated[str, Field(description="Publisher's identifier for the media buy")]
46
46
 
@@ -49,7 +49,7 @@ class UpdateMediaBuyResponse(RootModel[UpdateMediaBuyResponse1 | UpdateMediaBuyR
49
49
  root: Annotated[
50
50
  UpdateMediaBuyResponse1 | UpdateMediaBuyResponse2,
51
51
  Field(
52
- description='Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.',
53
- title='Update Media Buy Response',
52
+ description="Response payload for update_media_buy task. Returns either complete success data OR error information, never both. This enforces atomic operation semantics - updates are either fully applied or not applied at all.",
53
+ title="Update Media Buy Response",
54
54
  ),
55
55
  ]
@@ -12,32 +12,32 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpcPricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='allow',
15
+ extra="allow",
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
19
19
  Field(
20
- description='ISO 4217 currency code',
21
- examples=['USD', 'EUR', 'GBP', 'JPY'],
22
- pattern='^[A-Z]{3}$',
20
+ description="ISO 4217 currency code",
21
+ examples=["USD", "EUR", "GBP", "JPY"],
22
+ pattern="^[A-Z]{3}$",
23
23
  ),
24
24
  ]
25
25
  is_fixed: Annotated[
26
26
  Literal[True],
27
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
27
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
28
28
  ]
29
29
  min_spend_per_package: Annotated[
30
30
  float | None,
31
31
  Field(
32
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
32
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
33
33
  ge=0.0,
34
34
  ),
35
35
  ] = None
36
- pricing_model: Annotated[Literal['cpc'], Field(description='Cost per click')]
36
+ pricing_model: Annotated[Literal["cpc"], Field(description="Cost per click")]
37
37
  pricing_option_id: Annotated[
38
38
  str,
39
39
  Field(
40
40
  description="Unique identifier for this pricing option within the product (e.g., 'cpc_usd_fixed')"
41
41
  ),
42
42
  ]
43
- rate: Annotated[float, Field(description='Fixed CPC rate (cost per click)', ge=0.0)]
43
+ rate: Annotated[float, Field(description="Fixed CPC rate (cost per click)", ge=0.0)]
@@ -12,29 +12,29 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpcvPricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='allow',
15
+ extra="allow",
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
19
19
  Field(
20
- description='ISO 4217 currency code',
21
- examples=['USD', 'EUR', 'GBP', 'JPY'],
22
- pattern='^[A-Z]{3}$',
20
+ description="ISO 4217 currency code",
21
+ examples=["USD", "EUR", "GBP", "JPY"],
22
+ pattern="^[A-Z]{3}$",
23
23
  ),
24
24
  ]
25
25
  is_fixed: Annotated[
26
26
  Literal[True],
27
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
27
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
28
28
  ]
29
29
  min_spend_per_package: Annotated[
30
30
  float | None,
31
31
  Field(
32
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
32
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
33
33
  ge=0.0,
34
34
  ),
35
35
  ] = None
36
36
  pricing_model: Annotated[
37
- Literal['cpcv'], Field(description='Cost per completed view (100% completion)')
37
+ Literal["cpcv"], Field(description="Cost per completed view (100% completion)")
38
38
  ]
39
39
  pricing_option_id: Annotated[
40
40
  str,
@@ -42,4 +42,4 @@ class CpcvPricingOption(AdCPBaseModel):
42
42
  description="Unique identifier for this pricing option within the product (e.g., 'cpcv_usd_guaranteed')"
43
43
  ),
44
44
  ]
45
- rate: Annotated[float, Field(description='Fixed CPCV rate (cost per 100% completion)', ge=0.0)]
45
+ rate: Annotated[float, Field(description="Fixed CPCV rate (cost per 100% completion)", ge=0.0)]
@@ -14,42 +14,42 @@ class PriceGuidance(AdCPBaseModel):
14
14
  floor: Annotated[
15
15
  float,
16
16
  Field(
17
- description='Minimum bid price - publisher will reject bids under this value', ge=0.0
17
+ description="Minimum bid price - publisher will reject bids under this value", ge=0.0
18
18
  ),
19
19
  ]
20
- p25: Annotated[float | None, Field(description='25th percentile winning price', ge=0.0)] = None
21
- p50: Annotated[float | None, Field(description='Median winning price', ge=0.0)] = None
22
- p75: Annotated[float | None, Field(description='75th percentile winning price', ge=0.0)] = None
23
- p90: Annotated[float | None, Field(description='90th percentile winning price', ge=0.0)] = None
20
+ p25: Annotated[float | None, Field(description="25th percentile winning price", ge=0.0)] = None
21
+ p50: Annotated[float | None, Field(description="Median winning price", ge=0.0)] = None
22
+ p75: Annotated[float | None, Field(description="75th percentile winning price", ge=0.0)] = None
23
+ p90: Annotated[float | None, Field(description="90th percentile winning price", ge=0.0)] = None
24
24
 
25
25
 
26
26
  class CpmAuctionPricingOption(AdCPBaseModel):
27
27
  model_config = ConfigDict(
28
- extra='allow',
28
+ extra="allow",
29
29
  )
30
30
  currency: Annotated[
31
31
  str,
32
32
  Field(
33
- description='ISO 4217 currency code',
34
- examples=['USD', 'EUR', 'GBP', 'JPY'],
35
- pattern='^[A-Z]{3}$',
33
+ description="ISO 4217 currency code",
34
+ examples=["USD", "EUR", "GBP", "JPY"],
35
+ pattern="^[A-Z]{3}$",
36
36
  ),
37
37
  ]
38
38
  is_fixed: Annotated[
39
39
  Literal[False],
40
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
40
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
41
41
  ]
42
42
  min_spend_per_package: Annotated[
43
43
  float | None,
44
44
  Field(
45
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
45
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
46
46
  ge=0.0,
47
47
  ),
48
48
  ] = None
49
49
  price_guidance: Annotated[
50
- PriceGuidance, Field(description='Pricing guidance for auction-based CPM bidding')
50
+ PriceGuidance, Field(description="Pricing guidance for auction-based CPM bidding")
51
51
  ]
52
- pricing_model: Annotated[Literal['cpm'], Field(description='Cost per 1,000 impressions')]
52
+ pricing_model: Annotated[Literal["cpm"], Field(description="Cost per 1,000 impressions")]
53
53
  pricing_option_id: Annotated[
54
54
  str,
55
55
  Field(
@@ -12,32 +12,32 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpmFixedRatePricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='allow',
15
+ extra="allow",
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
19
19
  Field(
20
- description='ISO 4217 currency code',
21
- examples=['USD', 'EUR', 'GBP', 'JPY'],
22
- pattern='^[A-Z]{3}$',
20
+ description="ISO 4217 currency code",
21
+ examples=["USD", "EUR", "GBP", "JPY"],
22
+ pattern="^[A-Z]{3}$",
23
23
  ),
24
24
  ]
25
25
  is_fixed: Annotated[
26
26
  Literal[True],
27
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
27
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
28
28
  ]
29
29
  min_spend_per_package: Annotated[
30
30
  float | None,
31
31
  Field(
32
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
32
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
33
33
  ge=0.0,
34
34
  ),
35
35
  ] = None
36
- pricing_model: Annotated[Literal['cpm'], Field(description='Cost per 1,000 impressions')]
36
+ pricing_model: Annotated[Literal["cpm"], Field(description="Cost per 1,000 impressions")]
37
37
  pricing_option_id: Annotated[
38
38
  str,
39
39
  Field(
40
40
  description="Unique identifier for this pricing option within the product (e.g., 'cpm_usd_guaranteed')"
41
41
  ),
42
42
  ]
43
- rate: Annotated[float, Field(description='Fixed CPM rate (cost per 1,000 impressions)', ge=0.0)]
43
+ rate: Annotated[float, Field(description="Fixed CPM rate (cost per 1,000 impressions)", ge=0.0)]
@@ -12,53 +12,53 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class Parameters(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='allow',
15
+ extra="allow",
16
16
  )
17
17
  demographic: Annotated[
18
18
  str,
19
19
  Field(
20
- description='Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)',
21
- pattern='^[PMWAC][0-9]{2}(-[0-9]{2}|\\+)$',
20
+ description="Target demographic in Nielsen format: P/M/W/A/C + age range. Examples: P18-49 (Persons 18-49), M25-54 (Men 25-54), W35+ (Women 35+), A18-34 (Adults 18-34), C2-11 (Children 2-11)",
21
+ pattern="^[PMWAC][0-9]{2}(-[0-9]{2}|\\+)$",
22
22
  ),
23
23
  ]
24
24
  min_points: Annotated[
25
25
  float | None,
26
- Field(description='Minimum GRPs/TRPs required for this pricing option', ge=0.0),
26
+ Field(description="Minimum GRPs/TRPs required for this pricing option", ge=0.0),
27
27
  ] = None
28
28
 
29
29
 
30
30
  class CppPricingOption(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='allow',
32
+ extra="allow",
33
33
  )
34
34
  currency: Annotated[
35
35
  str,
36
36
  Field(
37
- description='ISO 4217 currency code',
38
- examples=['USD', 'EUR', 'GBP', 'JPY'],
39
- pattern='^[A-Z]{3}$',
37
+ description="ISO 4217 currency code",
38
+ examples=["USD", "EUR", "GBP", "JPY"],
39
+ pattern="^[A-Z]{3}$",
40
40
  ),
41
41
  ]
42
42
  is_fixed: Annotated[
43
43
  Literal[True],
44
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
44
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
45
45
  ]
46
46
  min_spend_per_package: Annotated[
47
47
  float | None,
48
48
  Field(
49
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
49
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
50
50
  ge=0.0,
51
51
  ),
52
52
  ] = None
53
53
  parameters: Annotated[
54
54
  Parameters,
55
- Field(description='CPP-specific parameters for demographic targeting and GRP requirements'),
55
+ Field(description="CPP-specific parameters for demographic targeting and GRP requirements"),
56
56
  ]
57
- pricing_model: Annotated[Literal['cpp'], Field(description='Cost per Gross Rating Point')]
57
+ pricing_model: Annotated[Literal["cpp"], Field(description="Cost per Gross Rating Point")]
58
58
  pricing_option_id: Annotated[
59
59
  str,
60
60
  Field(
61
61
  description="Unique identifier for this pricing option within the product (e.g., 'cpp_usd_p18-49')"
62
62
  ),
63
63
  ]
64
- rate: Annotated[float, Field(description='Fixed CPP rate (cost per rating point)', ge=0.0)]
64
+ rate: Annotated[float, Field(description="Fixed CPP rate (cost per rating point)", ge=0.0)]
@@ -14,7 +14,7 @@ class ViewThreshold(RootModel[float]):
14
14
  root: Annotated[
15
15
  float,
16
16
  Field(
17
- description='Percentage completion threshold for CPV pricing (0.0 to 1.0, e.g., 0.5 = 50% completion)',
17
+ description="Percentage completion threshold for CPV pricing (0.0 to 1.0, e.g., 0.5 = 50% completion)",
18
18
  ge=0.0,
19
19
  le=1.0,
20
20
  ),
@@ -23,7 +23,7 @@ class ViewThreshold(RootModel[float]):
23
23
 
24
24
  class ViewThreshold1(AdCPBaseModel):
25
25
  model_config = ConfigDict(
26
- extra='allow',
26
+ extra="allow",
27
27
  )
28
28
  duration_seconds: Annotated[
29
29
  int,
@@ -36,42 +36,42 @@ class ViewThreshold1(AdCPBaseModel):
36
36
 
37
37
  class Parameters(AdCPBaseModel):
38
38
  model_config = ConfigDict(
39
- extra='allow',
39
+ extra="allow",
40
40
  )
41
41
  view_threshold: ViewThreshold | ViewThreshold1
42
42
 
43
43
 
44
44
  class CpvPricingOption(AdCPBaseModel):
45
45
  model_config = ConfigDict(
46
- extra='allow',
46
+ extra="allow",
47
47
  )
48
48
  currency: Annotated[
49
49
  str,
50
50
  Field(
51
- description='ISO 4217 currency code',
52
- examples=['USD', 'EUR', 'GBP', 'JPY'],
53
- pattern='^[A-Z]{3}$',
51
+ description="ISO 4217 currency code",
52
+ examples=["USD", "EUR", "GBP", "JPY"],
53
+ pattern="^[A-Z]{3}$",
54
54
  ),
55
55
  ]
56
56
  is_fixed: Annotated[
57
57
  Literal[True],
58
- Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
58
+ Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
59
59
  ]
60
60
  min_spend_per_package: Annotated[
61
61
  float | None,
62
62
  Field(
63
- description='Minimum spend requirement per package using this pricing option, in the specified currency',
63
+ description="Minimum spend requirement per package using this pricing option, in the specified currency",
64
64
  ge=0.0,
65
65
  ),
66
66
  ] = None
67
67
  parameters: Annotated[
68
- Parameters, Field(description='CPV-specific parameters defining the view threshold')
68
+ Parameters, Field(description="CPV-specific parameters defining the view threshold")
69
69
  ]
70
- pricing_model: Annotated[Literal['cpv'], Field(description='Cost per view at threshold')]
70
+ pricing_model: Annotated[Literal["cpv"], Field(description="Cost per view at threshold")]
71
71
  pricing_option_id: Annotated[
72
72
  str,
73
73
  Field(
74
74
  description="Unique identifier for this pricing option within the product (e.g., 'cpv_usd_50pct')"
75
75
  ),
76
76
  ]
77
- rate: Annotated[float, Field(description='Fixed CPV rate (cost per view)', ge=0.0)]
77
+ rate: Annotated[float, Field(description="Fixed CPV rate (cost per view)", ge=0.0)]