adcp 2.4.0__py3-none-any.whl → 2.5.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 (119) hide show
  1. adcp/__init__.py +91 -39
  2. adcp/__main__.py +1 -1
  3. adcp/client.py +9 -9
  4. adcp/simple.py +1 -1
  5. adcp/testing/test_helpers.py +1 -1
  6. adcp/types/__init__.py +69 -2
  7. adcp/types/{generated.py → _generated.py} +67 -11
  8. adcp/types/aliases.py +55 -1
  9. adcp/types/generated_poc/__init__.py +1 -1
  10. adcp/types/generated_poc/activate_signal_request.py +1 -1
  11. adcp/types/generated_poc/activate_signal_response.py +1 -1
  12. adcp/types/generated_poc/activation_key.py +1 -1
  13. adcp/types/generated_poc/adagents.py +1 -1
  14. adcp/types/generated_poc/asset_type.py +1 -1
  15. adcp/types/generated_poc/audio_asset.py +1 -1
  16. adcp/types/generated_poc/brand_manifest.py +3 -62
  17. adcp/types/generated_poc/build_creative_request.py +1 -1
  18. adcp/types/generated_poc/build_creative_response.py +1 -1
  19. adcp/types/generated_poc/channels.py +1 -1
  20. adcp/types/generated_poc/cpc_option.py +1 -1
  21. adcp/types/generated_poc/cpcv_option.py +1 -1
  22. adcp/types/generated_poc/cpm_auction_option.py +1 -1
  23. adcp/types/generated_poc/cpm_fixed_option.py +1 -1
  24. adcp/types/generated_poc/cpp_option.py +1 -1
  25. adcp/types/generated_poc/cpv_option.py +1 -1
  26. adcp/types/generated_poc/create_media_buy_request.py +2 -2
  27. adcp/types/generated_poc/create_media_buy_response.py +1 -1
  28. adcp/types/generated_poc/creative_asset.py +1 -1
  29. adcp/types/generated_poc/creative_assignment.py +1 -1
  30. adcp/types/generated_poc/creative_manifest.py +1 -1
  31. adcp/types/generated_poc/creative_policy.py +1 -1
  32. adcp/types/generated_poc/creative_status.py +1 -1
  33. adcp/types/generated_poc/css_asset.py +1 -1
  34. adcp/types/generated_poc/daast_asset.py +1 -1
  35. adcp/types/generated_poc/delivery_metrics.py +1 -1
  36. adcp/types/generated_poc/delivery_type.py +1 -1
  37. adcp/types/generated_poc/deployment.py +1 -1
  38. adcp/types/generated_poc/destination.py +1 -1
  39. adcp/types/generated_poc/error.py +1 -1
  40. adcp/types/generated_poc/flat_rate_option.py +1 -1
  41. adcp/types/generated_poc/format.py +1 -1
  42. adcp/types/generated_poc/format_id.py +1 -1
  43. adcp/types/generated_poc/frequency_cap.py +1 -1
  44. adcp/types/generated_poc/frequency_cap_scope.py +1 -1
  45. adcp/types/generated_poc/get_media_buy_delivery_request.py +1 -1
  46. adcp/types/generated_poc/get_media_buy_delivery_response.py +1 -1
  47. adcp/types/generated_poc/get_products_request.py +2 -2
  48. adcp/types/generated_poc/get_products_response.py +1 -1
  49. adcp/types/generated_poc/get_signals_request.py +1 -1
  50. adcp/types/generated_poc/get_signals_response.py +1 -1
  51. adcp/types/generated_poc/html_asset.py +1 -1
  52. adcp/types/generated_poc/identifier_types.py +1 -1
  53. adcp/types/generated_poc/image_asset.py +1 -1
  54. adcp/types/generated_poc/javascript_asset.py +1 -1
  55. adcp/types/generated_poc/list_authorized_properties_request.py +1 -1
  56. adcp/types/generated_poc/list_authorized_properties_response.py +1 -1
  57. adcp/types/generated_poc/list_creative_formats_request.py +1 -1
  58. adcp/types/generated_poc/list_creative_formats_response.py +1 -1
  59. adcp/types/generated_poc/list_creatives_request.py +1 -1
  60. adcp/types/generated_poc/list_creatives_response.py +2 -17
  61. adcp/types/generated_poc/markdown_asset.py +1 -1
  62. adcp/types/generated_poc/measurement.py +1 -1
  63. adcp/types/generated_poc/media_buy.py +1 -1
  64. adcp/types/generated_poc/media_buy_status.py +1 -1
  65. adcp/types/generated_poc/pacing.py +1 -1
  66. adcp/types/generated_poc/package.py +1 -1
  67. adcp/types/generated_poc/package_request.py +1 -1
  68. adcp/types/generated_poc/package_status.py +1 -1
  69. adcp/types/generated_poc/performance_feedback.py +1 -1
  70. adcp/types/generated_poc/placement.py +1 -1
  71. adcp/types/generated_poc/preview_creative_request.py +1 -1
  72. adcp/types/generated_poc/preview_creative_response.py +1 -1
  73. adcp/types/generated_poc/preview_render.py +1 -1
  74. adcp/types/generated_poc/pricing_model.py +1 -1
  75. adcp/types/generated_poc/product.py +25 -16
  76. adcp/types/generated_poc/promoted_offerings.py +2 -2
  77. adcp/types/generated_poc/promoted_products.py +1 -1
  78. adcp/types/generated_poc/property.py +1 -1
  79. adcp/types/generated_poc/protocol_envelope.py +1 -1
  80. adcp/types/generated_poc/provide_performance_feedback_request.py +1 -1
  81. adcp/types/generated_poc/provide_performance_feedback_response.py +1 -1
  82. adcp/types/generated_poc/publisher_identifier_types.py +1 -1
  83. adcp/types/generated_poc/push_notification_config.py +1 -1
  84. adcp/types/generated_poc/reporting_capabilities.py +1 -1
  85. adcp/types/generated_poc/response.py +1 -1
  86. adcp/types/generated_poc/standard_format_ids.py +1 -1
  87. adcp/types/generated_poc/sub_asset.py +1 -1
  88. adcp/types/generated_poc/sync_creatives_request.py +1 -1
  89. adcp/types/generated_poc/sync_creatives_response.py +1 -1
  90. adcp/types/generated_poc/targeting.py +1 -1
  91. adcp/types/generated_poc/task_status.py +1 -1
  92. adcp/types/generated_poc/task_type.py +1 -1
  93. adcp/types/generated_poc/tasks_get_request.py +1 -1
  94. adcp/types/generated_poc/tasks_get_response.py +1 -1
  95. adcp/types/generated_poc/tasks_list_request.py +1 -1
  96. adcp/types/generated_poc/tasks_list_response.py +1 -1
  97. adcp/types/generated_poc/text_asset.py +1 -1
  98. adcp/types/generated_poc/update_media_buy_request.py +1 -1
  99. adcp/types/generated_poc/update_media_buy_response.py +1 -1
  100. adcp/types/generated_poc/url_asset.py +1 -1
  101. adcp/types/generated_poc/vast_asset.py +1 -1
  102. adcp/types/generated_poc/vcpm_auction_option.py +1 -1
  103. adcp/types/generated_poc/vcpm_fixed_option.py +1 -1
  104. adcp/types/generated_poc/video_asset.py +1 -1
  105. adcp/types/generated_poc/webhook_asset.py +1 -1
  106. adcp/types/generated_poc/webhook_payload.py +1 -1
  107. adcp/types/stable.py +177 -0
  108. adcp/utils/preview_cache.py +6 -6
  109. {adcp-2.4.0.dist-info → adcp-2.5.0.dist-info}/METADATA +45 -5
  110. adcp-2.5.0.dist-info/RECORD +129 -0
  111. adcp/types/generated_poc/brand_manifest_ref.py +0 -361
  112. adcp/types/generated_poc/index.py +0 -17
  113. adcp/types/generated_poc/pricing_option.py +0 -365
  114. adcp/types/generated_poc/start_timing.py +0 -13
  115. adcp-2.4.0.dist-info/RECORD +0 -132
  116. {adcp-2.4.0.dist-info → adcp-2.5.0.dist-info}/WHEEL +0 -0
  117. {adcp-2.4.0.dist-info → adcp-2.5.0.dist-info}/entry_points.txt +0 -0
  118. {adcp-2.4.0.dist-info → adcp-2.5.0.dist-info}/licenses/LICENSE +0 -0
  119. {adcp-2.4.0.dist-info → adcp-2.5.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: preview-creative-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: preview-creative-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: preview-render.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing-model.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,13 +1,13 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: product.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T05:05:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
7
  from typing import Annotated, Any, Literal
8
8
 
9
9
  from adcp.types.base import AdCPBaseModel
10
- from pydantic import AwareDatetime, ConfigDict, Field, RootModel, model_validator
10
+ from pydantic import AwareDatetime, ConfigDict, Field, RootModel
11
11
 
12
12
  from . import cpc_option, cpcv_option, cpm_auction_option, cpm_fixed_option, cpp_option, cpv_option
13
13
  from . import creative_policy as creative_policy_1
@@ -69,11 +69,30 @@ class ProductCardDetailed(AdCPBaseModel):
69
69
  ]
70
70
 
71
71
 
72
+ class PublisherProperties(AdCPBaseModel):
73
+ model_config = ConfigDict(
74
+ extra='forbid',
75
+ )
76
+ publisher_domain: Annotated[
77
+ str,
78
+ Field(
79
+ description="Domain where publisher's adagents.json is hosted (e.g., 'cnn.com')",
80
+ pattern='^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$',
81
+ ),
82
+ ]
83
+ selection_type: Annotated[
84
+ Literal['all'],
85
+ Field(
86
+ description='Discriminator indicating all properties from this publisher are included'
87
+ ),
88
+ ]
89
+
90
+
72
91
  class PropertyId(RootModel[str]):
73
92
  root: Annotated[str, Field(pattern='^[a-z0-9_]+$')]
74
93
 
75
94
 
76
- class PublisherProperties(AdCPBaseModel):
95
+ class PublisherProperties4(AdCPBaseModel):
77
96
  model_config = ConfigDict(
78
97
  extra='forbid',
79
98
  )
@@ -98,7 +117,7 @@ class PropertyTag(PropertyId):
98
117
  pass
99
118
 
100
119
 
101
- class PublisherProperties3(AdCPBaseModel):
120
+ class PublisherProperties5(AdCPBaseModel):
102
121
  model_config = ConfigDict(
103
122
  extra='forbid',
104
123
  )
@@ -193,20 +212,10 @@ class Product(AdCPBaseModel):
193
212
  ] = None
194
213
  product_id: Annotated[str, Field(description='Unique identifier for the product')]
195
214
  publisher_properties: Annotated[
196
- list[PublisherProperties | PublisherProperties3],
215
+ list[PublisherProperties | PublisherProperties4 | PublisherProperties5],
197
216
  Field(
198
- description="Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization.",
217
+ description="Publisher properties covered by this product. Buyers fetch actual property definitions from each publisher's adagents.json and validate agent authorization. Selection patterns mirror the authorization patterns in adagents.json for consistency.",
199
218
  min_length=1,
200
219
  ),
201
220
  ]
202
221
  reporting_capabilities: reporting_capabilities_1.ReportingCapabilities | None = None
203
-
204
-
205
- @model_validator(mode='after')
206
- def validate_publisher_properties_items(self) -> 'Product':
207
- """Validate all publisher_properties items."""
208
- from adcp.validation import validate_product
209
-
210
- data = self.model_dump()
211
- validate_product(data)
212
- return self
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: promoted-offerings.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T04:34:42+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -10,7 +10,7 @@ from typing import Annotated, Any
10
10
  from adcp.types.base import AdCPBaseModel
11
11
  from pydantic import AnyUrl, ConfigDict, Field
12
12
 
13
- from . import brand_manifest_ref as brand_manifest_1
13
+ from . import brand_manifest as brand_manifest_1
14
14
  from . import promoted_products
15
15
 
16
16
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: promoted-products.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: property.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: protocol-envelope.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: provide-performance-feedback-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: provide-performance-feedback-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: publisher-identifier-types.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: push-notification-config.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: reporting-capabilities.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: standard-format-ids.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: sub-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: sync-creatives-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: sync-creatives-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: targeting.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: task-status.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: task-type.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: tasks-get-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: tasks-get-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: tasks-list-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: tasks-list-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: text-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: update-media-buy-request.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: update-media-buy-response.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: url-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: vast-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: vcpm-auction-option.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: vcpm-fixed-option.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: video-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: webhook-asset.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: webhook-payload.json
3
- # timestamp: 2025-11-18T03:04:10+00:00
3
+ # timestamp: 2025-11-18T03:35:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
adcp/types/stable.py ADDED
@@ -0,0 +1,177 @@
1
+ """Stable public API for AdCP types.
2
+
3
+ This module provides a stable, versioned API that shields users from internal
4
+ implementation details and schema evolution. All types exported here are
5
+ guaranteed to be stable within a major version.
6
+
7
+ Internal Implementation:
8
+ - Types are generated from JSON schemas into adcp.types.generated_poc
9
+ - The generator may create numbered variants (e.g., BrandManifest1, BrandManifest2)
10
+ when schema evolution creates multiple valid structures
11
+ - This module provides clean, unnumbered aliases pointing to the canonical version
12
+
13
+ **IMPORTANT**: Never import directly from adcp.types.generated_poc or adcp.types.generated.
14
+ Always import from adcp.types or adcp.types.stable.
15
+
16
+ Schema Evolution:
17
+ - When schemas change, we update the alias targets here
18
+ - Users see stable names (BrandManifest, Product, etc.)
19
+ - Breaking changes require major version bumps
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from adcp.types._generated import (
25
+ # Core request/response types
26
+ ActivateSignalRequest,
27
+ ActivateSignalResponse,
28
+ # Assets
29
+ AudioAsset,
30
+ # Core domain types
31
+ BrandManifest, # Clean single type after upstream schema fix
32
+ BuildCreativeRequest,
33
+ BuildCreativeResponse,
34
+ # Pricing options
35
+ CpcPricingOption,
36
+ CpcvPricingOption,
37
+ CpmAuctionPricingOption,
38
+ CpmFixedRatePricingOption,
39
+ CppPricingOption,
40
+ CpvPricingOption,
41
+ CreateMediaBuyRequest,
42
+ CreateMediaBuyResponse,
43
+ Creative,
44
+ CreativeManifest,
45
+ # Enums and constants
46
+ CreativeStatus,
47
+ CssAsset,
48
+ Error,
49
+ FlatRatePricingOption,
50
+ Format,
51
+ GetMediaBuyDeliveryRequest,
52
+ GetMediaBuyDeliveryResponse,
53
+ GetProductsRequest,
54
+ GetProductsResponse,
55
+ GetSignalsRequest,
56
+ GetSignalsResponse,
57
+ HtmlAsset,
58
+ ImageAsset,
59
+ JavascriptAsset,
60
+ ListAuthorizedPropertiesRequest,
61
+ ListAuthorizedPropertiesResponse,
62
+ ListCreativeFormatsRequest,
63
+ ListCreativeFormatsResponse,
64
+ ListCreativesRequest,
65
+ ListCreativesResponse,
66
+ MarkdownAsset,
67
+ MediaBuy,
68
+ MediaBuyStatus,
69
+ PackageStatus,
70
+ PreviewCreativeRequest,
71
+ PreviewCreativeResponse,
72
+ PricingModel,
73
+ Product,
74
+ Property,
75
+ ProvidePerformanceFeedbackRequest,
76
+ ProvidePerformanceFeedbackResponse,
77
+ SyncCreativesRequest,
78
+ SyncCreativesResponse,
79
+ TasksGetRequest,
80
+ TasksGetResponse,
81
+ TasksListRequest,
82
+ TasksListResponse,
83
+ TaskStatus,
84
+ TaskType,
85
+ TextAsset,
86
+ UpdateMediaBuyRequest,
87
+ UpdateMediaBuyResponse,
88
+ UrlAsset,
89
+ VcpmAuctionPricingOption,
90
+ VcpmFixedRatePricingOption,
91
+ VideoAsset,
92
+ WebhookAsset,
93
+ )
94
+
95
+ # Import all generated types from internal consolidated module
96
+ # Import Package directly from its module to avoid collision with Response Package
97
+ from adcp.types.generated_poc.package import Package
98
+
99
+ # Note: BrandManifest is currently split into BrandManifest1/2 due to upstream schema
100
+ # using anyOf incorrectly. This will be fixed upstream to create a single BrandManifest type.
101
+ # For now, users should use BrandManifest1 (url required) which is most common.
102
+
103
+ # Note: BrandManifest is now a single clean type
104
+ # Re-export BrandManifest directly (no alias needed)
105
+
106
+ # Re-export all stable types
107
+ __all__ = [
108
+ # Request/Response types
109
+ "ActivateSignalRequest",
110
+ "ActivateSignalResponse",
111
+ "BuildCreativeRequest",
112
+ "BuildCreativeResponse",
113
+ "CreateMediaBuyRequest",
114
+ "CreateMediaBuyResponse",
115
+ "GetMediaBuyDeliveryRequest",
116
+ "GetMediaBuyDeliveryResponse",
117
+ "GetProductsRequest",
118
+ "GetProductsResponse",
119
+ "GetSignalsRequest",
120
+ "GetSignalsResponse",
121
+ "ListAuthorizedPropertiesRequest",
122
+ "ListAuthorizedPropertiesResponse",
123
+ "ListCreativeFormatsRequest",
124
+ "ListCreativeFormatsResponse",
125
+ "ListCreativesRequest",
126
+ "ListCreativesResponse",
127
+ "PreviewCreativeRequest",
128
+ "PreviewCreativeResponse",
129
+ "ProvidePerformanceFeedbackRequest",
130
+ "ProvidePerformanceFeedbackResponse",
131
+ "SyncCreativesRequest",
132
+ "SyncCreativesResponse",
133
+ "TasksGetRequest",
134
+ "TasksGetResponse",
135
+ "TasksListRequest",
136
+ "TasksListResponse",
137
+ "UpdateMediaBuyRequest",
138
+ "UpdateMediaBuyResponse",
139
+ # Domain types
140
+ "BrandManifest", # Stable alias for BrandManifest1 (temporary until upstream fix)
141
+ "Creative",
142
+ "CreativeManifest",
143
+ "Error",
144
+ "Format",
145
+ "MediaBuy",
146
+ "Package",
147
+ "Product",
148
+ "Property",
149
+ # Pricing options
150
+ "CpcPricingOption",
151
+ "CpcvPricingOption",
152
+ "CpmAuctionPricingOption",
153
+ "CpmFixedRatePricingOption",
154
+ "CppPricingOption",
155
+ "CpvPricingOption",
156
+ "FlatRatePricingOption",
157
+ "VcpmAuctionPricingOption",
158
+ "VcpmFixedRatePricingOption",
159
+ # Status enums
160
+ "CreativeStatus",
161
+ "MediaBuyStatus",
162
+ "PackageStatus",
163
+ "PricingModel",
164
+ "TaskStatus",
165
+ "TaskType",
166
+ # Assets
167
+ "AudioAsset",
168
+ "CssAsset",
169
+ "HtmlAsset",
170
+ "ImageAsset",
171
+ "JavascriptAsset",
172
+ "MarkdownAsset",
173
+ "TextAsset",
174
+ "UrlAsset",
175
+ "VideoAsset",
176
+ "WebhookAsset",
177
+ ]
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Any
10
10
 
11
11
  if TYPE_CHECKING:
12
12
  from adcp.client import ADCPClient
13
- from adcp.types.generated import CreativeManifest, Format, FormatId, Product
13
+ from adcp.types._generated import CreativeManifest, Format, FormatId, Product
14
14
 
15
15
  logger = logging.getLogger(__name__)
16
16
 
@@ -67,7 +67,7 @@ class PreviewURLGenerator:
67
67
  Returns:
68
68
  Preview data with preview_url and metadata, or None if generation fails
69
69
  """
70
- from adcp.types.generated import PreviewCreativeRequest1
70
+ from adcp.types._generated import PreviewCreativeRequest1
71
71
 
72
72
  cache_key = _make_manifest_cache_key(format_id, manifest.model_dump(exclude_none=True))
73
73
 
@@ -123,7 +123,7 @@ class PreviewURLGenerator:
123
123
  Returns:
124
124
  List of preview data dicts (or None for failures), in same order as requests
125
125
  """
126
- from adcp.types.generated import PreviewCreativeRequest
126
+ from adcp.types._generated import PreviewCreativeRequest
127
127
 
128
128
  if not requests:
129
129
  return []
@@ -396,7 +396,7 @@ def _create_sample_manifest_for_format(fmt: Format) -> CreativeManifest | None:
396
396
  Returns:
397
397
  Sample CreativeManifest, or None if unable to create one
398
398
  """
399
- from adcp.types.generated import CreativeManifest
399
+ from adcp.types._generated import CreativeManifest
400
400
 
401
401
  if not fmt.assets_required:
402
402
  return None
@@ -436,7 +436,7 @@ def _create_sample_manifest_for_format_id(
436
436
  Returns:
437
437
  Sample CreativeManifest with placeholder assets
438
438
  """
439
- from adcp.types.generated import CreativeManifest, ImageAsset, UrlAsset
439
+ from adcp.types._generated import CreativeManifest, ImageAsset, UrlAsset
440
440
 
441
441
  assets = {
442
442
  "primary_asset": ImageAsset(url="https://example.com/sample-image.jpg"),
@@ -456,7 +456,7 @@ def _create_sample_asset(asset_type: str | None) -> Any:
456
456
  Returns:
457
457
  Sample asset object (Pydantic model)
458
458
  """
459
- from adcp.types.generated import (
459
+ from adcp.types._generated import (
460
460
  HtmlAsset,
461
461
  ImageAsset,
462
462
  TextAsset,