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.
- adcp/ADCP_VERSION +1 -1
- adcp/__init__.py +5 -5
- adcp/__main__.py +4 -4
- adcp/adagents.py +5 -9
- adcp/client.py +14 -12
- adcp/protocols/a2a.py +3 -3
- adcp/protocols/base.py +2 -2
- adcp/protocols/mcp.py +3 -3
- adcp/server/base.py +6 -10
- adcp/server/content_standards.py +17 -49
- adcp/server/governance.py +20 -59
- adcp/server/mcp_tools.py +8 -4
- adcp/server/proposal.py +1 -3
- adcp/server/sponsored_intelligence.py +10 -28
- adcp/simple.py +10 -10
- adcp/types/__init__.py +10 -6
- adcp/types/_generated.py +44 -27
- adcp/types/base.py +7 -7
- adcp/types/generated_poc/{protocols → a2ui}/__init__.py +1 -1
- adcp/types/generated_poc/a2ui/component.py +24 -0
- adcp/types/generated_poc/a2ui/surface.py +33 -0
- adcp/types/generated_poc/account/__init__.py +3 -0
- adcp/types/generated_poc/account/list_accounts_request.py +30 -0
- adcp/types/generated_poc/account/list_accounts_response.py +30 -0
- adcp/types/generated_poc/adagents.py +192 -195
- adcp/types/generated_poc/content_standards/artifact.py +69 -69
- adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +13 -13
- adcp/types/generated_poc/content_standards/calibrate_content_request.py +2 -2
- adcp/types/generated_poc/content_standards/calibrate_content_response.py +17 -17
- adcp/types/generated_poc/content_standards/content_standards.py +8 -8
- adcp/types/generated_poc/content_standards/create_content_standards_request.py +13 -13
- adcp/types/generated_poc/content_standards/create_content_standards_response.py +6 -6
- adcp/types/generated_poc/content_standards/get_content_standards_request.py +1 -1
- adcp/types/generated_poc/content_standards/get_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +14 -14
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +30 -30
- adcp/types/generated_poc/content_standards/list_content_standards_request.py +4 -4
- adcp/types/generated_poc/content_standards/list_content_standards_response.py +5 -5
- adcp/types/generated_poc/content_standards/update_content_standards_request.py +14 -14
- adcp/types/generated_poc/content_standards/update_content_standards_response.py +4 -4
- adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +13 -13
- adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +16 -16
- adcp/types/generated_poc/core/account.py +54 -0
- adcp/types/generated_poc/core/activation_key.py +8 -8
- adcp/types/generated_poc/core/assets/audio_asset.py +37 -8
- adcp/types/generated_poc/core/assets/css_asset.py +2 -2
- adcp/types/generated_poc/core/assets/daast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/html_asset.py +2 -2
- adcp/types/generated_poc/core/assets/image_asset.py +6 -6
- adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
- adcp/types/generated_poc/core/assets/text_asset.py +2 -2
- adcp/types/generated_poc/core/assets/url_asset.py +3 -3
- adcp/types/generated_poc/core/assets/vast_asset.py +18 -18
- adcp/types/generated_poc/core/assets/video_asset.py +126 -10
- adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
- adcp/types/generated_poc/core/async_response_data.py +2 -2
- adcp/types/generated_poc/core/brand_manifest.py +66 -66
- adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
- adcp/types/generated_poc/core/context.py +1 -1
- adcp/types/generated_poc/core/creative_asset.py +12 -12
- adcp/types/generated_poc/core/creative_assignment.py +3 -3
- adcp/types/generated_poc/core/creative_filters.py +23 -17
- adcp/types/generated_poc/core/creative_manifest.py +4 -4
- adcp/types/generated_poc/core/creative_policy.py +4 -4
- adcp/types/generated_poc/core/delivery_metrics.py +32 -32
- adcp/types/generated_poc/core/deployment.py +20 -20
- adcp/types/generated_poc/core/destination.py +11 -11
- adcp/types/generated_poc/core/error.py +6 -6
- adcp/types/generated_poc/core/ext.py +1 -1
- adcp/types/generated_poc/core/format.py +49 -124
- adcp/types/generated_poc/core/format_id.py +5 -5
- adcp/types/generated_poc/core/frequency_cap.py +2 -2
- adcp/types/generated_poc/core/identifier.py +2 -2
- adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
- adcp/types/generated_poc/core/measurement.py +8 -8
- adcp/types/generated_poc/core/media_buy.py +12 -8
- adcp/types/generated_poc/core/media_buy_features.py +3 -3
- adcp/types/generated_poc/core/offering.py +9 -9
- adcp/types/generated_poc/core/package.py +8 -8
- adcp/types/generated_poc/core/performance_feedback.py +18 -18
- adcp/types/generated_poc/core/placement.py +4 -4
- adcp/types/generated_poc/core/pricing_option.py +1 -1
- adcp/types/generated_poc/core/product.py +27 -21
- adcp/types/generated_poc/core/product_allocation.py +5 -5
- adcp/types/generated_poc/core/product_filters.py +27 -27
- adcp/types/generated_poc/core/promoted_offerings.py +18 -18
- adcp/types/generated_poc/core/promoted_products.py +2 -2
- adcp/types/generated_poc/core/property.py +10 -10
- adcp/types/generated_poc/core/property_id.py +4 -4
- adcp/types/generated_poc/core/property_list_ref.py +4 -4
- adcp/types/generated_poc/core/property_tag.py +4 -4
- adcp/types/generated_poc/core/proposal.py +13 -13
- adcp/types/generated_poc/core/protocol_envelope.py +8 -8
- adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
- adcp/types/generated_poc/core/push_notification_config.py +5 -5
- adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
- adcp/types/generated_poc/core/reporting_webhook.py +10 -10
- adcp/types/generated_poc/core/response.py +4 -4
- adcp/types/generated_poc/core/signal_filters.py +5 -5
- adcp/types/generated_poc/core/start_timing.py +3 -3
- adcp/types/generated_poc/core/sub_asset.py +14 -14
- adcp/types/generated_poc/core/targeting.py +17 -10
- adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
- adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
- adcp/types/generated_poc/creative/preview_creative_response.py +28 -28
- adcp/types/generated_poc/creative/preview_render.py +25 -25
- adcp/types/generated_poc/enums/adcp_domain.py +4 -4
- adcp/types/generated_poc/enums/asset_content_type.py +13 -13
- adcp/types/generated_poc/enums/auth_scheme.py +2 -2
- adcp/types/generated_poc/enums/available_metric.py +9 -9
- adcp/types/generated_poc/enums/channels.py +19 -19
- adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
- adcp/types/generated_poc/enums/creative_action.py +5 -5
- adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
- adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
- adcp/types/generated_poc/enums/creative_status.py +5 -5
- adcp/types/generated_poc/enums/daast_tracking_event.py +11 -11
- adcp/types/generated_poc/enums/daast_version.py +2 -2
- adcp/types/generated_poc/enums/delivery_type.py +2 -2
- adcp/types/generated_poc/enums/dimension_unit.py +4 -4
- adcp/types/generated_poc/enums/feed_format.py +3 -3
- adcp/types/generated_poc/enums/feedback_source.py +4 -4
- adcp/types/generated_poc/enums/format_category.py +7 -7
- adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
- adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
- adcp/types/generated_poc/enums/geo_level.py +4 -4
- adcp/types/generated_poc/enums/history_entry_type.py +2 -2
- adcp/types/generated_poc/enums/http_method.py +2 -2
- adcp/types/generated_poc/enums/identifier_types.py +19 -19
- adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
- adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
- adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
- adcp/types/generated_poc/enums/media_buy_status.py +4 -4
- adcp/types/generated_poc/enums/metric_type.py +8 -8
- adcp/types/generated_poc/enums/metro_system.py +5 -5
- adcp/types/generated_poc/enums/notification_type.py +4 -4
- adcp/types/generated_poc/enums/pacing.py +3 -3
- adcp/types/generated_poc/enums/postal_system.py +9 -9
- adcp/types/generated_poc/enums/preview_output_format.py +2 -2
- adcp/types/generated_poc/enums/pricing_model.py +7 -7
- adcp/types/generated_poc/enums/property_type.py +8 -8
- adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
- adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
- adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
- adcp/types/generated_poc/enums/sort_direction.py +2 -2
- adcp/types/generated_poc/enums/task_status.py +9 -9
- adcp/types/generated_poc/enums/task_type.py +11 -12
- adcp/types/generated_poc/enums/update_frequency.py +4 -4
- adcp/types/generated_poc/enums/url_asset_type.py +3 -3
- adcp/types/generated_poc/enums/validation_mode.py +2 -2
- adcp/types/generated_poc/enums/vast_tracking_event.py +16 -16
- adcp/types/generated_poc/enums/vast_version.py +5 -5
- adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
- adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
- adcp/types/generated_poc/extensions/extension_meta.py +14 -14
- adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
- adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +27 -21
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +15 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
- adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
- adcp/types/generated_poc/media_buy/get_products_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
- adcp/types/generated_poc/media_buy/list_creatives_request.py +23 -23
- adcp/types/generated_poc/media_buy/list_creatives_response.py +53 -49
- adcp/types/generated_poc/media_buy/package_request.py +8 -8
- adcp/types/generated_poc/media_buy/package_update.py +16 -16
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +14 -8
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +33 -29
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +14 -14
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
- adcp/types/generated_poc/pricing_options/cpc_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpcv_option.py +13 -26
- adcp/types/generated_poc/pricing_options/cpm_option.py +13 -20
- adcp/types/generated_poc/pricing_options/cpp_option.py +19 -32
- adcp/types/generated_poc/pricing_options/cpv_option.py +19 -32
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +23 -36
- adcp/types/generated_poc/pricing_options/price_guidance.py +26 -0
- adcp/types/generated_poc/pricing_options/vcpm_option.py +13 -26
- adcp/types/generated_poc/property/base_property_source.py +15 -15
- adcp/types/generated_poc/property/create_property_list_request.py +4 -4
- adcp/types/generated_poc/property/create_property_list_response.py +3 -3
- adcp/types/generated_poc/property/delete_property_list_request.py +2 -2
- adcp/types/generated_poc/property/delete_property_list_response.py +3 -3
- adcp/types/generated_poc/property/feature_requirement.py +8 -8
- adcp/types/generated_poc/property/get_property_list_request.py +5 -5
- adcp/types/generated_poc/property/get_property_list_response.py +11 -11
- adcp/types/generated_poc/property/list_property_lists_request.py +5 -5
- adcp/types/generated_poc/property/list_property_lists_response.py +8 -8
- adcp/types/generated_poc/property/property_error.py +10 -10
- adcp/types/generated_poc/property/property_feature.py +4 -4
- adcp/types/generated_poc/property/property_feature_definition.py +18 -18
- adcp/types/generated_poc/property/property_list.py +11 -11
- adcp/types/generated_poc/property/property_list_changed_webhook.py +11 -11
- adcp/types/generated_poc/property/property_list_filters.py +7 -7
- adcp/types/generated_poc/property/update_property_list_request.py +8 -8
- adcp/types/generated_poc/property/update_property_list_response.py +2 -2
- adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +8 -6
- adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +59 -58
- adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
- adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
- adcp/types/generated_poc/signals/get_signals_request.py +8 -8
- adcp/types/generated_poc/signals/get_signals_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +45 -30
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +4 -4
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +23 -23
- adcp/types/generated_poc/sponsored_intelligence/si_identity.py +16 -16
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +5 -5
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +7 -7
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +11 -11
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +37 -23
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +17 -17
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +15 -15
- adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +11 -11
- adcp/utils/format_assets.py +32 -32
- {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/METADATA +10 -5
- adcp-3.2.0.dist-info/RECORD +268 -0
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -38
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -84
- adcp/types/generated_poc/protocols/adcp_extension.py +0 -50
- adcp-3.1.0.dist-info/RECORD +0 -264
- {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/WHEEL +0 -0
- {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/entry_points.txt +0 -0
- {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-3.1.0.dist-info → adcp-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: pricing_options/cpp_option.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,79 +9,66 @@ from typing import Annotated, Literal
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
+
from . import price_guidance as price_guidance_1
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
class Parameters(AdCPBaseModel):
|
|
14
16
|
model_config = ConfigDict(
|
|
15
|
-
extra=
|
|
17
|
+
extra="allow",
|
|
16
18
|
)
|
|
17
19
|
demographic: Annotated[
|
|
18
20
|
str,
|
|
19
21
|
Field(
|
|
20
|
-
description=
|
|
21
|
-
pattern=
|
|
22
|
+
description="Target demographic in Nielsen format (P18-49, M25-54, W35+, etc.)",
|
|
23
|
+
pattern="^[PMWAC][0-9]{2}(-[0-9]{2}|\\+)$",
|
|
22
24
|
),
|
|
23
25
|
]
|
|
24
|
-
min_points: Annotated[float | None, Field(description=
|
|
26
|
+
min_points: Annotated[float | None, Field(description="Minimum GRPs/TRPs required", ge=0.0)] = (
|
|
25
27
|
None
|
|
26
28
|
)
|
|
27
29
|
|
|
28
30
|
|
|
29
|
-
class PriceGuidance(AdCPBaseModel):
|
|
30
|
-
p25: Annotated[
|
|
31
|
-
float | None, Field(description='25th percentile of recent winning bids', ge=0.0)
|
|
32
|
-
] = None
|
|
33
|
-
p50: Annotated[float | None, Field(description='Median of recent winning bids', ge=0.0)] = None
|
|
34
|
-
p75: Annotated[
|
|
35
|
-
float | None, Field(description='75th percentile of recent winning bids', ge=0.0)
|
|
36
|
-
] = None
|
|
37
|
-
p90: Annotated[
|
|
38
|
-
float | None, Field(description='90th percentile of recent winning bids', ge=0.0)
|
|
39
|
-
] = None
|
|
40
|
-
|
|
41
|
-
|
|
42
31
|
class CppPricingOption(AdCPBaseModel):
|
|
43
32
|
model_config = ConfigDict(
|
|
44
|
-
extra=
|
|
33
|
+
extra="allow",
|
|
45
34
|
)
|
|
46
35
|
currency: Annotated[
|
|
47
36
|
str,
|
|
48
37
|
Field(
|
|
49
|
-
description=
|
|
50
|
-
examples=[
|
|
51
|
-
pattern=
|
|
38
|
+
description="ISO 4217 currency code",
|
|
39
|
+
examples=["USD", "EUR", "GBP", "JPY"],
|
|
40
|
+
pattern="^[A-Z]{3}$",
|
|
52
41
|
),
|
|
53
42
|
]
|
|
54
43
|
fixed_price: Annotated[
|
|
55
44
|
float | None,
|
|
56
45
|
Field(
|
|
57
|
-
description=
|
|
46
|
+
description="Fixed price per rating point. If present, this is fixed pricing. If absent, auction-based.",
|
|
58
47
|
ge=0.0,
|
|
59
48
|
),
|
|
60
49
|
] = None
|
|
61
50
|
floor_price: Annotated[
|
|
62
51
|
float | None,
|
|
63
52
|
Field(
|
|
64
|
-
description=
|
|
53
|
+
description="Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.",
|
|
65
54
|
ge=0.0,
|
|
66
55
|
),
|
|
67
56
|
] = None
|
|
68
57
|
min_spend_per_package: Annotated[
|
|
69
58
|
float | None,
|
|
70
59
|
Field(
|
|
71
|
-
description=
|
|
60
|
+
description="Minimum spend requirement per package using this pricing option, in the specified currency",
|
|
72
61
|
ge=0.0,
|
|
73
62
|
),
|
|
74
63
|
] = None
|
|
75
64
|
parameters: Annotated[
|
|
76
|
-
Parameters, Field(description=
|
|
65
|
+
Parameters, Field(description="CPP-specific parameters for demographic targeting")
|
|
77
66
|
]
|
|
78
67
|
price_guidance: Annotated[
|
|
79
|
-
PriceGuidance | None,
|
|
80
|
-
Field(
|
|
81
|
-
description='Optional pricing guidance for auction-based bidding. Helps buyers calibrate bids with historical percentiles.'
|
|
82
|
-
),
|
|
68
|
+
price_guidance_1.PriceGuidance | None,
|
|
69
|
+
Field(description="Optional pricing guidance for auction-based bidding"),
|
|
83
70
|
] = None
|
|
84
|
-
pricing_model: Annotated[Literal[
|
|
71
|
+
pricing_model: Annotated[Literal["cpp"], Field(description="Cost per Gross Rating Point")]
|
|
85
72
|
pricing_option_id: Annotated[
|
|
86
|
-
str, Field(description=
|
|
73
|
+
str, Field(description="Unique identifier for this pricing option within the product")
|
|
87
74
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: pricing_options/cpv_option.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,12 +9,14 @@ from typing import Annotated, Literal
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field, RootModel
|
|
11
11
|
|
|
12
|
+
from . import price_guidance as price_guidance_1
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
class ViewThreshold(RootModel[float]):
|
|
14
16
|
root: Annotated[
|
|
15
17
|
float,
|
|
16
18
|
Field(
|
|
17
|
-
description=
|
|
19
|
+
description="Percentage completion threshold (0.0 to 1.0, e.g., 0.5 = 50%)",
|
|
18
20
|
ge=0.0,
|
|
19
21
|
le=1.0,
|
|
20
22
|
),
|
|
@@ -23,74 +25,59 @@ class ViewThreshold(RootModel[float]):
|
|
|
23
25
|
|
|
24
26
|
class ViewThreshold1(AdCPBaseModel):
|
|
25
27
|
model_config = ConfigDict(
|
|
26
|
-
extra=
|
|
28
|
+
extra="allow",
|
|
27
29
|
)
|
|
28
|
-
duration_seconds: Annotated[int, Field(description=
|
|
30
|
+
duration_seconds: Annotated[int, Field(description="Seconds of viewing required", ge=1)]
|
|
29
31
|
|
|
30
32
|
|
|
31
33
|
class Parameters(AdCPBaseModel):
|
|
32
34
|
model_config = ConfigDict(
|
|
33
|
-
extra=
|
|
35
|
+
extra="allow",
|
|
34
36
|
)
|
|
35
37
|
view_threshold: ViewThreshold | ViewThreshold1
|
|
36
38
|
|
|
37
39
|
|
|
38
|
-
class PriceGuidance(AdCPBaseModel):
|
|
39
|
-
p25: Annotated[
|
|
40
|
-
float | None, Field(description='25th percentile of recent winning bids', ge=0.0)
|
|
41
|
-
] = None
|
|
42
|
-
p50: Annotated[float | None, Field(description='Median of recent winning bids', ge=0.0)] = None
|
|
43
|
-
p75: Annotated[
|
|
44
|
-
float | None, Field(description='75th percentile of recent winning bids', ge=0.0)
|
|
45
|
-
] = None
|
|
46
|
-
p90: Annotated[
|
|
47
|
-
float | None, Field(description='90th percentile of recent winning bids', ge=0.0)
|
|
48
|
-
] = None
|
|
49
|
-
|
|
50
|
-
|
|
51
40
|
class CpvPricingOption(AdCPBaseModel):
|
|
52
41
|
model_config = ConfigDict(
|
|
53
|
-
extra=
|
|
42
|
+
extra="allow",
|
|
54
43
|
)
|
|
55
44
|
currency: Annotated[
|
|
56
45
|
str,
|
|
57
46
|
Field(
|
|
58
|
-
description=
|
|
59
|
-
examples=[
|
|
60
|
-
pattern=
|
|
47
|
+
description="ISO 4217 currency code",
|
|
48
|
+
examples=["USD", "EUR", "GBP", "JPY"],
|
|
49
|
+
pattern="^[A-Z]{3}$",
|
|
61
50
|
),
|
|
62
51
|
]
|
|
63
52
|
fixed_price: Annotated[
|
|
64
53
|
float | None,
|
|
65
54
|
Field(
|
|
66
|
-
description=
|
|
55
|
+
description="Fixed price per view. If present, this is fixed pricing. If absent, auction-based.",
|
|
67
56
|
ge=0.0,
|
|
68
57
|
),
|
|
69
58
|
] = None
|
|
70
59
|
floor_price: Annotated[
|
|
71
60
|
float | None,
|
|
72
61
|
Field(
|
|
73
|
-
description=
|
|
62
|
+
description="Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.",
|
|
74
63
|
ge=0.0,
|
|
75
64
|
),
|
|
76
65
|
] = None
|
|
77
66
|
min_spend_per_package: Annotated[
|
|
78
67
|
float | None,
|
|
79
68
|
Field(
|
|
80
|
-
description=
|
|
69
|
+
description="Minimum spend requirement per package using this pricing option, in the specified currency",
|
|
81
70
|
ge=0.0,
|
|
82
71
|
),
|
|
83
72
|
] = None
|
|
84
73
|
parameters: Annotated[
|
|
85
|
-
Parameters, Field(description=
|
|
74
|
+
Parameters, Field(description="CPV-specific parameters defining the view threshold")
|
|
86
75
|
]
|
|
87
76
|
price_guidance: Annotated[
|
|
88
|
-
PriceGuidance | None,
|
|
89
|
-
Field(
|
|
90
|
-
description='Optional pricing guidance for auction-based bidding. Helps buyers calibrate bids with historical percentiles.'
|
|
91
|
-
),
|
|
77
|
+
price_guidance_1.PriceGuidance | None,
|
|
78
|
+
Field(description="Optional pricing guidance for auction-based bidding"),
|
|
92
79
|
] = None
|
|
93
|
-
pricing_model: Annotated[Literal[
|
|
80
|
+
pricing_model: Annotated[Literal["cpv"], Field(description="Cost per view at threshold")]
|
|
94
81
|
pricing_option_id: Annotated[
|
|
95
|
-
str, Field(description=
|
|
82
|
+
str, Field(description="Unique identifier for this pricing option within the product")
|
|
96
83
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: pricing_options/flat_rate_option.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,91 +9,78 @@ from typing import Annotated, Literal
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
+
from . import price_guidance as price_guidance_1
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
class Parameters(AdCPBaseModel):
|
|
14
16
|
model_config = ConfigDict(
|
|
15
|
-
extra=
|
|
17
|
+
extra="allow",
|
|
16
18
|
)
|
|
17
|
-
daypart: Annotated[str | None, Field(description=
|
|
19
|
+
daypart: Annotated[str | None, Field(description="Specific daypart for time-based pricing")] = (
|
|
18
20
|
None
|
|
19
21
|
)
|
|
20
22
|
duration_hours: Annotated[
|
|
21
|
-
float | None, Field(description=
|
|
23
|
+
float | None, Field(description="Duration in hours for time-based pricing", ge=0.0)
|
|
22
24
|
] = None
|
|
23
25
|
estimated_impressions: Annotated[
|
|
24
|
-
int | None, Field(description=
|
|
26
|
+
int | None, Field(description="Estimated impressions (informational)", ge=0)
|
|
25
27
|
] = None
|
|
26
28
|
loop_duration_seconds: Annotated[
|
|
27
|
-
int | None, Field(description=
|
|
29
|
+
int | None, Field(description="Duration of ad loop rotation in seconds", ge=1)
|
|
28
30
|
] = None
|
|
29
|
-
min_plays_per_hour: Annotated[int | None, Field(description=
|
|
31
|
+
min_plays_per_hour: Annotated[int | None, Field(description="Minimum plays per hour", ge=0)] = (
|
|
30
32
|
None
|
|
31
33
|
)
|
|
32
34
|
sov_percentage: Annotated[
|
|
33
|
-
float | None, Field(description=
|
|
34
|
-
] = None
|
|
35
|
-
venue_package: Annotated[str | None, Field(description='Named venue package identifier')] = None
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class PriceGuidance(AdCPBaseModel):
|
|
39
|
-
p25: Annotated[
|
|
40
|
-
float | None, Field(description='25th percentile of recent winning bids', ge=0.0)
|
|
41
|
-
] = None
|
|
42
|
-
p50: Annotated[float | None, Field(description='Median of recent winning bids', ge=0.0)] = None
|
|
43
|
-
p75: Annotated[
|
|
44
|
-
float | None, Field(description='75th percentile of recent winning bids', ge=0.0)
|
|
45
|
-
] = None
|
|
46
|
-
p90: Annotated[
|
|
47
|
-
float | None, Field(description='90th percentile of recent winning bids', ge=0.0)
|
|
35
|
+
float | None, Field(description="Guaranteed share of voice (0-100)", ge=0.0, le=100.0)
|
|
48
36
|
] = None
|
|
37
|
+
venue_package: Annotated[str | None, Field(description="Named venue package identifier")] = None
|
|
49
38
|
|
|
50
39
|
|
|
51
40
|
class FlatRatePricingOption(AdCPBaseModel):
|
|
52
41
|
model_config = ConfigDict(
|
|
53
|
-
extra=
|
|
42
|
+
extra="allow",
|
|
54
43
|
)
|
|
55
44
|
currency: Annotated[
|
|
56
45
|
str,
|
|
57
46
|
Field(
|
|
58
|
-
description=
|
|
59
|
-
examples=[
|
|
60
|
-
pattern=
|
|
47
|
+
description="ISO 4217 currency code",
|
|
48
|
+
examples=["USD", "EUR", "GBP", "JPY"],
|
|
49
|
+
pattern="^[A-Z]{3}$",
|
|
61
50
|
),
|
|
62
51
|
]
|
|
63
52
|
fixed_price: Annotated[
|
|
64
53
|
float | None,
|
|
65
54
|
Field(
|
|
66
|
-
description=
|
|
55
|
+
description="Flat rate cost. If present, this is fixed pricing. If absent, auction-based.",
|
|
67
56
|
ge=0.0,
|
|
68
57
|
),
|
|
69
58
|
] = None
|
|
70
59
|
floor_price: Annotated[
|
|
71
60
|
float | None,
|
|
72
61
|
Field(
|
|
73
|
-
description=
|
|
62
|
+
description="Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.",
|
|
74
63
|
ge=0.0,
|
|
75
64
|
),
|
|
76
65
|
] = None
|
|
77
66
|
min_spend_per_package: Annotated[
|
|
78
67
|
float | None,
|
|
79
68
|
Field(
|
|
80
|
-
description=
|
|
69
|
+
description="Minimum spend requirement per package using this pricing option, in the specified currency",
|
|
81
70
|
ge=0.0,
|
|
82
71
|
),
|
|
83
72
|
] = None
|
|
84
73
|
parameters: Annotated[
|
|
85
74
|
Parameters | None,
|
|
86
|
-
Field(description=
|
|
75
|
+
Field(description="Flat rate parameters for DOOH and time-based campaigns"),
|
|
87
76
|
] = None
|
|
88
77
|
price_guidance: Annotated[
|
|
89
|
-
PriceGuidance | None,
|
|
90
|
-
Field(
|
|
91
|
-
description='Optional pricing guidance for auction-based bidding. Helps buyers calibrate bids with historical percentiles.'
|
|
92
|
-
),
|
|
78
|
+
price_guidance_1.PriceGuidance | None,
|
|
79
|
+
Field(description="Optional pricing guidance for auction-based bidding"),
|
|
93
80
|
] = None
|
|
94
81
|
pricing_model: Annotated[
|
|
95
|
-
Literal[
|
|
82
|
+
Literal["flat_rate"], Field(description="Fixed cost regardless of delivery volume")
|
|
96
83
|
]
|
|
97
84
|
pricing_option_id: Annotated[
|
|
98
|
-
str, Field(description=
|
|
85
|
+
str, Field(description="Unique identifier for this pricing option within the product")
|
|
99
86
|
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: pricing_options/price_guidance.json
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from typing import Annotated
|
|
8
|
+
|
|
9
|
+
from adcp.types.base import AdCPBaseModel
|
|
10
|
+
from pydantic import ConfigDict, Field
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class PriceGuidance(AdCPBaseModel):
|
|
14
|
+
model_config = ConfigDict(
|
|
15
|
+
extra="allow",
|
|
16
|
+
)
|
|
17
|
+
p25: Annotated[
|
|
18
|
+
float | None, Field(description="25th percentile of recent winning bids", ge=0.0)
|
|
19
|
+
] = None
|
|
20
|
+
p50: Annotated[float | None, Field(description="Median of recent winning bids", ge=0.0)] = None
|
|
21
|
+
p75: Annotated[
|
|
22
|
+
float | None, Field(description="75th percentile of recent winning bids", ge=0.0)
|
|
23
|
+
] = None
|
|
24
|
+
p90: Annotated[
|
|
25
|
+
float | None, Field(description="90th percentile of recent winning bids", ge=0.0)
|
|
26
|
+
] = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: pricing_options/vcpm_option.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -9,62 +9,49 @@ from typing import Annotated, Literal
|
|
|
9
9
|
from adcp.types.base import AdCPBaseModel
|
|
10
10
|
from pydantic import ConfigDict, Field
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
class PriceGuidance(AdCPBaseModel):
|
|
14
|
-
p25: Annotated[
|
|
15
|
-
float | None, Field(description='25th percentile of recent winning bids', ge=0.0)
|
|
16
|
-
] = None
|
|
17
|
-
p50: Annotated[float | None, Field(description='Median of recent winning bids', ge=0.0)] = None
|
|
18
|
-
p75: Annotated[
|
|
19
|
-
float | None, Field(description='75th percentile of recent winning bids', ge=0.0)
|
|
20
|
-
] = None
|
|
21
|
-
p90: Annotated[
|
|
22
|
-
float | None, Field(description='90th percentile of recent winning bids', ge=0.0)
|
|
23
|
-
] = None
|
|
12
|
+
from . import price_guidance as price_guidance_1
|
|
24
13
|
|
|
25
14
|
|
|
26
15
|
class VcpmPricingOption(AdCPBaseModel):
|
|
27
16
|
model_config = ConfigDict(
|
|
28
|
-
extra=
|
|
17
|
+
extra="allow",
|
|
29
18
|
)
|
|
30
19
|
currency: Annotated[
|
|
31
20
|
str,
|
|
32
21
|
Field(
|
|
33
|
-
description=
|
|
34
|
-
examples=[
|
|
35
|
-
pattern=
|
|
22
|
+
description="ISO 4217 currency code",
|
|
23
|
+
examples=["USD", "EUR", "GBP", "JPY"],
|
|
24
|
+
pattern="^[A-Z]{3}$",
|
|
36
25
|
),
|
|
37
26
|
]
|
|
38
27
|
fixed_price: Annotated[
|
|
39
28
|
float | None,
|
|
40
29
|
Field(
|
|
41
|
-
description=
|
|
30
|
+
description="Fixed price per unit. If present, this is fixed pricing. If absent, auction-based.",
|
|
42
31
|
ge=0.0,
|
|
43
32
|
),
|
|
44
33
|
] = None
|
|
45
34
|
floor_price: Annotated[
|
|
46
35
|
float | None,
|
|
47
36
|
Field(
|
|
48
|
-
description=
|
|
37
|
+
description="Minimum acceptable bid for auction pricing (mutually exclusive with fixed_price). Bids below this value will be rejected.",
|
|
49
38
|
ge=0.0,
|
|
50
39
|
),
|
|
51
40
|
] = None
|
|
52
41
|
min_spend_per_package: Annotated[
|
|
53
42
|
float | None,
|
|
54
43
|
Field(
|
|
55
|
-
description=
|
|
44
|
+
description="Minimum spend requirement per package using this pricing option, in the specified currency",
|
|
56
45
|
ge=0.0,
|
|
57
46
|
),
|
|
58
47
|
] = None
|
|
59
48
|
price_guidance: Annotated[
|
|
60
|
-
PriceGuidance | None,
|
|
61
|
-
Field(
|
|
62
|
-
description='Optional pricing guidance for auction-based bidding. Helps buyers calibrate bids with historical percentiles.'
|
|
63
|
-
),
|
|
49
|
+
price_guidance_1.PriceGuidance | None,
|
|
50
|
+
Field(description="Optional pricing guidance for auction-based bidding"),
|
|
64
51
|
] = None
|
|
65
52
|
pricing_model: Annotated[
|
|
66
|
-
Literal[
|
|
53
|
+
Literal["vcpm"], Field(description="Cost per 1,000 viewable impressions (MRC standard)")
|
|
67
54
|
]
|
|
68
55
|
pricing_option_id: Annotated[
|
|
69
|
-
str, Field(description=
|
|
56
|
+
str, Field(description="Unique identifier for this pricing option within the product")
|
|
70
57
|
]
|
|
@@ -14,18 +14,18 @@ from ..core import identifier, property_id, property_tag
|
|
|
14
14
|
|
|
15
15
|
class BasePropertySource1(AdCPBaseModel):
|
|
16
16
|
model_config = ConfigDict(
|
|
17
|
-
extra=
|
|
17
|
+
extra="forbid",
|
|
18
18
|
)
|
|
19
19
|
publisher_domain: Annotated[
|
|
20
20
|
str,
|
|
21
21
|
Field(
|
|
22
22
|
description="Domain where publisher's adagents.json is hosted (e.g., 'raptive.com')",
|
|
23
|
-
pattern=
|
|
23
|
+
pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
|
|
24
24
|
),
|
|
25
25
|
]
|
|
26
26
|
selection_type: Annotated[
|
|
27
|
-
Literal[
|
|
28
|
-
Field(description=
|
|
27
|
+
Literal["publisher_tags"],
|
|
28
|
+
Field(description="Discriminator indicating selection by property tags within a publisher"),
|
|
29
29
|
]
|
|
30
30
|
tags: Annotated[
|
|
31
31
|
list[property_tag.PropertyTag],
|
|
@@ -38,7 +38,7 @@ class BasePropertySource1(AdCPBaseModel):
|
|
|
38
38
|
|
|
39
39
|
class BasePropertySource2(AdCPBaseModel):
|
|
40
40
|
model_config = ConfigDict(
|
|
41
|
-
extra=
|
|
41
|
+
extra="forbid",
|
|
42
42
|
)
|
|
43
43
|
property_ids: Annotated[
|
|
44
44
|
list[property_id.PropertyId],
|
|
@@ -48,28 +48,28 @@ class BasePropertySource2(AdCPBaseModel):
|
|
|
48
48
|
str,
|
|
49
49
|
Field(
|
|
50
50
|
description="Domain where publisher's adagents.json is hosted (e.g., 'raptive.com')",
|
|
51
|
-
pattern=
|
|
51
|
+
pattern="^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$",
|
|
52
52
|
),
|
|
53
53
|
]
|
|
54
54
|
selection_type: Annotated[
|
|
55
|
-
Literal[
|
|
55
|
+
Literal["publisher_ids"],
|
|
56
56
|
Field(
|
|
57
|
-
description=
|
|
57
|
+
description="Discriminator indicating selection by specific property IDs within a publisher"
|
|
58
58
|
),
|
|
59
59
|
]
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class BasePropertySource3(AdCPBaseModel):
|
|
63
63
|
model_config = ConfigDict(
|
|
64
|
-
extra=
|
|
64
|
+
extra="forbid",
|
|
65
65
|
)
|
|
66
66
|
identifiers: Annotated[
|
|
67
67
|
list[identifier.Identifier],
|
|
68
|
-
Field(description=
|
|
68
|
+
Field(description="Direct property identifiers (domains, app IDs, etc.)", min_length=1),
|
|
69
69
|
]
|
|
70
70
|
selection_type: Annotated[
|
|
71
|
-
Literal[
|
|
72
|
-
Field(description=
|
|
71
|
+
Literal["identifiers"],
|
|
72
|
+
Field(description="Discriminator indicating selection by direct identifiers"),
|
|
73
73
|
]
|
|
74
74
|
|
|
75
75
|
|
|
@@ -79,8 +79,8 @@ class BasePropertySource(
|
|
|
79
79
|
root: Annotated[
|
|
80
80
|
BasePropertySource1 | BasePropertySource2 | BasePropertySource3,
|
|
81
81
|
Field(
|
|
82
|
-
description=
|
|
83
|
-
discriminator=
|
|
84
|
-
title=
|
|
82
|
+
description="A source of properties for a property list. Supports three selection patterns: publisher with tags, publisher with property IDs, or direct identifiers.",
|
|
83
|
+
discriminator="selection_type",
|
|
84
|
+
title="Base Property Source",
|
|
85
85
|
),
|
|
86
86
|
]
|
|
@@ -17,7 +17,7 @@ from . import base_property_source, property_list_filters
|
|
|
17
17
|
|
|
18
18
|
class CreatePropertyListRequest(AdCPBaseModel):
|
|
19
19
|
model_config = ConfigDict(
|
|
20
|
-
extra=
|
|
20
|
+
extra="forbid",
|
|
21
21
|
)
|
|
22
22
|
base_properties: Annotated[
|
|
23
23
|
list[base_property_source.BasePropertySource] | None,
|
|
@@ -28,7 +28,7 @@ class CreatePropertyListRequest(AdCPBaseModel):
|
|
|
28
28
|
brand_manifest: Annotated[
|
|
29
29
|
brand_manifest_1.BrandManifest | None,
|
|
30
30
|
Field(
|
|
31
|
-
description=
|
|
31
|
+
description="Brand identity and requirements. When provided, the agent automatically applies appropriate rules based on brand characteristics (industry, target_audience, etc.)."
|
|
32
32
|
),
|
|
33
33
|
] = None
|
|
34
34
|
context: context_1.ContextObject | None = None
|
|
@@ -38,6 +38,6 @@ class CreatePropertyListRequest(AdCPBaseModel):
|
|
|
38
38
|
ext: ext_1.ExtensionObject | None = None
|
|
39
39
|
filters: Annotated[
|
|
40
40
|
property_list_filters.PropertyListFilters | None,
|
|
41
|
-
Field(description=
|
|
41
|
+
Field(description="Dynamic filters to apply when resolving the list"),
|
|
42
42
|
] = None
|
|
43
|
-
name: Annotated[str, Field(description=
|
|
43
|
+
name: Annotated[str, Field(description="Human-readable name for the list")]
|
|
@@ -15,13 +15,13 @@ from . import property_list
|
|
|
15
15
|
|
|
16
16
|
class CreatePropertyListResponse(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
auth_token: Annotated[
|
|
21
21
|
str,
|
|
22
22
|
Field(
|
|
23
|
-
description=
|
|
23
|
+
description="Token that can be shared with sellers to authorize fetching this list. Store this - it is only returned at creation time."
|
|
24
24
|
),
|
|
25
25
|
]
|
|
26
26
|
ext: ext_1.ExtensionObject | None = None
|
|
27
|
-
list: Annotated[property_list.PropertyList, Field(description=
|
|
27
|
+
list: Annotated[property_list.PropertyList, Field(description="The created property list")]
|
|
@@ -15,8 +15,8 @@ from ..core import ext as ext_1
|
|
|
15
15
|
|
|
16
16
|
class DeletePropertyListRequest(AdCPBaseModel):
|
|
17
17
|
model_config = ConfigDict(
|
|
18
|
-
extra=
|
|
18
|
+
extra="forbid",
|
|
19
19
|
)
|
|
20
20
|
context: context_1.ContextObject | None = None
|
|
21
21
|
ext: ext_1.ExtensionObject | None = None
|
|
22
|
-
list_id: Annotated[str, Field(description=
|
|
22
|
+
list_id: Annotated[str, Field(description="ID of the property list to delete")]
|
|
@@ -14,8 +14,8 @@ from ..core import ext as ext_1
|
|
|
14
14
|
|
|
15
15
|
class DeletePropertyListResponse(AdCPBaseModel):
|
|
16
16
|
model_config = ConfigDict(
|
|
17
|
-
extra=
|
|
17
|
+
extra="forbid",
|
|
18
18
|
)
|
|
19
|
-
deleted: Annotated[bool, Field(description=
|
|
19
|
+
deleted: Annotated[bool, Field(description="Whether the list was successfully deleted")]
|
|
20
20
|
ext: ext_1.ExtensionObject | None = None
|
|
21
|
-
list_id: Annotated[str, Field(description=
|
|
21
|
+
list_id: Annotated[str, Field(description="ID of the deleted list")]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: property/feature_requirement.json
|
|
3
|
-
# timestamp: 2026-
|
|
3
|
+
# timestamp: 2026-02-02T17:45:21+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -12,20 +12,20 @@ from pydantic import ConfigDict, Field
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class IfNotCovered(Enum):
|
|
15
|
-
exclude =
|
|
16
|
-
include =
|
|
15
|
+
exclude = "exclude"
|
|
16
|
+
include = "include"
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class FeatureRequirement(AdCPBaseModel):
|
|
20
20
|
model_config = ConfigDict(
|
|
21
|
-
extra=
|
|
21
|
+
extra="forbid",
|
|
22
22
|
)
|
|
23
23
|
allowed_values: Annotated[
|
|
24
24
|
list[Any] | None,
|
|
25
|
-
Field(description=
|
|
25
|
+
Field(description="Values that pass the requirement (for binary/categorical features)"),
|
|
26
26
|
] = None
|
|
27
27
|
feature_id: Annotated[
|
|
28
|
-
str, Field(description=
|
|
28
|
+
str, Field(description="Feature to evaluate (discovered via get_adcp_capabilities)")
|
|
29
29
|
]
|
|
30
30
|
if_not_covered: Annotated[
|
|
31
31
|
IfNotCovered | None,
|
|
@@ -34,9 +34,9 @@ class FeatureRequirement(AdCPBaseModel):
|
|
|
34
34
|
),
|
|
35
35
|
] = IfNotCovered.exclude
|
|
36
36
|
max_value: Annotated[
|
|
37
|
-
float | None, Field(description=
|
|
37
|
+
float | None, Field(description="Maximum numeric value allowed (for quantitative features)")
|
|
38
38
|
] = None
|
|
39
39
|
min_value: Annotated[
|
|
40
40
|
float | None,
|
|
41
|
-
Field(description=
|
|
41
|
+
Field(description="Minimum numeric value required (for quantitative features)"),
|
|
42
42
|
] = None
|