adcp 3.1.0__py3-none-any.whl → 3.2.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 (242) hide show
  1. adcp/ADCP_VERSION +1 -1
  2. adcp/__init__.py +5 -5
  3. adcp/__main__.py +4 -4
  4. adcp/adagents.py +5 -9
  5. adcp/client.py +14 -12
  6. adcp/protocols/a2a.py +3 -3
  7. adcp/protocols/base.py +2 -2
  8. adcp/protocols/mcp.py +3 -3
  9. adcp/server/base.py +6 -10
  10. adcp/server/content_standards.py +17 -49
  11. adcp/server/governance.py +20 -59
  12. adcp/server/mcp_tools.py +8 -4
  13. adcp/server/proposal.py +1 -3
  14. adcp/server/sponsored_intelligence.py +10 -28
  15. adcp/simple.py +10 -10
  16. adcp/types/__init__.py +10 -6
  17. adcp/types/_generated.py +44 -27
  18. adcp/types/base.py +7 -7
  19. adcp/types/generated_poc/{protocols → a2ui}/__init__.py +1 -1
  20. adcp/types/generated_poc/a2ui/component.py +24 -0
  21. adcp/types/generated_poc/a2ui/surface.py +33 -0
  22. adcp/types/generated_poc/account/__init__.py +3 -0
  23. adcp/types/generated_poc/account/list_accounts_request.py +30 -0
  24. adcp/types/generated_poc/account/list_accounts_response.py +30 -0
  25. adcp/types/generated_poc/adagents.py +192 -195
  26. adcp/types/generated_poc/content_standards/artifact.py +69 -69
  27. adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +13 -13
  28. adcp/types/generated_poc/content_standards/calibrate_content_request.py +2 -2
  29. adcp/types/generated_poc/content_standards/calibrate_content_response.py +17 -17
  30. adcp/types/generated_poc/content_standards/content_standards.py +8 -8
  31. adcp/types/generated_poc/content_standards/create_content_standards_request.py +13 -13
  32. adcp/types/generated_poc/content_standards/create_content_standards_response.py +6 -6
  33. adcp/types/generated_poc/content_standards/get_content_standards_request.py +1 -1
  34. adcp/types/generated_poc/content_standards/get_content_standards_response.py +4 -4
  35. adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +14 -14
  36. adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +30 -30
  37. adcp/types/generated_poc/content_standards/list_content_standards_request.py +4 -4
  38. adcp/types/generated_poc/content_standards/list_content_standards_response.py +5 -5
  39. adcp/types/generated_poc/content_standards/update_content_standards_request.py +14 -14
  40. adcp/types/generated_poc/content_standards/update_content_standards_response.py +4 -4
  41. adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +13 -13
  42. adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +16 -16
  43. adcp/types/generated_poc/core/account.py +54 -0
  44. adcp/types/generated_poc/core/activation_key.py +8 -8
  45. adcp/types/generated_poc/core/assets/audio_asset.py +37 -8
  46. adcp/types/generated_poc/core/assets/css_asset.py +2 -2
  47. adcp/types/generated_poc/core/assets/daast_asset.py +18 -18
  48. adcp/types/generated_poc/core/assets/html_asset.py +2 -2
  49. adcp/types/generated_poc/core/assets/image_asset.py +6 -6
  50. adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
  51. adcp/types/generated_poc/core/assets/text_asset.py +2 -2
  52. adcp/types/generated_poc/core/assets/url_asset.py +3 -3
  53. adcp/types/generated_poc/core/assets/vast_asset.py +18 -18
  54. adcp/types/generated_poc/core/assets/video_asset.py +126 -10
  55. adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
  56. adcp/types/generated_poc/core/async_response_data.py +2 -2
  57. adcp/types/generated_poc/core/brand_manifest.py +66 -66
  58. adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
  59. adcp/types/generated_poc/core/context.py +1 -1
  60. adcp/types/generated_poc/core/creative_asset.py +12 -12
  61. adcp/types/generated_poc/core/creative_assignment.py +3 -3
  62. adcp/types/generated_poc/core/creative_filters.py +23 -17
  63. adcp/types/generated_poc/core/creative_manifest.py +4 -4
  64. adcp/types/generated_poc/core/creative_policy.py +4 -4
  65. adcp/types/generated_poc/core/delivery_metrics.py +32 -32
  66. adcp/types/generated_poc/core/deployment.py +20 -20
  67. adcp/types/generated_poc/core/destination.py +11 -11
  68. adcp/types/generated_poc/core/error.py +6 -6
  69. adcp/types/generated_poc/core/ext.py +1 -1
  70. adcp/types/generated_poc/core/format.py +49 -124
  71. adcp/types/generated_poc/core/format_id.py +5 -5
  72. adcp/types/generated_poc/core/frequency_cap.py +2 -2
  73. adcp/types/generated_poc/core/identifier.py +2 -2
  74. adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
  75. adcp/types/generated_poc/core/measurement.py +8 -8
  76. adcp/types/generated_poc/core/media_buy.py +12 -8
  77. adcp/types/generated_poc/core/media_buy_features.py +3 -3
  78. adcp/types/generated_poc/core/offering.py +9 -9
  79. adcp/types/generated_poc/core/package.py +8 -8
  80. adcp/types/generated_poc/core/performance_feedback.py +18 -18
  81. adcp/types/generated_poc/core/placement.py +4 -4
  82. adcp/types/generated_poc/core/pricing_option.py +1 -1
  83. adcp/types/generated_poc/core/product.py +27 -21
  84. adcp/types/generated_poc/core/product_allocation.py +5 -5
  85. adcp/types/generated_poc/core/product_filters.py +27 -27
  86. adcp/types/generated_poc/core/promoted_offerings.py +18 -18
  87. adcp/types/generated_poc/core/promoted_products.py +2 -2
  88. adcp/types/generated_poc/core/property.py +10 -10
  89. adcp/types/generated_poc/core/property_id.py +4 -4
  90. adcp/types/generated_poc/core/property_list_ref.py +4 -4
  91. adcp/types/generated_poc/core/property_tag.py +4 -4
  92. adcp/types/generated_poc/core/proposal.py +13 -13
  93. adcp/types/generated_poc/core/protocol_envelope.py +8 -8
  94. adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
  95. adcp/types/generated_poc/core/push_notification_config.py +5 -5
  96. adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
  97. adcp/types/generated_poc/core/reporting_webhook.py +10 -10
  98. adcp/types/generated_poc/core/response.py +4 -4
  99. adcp/types/generated_poc/core/signal_filters.py +5 -5
  100. adcp/types/generated_poc/core/start_timing.py +3 -3
  101. adcp/types/generated_poc/core/sub_asset.py +14 -14
  102. adcp/types/generated_poc/core/targeting.py +17 -10
  103. adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
  104. adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
  105. adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
  106. adcp/types/generated_poc/creative/preview_creative_response.py +28 -28
  107. adcp/types/generated_poc/creative/preview_render.py +25 -25
  108. adcp/types/generated_poc/enums/adcp_domain.py +4 -4
  109. adcp/types/generated_poc/enums/asset_content_type.py +13 -13
  110. adcp/types/generated_poc/enums/auth_scheme.py +2 -2
  111. adcp/types/generated_poc/enums/available_metric.py +9 -9
  112. adcp/types/generated_poc/enums/channels.py +19 -19
  113. adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
  114. adcp/types/generated_poc/enums/creative_action.py +5 -5
  115. adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
  116. adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
  117. adcp/types/generated_poc/enums/creative_status.py +5 -5
  118. adcp/types/generated_poc/enums/daast_tracking_event.py +11 -11
  119. adcp/types/generated_poc/enums/daast_version.py +2 -2
  120. adcp/types/generated_poc/enums/delivery_type.py +2 -2
  121. adcp/types/generated_poc/enums/dimension_unit.py +4 -4
  122. adcp/types/generated_poc/enums/feed_format.py +3 -3
  123. adcp/types/generated_poc/enums/feedback_source.py +4 -4
  124. adcp/types/generated_poc/enums/format_category.py +7 -7
  125. adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
  126. adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
  127. adcp/types/generated_poc/enums/geo_level.py +4 -4
  128. adcp/types/generated_poc/enums/history_entry_type.py +2 -2
  129. adcp/types/generated_poc/enums/http_method.py +2 -2
  130. adcp/types/generated_poc/enums/identifier_types.py +19 -19
  131. adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
  132. adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
  133. adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
  134. adcp/types/generated_poc/enums/media_buy_status.py +4 -4
  135. adcp/types/generated_poc/enums/metric_type.py +8 -8
  136. adcp/types/generated_poc/enums/metro_system.py +5 -5
  137. adcp/types/generated_poc/enums/notification_type.py +4 -4
  138. adcp/types/generated_poc/enums/pacing.py +3 -3
  139. adcp/types/generated_poc/enums/postal_system.py +9 -9
  140. adcp/types/generated_poc/enums/preview_output_format.py +2 -2
  141. adcp/types/generated_poc/enums/pricing_model.py +7 -7
  142. adcp/types/generated_poc/enums/property_type.py +8 -8
  143. adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
  144. adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
  145. adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
  146. adcp/types/generated_poc/enums/sort_direction.py +2 -2
  147. adcp/types/generated_poc/enums/task_status.py +9 -9
  148. adcp/types/generated_poc/enums/task_type.py +11 -12
  149. adcp/types/generated_poc/enums/update_frequency.py +4 -4
  150. adcp/types/generated_poc/enums/url_asset_type.py +3 -3
  151. adcp/types/generated_poc/enums/validation_mode.py +2 -2
  152. adcp/types/generated_poc/enums/vast_tracking_event.py +16 -16
  153. adcp/types/generated_poc/enums/vast_version.py +5 -5
  154. adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
  155. adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
  156. adcp/types/generated_poc/extensions/extension_meta.py +14 -14
  157. adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
  158. adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
  159. adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
  160. adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
  161. adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
  162. adcp/types/generated_poc/media_buy/create_media_buy_request.py +27 -21
  163. adcp/types/generated_poc/media_buy/create_media_buy_response.py +15 -8
  164. adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
  165. adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
  166. adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
  167. adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
  168. adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
  169. adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
  170. adcp/types/generated_poc/media_buy/get_products_response.py +5 -5
  171. adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
  172. adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
  173. adcp/types/generated_poc/media_buy/list_creatives_request.py +23 -23
  174. adcp/types/generated_poc/media_buy/list_creatives_response.py +53 -49
  175. adcp/types/generated_poc/media_buy/package_request.py +8 -8
  176. adcp/types/generated_poc/media_buy/package_update.py +16 -16
  177. adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
  178. adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
  179. adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
  180. adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
  181. adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
  182. adcp/types/generated_poc/media_buy/sync_creatives_request.py +14 -8
  183. adcp/types/generated_poc/media_buy/sync_creatives_response.py +33 -29
  184. adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
  185. adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
  186. adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
  187. adcp/types/generated_poc/media_buy/update_media_buy_request.py +14 -14
  188. adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
  189. adcp/types/generated_poc/pricing_options/cpc_option.py +13 -26
  190. adcp/types/generated_poc/pricing_options/cpcv_option.py +13 -26
  191. adcp/types/generated_poc/pricing_options/cpm_option.py +13 -20
  192. adcp/types/generated_poc/pricing_options/cpp_option.py +19 -32
  193. adcp/types/generated_poc/pricing_options/cpv_option.py +19 -32
  194. adcp/types/generated_poc/pricing_options/flat_rate_option.py +23 -36
  195. adcp/types/generated_poc/pricing_options/price_guidance.py +26 -0
  196. adcp/types/generated_poc/pricing_options/vcpm_option.py +13 -26
  197. adcp/types/generated_poc/property/base_property_source.py +15 -15
  198. adcp/types/generated_poc/property/create_property_list_request.py +4 -4
  199. adcp/types/generated_poc/property/create_property_list_response.py +3 -3
  200. adcp/types/generated_poc/property/delete_property_list_request.py +2 -2
  201. adcp/types/generated_poc/property/delete_property_list_response.py +3 -3
  202. adcp/types/generated_poc/property/feature_requirement.py +8 -8
  203. adcp/types/generated_poc/property/get_property_list_request.py +5 -5
  204. adcp/types/generated_poc/property/get_property_list_response.py +11 -11
  205. adcp/types/generated_poc/property/list_property_lists_request.py +5 -5
  206. adcp/types/generated_poc/property/list_property_lists_response.py +8 -8
  207. adcp/types/generated_poc/property/property_error.py +10 -10
  208. adcp/types/generated_poc/property/property_feature.py +4 -4
  209. adcp/types/generated_poc/property/property_feature_definition.py +18 -18
  210. adcp/types/generated_poc/property/property_list.py +11 -11
  211. adcp/types/generated_poc/property/property_list_changed_webhook.py +11 -11
  212. adcp/types/generated_poc/property/property_list_filters.py +7 -7
  213. adcp/types/generated_poc/property/update_property_list_request.py +8 -8
  214. adcp/types/generated_poc/property/update_property_list_response.py +2 -2
  215. adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +8 -6
  216. adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +59 -58
  217. adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
  218. adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
  219. adcp/types/generated_poc/signals/get_signals_request.py +8 -8
  220. adcp/types/generated_poc/signals/get_signals_response.py +15 -15
  221. adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +45 -30
  222. adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +4 -4
  223. adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +23 -23
  224. adcp/types/generated_poc/sponsored_intelligence/si_identity.py +16 -16
  225. adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +5 -5
  226. adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +7 -7
  227. adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +11 -11
  228. adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +37 -23
  229. adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +17 -17
  230. adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +15 -15
  231. adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +11 -11
  232. adcp/utils/format_assets.py +32 -32
  233. {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/METADATA +10 -5
  234. adcp-3.2.0.dist-info/RECORD +268 -0
  235. adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -38
  236. adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -84
  237. adcp/types/generated_poc/protocols/adcp_extension.py +0 -50
  238. adcp-3.1.0.dist-info/RECORD +0 -264
  239. {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/WHEEL +0 -0
  240. {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/entry_points.txt +0 -0
  241. {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/licenses/LICENSE +0 -0
  242. {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/top_level.txt +0 -0
@@ -15,20 +15,20 @@ from ..core import ext as ext_1
15
15
 
16
16
  class GetPropertyListRequest(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
- cursor: Annotated[str | None, Field(description='Pagination cursor for large result sets')] = (
21
+ cursor: Annotated[str | None, Field(description="Pagination cursor for large result sets")] = (
22
22
  None
23
23
  )
24
24
  ext: ext_1.ExtensionObject | None = None
25
- list_id: Annotated[str, Field(description='ID of the property list to retrieve')]
25
+ list_id: Annotated[str, Field(description="ID of the property list to retrieve")]
26
26
  max_results: Annotated[
27
- int | None, Field(description='Maximum identifiers to return (for large lists)', ge=1)
27
+ int | None, Field(description="Maximum identifiers to return (for large lists)", ge=1)
28
28
  ] = None
29
29
  resolve: Annotated[
30
30
  bool | None,
31
31
  Field(
32
- description='Whether to apply filters and return resolved identifiers (default: true)'
32
+ description="Whether to apply filters and return resolved identifiers (default: true)"
33
33
  ),
34
34
  ] = True
@@ -16,20 +16,20 @@ from . import property_list
16
16
 
17
17
  class Pagination(AdCPBaseModel):
18
18
  model_config = ConfigDict(
19
- extra='forbid',
19
+ extra="forbid",
20
20
  )
21
- cursor: Annotated[str | None, Field(description='Cursor for next page')] = None
22
- has_more: Annotated[bool | None, Field(description='Whether more results are available')] = None
21
+ cursor: Annotated[str | None, Field(description="Cursor for next page")] = None
22
+ has_more: Annotated[bool | None, Field(description="Whether more results are available")] = None
23
23
 
24
24
 
25
25
  class GetPropertyListResponse(AdCPBaseModel):
26
26
  model_config = ConfigDict(
27
- extra='forbid',
27
+ extra="forbid",
28
28
  )
29
29
  cache_valid_until: Annotated[
30
30
  AwareDatetime | None,
31
31
  Field(
32
- description='Cache expiration timestamp. Re-fetch the list after this time to get updated identifiers.'
32
+ description="Cache expiration timestamp. Re-fetch the list after this time to get updated identifiers."
33
33
  ),
34
34
  ] = None
35
35
  coverage_gaps: Annotated[
@@ -42,20 +42,20 @@ class GetPropertyListResponse(AdCPBaseModel):
42
42
  identifiers: Annotated[
43
43
  list[identifier.Identifier] | None,
44
44
  Field(
45
- description='Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use.'
45
+ description="Resolved identifiers that passed filters (if resolve=true). Cache these locally for real-time use."
46
46
  ),
47
47
  ] = None
48
48
  list: Annotated[
49
49
  property_list.PropertyList,
50
- Field(description='The property list metadata (always returned)'),
50
+ Field(description="The property list metadata (always returned)"),
51
51
  ]
52
- pagination: Annotated[Pagination | None, Field(description='Pagination information')] = None
52
+ pagination: Annotated[Pagination | None, Field(description="Pagination information")] = None
53
53
  resolved_at: Annotated[
54
- AwareDatetime | None, Field(description='When the list was resolved')
54
+ AwareDatetime | None, Field(description="When the list was resolved")
55
55
  ] = None
56
56
  returned_count: Annotated[
57
- int | None, Field(description='Number of identifiers returned in this response')
57
+ int | None, Field(description="Number of identifiers returned in this response")
58
58
  ] = None
59
59
  total_count: Annotated[
60
- int | None, Field(description='Total number of identifiers in resolved list')
60
+ int | None, Field(description="Total number of identifiers in resolved list")
61
61
  ] = None
@@ -15,15 +15,15 @@ from ..core import ext as ext_1
15
15
 
16
16
  class ListPropertyListsRequest(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
- cursor: Annotated[str | None, Field(description='Pagination cursor')] = None
21
+ cursor: Annotated[str | None, Field(description="Pagination cursor")] = None
22
22
  ext: ext_1.ExtensionObject | None = None
23
- max_results: Annotated[int | None, Field(description='Maximum lists to return', ge=1)] = 100
23
+ max_results: Annotated[int | None, Field(description="Maximum lists to return", ge=1)] = 100
24
24
  name_contains: Annotated[
25
- str | None, Field(description='Filter to lists whose name contains this string')
25
+ str | None, Field(description="Filter to lists whose name contains this string")
26
26
  ] = None
27
27
  principal: Annotated[
28
- str | None, Field(description='Filter to lists owned by this principal')
28
+ str | None, Field(description="Filter to lists owned by this principal")
29
29
  ] = None
@@ -15,25 +15,25 @@ from . import property_list
15
15
 
16
16
  class Pagination(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
- cursor: Annotated[str | None, Field(description='Cursor for next page')] = None
21
- has_more: Annotated[bool | None, Field(description='Whether more results are available')] = None
20
+ cursor: Annotated[str | None, Field(description="Cursor for next page")] = None
21
+ has_more: Annotated[bool | None, Field(description="Whether more results are available")] = None
22
22
 
23
23
 
24
24
  class ListPropertyListsResponse(AdCPBaseModel):
25
25
  model_config = ConfigDict(
26
- extra='forbid',
26
+ extra="forbid",
27
27
  )
28
28
  ext: ext_1.ExtensionObject | None = None
29
29
  lists: Annotated[
30
30
  list[property_list.PropertyList],
31
- Field(description='Array of property lists (metadata only, not resolved properties)'),
31
+ Field(description="Array of property lists (metadata only, not resolved properties)"),
32
32
  ]
33
- pagination: Annotated[Pagination | None, Field(description='Pagination information')] = None
33
+ pagination: Annotated[Pagination | None, Field(description="Pagination information")] = None
34
34
  returned_count: Annotated[
35
- int | None, Field(description='Number of lists returned in this response')
35
+ int | None, Field(description="Number of lists returned in this response")
36
36
  ] = None
37
37
  total_count: Annotated[
38
- int | None, Field(description='Total number of lists matching criteria')
38
+ int | None, Field(description="Total number of lists matching criteria")
39
39
  ] = None
@@ -14,20 +14,20 @@ from ..core import property as property_1
14
14
 
15
15
 
16
16
  class Code(Enum):
17
- PROPERTY_NOT_FOUND = 'PROPERTY_NOT_FOUND'
18
- PROPERTY_NOT_MONITORED = 'PROPERTY_NOT_MONITORED'
19
- LIST_NOT_FOUND = 'LIST_NOT_FOUND'
20
- LIST_ACCESS_DENIED = 'LIST_ACCESS_DENIED'
21
- METHODOLOGY_NOT_SUPPORTED = 'METHODOLOGY_NOT_SUPPORTED'
22
- JURISDICTION_NOT_SUPPORTED = 'JURISDICTION_NOT_SUPPORTED'
17
+ PROPERTY_NOT_FOUND = "PROPERTY_NOT_FOUND"
18
+ PROPERTY_NOT_MONITORED = "PROPERTY_NOT_MONITORED"
19
+ LIST_NOT_FOUND = "LIST_NOT_FOUND"
20
+ LIST_ACCESS_DENIED = "LIST_ACCESS_DENIED"
21
+ METHODOLOGY_NOT_SUPPORTED = "METHODOLOGY_NOT_SUPPORTED"
22
+ JURISDICTION_NOT_SUPPORTED = "JURISDICTION_NOT_SUPPORTED"
23
23
 
24
24
 
25
25
  class PropertyError(AdCPBaseModel):
26
26
  model_config = ConfigDict(
27
- extra='forbid',
27
+ extra="forbid",
28
28
  )
29
- code: Annotated[Code, Field(description='Error code')]
30
- message: Annotated[str, Field(description='Human-readable error message')]
29
+ code: Annotated[Code, Field(description="Error code")]
30
+ message: Annotated[str, Field(description="Human-readable error message")]
31
31
  property: Annotated[
32
- property_1.Property | None, Field(description='The property that caused the error')
32
+ property_1.Property | None, Field(description="The property that caused the error")
33
33
  ] = None
@@ -12,11 +12,11 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class PropertyFeature(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra="forbid",
16
16
  )
17
- feature_id: Annotated[str, Field(description='Identifier for the feature being assessed')]
17
+ feature_id: Annotated[str, Field(description="Identifier for the feature being assessed")]
18
18
  source: Annotated[
19
19
  str | None,
20
- Field(description='Source of the feature data (e.g., app_store_privacy_label, tcf_string)'),
20
+ Field(description="Source of the feature data (e.g., app_store_privacy_label, tcf_string)"),
21
21
  ] = None
22
- value: Annotated[str, Field(description='The feature value')]
22
+ value: Annotated[str, Field(description="The feature value")]
@@ -15,42 +15,42 @@ from ..core import ext as ext_1
15
15
 
16
16
  class Coverage(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
20
  countries: Annotated[
21
- list[str] | None, Field(description='Countries where this feature is available')
21
+ list[str] | None, Field(description="Countries where this feature is available")
22
22
  ] = None
23
23
  property_types: Annotated[
24
- list[str] | None, Field(description='Property types this feature applies to')
24
+ list[str] | None, Field(description="Property types this feature applies to")
25
25
  ] = None
26
26
 
27
27
 
28
28
  class Range(AdCPBaseModel):
29
29
  model_config = ConfigDict(
30
- extra='forbid',
30
+ extra="forbid",
31
31
  )
32
- max: Annotated[float, Field(description='Maximum value')]
33
- min: Annotated[float, Field(description='Minimum value')]
32
+ max: Annotated[float, Field(description="Maximum value")]
33
+ min: Annotated[float, Field(description="Minimum value")]
34
34
 
35
35
 
36
36
  class Type(Enum):
37
- binary = 'binary'
38
- quantitative = 'quantitative'
39
- categorical = 'categorical'
37
+ binary = "binary"
38
+ quantitative = "quantitative"
39
+ categorical = "categorical"
40
40
 
41
41
 
42
42
  class PropertyFeatureDefinition(AdCPBaseModel):
43
43
  model_config = ConfigDict(
44
- extra='forbid',
44
+ extra="forbid",
45
45
  )
46
46
  allowed_values: Annotated[
47
- list[str] | None, Field(description='For categorical features, the set of valid values')
47
+ list[str] | None, Field(description="For categorical features, the set of valid values")
48
48
  ] = None
49
49
  coverage: Annotated[
50
- Coverage | None, Field(description='What this feature covers (empty arrays = all)')
50
+ Coverage | None, Field(description="What this feature covers (empty arrays = all)")
51
51
  ] = None
52
52
  description: Annotated[
53
- str | None, Field(description='Description of what this feature measures or represents')
53
+ str | None, Field(description="Description of what this feature measures or represents")
54
54
  ] = None
55
55
  ext: ext_1.ExtensionObject | None = None
56
56
  feature_id: Annotated[
@@ -62,19 +62,19 @@ class PropertyFeatureDefinition(AdCPBaseModel):
62
62
  methodology_url: Annotated[
63
63
  AnyUrl,
64
64
  Field(
65
- description='URL to documentation explaining how this feature is calculated/measured'
65
+ description="URL to documentation explaining how this feature is calculated/measured"
66
66
  ),
67
67
  ]
68
68
  methodology_version: Annotated[
69
- str | None, Field(description='Version identifier for the methodology (for audit trails)')
69
+ str | None, Field(description="Version identifier for the methodology (for audit trails)")
70
70
  ] = None
71
- name: Annotated[str, Field(description='Human-readable name for the feature')]
71
+ name: Annotated[str, Field(description="Human-readable name for the feature")]
72
72
  range: Annotated[
73
- Range | None, Field(description='For quantitative features, the valid range of values')
73
+ Range | None, Field(description="For quantitative features, the valid range of values")
74
74
  ] = None
75
75
  type: Annotated[
76
76
  Type,
77
77
  Field(
78
- description='The type of values this feature produces: binary (true/false), quantitative (numeric range), categorical (enumerated values)'
78
+ description="The type of values this feature produces: binary (true/false), quantitative (numeric range), categorical (enumerated values)"
79
79
  ),
80
80
  ]
@@ -15,7 +15,7 @@ from . import base_property_source, property_list_filters
15
15
 
16
16
  class PropertyList(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
20
  base_properties: Annotated[
21
21
  list[base_property_source.BasePropertySource] | None,
@@ -25,16 +25,16 @@ class PropertyList(AdCPBaseModel):
25
25
  ] = None
26
26
  brand_manifest: Annotated[
27
27
  brand_manifest_1.BrandManifest | None,
28
- Field(description='Brand identity used to automatically apply appropriate rules'),
28
+ Field(description="Brand identity used to automatically apply appropriate rules"),
29
29
  ] = None
30
30
  cache_duration_hours: Annotated[
31
31
  int | None,
32
32
  Field(
33
- description='Recommended cache duration for resolved list. Consumers should re-fetch after this period.',
33
+ description="Recommended cache duration for resolved list. Consumers should re-fetch after this period.",
34
34
  ge=1,
35
35
  ),
36
36
  ] = 24
37
- created_at: Annotated[AwareDatetime | None, Field(description='When the list was created')] = (
37
+ created_at: Annotated[AwareDatetime | None, Field(description="When the list was created")] = (
38
38
  None
39
39
  )
40
40
  description: Annotated[str | None, Field(description="Description of the list's purpose")] = (
@@ -42,21 +42,21 @@ class PropertyList(AdCPBaseModel):
42
42
  )
43
43
  filters: Annotated[
44
44
  property_list_filters.PropertyListFilters | None,
45
- Field(description='Dynamic filters applied when resolving the list'),
45
+ Field(description="Dynamic filters applied when resolving the list"),
46
46
  ] = None
47
- list_id: Annotated[str, Field(description='Unique identifier for this property list')]
48
- name: Annotated[str, Field(description='Human-readable name for the list')]
47
+ list_id: Annotated[str, Field(description="Unique identifier for this property list")]
48
+ name: Annotated[str, Field(description="Human-readable name for the list")]
49
49
  principal: Annotated[
50
- str | None, Field(description='Principal identity that owns this list')
50
+ str | None, Field(description="Principal identity that owns this list")
51
51
  ] = None
52
52
  property_count: Annotated[
53
53
  int | None,
54
- Field(description='Number of properties in the resolved list (at time of last resolution)'),
54
+ Field(description="Number of properties in the resolved list (at time of last resolution)"),
55
55
  ] = None
56
56
  updated_at: Annotated[
57
- AwareDatetime | None, Field(description='When the list was last modified')
57
+ AwareDatetime | None, Field(description="When the list was last modified")
58
58
  ] = None
59
59
  webhook_url: Annotated[
60
60
  AnyUrl | None,
61
- Field(description='URL to receive notifications when the resolved list changes'),
61
+ Field(description="URL to receive notifications when the resolved list changes"),
62
62
  ] = None
@@ -14,35 +14,35 @@ from ..core import ext as ext_1
14
14
 
15
15
  class ChangeSummary(AdCPBaseModel):
16
16
  model_config = ConfigDict(
17
- extra='forbid',
17
+ extra="forbid",
18
18
  )
19
19
  properties_added: Annotated[
20
- int | None, Field(description='Number of properties added since last resolution')
20
+ int | None, Field(description="Number of properties added since last resolution")
21
21
  ] = None
22
22
  properties_removed: Annotated[
23
- int | None, Field(description='Number of properties removed since last resolution')
23
+ int | None, Field(description="Number of properties removed since last resolution")
24
24
  ] = None
25
25
  total_properties: Annotated[
26
- int | None, Field(description='Total properties in the resolved list')
26
+ int | None, Field(description="Total properties in the resolved list")
27
27
  ] = None
28
28
 
29
29
 
30
30
  class PropertyListChangedWebhook(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='forbid',
32
+ extra="forbid",
33
33
  )
34
34
  cache_valid_until: Annotated[
35
35
  AwareDatetime | None,
36
- Field(description='When the consumer should refresh from the governance agent'),
36
+ Field(description="When the consumer should refresh from the governance agent"),
37
37
  ] = None
38
38
  change_summary: Annotated[
39
- ChangeSummary | None, Field(description='Summary of changes to the resolved list')
39
+ ChangeSummary | None, Field(description="Summary of changes to the resolved list")
40
40
  ] = None
41
- event: Annotated[Literal['property_list_changed'], Field(description='The event type')]
41
+ event: Annotated[Literal["property_list_changed"], Field(description="The event type")]
42
42
  ext: ext_1.ExtensionObject | None = None
43
- list_id: Annotated[str, Field(description='ID of the property list that changed')]
44
- list_name: Annotated[str | None, Field(description='Name of the property list')] = None
45
- resolved_at: Annotated[AwareDatetime, Field(description='When the list was re-resolved')]
43
+ list_id: Annotated[str, Field(description="ID of the property list that changed")]
44
+ list_name: Annotated[str | None, Field(description="Name of the property list")] = None
45
+ resolved_at: Annotated[AwareDatetime, Field(description="When the list was re-resolved")]
46
46
  signature: Annotated[
47
47
  str,
48
48
  Field(
@@ -15,33 +15,33 @@ from . import feature_requirement
15
15
 
16
16
 
17
17
  class CountriesAllItem(RootModel[str]):
18
- root: Annotated[str, Field(pattern='^[A-Z]{2}$')]
18
+ root: Annotated[str, Field(pattern="^[A-Z]{2}$")]
19
19
 
20
20
 
21
21
  class PropertyListFilters(AdCPBaseModel):
22
22
  model_config = ConfigDict(
23
- extra='forbid',
23
+ extra="forbid",
24
24
  )
25
25
  channels_any: Annotated[
26
26
  list[channels.MediaChannel],
27
- Field(description='Property must support ANY of the listed channels. Required.'),
27
+ Field(description="Property must support ANY of the listed channels. Required."),
28
28
  ]
29
29
  countries_all: Annotated[
30
30
  list[CountriesAllItem],
31
31
  Field(
32
- description='Property must have feature data for ALL listed countries (ISO codes). Required.'
32
+ description="Property must have feature data for ALL listed countries (ISO codes). Required."
33
33
  ),
34
34
  ]
35
35
  exclude_identifiers: Annotated[
36
36
  list[identifier.Identifier] | None,
37
- Field(description='Identifiers to always exclude from results'),
37
+ Field(description="Identifiers to always exclude from results"),
38
38
  ] = None
39
39
  feature_requirements: Annotated[
40
40
  list[feature_requirement.FeatureRequirement] | None,
41
41
  Field(
42
- description='Feature-based requirements. Property must pass ALL requirements (AND logic).'
42
+ description="Feature-based requirements. Property must pass ALL requirements (AND logic)."
43
43
  ),
44
44
  ] = None
45
45
  property_types: Annotated[
46
- list[property_type.PropertyType] | None, Field(description='Filter to these property types')
46
+ list[property_type.PropertyType] | None, Field(description="Filter to these property types")
47
47
  ] = None
@@ -17,30 +17,30 @@ from . import base_property_source, property_list_filters
17
17
 
18
18
  class UpdatePropertyListRequest(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='forbid',
20
+ extra="forbid",
21
21
  )
22
22
  base_properties: Annotated[
23
23
  list[base_property_source.BasePropertySource] | None,
24
24
  Field(
25
- description='Complete replacement for the base properties list (not a patch). Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers).'
25
+ description="Complete replacement for the base properties list (not a patch). Each entry is a discriminated union: publisher_tags (publisher_domain + tags), publisher_ids (publisher_domain + property_ids), or identifiers (direct identifiers)."
26
26
  ),
27
27
  ] = None
28
28
  brand_manifest: Annotated[
29
29
  brand_manifest_1.BrandManifest | None,
30
- Field(description='Update brand identity and requirements'),
30
+ Field(description="Update brand identity and requirements"),
31
31
  ] = None
32
32
  context: context_1.ContextObject | None = None
33
- description: Annotated[str | None, Field(description='New description')] = None
33
+ description: Annotated[str | None, Field(description="New description")] = None
34
34
  ext: ext_1.ExtensionObject | None = None
35
35
  filters: Annotated[
36
36
  property_list_filters.PropertyListFilters | None,
37
- Field(description='Complete replacement for the filters (not a patch)'),
37
+ Field(description="Complete replacement for the filters (not a patch)"),
38
38
  ] = None
39
- list_id: Annotated[str, Field(description='ID of the property list to update')]
40
- name: Annotated[str | None, Field(description='New name for the list')] = None
39
+ list_id: Annotated[str, Field(description="ID of the property list to update")]
40
+ name: Annotated[str | None, Field(description="New name for the list")] = None
41
41
  webhook_url: Annotated[
42
42
  AnyUrl | None,
43
43
  Field(
44
- description='Update the webhook URL for list change notifications (set to empty string to remove)'
44
+ description="Update the webhook URL for list change notifications (set to empty string to remove)"
45
45
  ),
46
46
  ] = None
@@ -15,7 +15,7 @@ from . import property_list
15
15
 
16
16
  class UpdatePropertyListResponse(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra="forbid",
19
19
  )
20
20
  ext: ext_1.ExtensionObject | None = None
21
- list: Annotated[property_list.PropertyList, Field(description='The updated property list')]
21
+ list: Annotated[property_list.PropertyList, Field(description="The updated property list")]
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: protocol/get_adcp_capabilities_request.json
3
- # timestamp: 2026-01-25T21:17:54+00:00
3
+ # timestamp: 2026-02-02T17:45:21+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -15,20 +15,22 @@ from ..core import ext as ext_1
15
15
 
16
16
 
17
17
  class Protocol(Enum):
18
- media_buy = 'media_buy'
19
- signals = 'signals'
20
- sponsored_intelligence = 'sponsored_intelligence'
18
+ media_buy = "media_buy"
19
+ signals = "signals"
20
+ governance = "governance"
21
+ sponsored_intelligence = "sponsored_intelligence"
22
+ creative = "creative"
21
23
 
22
24
 
23
25
  class GetAdcpCapabilitiesRequest(AdCPBaseModel):
24
26
  model_config = ConfigDict(
25
- extra='allow',
27
+ extra="allow",
26
28
  )
27
29
  context: context_1.ContextObject | None = None
28
30
  ext: ext_1.ExtensionObject | None = None
29
31
  protocols: Annotated[
30
32
  list[Protocol] | None,
31
33
  Field(
32
- description='Specific protocols to query capabilities for. If omitted, returns capabilities for all supported protocols.'
34
+ description="Specific protocols to query capabilities for. If omitted, returns capabilities for all supported protocols."
33
35
  ),
34
36
  ] = None