adcp 2.3.0__py3-none-any.whl → 2.4.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 (107) hide show
  1. adcp/__init__.py +1 -1
  2. adcp/types/generated.py +36 -531
  3. adcp/types/generated_poc/__init__.py +1 -1
  4. adcp/types/generated_poc/activate_signal_request.py +5 -5
  5. adcp/types/generated_poc/activate_signal_response.py +9 -9
  6. adcp/types/generated_poc/activation_key.py +8 -8
  7. adcp/types/generated_poc/adagents.py +46 -46
  8. adcp/types/generated_poc/asset_type.py +19 -19
  9. adcp/types/generated_poc/audio_asset.py +6 -6
  10. adcp/types/generated_poc/brand_manifest.py +73 -73
  11. adcp/types/generated_poc/build_creative_request.py +6 -6
  12. adcp/types/generated_poc/build_creative_response.py +9 -9
  13. adcp/types/generated_poc/channels.py +10 -10
  14. adcp/types/generated_poc/cpc_option.py +12 -8
  15. adcp/types/generated_poc/cpcv_option.py +12 -8
  16. adcp/types/generated_poc/cpm_auction_option.py +17 -13
  17. adcp/types/generated_poc/cpm_fixed_option.py +12 -8
  18. adcp/types/generated_poc/cpp_option.py +17 -13
  19. adcp/types/generated_poc/cpv_option.py +16 -12
  20. adcp/types/generated_poc/create_media_buy_request.py +29 -29
  21. adcp/types/generated_poc/create_media_buy_response.py +11 -11
  22. adcp/types/generated_poc/creative_asset.py +13 -13
  23. adcp/types/generated_poc/creative_assignment.py +4 -4
  24. adcp/types/generated_poc/creative_manifest.py +4 -4
  25. adcp/types/generated_poc/creative_policy.py +11 -11
  26. adcp/types/generated_poc/creative_status.py +5 -5
  27. adcp/types/generated_poc/css_asset.py +3 -3
  28. adcp/types/generated_poc/daast_asset.py +30 -30
  29. adcp/types/generated_poc/delivery_metrics.py +33 -33
  30. adcp/types/generated_poc/delivery_type.py +3 -3
  31. adcp/types/generated_poc/deployment.py +21 -21
  32. adcp/types/generated_poc/destination.py +10 -10
  33. adcp/types/generated_poc/error.py +7 -7
  34. adcp/types/generated_poc/flat_rate_option.py +16 -16
  35. adcp/types/generated_poc/format.py +70 -70
  36. adcp/types/generated_poc/format_id.py +3 -3
  37. adcp/types/generated_poc/frequency_cap.py +3 -3
  38. adcp/types/generated_poc/frequency_cap_scope.py +4 -4
  39. adcp/types/generated_poc/get_media_buy_delivery_request.py +21 -21
  40. adcp/types/generated_poc/get_media_buy_delivery_response.py +46 -46
  41. adcp/types/generated_poc/get_products_request.py +23 -23
  42. adcp/types/generated_poc/get_products_response.py +5 -5
  43. adcp/types/generated_poc/get_signals_request.py +19 -19
  44. adcp/types/generated_poc/get_signals_response.py +20 -20
  45. adcp/types/generated_poc/html_asset.py +3 -3
  46. adcp/types/generated_poc/identifier_types.py +20 -20
  47. adcp/types/generated_poc/image_asset.py +7 -7
  48. adcp/types/generated_poc/javascript_asset.py +7 -7
  49. adcp/types/generated_poc/list_authorized_properties_request.py +5 -5
  50. adcp/types/generated_poc/list_authorized_properties_response.py +9 -9
  51. adcp/types/generated_poc/list_creative_formats_request.py +22 -22
  52. adcp/types/generated_poc/list_creative_formats_response.py +11 -11
  53. adcp/types/generated_poc/list_creatives_request.py +51 -51
  54. adcp/types/generated_poc/list_creatives_response.py +61 -61
  55. adcp/types/generated_poc/markdown_asset.py +7 -7
  56. adcp/types/generated_poc/measurement.py +9 -9
  57. adcp/types/generated_poc/media_buy.py +8 -8
  58. adcp/types/generated_poc/media_buy_status.py +5 -5
  59. adcp/types/generated_poc/pacing.py +4 -4
  60. adcp/types/generated_poc/package.py +8 -8
  61. adcp/types/generated_poc/package_request.py +7 -7
  62. adcp/types/generated_poc/package_status.py +5 -5
  63. adcp/types/generated_poc/performance_feedback.py +31 -31
  64. adcp/types/generated_poc/placement.py +4 -4
  65. adcp/types/generated_poc/preview_creative_request.py +28 -28
  66. adcp/types/generated_poc/preview_creative_response.py +31 -31
  67. adcp/types/generated_poc/preview_render.py +36 -28
  68. adcp/types/generated_poc/pricing_model.py +8 -8
  69. adcp/types/generated_poc/product.py +32 -31
  70. adcp/types/generated_poc/promoted_offerings.py +29 -29
  71. adcp/types/generated_poc/promoted_products.py +3 -3
  72. adcp/types/generated_poc/property.py +18 -18
  73. adcp/types/generated_poc/protocol_envelope.py +9 -9
  74. adcp/types/generated_poc/provide_performance_feedback_request.py +24 -24
  75. adcp/types/generated_poc/provide_performance_feedback_response.py +9 -9
  76. adcp/types/generated_poc/publisher_identifier_types.py +6 -6
  77. adcp/types/generated_poc/push_notification_config.py +9 -9
  78. adcp/types/generated_poc/reporting_capabilities.py +21 -21
  79. adcp/types/generated_poc/response.py +5 -5
  80. adcp/types/generated_poc/standard_format_ids.py +36 -36
  81. adcp/types/generated_poc/sub_asset.py +13 -13
  82. adcp/types/generated_poc/sync_creatives_request.py +11 -11
  83. adcp/types/generated_poc/sync_creatives_response.py +23 -23
  84. adcp/types/generated_poc/targeting.py +9 -9
  85. adcp/types/generated_poc/task_status.py +10 -10
  86. adcp/types/generated_poc/task_type.py +6 -6
  87. adcp/types/generated_poc/tasks_get_request.py +5 -5
  88. adcp/types/generated_poc/tasks_get_response.py +35 -35
  89. adcp/types/generated_poc/tasks_list_request.py +36 -36
  90. adcp/types/generated_poc/tasks_list_response.py +35 -35
  91. adcp/types/generated_poc/text_asset.py +3 -3
  92. adcp/types/generated_poc/update_media_buy_request.py +27 -27
  93. adcp/types/generated_poc/update_media_buy_response.py +11 -11
  94. adcp/types/generated_poc/url_asset.py +7 -7
  95. adcp/types/generated_poc/vast_asset.py +38 -38
  96. adcp/types/generated_poc/vcpm_auction_option.py +17 -13
  97. adcp/types/generated_poc/vcpm_fixed_option.py +12 -8
  98. adcp/types/generated_poc/video_asset.py +8 -8
  99. adcp/types/generated_poc/webhook_asset.py +19 -19
  100. adcp/types/generated_poc/webhook_payload.py +18 -18
  101. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/METADATA +1 -1
  102. adcp-2.4.0.dist-info/RECORD +132 -0
  103. adcp-2.3.0.dist-info/RECORD +0 -132
  104. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/WHEEL +0 -0
  105. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/entry_points.txt +0 -0
  106. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/licenses/LICENSE +0 -0
  107. {adcp-2.3.0.dist-info → adcp-2.4.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: daast-asset.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,65 +12,65 @@ from pydantic import AnyUrl, ConfigDict, Field
12
12
 
13
13
 
14
14
  class DaastVersion(Enum):
15
- field_1_0 = "1.0"
16
- field_1_1 = "1.1"
15
+ field_1_0 = '1.0'
16
+ field_1_1 = '1.1'
17
17
 
18
18
 
19
19
  class TrackingEvent(Enum):
20
- start = "start"
21
- firstQuartile = "firstQuartile"
22
- midpoint = "midpoint"
23
- thirdQuartile = "thirdQuartile"
24
- complete = "complete"
25
- impression = "impression"
26
- pause = "pause"
27
- resume = "resume"
28
- skip = "skip"
29
- mute = "mute"
30
- unmute = "unmute"
20
+ start = 'start'
21
+ firstQuartile = 'firstQuartile'
22
+ midpoint = 'midpoint'
23
+ thirdQuartile = 'thirdQuartile'
24
+ complete = 'complete'
25
+ impression = 'impression'
26
+ pause = 'pause'
27
+ resume = 'resume'
28
+ skip = 'skip'
29
+ mute = 'mute'
30
+ unmute = 'unmute'
31
31
 
32
32
 
33
33
  class DaastAsset1(AdCPBaseModel):
34
34
  model_config = ConfigDict(
35
- extra="forbid",
35
+ extra='forbid',
36
36
  )
37
37
  companion_ads: Annotated[
38
- bool | None, Field(description="Whether companion display ads are included")
38
+ bool | None, Field(description='Whether companion display ads are included')
39
39
  ] = None
40
40
  daast_version: Annotated[
41
- DaastVersion | None, Field(description="DAAST specification version")
41
+ DaastVersion | None, Field(description='DAAST specification version')
42
42
  ] = None
43
43
  delivery_type: Annotated[
44
- Literal["url"],
45
- Field(description="Discriminator indicating DAAST is delivered via URL endpoint"),
44
+ Literal['url'],
45
+ Field(description='Discriminator indicating DAAST is delivered via URL endpoint'),
46
46
  ]
47
47
  duration_ms: Annotated[
48
- int | None, Field(description="Expected audio duration in milliseconds (if known)", ge=0)
48
+ int | None, Field(description='Expected audio duration in milliseconds (if known)', ge=0)
49
49
  ] = None
50
50
  tracking_events: Annotated[
51
- list[TrackingEvent] | None, Field(description="Tracking events supported by this DAAST tag")
51
+ list[TrackingEvent] | None, Field(description='Tracking events supported by this DAAST tag')
52
52
  ] = None
53
- url: Annotated[AnyUrl, Field(description="URL endpoint that returns DAAST XML")]
53
+ url: Annotated[AnyUrl, Field(description='URL endpoint that returns DAAST XML')]
54
54
 
55
55
 
56
56
  class DaastAsset2(AdCPBaseModel):
57
57
  model_config = ConfigDict(
58
- extra="forbid",
58
+ extra='forbid',
59
59
  )
60
60
  companion_ads: Annotated[
61
- bool | None, Field(description="Whether companion display ads are included")
61
+ bool | None, Field(description='Whether companion display ads are included')
62
62
  ] = None
63
- content: Annotated[str, Field(description="Inline DAAST XML content")]
63
+ content: Annotated[str, Field(description='Inline DAAST XML content')]
64
64
  daast_version: Annotated[
65
- DaastVersion | None, Field(description="DAAST specification version")
65
+ DaastVersion | None, Field(description='DAAST specification version')
66
66
  ] = None
67
67
  delivery_type: Annotated[
68
- Literal["inline"],
69
- Field(description="Discriminator indicating DAAST is delivered as inline XML content"),
68
+ Literal['inline'],
69
+ Field(description='Discriminator indicating DAAST is delivered as inline XML content'),
70
70
  ]
71
71
  duration_ms: Annotated[
72
- int | None, Field(description="Expected audio duration in milliseconds (if known)", ge=0)
72
+ int | None, Field(description='Expected audio duration in milliseconds (if known)', ge=0)
73
73
  ] = None
74
74
  tracking_events: Annotated[
75
- list[TrackingEvent] | None, Field(description="Tracking events supported by this DAAST tag")
75
+ list[TrackingEvent] | None, Field(description='Tracking events supported by this DAAST tag')
76
76
  ] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: delivery-metrics.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,15 +12,15 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class VenueBreakdownItem(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra="forbid",
15
+ extra='forbid',
16
16
  )
17
- impressions: Annotated[int, Field(description="Impressions delivered at this venue", ge=0)]
18
- loop_plays: Annotated[int | None, Field(description="Loop plays at this venue", ge=0)] = None
17
+ impressions: Annotated[int, Field(description='Impressions delivered at this venue', ge=0)]
18
+ loop_plays: Annotated[int | None, Field(description='Loop plays at this venue', ge=0)] = None
19
19
  screens_used: Annotated[
20
- int | None, Field(description="Number of screens used at this venue", ge=0)
20
+ int | None, Field(description='Number of screens used at this venue', ge=0)
21
21
  ] = None
22
- venue_id: Annotated[str, Field(description="Venue identifier")]
23
- venue_name: Annotated[str | None, Field(description="Human-readable venue name")] = None
22
+ venue_id: Annotated[str, Field(description='Venue identifier')]
23
+ venue_name: Annotated[str | None, Field(description='Human-readable venue name')] = None
24
24
  venue_type: Annotated[
25
25
  str | None,
26
26
  Field(description="Venue type (e.g., 'airport', 'transit', 'retail', 'billboard')"),
@@ -29,83 +29,83 @@ class VenueBreakdownItem(AdCPBaseModel):
29
29
 
30
30
  class DoohMetrics(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra="forbid",
32
+ extra='forbid',
33
33
  )
34
34
  calculation_notes: Annotated[
35
- str | None, Field(description="Explanation of how DOOH impressions were calculated")
35
+ str | None, Field(description='Explanation of how DOOH impressions were calculated')
36
36
  ] = None
37
37
  loop_plays: Annotated[
38
- int | None, Field(description="Number of times ad played in rotation", ge=0)
38
+ int | None, Field(description='Number of times ad played in rotation', ge=0)
39
39
  ] = None
40
40
  screen_time_seconds: Annotated[
41
- int | None, Field(description="Total display time in seconds", ge=0)
41
+ int | None, Field(description='Total display time in seconds', ge=0)
42
42
  ] = None
43
43
  screens_used: Annotated[
44
- int | None, Field(description="Number of unique screens displaying the ad", ge=0)
44
+ int | None, Field(description='Number of unique screens displaying the ad', ge=0)
45
45
  ] = None
46
46
  sov_achieved: Annotated[
47
47
  float | None,
48
- Field(description="Actual share of voice delivered (0.0 to 1.0)", ge=0.0, le=1.0),
48
+ Field(description='Actual share of voice delivered (0.0 to 1.0)', ge=0.0, le=1.0),
49
49
  ] = None
50
50
  venue_breakdown: Annotated[
51
- list[VenueBreakdownItem] | None, Field(description="Per-venue performance breakdown")
51
+ list[VenueBreakdownItem] | None, Field(description='Per-venue performance breakdown')
52
52
  ] = None
53
53
 
54
54
 
55
55
  class QuartileData(AdCPBaseModel):
56
- q1_views: Annotated[float | None, Field(description="25% completion views", ge=0.0)] = None
57
- q2_views: Annotated[float | None, Field(description="50% completion views", ge=0.0)] = None
58
- q3_views: Annotated[float | None, Field(description="75% completion views", ge=0.0)] = None
59
- q4_views: Annotated[float | None, Field(description="100% completion views", ge=0.0)] = None
56
+ q1_views: Annotated[float | None, Field(description='25% completion views', ge=0.0)] = None
57
+ q2_views: Annotated[float | None, Field(description='50% completion views', ge=0.0)] = None
58
+ q3_views: Annotated[float | None, Field(description='75% completion views', ge=0.0)] = None
59
+ q4_views: Annotated[float | None, Field(description='100% completion views', ge=0.0)] = None
60
60
 
61
61
 
62
62
  class DeliveryMetrics(AdCPBaseModel):
63
63
  model_config = ConfigDict(
64
- extra="allow",
64
+ extra='allow',
65
65
  )
66
- clicks: Annotated[float | None, Field(description="Total clicks", ge=0.0)] = None
66
+ clicks: Annotated[float | None, Field(description='Total clicks', ge=0.0)] = None
67
67
  completed_views: Annotated[
68
- float | None, Field(description="100% completions (for CPCV)", ge=0.0)
68
+ float | None, Field(description='100% completions (for CPCV)', ge=0.0)
69
69
  ] = None
70
70
  completion_rate: Annotated[
71
71
  float | None,
72
- Field(description="Completion rate (completed_views/impressions)", ge=0.0, le=1.0),
72
+ Field(description='Completion rate (completed_views/impressions)', ge=0.0, le=1.0),
73
73
  ] = None
74
74
  conversions: Annotated[
75
75
  float | None,
76
- Field(description="Conversions (reserved for future CPA pricing support)", ge=0.0),
76
+ Field(description='Conversions (reserved for future CPA pricing support)', ge=0.0),
77
77
  ] = None
78
78
  ctr: Annotated[
79
- float | None, Field(description="Click-through rate (clicks/impressions)", ge=0.0, le=1.0)
79
+ float | None, Field(description='Click-through rate (clicks/impressions)', ge=0.0, le=1.0)
80
80
  ] = None
81
81
  dooh_metrics: Annotated[
82
82
  DoohMetrics | None,
83
- Field(description="DOOH-specific metrics (only included for DOOH campaigns)"),
83
+ Field(description='DOOH-specific metrics (only included for DOOH campaigns)'),
84
84
  ] = None
85
85
  frequency: Annotated[
86
86
  float | None,
87
87
  Field(
88
- description="Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)",
88
+ description='Average frequency per individual (typically measured over campaign duration, but can vary by measurement provider)',
89
89
  ge=0.0,
90
90
  ),
91
91
  ] = None
92
92
  grps: Annotated[
93
- float | None, Field(description="Gross Rating Points delivered (for CPP)", ge=0.0)
93
+ float | None, Field(description='Gross Rating Points delivered (for CPP)', ge=0.0)
94
94
  ] = None
95
- impressions: Annotated[float | None, Field(description="Impressions delivered", ge=0.0)] = None
95
+ impressions: Annotated[float | None, Field(description='Impressions delivered', ge=0.0)] = None
96
96
  leads: Annotated[
97
97
  float | None,
98
- Field(description="Leads generated (reserved for future CPL pricing support)", ge=0.0),
98
+ Field(description='Leads generated (reserved for future CPL pricing support)', ge=0.0),
99
99
  ] = None
100
100
  quartile_data: Annotated[
101
- QuartileData | None, Field(description="Video quartile completion data")
101
+ QuartileData | None, Field(description='Video quartile completion data')
102
102
  ] = None
103
103
  reach: Annotated[
104
104
  float | None,
105
105
  Field(
106
- description="Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.",
106
+ description='Unique reach - units depend on measurement provider (e.g., individuals, households, devices, cookies). See delivery_measurement.provider for methodology.',
107
107
  ge=0.0,
108
108
  ),
109
109
  ] = None
110
- spend: Annotated[float | None, Field(description="Amount spent", ge=0.0)] = None
111
- views: Annotated[float | None, Field(description="Views at threshold (for CPV)", ge=0.0)] = None
110
+ spend: Annotated[float | None, Field(description='Amount spent', ge=0.0)] = None
111
+ views: Annotated[float | None, Field(description='Views at threshold (for CPV)', ge=0.0)] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: delivery-type.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -8,5 +8,5 @@ from enum import Enum
8
8
 
9
9
 
10
10
  class DeliveryType(Enum):
11
- guaranteed = "guaranteed"
12
- non_guaranteed = "non_guaranteed"
11
+ guaranteed = 'guaranteed'
12
+ non_guaranteed = 'non_guaranteed'
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: deployment.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -14,65 +14,65 @@ from . import activation_key as activation_key_1
14
14
 
15
15
  class Deployment1(AdCPBaseModel):
16
16
  model_config = ConfigDict(
17
- extra="forbid",
17
+ extra='forbid',
18
18
  )
19
- account: Annotated[str | None, Field(description="Account identifier if applicable")] = None
19
+ account: Annotated[str | None, Field(description='Account identifier if applicable')] = None
20
20
  activation_key: Annotated[
21
21
  activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None,
22
22
  Field(
23
- description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.",
24
- title="Activation Key",
23
+ description='The key to use for targeting. Only present if is_live=true AND requester has access to this destination.',
24
+ title='Activation Key',
25
25
  ),
26
26
  ] = None
27
27
  deployed_at: Annotated[
28
28
  AwareDatetime | None,
29
- Field(description="Timestamp when activation completed (if is_live=true)"),
29
+ Field(description='Timestamp when activation completed (if is_live=true)'),
30
30
  ] = None
31
31
  estimated_activation_duration_minutes: Annotated[
32
32
  float | None,
33
33
  Field(
34
- description="Estimated time to activate if not live, or to complete activation if in progress",
34
+ description='Estimated time to activate if not live, or to complete activation if in progress',
35
35
  ge=0.0,
36
36
  ),
37
37
  ] = None
38
38
  is_live: Annotated[
39
- bool, Field(description="Whether signal is currently active on this destination")
39
+ bool, Field(description='Whether signal is currently active on this destination')
40
40
  ]
41
- platform: Annotated[str, Field(description="Platform identifier for DSPs")]
41
+ platform: Annotated[str, Field(description='Platform identifier for DSPs')]
42
42
  type: Annotated[
43
- Literal["platform"],
44
- Field(description="Discriminator indicating this is a platform-based deployment"),
43
+ Literal['platform'],
44
+ Field(description='Discriminator indicating this is a platform-based deployment'),
45
45
  ]
46
46
 
47
47
 
48
48
  class Deployment2(AdCPBaseModel):
49
49
  model_config = ConfigDict(
50
- extra="forbid",
50
+ extra='forbid',
51
51
  )
52
- account: Annotated[str | None, Field(description="Account identifier if applicable")] = None
52
+ account: Annotated[str | None, Field(description='Account identifier if applicable')] = None
53
53
  activation_key: Annotated[
54
54
  activation_key_1.ActivationKey1 | activation_key_1.ActivationKey2 | None,
55
55
  Field(
56
- description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.",
57
- title="Activation Key",
56
+ description='The key to use for targeting. Only present if is_live=true AND requester has access to this destination.',
57
+ title='Activation Key',
58
58
  ),
59
59
  ] = None
60
- agent_url: Annotated[AnyUrl, Field(description="URL identifying the destination agent")]
60
+ agent_url: Annotated[AnyUrl, Field(description='URL identifying the destination agent')]
61
61
  deployed_at: Annotated[
62
62
  AwareDatetime | None,
63
- Field(description="Timestamp when activation completed (if is_live=true)"),
63
+ Field(description='Timestamp when activation completed (if is_live=true)'),
64
64
  ] = None
65
65
  estimated_activation_duration_minutes: Annotated[
66
66
  float | None,
67
67
  Field(
68
- description="Estimated time to activate if not live, or to complete activation if in progress",
68
+ description='Estimated time to activate if not live, or to complete activation if in progress',
69
69
  ge=0.0,
70
70
  ),
71
71
  ] = None
72
72
  is_live: Annotated[
73
- bool, Field(description="Whether signal is currently active on this destination")
73
+ bool, Field(description='Whether signal is currently active on this destination')
74
74
  ]
75
75
  type: Annotated[
76
- Literal["agent"],
77
- Field(description="Discriminator indicating this is an agent URL-based deployment"),
76
+ Literal['agent'],
77
+ Field(description='Discriminator indicating this is an agent URL-based deployment'),
78
78
  ]
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: destination.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,32 +12,32 @@ from pydantic import AnyUrl, ConfigDict, Field
12
12
 
13
13
  class Destination1(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra="forbid",
15
+ extra='forbid',
16
16
  )
17
17
  account: Annotated[
18
- str | None, Field(description="Optional account identifier on the platform")
18
+ str | None, Field(description='Optional account identifier on the platform')
19
19
  ] = None
20
20
  platform: Annotated[
21
21
  str,
22
22
  Field(description="Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')"),
23
23
  ]
24
24
  type: Annotated[
25
- Literal["platform"],
26
- Field(description="Discriminator indicating this is a platform-based destination"),
25
+ Literal['platform'],
26
+ Field(description='Discriminator indicating this is a platform-based destination'),
27
27
  ]
28
28
 
29
29
 
30
30
  class Destination2(AdCPBaseModel):
31
31
  model_config = ConfigDict(
32
- extra="forbid",
32
+ extra='forbid',
33
33
  )
34
34
  account: Annotated[
35
- str | None, Field(description="Optional account identifier on the agent")
35
+ str | None, Field(description='Optional account identifier on the agent')
36
36
  ] = None
37
37
  agent_url: Annotated[
38
- AnyUrl, Field(description="URL identifying the destination agent (for sales agents, etc.)")
38
+ AnyUrl, Field(description='URL identifying the destination agent (for sales agents, etc.)')
39
39
  ]
40
40
  type: Annotated[
41
- Literal["agent"],
42
- Field(description="Discriminator indicating this is an agent URL-based destination"),
41
+ Literal['agent'],
42
+ Field(description='Discriminator indicating this is an agent URL-based destination'),
43
43
  ]
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: error.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -12,18 +12,18 @@ from pydantic import ConfigDict, Field
12
12
 
13
13
  class Error(AdCPBaseModel):
14
14
  model_config = ConfigDict(
15
- extra="forbid",
15
+ extra='forbid',
16
16
  )
17
- code: Annotated[str, Field(description="Error code for programmatic handling")]
18
- details: Annotated[Any | None, Field(description="Additional task-specific error details")] = (
17
+ code: Annotated[str, Field(description='Error code for programmatic handling')]
18
+ details: Annotated[Any | None, Field(description='Additional task-specific error details')] = (
19
19
  None
20
20
  )
21
21
  field: Annotated[
22
22
  str | None,
23
23
  Field(description="Field path associated with the error (e.g., 'packages[0].targeting')"),
24
24
  ] = None
25
- message: Annotated[str, Field(description="Human-readable error message")]
25
+ message: Annotated[str, Field(description='Human-readable error message')]
26
26
  retry_after: Annotated[
27
- float | None, Field(description="Seconds to wait before retrying the operation", ge=0.0)
27
+ float | None, Field(description='Seconds to wait before retrying the operation', ge=0.0)
28
28
  ] = None
29
- suggestion: Annotated[str | None, Field(description="Suggested fix for the error")] = None
29
+ suggestion: Annotated[str | None, Field(description='Suggested fix for the error')] = None
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: flat-rate-option.json
3
- # timestamp: 2025-11-15T22:03:55+00:00
3
+ # timestamp: 2025-11-18T03:04:10+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='forbid',
16
16
  )
17
17
  daypart: Annotated[
18
18
  str | None,
@@ -22,28 +22,28 @@ class Parameters(AdCPBaseModel):
22
22
  ] = None
23
23
  duration_hours: Annotated[
24
24
  float | None,
25
- Field(description="Duration in hours for time-based flat rate pricing (DOOH)", ge=0.0),
25
+ Field(description='Duration in hours for time-based flat rate pricing (DOOH)', ge=0.0),
26
26
  ] = None
27
27
  estimated_impressions: Annotated[
28
28
  int | None,
29
29
  Field(
30
- description="Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)",
30
+ description='Estimated impressions for this flat rate option (informational, commonly used with SOV or time-based DOOH)',
31
31
  ge=0,
32
32
  ),
33
33
  ] = None
34
34
  loop_duration_seconds: Annotated[
35
- int | None, Field(description="Duration of ad loop rotation in seconds (DOOH)", ge=1)
35
+ int | None, Field(description='Duration of ad loop rotation in seconds (DOOH)', ge=1)
36
36
  ] = None
37
37
  min_plays_per_hour: Annotated[
38
38
  int | None,
39
39
  Field(
40
- description="Minimum number of times ad plays per hour (DOOH frequency guarantee)", ge=0
40
+ description='Minimum number of times ad plays per hour (DOOH frequency guarantee)', ge=0
41
41
  ),
42
42
  ] = None
43
43
  sov_percentage: Annotated[
44
44
  float | None,
45
45
  Field(
46
- description="Guaranteed share of voice as percentage (DOOH, 0-100)", ge=0.0, le=100.0
46
+ description='Guaranteed share of voice as percentage (DOOH, 0-100)', ge=0.0, le=100.0
47
47
  ),
48
48
  ] = None
49
49
  venue_package: Annotated[
@@ -56,33 +56,33 @@ class Parameters(AdCPBaseModel):
56
56
 
57
57
  class FlatRatePricingOption(AdCPBaseModel):
58
58
  model_config = ConfigDict(
59
- extra="forbid",
59
+ extra='forbid',
60
60
  )
61
61
  currency: Annotated[
62
62
  str,
63
63
  Field(
64
- description="ISO 4217 currency code",
65
- examples=["USD", "EUR", "GBP", "JPY"],
66
- pattern="^[A-Z]{3}$",
64
+ description='ISO 4217 currency code',
65
+ examples=['USD', 'EUR', 'GBP', 'JPY'],
66
+ pattern='^[A-Z]{3}$',
67
67
  ),
68
68
  ]
69
69
  is_fixed: Annotated[
70
70
  Literal[True],
71
- Field(description="Whether this is a fixed rate (true) or auction-based (false)"),
71
+ Field(description='Whether this is a fixed rate (true) or auction-based (false)'),
72
72
  ]
73
73
  min_spend_per_package: Annotated[
74
74
  float | None,
75
75
  Field(
76
- description="Minimum spend requirement per package using this pricing option, in the specified currency",
76
+ description='Minimum spend requirement per package using this pricing option, in the specified currency',
77
77
  ge=0.0,
78
78
  ),
79
79
  ] = None
80
80
  parameters: Annotated[
81
81
  Parameters | None,
82
- Field(description="Flat rate parameters for DOOH and time-based campaigns"),
82
+ Field(description='Flat rate parameters for DOOH and time-based campaigns'),
83
83
  ] = None
84
84
  pricing_model: Annotated[
85
- Literal["flat_rate"], Field(description="Fixed cost regardless of delivery volume")
85
+ Literal['flat_rate'], Field(description='Fixed cost regardless of delivery volume')
86
86
  ]
87
87
  pricing_option_id: Annotated[
88
88
  str,
@@ -90,4 +90,4 @@ class FlatRatePricingOption(AdCPBaseModel):
90
90
  description="Unique identifier for this pricing option within the product (e.g., 'flat_rate_usd_24h_takeover')"
91
91
  ),
92
92
  ]
93
- rate: Annotated[float, Field(description="Flat rate cost", ge=0.0)]
93
+ rate: Annotated[float, Field(description='Flat rate cost', ge=0.0)]