adcp 2.16.0__py3-none-any.whl → 2.18.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 (111) hide show
  1. adcp/ADCP_VERSION +1 -1
  2. adcp/__init__.py +22 -1
  3. adcp/__main__.py +72 -0
  4. adcp/types/_generated.py +7 -1
  5. adcp/types/generated_poc/adagents.py +14 -14
  6. adcp/types/generated_poc/core/activation_key.py +3 -3
  7. adcp/types/generated_poc/core/assets/audio_asset.py +2 -2
  8. adcp/types/generated_poc/core/assets/css_asset.py +2 -2
  9. adcp/types/generated_poc/core/assets/daast_asset.py +3 -3
  10. adcp/types/generated_poc/core/assets/html_asset.py +2 -2
  11. adcp/types/generated_poc/core/assets/image_asset.py +2 -2
  12. adcp/types/generated_poc/core/assets/javascript_asset.py +2 -2
  13. adcp/types/generated_poc/core/assets/text_asset.py +2 -2
  14. adcp/types/generated_poc/core/assets/url_asset.py +2 -2
  15. adcp/types/generated_poc/core/assets/vast_asset.py +3 -3
  16. adcp/types/generated_poc/core/assets/video_asset.py +2 -2
  17. adcp/types/generated_poc/core/assets/webhook_asset.py +2 -2
  18. adcp/types/generated_poc/core/brand_manifest.py +4 -4
  19. adcp/types/generated_poc/core/context.py +1 -2
  20. adcp/types/generated_poc/core/creative_asset.py +3 -3
  21. adcp/types/generated_poc/core/creative_assignment.py +2 -2
  22. adcp/types/generated_poc/core/creative_filters.py +2 -2
  23. adcp/types/generated_poc/core/creative_manifest.py +2 -2
  24. adcp/types/generated_poc/core/creative_policy.py +2 -2
  25. adcp/types/generated_poc/core/delivery_metrics.py +3 -3
  26. adcp/types/generated_poc/core/deployment.py +3 -3
  27. adcp/types/generated_poc/core/destination.py +3 -3
  28. adcp/types/generated_poc/core/error.py +5 -5
  29. adcp/types/generated_poc/core/ext.py +1 -2
  30. adcp/types/generated_poc/core/format.py +94 -7
  31. adcp/types/generated_poc/core/format_id.py +2 -2
  32. adcp/types/generated_poc/core/frequency_cap.py +2 -2
  33. adcp/types/generated_poc/core/measurement.py +2 -2
  34. adcp/types/generated_poc/core/media_buy.py +2 -2
  35. adcp/types/generated_poc/core/package.py +2 -2
  36. adcp/types/generated_poc/core/performance_feedback.py +3 -3
  37. adcp/types/generated_poc/core/placement.py +2 -2
  38. adcp/types/generated_poc/core/product.py +4 -4
  39. adcp/types/generated_poc/core/product_filters.py +4 -4
  40. adcp/types/generated_poc/core/promoted_offerings.py +4 -4
  41. adcp/types/generated_poc/core/promoted_products.py +2 -2
  42. adcp/types/generated_poc/core/property.py +3 -3
  43. adcp/types/generated_poc/core/protocol_envelope.py +2 -2
  44. adcp/types/generated_poc/core/publisher_property_selector.py +4 -4
  45. adcp/types/generated_poc/core/reporting_capabilities.py +2 -2
  46. adcp/types/generated_poc/core/response.py +2 -2
  47. adcp/types/generated_poc/core/signal_filters.py +2 -2
  48. adcp/types/generated_poc/core/sub_asset.py +3 -3
  49. adcp/types/generated_poc/core/targeting.py +2 -2
  50. adcp/types/generated_poc/creative/list_creative_formats_request.py +2 -2
  51. adcp/types/generated_poc/creative/list_creative_formats_response.py +2 -2
  52. adcp/types/generated_poc/creative/preview_creative_request.py +7 -7
  53. adcp/types/generated_poc/creative/preview_creative_response.py +3 -3
  54. adcp/types/generated_poc/creative/preview_render.py +4 -4
  55. adcp/types/generated_poc/media_buy/build_creative_request.py +2 -2
  56. adcp/types/generated_poc/media_buy/build_creative_response.py +3 -3
  57. adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +2 -2
  58. adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +2 -2
  59. adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +2 -2
  60. adcp/types/generated_poc/media_buy/create_media_buy_request.py +47 -6
  61. adcp/types/generated_poc/media_buy/create_media_buy_response.py +3 -3
  62. adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +2 -2
  63. adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +6 -6
  64. adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +2 -2
  65. adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
  66. adcp/types/generated_poc/media_buy/get_products_async_response_working.py +2 -2
  67. adcp/types/generated_poc/media_buy/get_products_request.py +2 -2
  68. adcp/types/generated_poc/media_buy/get_products_response.py +2 -2
  69. adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +2 -2
  70. adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +2 -2
  71. adcp/types/generated_poc/media_buy/list_creative_formats_request.py +2 -2
  72. adcp/types/generated_poc/media_buy/list_creative_formats_response.py +2 -2
  73. adcp/types/generated_poc/media_buy/list_creatives_request.py +4 -4
  74. adcp/types/generated_poc/media_buy/list_creatives_response.py +9 -9
  75. adcp/types/generated_poc/media_buy/package_request.py +2 -2
  76. adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +4 -4
  77. adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +3 -3
  78. adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +2 -2
  79. adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +2 -2
  80. adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +2 -2
  81. adcp/types/generated_poc/media_buy/sync_creatives_request.py +2 -2
  82. adcp/types/generated_poc/media_buy/sync_creatives_response.py +4 -4
  83. adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +2 -2
  84. adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +2 -2
  85. adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +2 -2
  86. adcp/types/generated_poc/media_buy/update_media_buy_request.py +5 -5
  87. adcp/types/generated_poc/media_buy/update_media_buy_response.py +3 -3
  88. adcp/types/generated_poc/pricing_options/cpc_option.py +2 -2
  89. adcp/types/generated_poc/pricing_options/cpcv_option.py +2 -2
  90. adcp/types/generated_poc/pricing_options/cpm_auction_option.py +2 -2
  91. adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +2 -2
  92. adcp/types/generated_poc/pricing_options/cpp_option.py +3 -3
  93. adcp/types/generated_poc/pricing_options/cpv_option.py +4 -4
  94. adcp/types/generated_poc/pricing_options/flat_rate_option.py +3 -3
  95. adcp/types/generated_poc/pricing_options/vcpm_auction_option.py +2 -2
  96. adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +2 -2
  97. adcp/types/generated_poc/protocols/adcp_extension.py +2 -2
  98. adcp/types/generated_poc/signals/activate_signal_request.py +2 -2
  99. adcp/types/generated_poc/signals/activate_signal_response.py +3 -3
  100. adcp/types/generated_poc/signals/get_signals_request.py +3 -3
  101. adcp/types/generated_poc/signals/get_signals_response.py +4 -4
  102. adcp/utils/__init__.py +24 -1
  103. adcp/utils/format_assets.py +224 -0
  104. adcp/utils/preview_cache.py +29 -7
  105. adcp/utils/response_parser.py +81 -6
  106. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/METADATA +1 -1
  107. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/RECORD +111 -110
  108. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/WHEEL +0 -0
  109. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/entry_points.txt +0 -0
  110. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/licenses/LICENSE +0 -0
  111. {adcp-2.16.0.dist-info → adcp-2.18.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/list_creatives_request.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -31,7 +31,7 @@ class FieldModel(Enum):
31
31
 
32
32
  class Pagination(AdCPBaseModel):
33
33
  model_config = ConfigDict(
34
- extra='forbid',
34
+ extra='allow',
35
35
  )
36
36
  limit: Annotated[
37
37
  int | None, Field(description='Maximum number of creatives to return', ge=1, le=100)
@@ -41,7 +41,7 @@ class Pagination(AdCPBaseModel):
41
41
 
42
42
  class Sort(AdCPBaseModel):
43
43
  model_config = ConfigDict(
44
- extra='forbid',
44
+ extra='allow',
45
45
  )
46
46
  direction: Annotated[
47
47
  sort_direction.SortDirection | None, Field(description='Sort direction')
@@ -53,7 +53,7 @@ class Sort(AdCPBaseModel):
53
53
 
54
54
  class ListCreativesRequest(AdCPBaseModel):
55
55
  model_config = ConfigDict(
56
- extra='forbid',
56
+ extra='allow',
57
57
  )
58
58
  context: context_1.ContextObject | None = None
59
59
  ext: ext_1.ExtensionObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/list_creatives_response.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -37,7 +37,7 @@ class Status(Enum):
37
37
 
38
38
  class AssignedPackage(AdCPBaseModel):
39
39
  model_config = ConfigDict(
40
- extra='forbid',
40
+ extra='allow',
41
41
  )
42
42
  assigned_date: Annotated[AwareDatetime, Field(description='When this assignment was created')]
43
43
  package_id: Annotated[str, Field(description='Package identifier')]
@@ -47,7 +47,7 @@ class AssignedPackage(AdCPBaseModel):
47
47
 
48
48
  class Assignments(AdCPBaseModel):
49
49
  model_config = ConfigDict(
50
- extra='forbid',
50
+ extra='allow',
51
51
  )
52
52
  assigned_packages: Annotated[
53
53
  list[AssignedPackage] | None,
@@ -60,7 +60,7 @@ class Assignments(AdCPBaseModel):
60
60
 
61
61
  class Performance(AdCPBaseModel):
62
62
  model_config = ConfigDict(
63
- extra='forbid',
63
+ extra='allow',
64
64
  )
65
65
  clicks: Annotated[
66
66
  int | None, Field(description='Total clicks across all assignments', ge=0)
@@ -84,7 +84,7 @@ class Performance(AdCPBaseModel):
84
84
 
85
85
  class Pagination(AdCPBaseModel):
86
86
  model_config = ConfigDict(
87
- extra='forbid',
87
+ extra='allow',
88
88
  )
89
89
  current_page: Annotated[
90
90
  int | None, Field(description='Current page number (1-based)', ge=1)
@@ -99,7 +99,7 @@ class Pagination(AdCPBaseModel):
99
99
 
100
100
  class StatusSummary(AdCPBaseModel):
101
101
  model_config = ConfigDict(
102
- extra='forbid',
102
+ extra='allow',
103
103
  )
104
104
  approved: Annotated[int | None, Field(description='Number of approved creatives', ge=0)] = None
105
105
  archived: Annotated[int | None, Field(description='Number of archived creatives', ge=0)] = None
@@ -116,7 +116,7 @@ class SortApplied(AdCPBaseModel):
116
116
 
117
117
  class QuerySummary(AdCPBaseModel):
118
118
  model_config = ConfigDict(
119
- extra='forbid',
119
+ extra='allow',
120
120
  )
121
121
  filters_applied: Annotated[
122
122
  list[str] | None, Field(description='List of filters that were applied to the query')
@@ -135,7 +135,7 @@ class QuerySummary(AdCPBaseModel):
135
135
 
136
136
  class Creative(AdCPBaseModel):
137
137
  model_config = ConfigDict(
138
- extra='forbid',
138
+ extra='allow',
139
139
  )
140
140
  assets: Annotated[
141
141
  dict[
@@ -191,7 +191,7 @@ class Creative(AdCPBaseModel):
191
191
 
192
192
  class ListCreativesResponse(AdCPBaseModel):
193
193
  model_config = ConfigDict(
194
- extra='forbid',
194
+ extra='allow',
195
195
  )
196
196
  context: context_1.ContextObject | None = None
197
197
  creatives: Annotated[
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/package_request.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -17,7 +17,7 @@ from ..enums import pacing as pacing_1
17
17
 
18
18
  class PackageRequest(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='forbid',
20
+ extra='allow',
21
21
  )
22
22
  bid_price: Annotated[
23
23
  float | None,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/provide_performance_feedback_request.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -17,7 +17,7 @@ from ..enums import metric_type as metric_type_1
17
17
 
18
18
  class MeasurementPeriod(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='forbid',
20
+ extra='allow',
21
21
  )
22
22
  end: Annotated[
23
23
  AwareDatetime, Field(description='ISO 8601 end timestamp for measurement period')
@@ -29,7 +29,7 @@ class MeasurementPeriod(AdCPBaseModel):
29
29
 
30
30
  class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='forbid',
32
+ extra='allow',
33
33
  )
34
34
  buyer_ref: Annotated[
35
35
  str | None, Field(description="Buyer's reference for the media buy", min_length=1)
@@ -72,7 +72,7 @@ class ProvidePerformanceFeedbackRequest1(AdCPBaseModel):
72
72
 
73
73
  class ProvidePerformanceFeedbackRequest2(AdCPBaseModel):
74
74
  model_config = ConfigDict(
75
- extra='forbid',
75
+ extra='allow',
76
76
  )
77
77
  buyer_ref: Annotated[
78
78
  str, Field(description="Buyer's reference for the media buy", min_length=1)
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/provide_performance_feedback_response.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -16,7 +16,7 @@ from ..core import ext as ext_1
16
16
 
17
17
  class ProvidePerformanceFeedbackResponse1(AdCPBaseModel):
18
18
  model_config = ConfigDict(
19
- extra='forbid',
19
+ extra='allow',
20
20
  )
21
21
  context: context_1.ContextObject | None = None
22
22
  ext: ext_1.ExtensionObject | None = None
@@ -28,7 +28,7 @@ class ProvidePerformanceFeedbackResponse1(AdCPBaseModel):
28
28
 
29
29
  class ProvidePerformanceFeedbackResponse2(AdCPBaseModel):
30
30
  model_config = ConfigDict(
31
- extra='forbid',
31
+ extra='allow',
32
32
  )
33
33
  context: context_1.ContextObject | None = None
34
34
  errors: Annotated[
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/sync_creatives_async_response_input_required.json
3
- # timestamp: 2025-12-18T20:00:24+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -22,7 +22,7 @@ class Reason(Enum):
22
22
 
23
23
  class SyncCreativesInputRequired(AdCPBaseModel):
24
24
  model_config = ConfigDict(
25
- extra='forbid',
25
+ extra='allow',
26
26
  )
27
27
  context: context_1.ContextObject | None = None
28
28
  ext: ext_1.ExtensionObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/sync_creatives_async_response_submitted.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -13,7 +13,7 @@ from ..core import ext as ext_1
13
13
 
14
14
  class SyncCreativesSubmitted(AdCPBaseModel):
15
15
  model_config = ConfigDict(
16
- extra='forbid',
16
+ extra='allow',
17
17
  )
18
18
  context: context_1.ContextObject | None = None
19
19
  ext: ext_1.ExtensionObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/sync_creatives_async_response_working.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -15,7 +15,7 @@ from ..core import ext as ext_1
15
15
 
16
16
  class SyncCreativesWorking(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra='allow',
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
21
  creatives_processed: Annotated[
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/sync_creatives_request.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -18,7 +18,7 @@ from ..enums import validation_mode as validation_mode_1
18
18
 
19
19
  class SyncCreativesRequest(AdCPBaseModel):
20
20
  model_config = ConfigDict(
21
- extra='forbid',
21
+ extra='allow',
22
22
  )
23
23
  assignments: Annotated[
24
24
  dict[str, list[str]] | None,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/sync_creatives_response.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -17,7 +17,7 @@ from ..enums import creative_action
17
17
 
18
18
  class Creative(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='forbid',
20
+ extra='allow',
21
21
  )
22
22
  action: Annotated[
23
23
  creative_action.CreativeAction, Field(description='Action taken for this creative')
@@ -65,7 +65,7 @@ class Creative(AdCPBaseModel):
65
65
 
66
66
  class SyncCreativesResponse1(AdCPBaseModel):
67
67
  model_config = ConfigDict(
68
- extra='forbid',
68
+ extra='allow',
69
69
  )
70
70
  context: context_1.ContextObject | None = None
71
71
  creatives: Annotated[
@@ -82,7 +82,7 @@ class SyncCreativesResponse1(AdCPBaseModel):
82
82
 
83
83
  class SyncCreativesResponse2(AdCPBaseModel):
84
84
  model_config = ConfigDict(
85
- extra='forbid',
85
+ extra='allow',
86
86
  )
87
87
  context: context_1.ContextObject | None = None
88
88
  errors: Annotated[
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/update_media_buy_async_response_input_required.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -21,7 +21,7 @@ class Reason(Enum):
21
21
 
22
22
  class UpdateMediaBuyInputRequired(AdCPBaseModel):
23
23
  model_config = ConfigDict(
24
- extra='forbid',
24
+ extra='allow',
25
25
  )
26
26
  context: context_1.ContextObject | None = None
27
27
  ext: ext_1.ExtensionObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/update_media_buy_async_response_submitted.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -13,7 +13,7 @@ from ..core import ext as ext_1
13
13
 
14
14
  class UpdateMediaBuySubmitted(AdCPBaseModel):
15
15
  model_config = ConfigDict(
16
- extra='forbid',
16
+ extra='allow',
17
17
  )
18
18
  context: context_1.ContextObject | None = None
19
19
  ext: ext_1.ExtensionObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/update_media_buy_async_response_working.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -15,7 +15,7 @@ from ..core import ext as ext_1
15
15
 
16
16
  class UpdateMediaBuyWorking(AdCPBaseModel):
17
17
  model_config = ConfigDict(
18
- extra='forbid',
18
+ extra='allow',
19
19
  )
20
20
  context: context_1.ContextObject | None = None
21
21
  current_step: Annotated[
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/update_media_buy_request.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -19,7 +19,7 @@ from ..enums import pacing as pacing_1
19
19
 
20
20
  class Packages(AdCPBaseModel):
21
21
  model_config = ConfigDict(
22
- extra='forbid',
22
+ extra='allow',
23
23
  )
24
24
  bid_price: Annotated[
25
25
  float | None,
@@ -66,7 +66,7 @@ class Packages(AdCPBaseModel):
66
66
 
67
67
  class Packages1(AdCPBaseModel):
68
68
  model_config = ConfigDict(
69
- extra='forbid',
69
+ extra='allow',
70
70
  )
71
71
  bid_price: Annotated[
72
72
  float | None,
@@ -113,7 +113,7 @@ class Packages1(AdCPBaseModel):
113
113
 
114
114
  class UpdateMediaBuyRequest1(AdCPBaseModel):
115
115
  model_config = ConfigDict(
116
- extra='forbid',
116
+ extra='allow',
117
117
  )
118
118
  buyer_ref: Annotated[
119
119
  str | None, Field(description="Buyer's reference for the media buy to update")
@@ -148,7 +148,7 @@ Packages3 = Packages1
148
148
 
149
149
  class UpdateMediaBuyRequest2(AdCPBaseModel):
150
150
  model_config = ConfigDict(
151
- extra='forbid',
151
+ extra='allow',
152
152
  )
153
153
  buyer_ref: Annotated[str, Field(description="Buyer's reference for the media buy to update")]
154
154
  context: context_1.ContextObject | None = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: media_buy/update_media_buy_response.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -17,7 +17,7 @@ from ..core import package
17
17
 
18
18
  class UpdateMediaBuyResponse2(AdCPBaseModel):
19
19
  model_config = ConfigDict(
20
- extra='forbid',
20
+ extra='allow',
21
21
  )
22
22
  context: context_1.ContextObject | None = None
23
23
  errors: Annotated[
@@ -29,7 +29,7 @@ class UpdateMediaBuyResponse2(AdCPBaseModel):
29
29
 
30
30
  class UpdateMediaBuyResponse1(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='forbid',
32
+ extra='allow',
33
33
  )
34
34
  affected_packages: Annotated[
35
35
  list[package.Package] | None,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpc_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpcPricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpcv_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpcvPricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpm_auction_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -25,7 +25,7 @@ class PriceGuidance(AdCPBaseModel):
25
25
 
26
26
  class CpmAuctionPricingOption(AdCPBaseModel):
27
27
  model_config = ConfigDict(
28
- extra='forbid',
28
+ extra='allow',
29
29
  )
30
30
  currency: Annotated[
31
31
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpm_fixed_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class CpmFixedRatePricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpp_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class Parameters(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  demographic: Annotated[
18
18
  str,
@@ -29,7 +29,7 @@ class Parameters(AdCPBaseModel):
29
29
 
30
30
  class CppPricingOption(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra='forbid',
32
+ extra='allow',
33
33
  )
34
34
  currency: Annotated[
35
35
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/cpv_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -23,7 +23,7 @@ class ViewThreshold(RootModel[float]):
23
23
 
24
24
  class ViewThreshold1(AdCPBaseModel):
25
25
  model_config = ConfigDict(
26
- extra='forbid',
26
+ extra='allow',
27
27
  )
28
28
  duration_seconds: Annotated[
29
29
  int,
@@ -36,14 +36,14 @@ class ViewThreshold1(AdCPBaseModel):
36
36
 
37
37
  class Parameters(AdCPBaseModel):
38
38
  model_config = ConfigDict(
39
- extra='forbid',
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='forbid',
46
+ extra='allow',
47
47
  )
48
48
  currency: Annotated[
49
49
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/flat_rate_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class Parameters(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  daypart: Annotated[
18
18
  str | None,
@@ -56,7 +56,7 @@ class Parameters(AdCPBaseModel):
56
56
 
57
57
  class FlatRatePricingOption(AdCPBaseModel):
58
58
  model_config = ConfigDict(
59
- extra='forbid',
59
+ extra='allow',
60
60
  )
61
61
  currency: Annotated[
62
62
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/vcpm_auction_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -26,7 +26,7 @@ class PriceGuidance(AdCPBaseModel):
26
26
 
27
27
  class VcpmAuctionPricingOption(AdCPBaseModel):
28
28
  model_config = ConfigDict(
29
- extra='forbid',
29
+ extra='allow',
30
30
  )
31
31
  currency: Annotated[
32
32
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pricing_options/vcpm_fixed_option.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,7 +12,7 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class VcpmFixedRatePricingOption(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra='forbid',
15
+ extra='allow',
16
16
  )
17
17
  currency: Annotated[
18
18
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: protocols/adcp_extension.json
3
- # timestamp: 2025-11-29T12:00:45+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -19,7 +19,7 @@ class ProtocolsSupportedEnum(Enum):
19
19
 
20
20
  class AdcpAgentCardExtension(AdCPBaseModel):
21
21
  model_config = ConfigDict(
22
- extra='forbid',
22
+ extra='allow',
23
23
  )
24
24
  adcp_version: Annotated[
25
25
  str,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: signals/activate_signal_request.json
3
- # timestamp: 2025-12-11T15:09:37+00:00
3
+ # timestamp: 2026-01-08T19:25:24+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -16,7 +16,7 @@ from ..core import ext as ext_1
16
16
 
17
17
  class ActivateSignalRequest(AdCPBaseModel):
18
18
  model_config = ConfigDict(
19
- extra='forbid',
19
+ extra='allow',
20
20
  )
21
21
  context: context_1.ContextObject | None = None
22
22
  deployments: Annotated[