adcp 2.18.0__py3-none-any.whl → 3.0.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 +6 -14
- adcp/__main__.py +94 -51
- adcp/adagents.py +91 -19
- adcp/client.py +865 -0
- adcp/protocols/a2a.py +84 -0
- adcp/protocols/base.py +101 -0
- adcp/protocols/mcp.py +87 -1
- adcp/server/__init__.py +49 -0
- adcp/server/base.py +368 -0
- adcp/server/content_standards.py +561 -0
- adcp/server/governance.py +491 -0
- adcp/server/mcp_tools.py +471 -0
- adcp/server/proposal.py +334 -0
- adcp/server/sponsored_intelligence.py +444 -0
- adcp/types/__init__.py +111 -23
- adcp/types/_ergonomic.py +35 -18
- adcp/types/_generated.py +419 -44
- adcp/types/aliases.py +13 -20
- adcp/types/base.py +1 -1
- adcp/types/generated_poc/adagents.py +103 -6
- adcp/types/generated_poc/content_standards/__init__.py +3 -0
- adcp/types/generated_poc/content_standards/artifact.py +208 -0
- adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +64 -0
- adcp/types/generated_poc/content_standards/calibrate_content_request.py +17 -0
- adcp/types/generated_poc/content_standards/calibrate_content_response.py +74 -0
- adcp/types/generated_poc/content_standards/content_standards.py +66 -0
- adcp/types/generated_poc/content_standards/create_content_standards_request.py +97 -0
- adcp/types/generated_poc/content_standards/create_content_standards_response.py +52 -0
- adcp/types/generated_poc/content_standards/get_content_standards_request.py +21 -0
- adcp/types/generated_poc/content_standards/get_content_standards_response.py +43 -0
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +64 -0
- adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +117 -0
- adcp/types/generated_poc/content_standards/list_content_standards_request.py +31 -0
- adcp/types/generated_poc/content_standards/list_content_standards_response.py +48 -0
- adcp/types/generated_poc/content_standards/update_content_standards_request.py +101 -0
- adcp/types/generated_poc/content_standards/update_content_standards_response.py +34 -0
- adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +59 -0
- adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +85 -0
- adcp/types/generated_poc/core/activation_key.py +1 -1
- adcp/types/generated_poc/core/assets/audio_asset.py +1 -1
- adcp/types/generated_poc/core/assets/css_asset.py +1 -1
- adcp/types/generated_poc/core/assets/daast_asset.py +1 -1
- adcp/types/generated_poc/core/assets/html_asset.py +1 -1
- adcp/types/generated_poc/core/assets/image_asset.py +1 -1
- adcp/types/generated_poc/core/assets/javascript_asset.py +1 -1
- adcp/types/generated_poc/core/assets/text_asset.py +1 -1
- adcp/types/generated_poc/core/assets/url_asset.py +1 -1
- adcp/types/generated_poc/core/assets/vast_asset.py +1 -1
- adcp/types/generated_poc/core/assets/video_asset.py +1 -1
- adcp/types/generated_poc/core/assets/webhook_asset.py +1 -1
- adcp/types/generated_poc/core/async_response_data.py +1 -1
- adcp/types/generated_poc/core/brand_manifest.py +68 -5
- adcp/types/generated_poc/core/brand_manifest_ref.py +1 -1
- adcp/types/generated_poc/core/context.py +1 -1
- adcp/types/generated_poc/core/creative_asset.py +8 -7
- adcp/types/generated_poc/core/creative_assignment.py +1 -1
- adcp/types/generated_poc/core/creative_filters.py +4 -14
- adcp/types/generated_poc/core/creative_manifest.py +1 -1
- adcp/types/generated_poc/core/creative_policy.py +1 -1
- adcp/types/generated_poc/core/delivery_metrics.py +1 -1
- adcp/types/generated_poc/core/deployment.py +1 -1
- adcp/types/generated_poc/core/destination.py +1 -1
- adcp/types/generated_poc/core/error.py +1 -1
- adcp/types/generated_poc/core/ext.py +1 -1
- adcp/types/generated_poc/core/format.py +6 -5
- adcp/types/generated_poc/core/format_id.py +1 -1
- adcp/types/generated_poc/core/frequency_cap.py +1 -1
- adcp/types/generated_poc/core/identifier.py +27 -0
- adcp/types/generated_poc/core/mcp_webhook_payload.py +1 -1
- adcp/types/generated_poc/core/measurement.py +1 -1
- adcp/types/generated_poc/core/media_buy.py +1 -1
- adcp/types/generated_poc/core/media_buy_features.py +29 -0
- adcp/types/generated_poc/core/offering.py +80 -0
- adcp/types/generated_poc/core/package.py +1 -1
- adcp/types/generated_poc/core/performance_feedback.py +1 -1
- adcp/types/generated_poc/core/placement.py +1 -1
- adcp/types/generated_poc/core/pricing_option.py +8 -14
- adcp/types/generated_poc/core/product.py +1 -1
- adcp/types/generated_poc/core/product_allocation.py +48 -0
- adcp/types/generated_poc/core/product_filters.py +72 -7
- adcp/types/generated_poc/core/promoted_offerings.py +12 -21
- adcp/types/generated_poc/core/promoted_products.py +1 -1
- adcp/types/generated_poc/core/property.py +1 -1
- adcp/types/generated_poc/core/property_id.py +1 -1
- adcp/types/generated_poc/core/property_list_ref.py +26 -0
- adcp/types/generated_poc/core/property_tag.py +1 -1
- adcp/types/generated_poc/core/proposal.py +64 -0
- adcp/types/generated_poc/core/protocol_envelope.py +1 -1
- adcp/types/generated_poc/core/publisher_property_selector.py +1 -1
- adcp/types/generated_poc/core/push_notification_config.py +1 -1
- adcp/types/generated_poc/core/reporting_capabilities.py +1 -1
- adcp/types/generated_poc/core/reporting_webhook.py +70 -0
- adcp/types/generated_poc/core/response.py +1 -1
- adcp/types/generated_poc/core/signal_filters.py +1 -1
- adcp/types/generated_poc/core/start_timing.py +4 -4
- adcp/types/generated_poc/core/sub_asset.py +1 -1
- adcp/types/generated_poc/core/targeting.py +55 -14
- adcp/types/generated_poc/creative/list_creative_formats_request.py +1 -1
- adcp/types/generated_poc/creative/list_creative_formats_response.py +1 -1
- adcp/types/generated_poc/creative/preview_creative_request.py +1 -1
- adcp/types/generated_poc/creative/preview_creative_response.py +3 -2
- adcp/types/generated_poc/creative/preview_render.py +1 -1
- adcp/types/generated_poc/enums/adcp_domain.py +3 -1
- adcp/types/generated_poc/enums/asset_content_type.py +1 -1
- adcp/types/generated_poc/enums/auth_scheme.py +1 -1
- adcp/types/generated_poc/enums/available_metric.py +1 -1
- adcp/types/generated_poc/enums/channels.py +18 -8
- adcp/types/generated_poc/enums/co_branding_requirement.py +1 -1
- adcp/types/generated_poc/enums/creative_action.py +1 -1
- adcp/types/generated_poc/enums/creative_agent_capability.py +1 -1
- adcp/types/generated_poc/enums/creative_sort_field.py +1 -1
- adcp/types/generated_poc/enums/creative_status.py +2 -1
- adcp/types/generated_poc/enums/daast_tracking_event.py +1 -1
- adcp/types/generated_poc/enums/daast_version.py +1 -1
- adcp/types/generated_poc/enums/delivery_type.py +1 -1
- adcp/types/generated_poc/enums/dimension_unit.py +1 -1
- adcp/types/generated_poc/enums/feed_format.py +1 -1
- adcp/types/generated_poc/enums/feedback_source.py +1 -1
- adcp/types/generated_poc/enums/format_category.py +1 -1
- adcp/types/generated_poc/enums/format_id_parameter.py +1 -1
- adcp/types/generated_poc/enums/frequency_cap_scope.py +1 -1
- adcp/types/generated_poc/enums/geo_level.py +14 -0
- adcp/types/generated_poc/enums/history_entry_type.py +1 -1
- adcp/types/generated_poc/enums/http_method.py +1 -1
- adcp/types/generated_poc/enums/identifier_types.py +1 -1
- adcp/types/generated_poc/enums/javascript_module_type.py +1 -1
- adcp/types/generated_poc/enums/landing_page_requirement.py +1 -1
- adcp/types/generated_poc/enums/markdown_flavor.py +1 -1
- adcp/types/generated_poc/enums/media_buy_status.py +1 -1
- adcp/types/generated_poc/enums/metric_type.py +1 -1
- adcp/types/generated_poc/enums/metro_system.py +15 -0
- adcp/types/generated_poc/enums/notification_type.py +1 -1
- adcp/types/generated_poc/enums/pacing.py +1 -1
- adcp/types/generated_poc/enums/postal_system.py +19 -0
- adcp/types/generated_poc/enums/preview_output_format.py +1 -1
- adcp/types/generated_poc/enums/pricing_model.py +1 -1
- adcp/types/generated_poc/enums/property_type.py +2 -1
- adcp/types/generated_poc/enums/publisher_identifier_types.py +1 -1
- adcp/types/generated_poc/enums/reporting_frequency.py +1 -1
- adcp/types/generated_poc/enums/signal_catalog_type.py +1 -1
- adcp/types/generated_poc/enums/sort_direction.py +1 -1
- adcp/types/generated_poc/enums/task_status.py +1 -1
- adcp/types/generated_poc/enums/task_type.py +7 -1
- adcp/types/generated_poc/enums/update_frequency.py +1 -1
- adcp/types/generated_poc/enums/url_asset_type.py +1 -1
- adcp/types/generated_poc/enums/validation_mode.py +1 -1
- adcp/types/generated_poc/enums/vast_tracking_event.py +1 -1
- adcp/types/generated_poc/enums/vast_version.py +1 -1
- adcp/types/generated_poc/enums/webhook_response_type.py +1 -1
- adcp/types/generated_poc/enums/webhook_security_method.py +1 -1
- adcp/types/generated_poc/extensions/__init__.py +3 -0
- adcp/types/generated_poc/extensions/extension_meta.py +58 -0
- adcp/types/generated_poc/media_buy/build_creative_request.py +1 -1
- adcp/types/generated_poc/media_buy/build_creative_response.py +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/create_media_buy_request.py +54 -26
- adcp/types/generated_poc/media_buy/create_media_buy_response.py +1 -1
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +1 -1
- adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_async_response_working.py +1 -1
- adcp/types/generated_poc/media_buy/get_products_request.py +18 -3
- adcp/types/generated_poc/media_buy/get_products_response.py +14 -2
- adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +1 -1
- adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +2 -2
- adcp/types/generated_poc/media_buy/list_creative_formats_request.py +1 -1
- adcp/types/generated_poc/media_buy/list_creative_formats_response.py +1 -1
- adcp/types/generated_poc/media_buy/list_creatives_request.py +2 -2
- adcp/types/generated_poc/media_buy/list_creatives_response.py +7 -10
- adcp/types/generated_poc/media_buy/package_request.py +15 -6
- adcp/types/generated_poc/media_buy/package_update.py +119 -0
- adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +1 -1
- adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_request.py +1 -1
- adcp/types/generated_poc/media_buy/sync_creatives_response.py +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +1 -1
- 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 +1 -1
- adcp/types/generated_poc/media_buy/update_media_buy_request.py +20 -108
- adcp/types/generated_poc/media_buy/update_media_buy_response.py +1 -1
- adcp/types/generated_poc/pricing_options/cpc_option.py +35 -10
- adcp/types/generated_poc/pricing_options/cpcv_option.py +35 -10
- adcp/types/generated_poc/pricing_options/{cpm_auction_option.py → cpm_option.py} +23 -19
- adcp/types/generated_poc/pricing_options/cpp_option.py +39 -16
- adcp/types/generated_poc/pricing_options/cpv_option.py +37 -18
- adcp/types/generated_poc/pricing_options/flat_rate_option.py +45 -39
- adcp/types/generated_poc/pricing_options/{vcpm_auction_option.py → vcpm_option.py} +23 -14
- adcp/types/generated_poc/property/__init__.py +3 -0
- adcp/types/generated_poc/property/base_property_source.py +86 -0
- adcp/types/generated_poc/property/create_property_list_request.py +43 -0
- adcp/types/generated_poc/property/create_property_list_response.py +27 -0
- adcp/types/generated_poc/property/delete_property_list_request.py +22 -0
- adcp/types/generated_poc/property/delete_property_list_response.py +21 -0
- adcp/types/generated_poc/property/feature_requirement.py +42 -0
- adcp/types/generated_poc/property/get_property_list_request.py +34 -0
- adcp/types/generated_poc/property/get_property_list_response.py +61 -0
- adcp/types/generated_poc/property/list_property_lists_request.py +29 -0
- adcp/types/generated_poc/property/list_property_lists_response.py +39 -0
- adcp/types/generated_poc/property/property_error.py +33 -0
- adcp/types/generated_poc/property/property_feature.py +22 -0
- adcp/types/generated_poc/property/property_feature_definition.py +80 -0
- adcp/types/generated_poc/property/property_list.py +62 -0
- adcp/types/generated_poc/property/property_list_changed_webhook.py +51 -0
- adcp/types/generated_poc/property/property_list_filters.py +47 -0
- adcp/types/generated_poc/property/update_property_list_request.py +46 -0
- adcp/types/generated_poc/property/update_property_list_response.py +21 -0
- adcp/types/generated_poc/protocol/__init__.py +3 -0
- adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +34 -0
- adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +353 -0
- adcp/types/generated_poc/protocols/adcp_extension.py +18 -5
- adcp/types/generated_poc/signals/activate_signal_request.py +1 -1
- adcp/types/generated_poc/signals/activate_signal_response.py +1 -1
- adcp/types/generated_poc/signals/get_signals_request.py +1 -1
- adcp/types/generated_poc/signals/get_signals_response.py +1 -1
- adcp/types/generated_poc/sponsored_intelligence/__init__.py +3 -0
- adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +102 -0
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +34 -0
- adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +100 -0
- adcp/types/generated_poc/sponsored_intelligence/si_identity.py +78 -0
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +46 -0
- adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +44 -0
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +58 -0
- adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +101 -0
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +60 -0
- adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +54 -0
- adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +30 -0
- adcp/utils/format_assets.py +5 -5
- adcp/utils/preview_cache.py +2 -2
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/METADATA +1 -1
- adcp-3.0.0.dist-info/RECORD +264 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/WHEEL +1 -1
- adcp/types/generated_poc/enums/standard_format_ids.py +0 -45
- adcp/types/generated_poc/pricing_options/cpm_fixed_option.py +0 -43
- adcp/types/generated_poc/pricing_options/vcpm_fixed_option.py +0 -47
- adcp-2.18.0.dist-info/RECORD +0 -195
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/entry_points.txt +0 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {adcp-2.18.0.dist-info → adcp-3.0.0.dist-info}/top_level.txt +0 -0
adcp/client.py
CHANGED
|
@@ -55,7 +55,117 @@ from adcp.types.core import (
|
|
|
55
55
|
TaskResult,
|
|
56
56
|
TaskStatus,
|
|
57
57
|
)
|
|
58
|
+
from adcp.types.generated_poc.content_standards.calibrate_content_request import (
|
|
59
|
+
CalibrateContentRequest,
|
|
60
|
+
)
|
|
61
|
+
from adcp.types.generated_poc.content_standards.calibrate_content_response import (
|
|
62
|
+
CalibrateContentResponse,
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
# V3 Content Standards types
|
|
66
|
+
from adcp.types.generated_poc.content_standards.create_content_standards_request import (
|
|
67
|
+
CreateContentStandardsRequest,
|
|
68
|
+
)
|
|
69
|
+
from adcp.types.generated_poc.content_standards.create_content_standards_response import (
|
|
70
|
+
CreateContentStandardsResponse,
|
|
71
|
+
)
|
|
72
|
+
from adcp.types.generated_poc.content_standards.get_content_standards_request import (
|
|
73
|
+
GetContentStandardsRequest,
|
|
74
|
+
)
|
|
75
|
+
from adcp.types.generated_poc.content_standards.get_content_standards_response import (
|
|
76
|
+
GetContentStandardsResponse,
|
|
77
|
+
)
|
|
78
|
+
from adcp.types.generated_poc.content_standards.get_media_buy_artifacts_request import (
|
|
79
|
+
GetMediaBuyArtifactsRequest,
|
|
80
|
+
)
|
|
81
|
+
from adcp.types.generated_poc.content_standards.get_media_buy_artifacts_response import (
|
|
82
|
+
GetMediaBuyArtifactsResponse,
|
|
83
|
+
)
|
|
84
|
+
from adcp.types.generated_poc.content_standards.list_content_standards_request import (
|
|
85
|
+
ListContentStandardsRequest,
|
|
86
|
+
)
|
|
87
|
+
from adcp.types.generated_poc.content_standards.list_content_standards_response import (
|
|
88
|
+
ListContentStandardsResponse,
|
|
89
|
+
)
|
|
90
|
+
from adcp.types.generated_poc.content_standards.update_content_standards_request import (
|
|
91
|
+
UpdateContentStandardsRequest,
|
|
92
|
+
)
|
|
93
|
+
from adcp.types.generated_poc.content_standards.update_content_standards_response import (
|
|
94
|
+
UpdateContentStandardsResponse,
|
|
95
|
+
)
|
|
96
|
+
from adcp.types.generated_poc.content_standards.validate_content_delivery_request import (
|
|
97
|
+
ValidateContentDeliveryRequest,
|
|
98
|
+
)
|
|
99
|
+
from adcp.types.generated_poc.content_standards.validate_content_delivery_response import (
|
|
100
|
+
ValidateContentDeliveryResponse,
|
|
101
|
+
)
|
|
58
102
|
from adcp.types.generated_poc.core.async_response_data import AdcpAsyncResponseData
|
|
103
|
+
|
|
104
|
+
# V3 Governance (Property Lists) types
|
|
105
|
+
from adcp.types.generated_poc.property.create_property_list_request import (
|
|
106
|
+
CreatePropertyListRequest,
|
|
107
|
+
)
|
|
108
|
+
from adcp.types.generated_poc.property.create_property_list_response import (
|
|
109
|
+
CreatePropertyListResponse,
|
|
110
|
+
)
|
|
111
|
+
from adcp.types.generated_poc.property.delete_property_list_request import (
|
|
112
|
+
DeletePropertyListRequest,
|
|
113
|
+
)
|
|
114
|
+
from adcp.types.generated_poc.property.delete_property_list_response import (
|
|
115
|
+
DeletePropertyListResponse,
|
|
116
|
+
)
|
|
117
|
+
from adcp.types.generated_poc.property.get_property_list_request import (
|
|
118
|
+
GetPropertyListRequest,
|
|
119
|
+
)
|
|
120
|
+
from adcp.types.generated_poc.property.get_property_list_response import (
|
|
121
|
+
GetPropertyListResponse,
|
|
122
|
+
)
|
|
123
|
+
from adcp.types.generated_poc.property.list_property_lists_request import (
|
|
124
|
+
ListPropertyListsRequest,
|
|
125
|
+
)
|
|
126
|
+
from adcp.types.generated_poc.property.list_property_lists_response import (
|
|
127
|
+
ListPropertyListsResponse,
|
|
128
|
+
)
|
|
129
|
+
from adcp.types.generated_poc.property.update_property_list_request import (
|
|
130
|
+
UpdatePropertyListRequest,
|
|
131
|
+
)
|
|
132
|
+
from adcp.types.generated_poc.property.update_property_list_response import (
|
|
133
|
+
UpdatePropertyListResponse,
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
# V3 Protocol Discovery types
|
|
137
|
+
from adcp.types.generated_poc.protocol.get_adcp_capabilities_request import (
|
|
138
|
+
GetAdcpCapabilitiesRequest,
|
|
139
|
+
)
|
|
140
|
+
from adcp.types.generated_poc.protocol.get_adcp_capabilities_response import (
|
|
141
|
+
GetAdcpCapabilitiesResponse,
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
# V3 Sponsored Intelligence types
|
|
145
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_get_offering_request import (
|
|
146
|
+
SiGetOfferingRequest,
|
|
147
|
+
)
|
|
148
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_get_offering_response import (
|
|
149
|
+
SiGetOfferingResponse,
|
|
150
|
+
)
|
|
151
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_initiate_session_request import (
|
|
152
|
+
SiInitiateSessionRequest,
|
|
153
|
+
)
|
|
154
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_initiate_session_response import (
|
|
155
|
+
SiInitiateSessionResponse,
|
|
156
|
+
)
|
|
157
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_send_message_request import (
|
|
158
|
+
SiSendMessageRequest,
|
|
159
|
+
)
|
|
160
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_send_message_response import (
|
|
161
|
+
SiSendMessageResponse,
|
|
162
|
+
)
|
|
163
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_terminate_session_request import (
|
|
164
|
+
SiTerminateSessionRequest,
|
|
165
|
+
)
|
|
166
|
+
from adcp.types.generated_poc.sponsored_intelligence.si_terminate_session_response import (
|
|
167
|
+
SiTerminateSessionResponse,
|
|
168
|
+
)
|
|
59
169
|
from adcp.utils.operation_id import create_operation_id
|
|
60
170
|
|
|
61
171
|
logger = logging.getLogger(__name__)
|
|
@@ -773,6 +883,761 @@ class ADCPClient:
|
|
|
773
883
|
|
|
774
884
|
return self.adapter._parse_response(raw_result, BuildCreativeResponse)
|
|
775
885
|
|
|
886
|
+
# ========================================================================
|
|
887
|
+
# V3 Protocol Methods - Protocol Discovery
|
|
888
|
+
# ========================================================================
|
|
889
|
+
|
|
890
|
+
async def get_adcp_capabilities(
|
|
891
|
+
self,
|
|
892
|
+
request: GetAdcpCapabilitiesRequest,
|
|
893
|
+
) -> TaskResult[GetAdcpCapabilitiesResponse]:
|
|
894
|
+
"""
|
|
895
|
+
Get AdCP capabilities from the agent.
|
|
896
|
+
|
|
897
|
+
Queries the agent's supported AdCP features, protocol versions, and
|
|
898
|
+
domain-specific capabilities (media_buy, signals, sponsored_intelligence).
|
|
899
|
+
|
|
900
|
+
Args:
|
|
901
|
+
request: Request parameters including optional protocol filters
|
|
902
|
+
|
|
903
|
+
Returns:
|
|
904
|
+
TaskResult containing GetAdcpCapabilitiesResponse with:
|
|
905
|
+
- adcp: Core protocol version information
|
|
906
|
+
- supported_protocols: List of supported domain protocols
|
|
907
|
+
- media_buy: Media buy capabilities (if supported)
|
|
908
|
+
- sponsored_intelligence: SI capabilities (if supported)
|
|
909
|
+
- signals: Signals capabilities (if supported)
|
|
910
|
+
"""
|
|
911
|
+
operation_id = create_operation_id()
|
|
912
|
+
params = request.model_dump(exclude_none=True)
|
|
913
|
+
|
|
914
|
+
self._emit_activity(
|
|
915
|
+
Activity(
|
|
916
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
917
|
+
operation_id=operation_id,
|
|
918
|
+
agent_id=self.agent_config.id,
|
|
919
|
+
task_type="get_adcp_capabilities",
|
|
920
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
921
|
+
)
|
|
922
|
+
)
|
|
923
|
+
|
|
924
|
+
raw_result = await self.adapter.get_adcp_capabilities(params)
|
|
925
|
+
|
|
926
|
+
self._emit_activity(
|
|
927
|
+
Activity(
|
|
928
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
929
|
+
operation_id=operation_id,
|
|
930
|
+
agent_id=self.agent_config.id,
|
|
931
|
+
task_type="get_adcp_capabilities",
|
|
932
|
+
status=raw_result.status,
|
|
933
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
934
|
+
)
|
|
935
|
+
)
|
|
936
|
+
|
|
937
|
+
return self.adapter._parse_response(raw_result, GetAdcpCapabilitiesResponse)
|
|
938
|
+
|
|
939
|
+
# ========================================================================
|
|
940
|
+
# V3 Protocol Methods - Content Standards
|
|
941
|
+
# ========================================================================
|
|
942
|
+
|
|
943
|
+
async def create_content_standards(
|
|
944
|
+
self,
|
|
945
|
+
request: CreateContentStandardsRequest,
|
|
946
|
+
) -> TaskResult[CreateContentStandardsResponse]:
|
|
947
|
+
"""
|
|
948
|
+
Create a new content standards configuration.
|
|
949
|
+
|
|
950
|
+
Defines acceptable content contexts for ad placement using natural
|
|
951
|
+
language policy and optional calibration exemplars.
|
|
952
|
+
|
|
953
|
+
Args:
|
|
954
|
+
request: Request parameters including policy and scope
|
|
955
|
+
|
|
956
|
+
Returns:
|
|
957
|
+
TaskResult containing CreateContentStandardsResponse with standards_id
|
|
958
|
+
"""
|
|
959
|
+
operation_id = create_operation_id()
|
|
960
|
+
params = request.model_dump(exclude_none=True)
|
|
961
|
+
|
|
962
|
+
self._emit_activity(
|
|
963
|
+
Activity(
|
|
964
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
965
|
+
operation_id=operation_id,
|
|
966
|
+
agent_id=self.agent_config.id,
|
|
967
|
+
task_type="create_content_standards",
|
|
968
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
969
|
+
)
|
|
970
|
+
)
|
|
971
|
+
|
|
972
|
+
raw_result = await self.adapter.create_content_standards(params)
|
|
973
|
+
|
|
974
|
+
self._emit_activity(
|
|
975
|
+
Activity(
|
|
976
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
977
|
+
operation_id=operation_id,
|
|
978
|
+
agent_id=self.agent_config.id,
|
|
979
|
+
task_type="create_content_standards",
|
|
980
|
+
status=raw_result.status,
|
|
981
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
982
|
+
)
|
|
983
|
+
)
|
|
984
|
+
|
|
985
|
+
return self.adapter._parse_response(raw_result, CreateContentStandardsResponse)
|
|
986
|
+
|
|
987
|
+
async def get_content_standards(
|
|
988
|
+
self,
|
|
989
|
+
request: GetContentStandardsRequest,
|
|
990
|
+
) -> TaskResult[GetContentStandardsResponse]:
|
|
991
|
+
"""
|
|
992
|
+
Get a content standards configuration by ID.
|
|
993
|
+
|
|
994
|
+
Args:
|
|
995
|
+
request: Request parameters including standards_id
|
|
996
|
+
|
|
997
|
+
Returns:
|
|
998
|
+
TaskResult containing GetContentStandardsResponse
|
|
999
|
+
"""
|
|
1000
|
+
operation_id = create_operation_id()
|
|
1001
|
+
params = request.model_dump(exclude_none=True)
|
|
1002
|
+
|
|
1003
|
+
self._emit_activity(
|
|
1004
|
+
Activity(
|
|
1005
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1006
|
+
operation_id=operation_id,
|
|
1007
|
+
agent_id=self.agent_config.id,
|
|
1008
|
+
task_type="get_content_standards",
|
|
1009
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1010
|
+
)
|
|
1011
|
+
)
|
|
1012
|
+
|
|
1013
|
+
raw_result = await self.adapter.get_content_standards(params)
|
|
1014
|
+
|
|
1015
|
+
self._emit_activity(
|
|
1016
|
+
Activity(
|
|
1017
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1018
|
+
operation_id=operation_id,
|
|
1019
|
+
agent_id=self.agent_config.id,
|
|
1020
|
+
task_type="get_content_standards",
|
|
1021
|
+
status=raw_result.status,
|
|
1022
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1023
|
+
)
|
|
1024
|
+
)
|
|
1025
|
+
|
|
1026
|
+
return self.adapter._parse_response(raw_result, GetContentStandardsResponse)
|
|
1027
|
+
|
|
1028
|
+
async def list_content_standards(
|
|
1029
|
+
self,
|
|
1030
|
+
request: ListContentStandardsRequest,
|
|
1031
|
+
) -> TaskResult[ListContentStandardsResponse]:
|
|
1032
|
+
"""
|
|
1033
|
+
List content standards configurations.
|
|
1034
|
+
|
|
1035
|
+
Args:
|
|
1036
|
+
request: Request parameters including optional filters
|
|
1037
|
+
|
|
1038
|
+
Returns:
|
|
1039
|
+
TaskResult containing ListContentStandardsResponse
|
|
1040
|
+
"""
|
|
1041
|
+
operation_id = create_operation_id()
|
|
1042
|
+
params = request.model_dump(exclude_none=True)
|
|
1043
|
+
|
|
1044
|
+
self._emit_activity(
|
|
1045
|
+
Activity(
|
|
1046
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1047
|
+
operation_id=operation_id,
|
|
1048
|
+
agent_id=self.agent_config.id,
|
|
1049
|
+
task_type="list_content_standards",
|
|
1050
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1051
|
+
)
|
|
1052
|
+
)
|
|
1053
|
+
|
|
1054
|
+
raw_result = await self.adapter.list_content_standards(params)
|
|
1055
|
+
|
|
1056
|
+
self._emit_activity(
|
|
1057
|
+
Activity(
|
|
1058
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1059
|
+
operation_id=operation_id,
|
|
1060
|
+
agent_id=self.agent_config.id,
|
|
1061
|
+
task_type="list_content_standards",
|
|
1062
|
+
status=raw_result.status,
|
|
1063
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1064
|
+
)
|
|
1065
|
+
)
|
|
1066
|
+
|
|
1067
|
+
return self.adapter._parse_response(raw_result, ListContentStandardsResponse)
|
|
1068
|
+
|
|
1069
|
+
async def update_content_standards(
|
|
1070
|
+
self,
|
|
1071
|
+
request: UpdateContentStandardsRequest,
|
|
1072
|
+
) -> TaskResult[UpdateContentStandardsResponse]:
|
|
1073
|
+
"""
|
|
1074
|
+
Update a content standards configuration.
|
|
1075
|
+
|
|
1076
|
+
Args:
|
|
1077
|
+
request: Request parameters including standards_id and updates
|
|
1078
|
+
|
|
1079
|
+
Returns:
|
|
1080
|
+
TaskResult containing UpdateContentStandardsResponse
|
|
1081
|
+
"""
|
|
1082
|
+
operation_id = create_operation_id()
|
|
1083
|
+
params = request.model_dump(exclude_none=True)
|
|
1084
|
+
|
|
1085
|
+
self._emit_activity(
|
|
1086
|
+
Activity(
|
|
1087
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1088
|
+
operation_id=operation_id,
|
|
1089
|
+
agent_id=self.agent_config.id,
|
|
1090
|
+
task_type="update_content_standards",
|
|
1091
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1092
|
+
)
|
|
1093
|
+
)
|
|
1094
|
+
|
|
1095
|
+
raw_result = await self.adapter.update_content_standards(params)
|
|
1096
|
+
|
|
1097
|
+
self._emit_activity(
|
|
1098
|
+
Activity(
|
|
1099
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1100
|
+
operation_id=operation_id,
|
|
1101
|
+
agent_id=self.agent_config.id,
|
|
1102
|
+
task_type="update_content_standards",
|
|
1103
|
+
status=raw_result.status,
|
|
1104
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1105
|
+
)
|
|
1106
|
+
)
|
|
1107
|
+
|
|
1108
|
+
return self.adapter._parse_response(raw_result, UpdateContentStandardsResponse)
|
|
1109
|
+
|
|
1110
|
+
async def calibrate_content(
|
|
1111
|
+
self,
|
|
1112
|
+
request: CalibrateContentRequest,
|
|
1113
|
+
) -> TaskResult[CalibrateContentResponse]:
|
|
1114
|
+
"""
|
|
1115
|
+
Calibrate content against standards.
|
|
1116
|
+
|
|
1117
|
+
Evaluates content (artifact or URL) against configured standards to
|
|
1118
|
+
determine suitability for ad placement.
|
|
1119
|
+
|
|
1120
|
+
Args:
|
|
1121
|
+
request: Request parameters including content to evaluate
|
|
1122
|
+
|
|
1123
|
+
Returns:
|
|
1124
|
+
TaskResult containing CalibrateContentResponse with verdict
|
|
1125
|
+
"""
|
|
1126
|
+
operation_id = create_operation_id()
|
|
1127
|
+
params = request.model_dump(exclude_none=True)
|
|
1128
|
+
|
|
1129
|
+
self._emit_activity(
|
|
1130
|
+
Activity(
|
|
1131
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1132
|
+
operation_id=operation_id,
|
|
1133
|
+
agent_id=self.agent_config.id,
|
|
1134
|
+
task_type="calibrate_content",
|
|
1135
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1136
|
+
)
|
|
1137
|
+
)
|
|
1138
|
+
|
|
1139
|
+
raw_result = await self.adapter.calibrate_content(params)
|
|
1140
|
+
|
|
1141
|
+
self._emit_activity(
|
|
1142
|
+
Activity(
|
|
1143
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1144
|
+
operation_id=operation_id,
|
|
1145
|
+
agent_id=self.agent_config.id,
|
|
1146
|
+
task_type="calibrate_content",
|
|
1147
|
+
status=raw_result.status,
|
|
1148
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1149
|
+
)
|
|
1150
|
+
)
|
|
1151
|
+
|
|
1152
|
+
return self.adapter._parse_response(raw_result, CalibrateContentResponse)
|
|
1153
|
+
|
|
1154
|
+
async def validate_content_delivery(
|
|
1155
|
+
self,
|
|
1156
|
+
request: ValidateContentDeliveryRequest,
|
|
1157
|
+
) -> TaskResult[ValidateContentDeliveryResponse]:
|
|
1158
|
+
"""
|
|
1159
|
+
Validate content delivery against standards.
|
|
1160
|
+
|
|
1161
|
+
Validates that ad delivery records comply with content standards.
|
|
1162
|
+
|
|
1163
|
+
Args:
|
|
1164
|
+
request: Request parameters including delivery records
|
|
1165
|
+
|
|
1166
|
+
Returns:
|
|
1167
|
+
TaskResult containing ValidateContentDeliveryResponse
|
|
1168
|
+
"""
|
|
1169
|
+
operation_id = create_operation_id()
|
|
1170
|
+
params = request.model_dump(exclude_none=True)
|
|
1171
|
+
|
|
1172
|
+
self._emit_activity(
|
|
1173
|
+
Activity(
|
|
1174
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1175
|
+
operation_id=operation_id,
|
|
1176
|
+
agent_id=self.agent_config.id,
|
|
1177
|
+
task_type="validate_content_delivery",
|
|
1178
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1179
|
+
)
|
|
1180
|
+
)
|
|
1181
|
+
|
|
1182
|
+
raw_result = await self.adapter.validate_content_delivery(params)
|
|
1183
|
+
|
|
1184
|
+
self._emit_activity(
|
|
1185
|
+
Activity(
|
|
1186
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1187
|
+
operation_id=operation_id,
|
|
1188
|
+
agent_id=self.agent_config.id,
|
|
1189
|
+
task_type="validate_content_delivery",
|
|
1190
|
+
status=raw_result.status,
|
|
1191
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1192
|
+
)
|
|
1193
|
+
)
|
|
1194
|
+
|
|
1195
|
+
return self.adapter._parse_response(raw_result, ValidateContentDeliveryResponse)
|
|
1196
|
+
|
|
1197
|
+
async def get_media_buy_artifacts(
|
|
1198
|
+
self,
|
|
1199
|
+
request: GetMediaBuyArtifactsRequest,
|
|
1200
|
+
) -> TaskResult[GetMediaBuyArtifactsResponse]:
|
|
1201
|
+
"""
|
|
1202
|
+
Get artifacts associated with a media buy.
|
|
1203
|
+
|
|
1204
|
+
Retrieves content artifacts where ads were delivered for a media buy.
|
|
1205
|
+
|
|
1206
|
+
Args:
|
|
1207
|
+
request: Request parameters including media_buy_id
|
|
1208
|
+
|
|
1209
|
+
Returns:
|
|
1210
|
+
TaskResult containing GetMediaBuyArtifactsResponse
|
|
1211
|
+
"""
|
|
1212
|
+
operation_id = create_operation_id()
|
|
1213
|
+
params = request.model_dump(exclude_none=True)
|
|
1214
|
+
|
|
1215
|
+
self._emit_activity(
|
|
1216
|
+
Activity(
|
|
1217
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1218
|
+
operation_id=operation_id,
|
|
1219
|
+
agent_id=self.agent_config.id,
|
|
1220
|
+
task_type="get_media_buy_artifacts",
|
|
1221
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1222
|
+
)
|
|
1223
|
+
)
|
|
1224
|
+
|
|
1225
|
+
raw_result = await self.adapter.get_media_buy_artifacts(params)
|
|
1226
|
+
|
|
1227
|
+
self._emit_activity(
|
|
1228
|
+
Activity(
|
|
1229
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1230
|
+
operation_id=operation_id,
|
|
1231
|
+
agent_id=self.agent_config.id,
|
|
1232
|
+
task_type="get_media_buy_artifacts",
|
|
1233
|
+
status=raw_result.status,
|
|
1234
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1235
|
+
)
|
|
1236
|
+
)
|
|
1237
|
+
|
|
1238
|
+
return self.adapter._parse_response(raw_result, GetMediaBuyArtifactsResponse)
|
|
1239
|
+
|
|
1240
|
+
# ========================================================================
|
|
1241
|
+
# V3 Protocol Methods - Sponsored Intelligence
|
|
1242
|
+
# ========================================================================
|
|
1243
|
+
|
|
1244
|
+
async def si_get_offering(
|
|
1245
|
+
self,
|
|
1246
|
+
request: SiGetOfferingRequest,
|
|
1247
|
+
) -> TaskResult[SiGetOfferingResponse]:
|
|
1248
|
+
"""
|
|
1249
|
+
Get sponsored intelligence offering.
|
|
1250
|
+
|
|
1251
|
+
Retrieves product/service offerings that can be presented in a
|
|
1252
|
+
sponsored intelligence session.
|
|
1253
|
+
|
|
1254
|
+
Args:
|
|
1255
|
+
request: Request parameters including brand context
|
|
1256
|
+
|
|
1257
|
+
Returns:
|
|
1258
|
+
TaskResult containing SiGetOfferingResponse
|
|
1259
|
+
"""
|
|
1260
|
+
operation_id = create_operation_id()
|
|
1261
|
+
params = request.model_dump(exclude_none=True)
|
|
1262
|
+
|
|
1263
|
+
self._emit_activity(
|
|
1264
|
+
Activity(
|
|
1265
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1266
|
+
operation_id=operation_id,
|
|
1267
|
+
agent_id=self.agent_config.id,
|
|
1268
|
+
task_type="si_get_offering",
|
|
1269
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1270
|
+
)
|
|
1271
|
+
)
|
|
1272
|
+
|
|
1273
|
+
raw_result = await self.adapter.si_get_offering(params)
|
|
1274
|
+
|
|
1275
|
+
self._emit_activity(
|
|
1276
|
+
Activity(
|
|
1277
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1278
|
+
operation_id=operation_id,
|
|
1279
|
+
agent_id=self.agent_config.id,
|
|
1280
|
+
task_type="si_get_offering",
|
|
1281
|
+
status=raw_result.status,
|
|
1282
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1283
|
+
)
|
|
1284
|
+
)
|
|
1285
|
+
|
|
1286
|
+
return self.adapter._parse_response(raw_result, SiGetOfferingResponse)
|
|
1287
|
+
|
|
1288
|
+
async def si_initiate_session(
|
|
1289
|
+
self,
|
|
1290
|
+
request: SiInitiateSessionRequest,
|
|
1291
|
+
) -> TaskResult[SiInitiateSessionResponse]:
|
|
1292
|
+
"""
|
|
1293
|
+
Initiate a sponsored intelligence session.
|
|
1294
|
+
|
|
1295
|
+
Starts a conversational brand experience session with a user.
|
|
1296
|
+
|
|
1297
|
+
Args:
|
|
1298
|
+
request: Request parameters including identity and context
|
|
1299
|
+
|
|
1300
|
+
Returns:
|
|
1301
|
+
TaskResult containing SiInitiateSessionResponse with session_id
|
|
1302
|
+
"""
|
|
1303
|
+
operation_id = create_operation_id()
|
|
1304
|
+
params = request.model_dump(exclude_none=True)
|
|
1305
|
+
|
|
1306
|
+
self._emit_activity(
|
|
1307
|
+
Activity(
|
|
1308
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1309
|
+
operation_id=operation_id,
|
|
1310
|
+
agent_id=self.agent_config.id,
|
|
1311
|
+
task_type="si_initiate_session",
|
|
1312
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1313
|
+
)
|
|
1314
|
+
)
|
|
1315
|
+
|
|
1316
|
+
raw_result = await self.adapter.si_initiate_session(params)
|
|
1317
|
+
|
|
1318
|
+
self._emit_activity(
|
|
1319
|
+
Activity(
|
|
1320
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1321
|
+
operation_id=operation_id,
|
|
1322
|
+
agent_id=self.agent_config.id,
|
|
1323
|
+
task_type="si_initiate_session",
|
|
1324
|
+
status=raw_result.status,
|
|
1325
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1326
|
+
)
|
|
1327
|
+
)
|
|
1328
|
+
|
|
1329
|
+
return self.adapter._parse_response(raw_result, SiInitiateSessionResponse)
|
|
1330
|
+
|
|
1331
|
+
async def si_send_message(
|
|
1332
|
+
self,
|
|
1333
|
+
request: SiSendMessageRequest,
|
|
1334
|
+
) -> TaskResult[SiSendMessageResponse]:
|
|
1335
|
+
"""
|
|
1336
|
+
Send a message in a sponsored intelligence session.
|
|
1337
|
+
|
|
1338
|
+
Continues the conversation in an active SI session.
|
|
1339
|
+
|
|
1340
|
+
Args:
|
|
1341
|
+
request: Request parameters including session_id and message
|
|
1342
|
+
|
|
1343
|
+
Returns:
|
|
1344
|
+
TaskResult containing SiSendMessageResponse with brand response
|
|
1345
|
+
"""
|
|
1346
|
+
operation_id = create_operation_id()
|
|
1347
|
+
params = request.model_dump(exclude_none=True)
|
|
1348
|
+
|
|
1349
|
+
self._emit_activity(
|
|
1350
|
+
Activity(
|
|
1351
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1352
|
+
operation_id=operation_id,
|
|
1353
|
+
agent_id=self.agent_config.id,
|
|
1354
|
+
task_type="si_send_message",
|
|
1355
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1356
|
+
)
|
|
1357
|
+
)
|
|
1358
|
+
|
|
1359
|
+
raw_result = await self.adapter.si_send_message(params)
|
|
1360
|
+
|
|
1361
|
+
self._emit_activity(
|
|
1362
|
+
Activity(
|
|
1363
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1364
|
+
operation_id=operation_id,
|
|
1365
|
+
agent_id=self.agent_config.id,
|
|
1366
|
+
task_type="si_send_message",
|
|
1367
|
+
status=raw_result.status,
|
|
1368
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1369
|
+
)
|
|
1370
|
+
)
|
|
1371
|
+
|
|
1372
|
+
return self.adapter._parse_response(raw_result, SiSendMessageResponse)
|
|
1373
|
+
|
|
1374
|
+
async def si_terminate_session(
|
|
1375
|
+
self,
|
|
1376
|
+
request: SiTerminateSessionRequest,
|
|
1377
|
+
) -> TaskResult[SiTerminateSessionResponse]:
|
|
1378
|
+
"""
|
|
1379
|
+
Terminate a sponsored intelligence session.
|
|
1380
|
+
|
|
1381
|
+
Ends an active SI session, optionally with follow-up actions.
|
|
1382
|
+
|
|
1383
|
+
Args:
|
|
1384
|
+
request: Request parameters including session_id and termination context
|
|
1385
|
+
|
|
1386
|
+
Returns:
|
|
1387
|
+
TaskResult containing SiTerminateSessionResponse
|
|
1388
|
+
"""
|
|
1389
|
+
operation_id = create_operation_id()
|
|
1390
|
+
params = request.model_dump(exclude_none=True)
|
|
1391
|
+
|
|
1392
|
+
self._emit_activity(
|
|
1393
|
+
Activity(
|
|
1394
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1395
|
+
operation_id=operation_id,
|
|
1396
|
+
agent_id=self.agent_config.id,
|
|
1397
|
+
task_type="si_terminate_session",
|
|
1398
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1399
|
+
)
|
|
1400
|
+
)
|
|
1401
|
+
|
|
1402
|
+
raw_result = await self.adapter.si_terminate_session(params)
|
|
1403
|
+
|
|
1404
|
+
self._emit_activity(
|
|
1405
|
+
Activity(
|
|
1406
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1407
|
+
operation_id=operation_id,
|
|
1408
|
+
agent_id=self.agent_config.id,
|
|
1409
|
+
task_type="si_terminate_session",
|
|
1410
|
+
status=raw_result.status,
|
|
1411
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1412
|
+
)
|
|
1413
|
+
)
|
|
1414
|
+
|
|
1415
|
+
return self.adapter._parse_response(raw_result, SiTerminateSessionResponse)
|
|
1416
|
+
|
|
1417
|
+
# ========================================================================
|
|
1418
|
+
# V3 Governance (Property Lists) Methods
|
|
1419
|
+
# ========================================================================
|
|
1420
|
+
|
|
1421
|
+
async def create_property_list(
|
|
1422
|
+
self,
|
|
1423
|
+
request: CreatePropertyListRequest,
|
|
1424
|
+
) -> TaskResult[CreatePropertyListResponse]:
|
|
1425
|
+
"""
|
|
1426
|
+
Create a property list for governance filtering.
|
|
1427
|
+
|
|
1428
|
+
Property lists define dynamic sets of properties based on filters,
|
|
1429
|
+
brand manifests, and feature requirements.
|
|
1430
|
+
|
|
1431
|
+
Args:
|
|
1432
|
+
request: Request parameters for creating the property list
|
|
1433
|
+
|
|
1434
|
+
Returns:
|
|
1435
|
+
TaskResult containing CreatePropertyListResponse with list_id
|
|
1436
|
+
"""
|
|
1437
|
+
operation_id = create_operation_id()
|
|
1438
|
+
params = request.model_dump(exclude_none=True)
|
|
1439
|
+
|
|
1440
|
+
self._emit_activity(
|
|
1441
|
+
Activity(
|
|
1442
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1443
|
+
operation_id=operation_id,
|
|
1444
|
+
agent_id=self.agent_config.id,
|
|
1445
|
+
task_type="create_property_list",
|
|
1446
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1447
|
+
)
|
|
1448
|
+
)
|
|
1449
|
+
|
|
1450
|
+
raw_result = await self.adapter.create_property_list(params)
|
|
1451
|
+
|
|
1452
|
+
self._emit_activity(
|
|
1453
|
+
Activity(
|
|
1454
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1455
|
+
operation_id=operation_id,
|
|
1456
|
+
agent_id=self.agent_config.id,
|
|
1457
|
+
task_type="create_property_list",
|
|
1458
|
+
status=raw_result.status,
|
|
1459
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1460
|
+
)
|
|
1461
|
+
)
|
|
1462
|
+
|
|
1463
|
+
return self.adapter._parse_response(raw_result, CreatePropertyListResponse)
|
|
1464
|
+
|
|
1465
|
+
async def get_property_list(
|
|
1466
|
+
self,
|
|
1467
|
+
request: GetPropertyListRequest,
|
|
1468
|
+
) -> TaskResult[GetPropertyListResponse]:
|
|
1469
|
+
"""
|
|
1470
|
+
Get a property list with optional resolution.
|
|
1471
|
+
|
|
1472
|
+
When resolve=true, returns the list of resolved property identifiers.
|
|
1473
|
+
Use this to get the actual properties that match the list's filters.
|
|
1474
|
+
|
|
1475
|
+
Args:
|
|
1476
|
+
request: Request parameters including list_id and resolve flag
|
|
1477
|
+
|
|
1478
|
+
Returns:
|
|
1479
|
+
TaskResult containing GetPropertyListResponse with identifiers
|
|
1480
|
+
"""
|
|
1481
|
+
operation_id = create_operation_id()
|
|
1482
|
+
params = request.model_dump(exclude_none=True)
|
|
1483
|
+
|
|
1484
|
+
self._emit_activity(
|
|
1485
|
+
Activity(
|
|
1486
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1487
|
+
operation_id=operation_id,
|
|
1488
|
+
agent_id=self.agent_config.id,
|
|
1489
|
+
task_type="get_property_list",
|
|
1490
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1491
|
+
)
|
|
1492
|
+
)
|
|
1493
|
+
|
|
1494
|
+
raw_result = await self.adapter.get_property_list(params)
|
|
1495
|
+
|
|
1496
|
+
self._emit_activity(
|
|
1497
|
+
Activity(
|
|
1498
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1499
|
+
operation_id=operation_id,
|
|
1500
|
+
agent_id=self.agent_config.id,
|
|
1501
|
+
task_type="get_property_list",
|
|
1502
|
+
status=raw_result.status,
|
|
1503
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1504
|
+
)
|
|
1505
|
+
)
|
|
1506
|
+
|
|
1507
|
+
return self.adapter._parse_response(raw_result, GetPropertyListResponse)
|
|
1508
|
+
|
|
1509
|
+
async def list_property_lists(
|
|
1510
|
+
self,
|
|
1511
|
+
request: ListPropertyListsRequest,
|
|
1512
|
+
) -> TaskResult[ListPropertyListsResponse]:
|
|
1513
|
+
"""
|
|
1514
|
+
List property lists owned by a principal.
|
|
1515
|
+
|
|
1516
|
+
Retrieves metadata for all property lists, optionally filtered
|
|
1517
|
+
by principal or pagination parameters.
|
|
1518
|
+
|
|
1519
|
+
Args:
|
|
1520
|
+
request: Request parameters with optional filtering
|
|
1521
|
+
|
|
1522
|
+
Returns:
|
|
1523
|
+
TaskResult containing ListPropertyListsResponse
|
|
1524
|
+
"""
|
|
1525
|
+
operation_id = create_operation_id()
|
|
1526
|
+
params = request.model_dump(exclude_none=True)
|
|
1527
|
+
|
|
1528
|
+
self._emit_activity(
|
|
1529
|
+
Activity(
|
|
1530
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1531
|
+
operation_id=operation_id,
|
|
1532
|
+
agent_id=self.agent_config.id,
|
|
1533
|
+
task_type="list_property_lists",
|
|
1534
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1535
|
+
)
|
|
1536
|
+
)
|
|
1537
|
+
|
|
1538
|
+
raw_result = await self.adapter.list_property_lists(params)
|
|
1539
|
+
|
|
1540
|
+
self._emit_activity(
|
|
1541
|
+
Activity(
|
|
1542
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1543
|
+
operation_id=operation_id,
|
|
1544
|
+
agent_id=self.agent_config.id,
|
|
1545
|
+
task_type="list_property_lists",
|
|
1546
|
+
status=raw_result.status,
|
|
1547
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1548
|
+
)
|
|
1549
|
+
)
|
|
1550
|
+
|
|
1551
|
+
return self.adapter._parse_response(raw_result, ListPropertyListsResponse)
|
|
1552
|
+
|
|
1553
|
+
async def update_property_list(
|
|
1554
|
+
self,
|
|
1555
|
+
request: UpdatePropertyListRequest,
|
|
1556
|
+
) -> TaskResult[UpdatePropertyListResponse]:
|
|
1557
|
+
"""
|
|
1558
|
+
Update a property list.
|
|
1559
|
+
|
|
1560
|
+
Modifies the filters, brand manifest, or other parameters
|
|
1561
|
+
of an existing property list.
|
|
1562
|
+
|
|
1563
|
+
Args:
|
|
1564
|
+
request: Request parameters with list_id and updates
|
|
1565
|
+
|
|
1566
|
+
Returns:
|
|
1567
|
+
TaskResult containing UpdatePropertyListResponse
|
|
1568
|
+
"""
|
|
1569
|
+
operation_id = create_operation_id()
|
|
1570
|
+
params = request.model_dump(exclude_none=True)
|
|
1571
|
+
|
|
1572
|
+
self._emit_activity(
|
|
1573
|
+
Activity(
|
|
1574
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1575
|
+
operation_id=operation_id,
|
|
1576
|
+
agent_id=self.agent_config.id,
|
|
1577
|
+
task_type="update_property_list",
|
|
1578
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1579
|
+
)
|
|
1580
|
+
)
|
|
1581
|
+
|
|
1582
|
+
raw_result = await self.adapter.update_property_list(params)
|
|
1583
|
+
|
|
1584
|
+
self._emit_activity(
|
|
1585
|
+
Activity(
|
|
1586
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1587
|
+
operation_id=operation_id,
|
|
1588
|
+
agent_id=self.agent_config.id,
|
|
1589
|
+
task_type="update_property_list",
|
|
1590
|
+
status=raw_result.status,
|
|
1591
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1592
|
+
)
|
|
1593
|
+
)
|
|
1594
|
+
|
|
1595
|
+
return self.adapter._parse_response(raw_result, UpdatePropertyListResponse)
|
|
1596
|
+
|
|
1597
|
+
async def delete_property_list(
|
|
1598
|
+
self,
|
|
1599
|
+
request: DeletePropertyListRequest,
|
|
1600
|
+
) -> TaskResult[DeletePropertyListResponse]:
|
|
1601
|
+
"""
|
|
1602
|
+
Delete a property list.
|
|
1603
|
+
|
|
1604
|
+
Removes a property list. Any active subscriptions to this list
|
|
1605
|
+
will be terminated.
|
|
1606
|
+
|
|
1607
|
+
Args:
|
|
1608
|
+
request: Request parameters with list_id
|
|
1609
|
+
|
|
1610
|
+
Returns:
|
|
1611
|
+
TaskResult containing DeletePropertyListResponse
|
|
1612
|
+
"""
|
|
1613
|
+
operation_id = create_operation_id()
|
|
1614
|
+
params = request.model_dump(exclude_none=True)
|
|
1615
|
+
|
|
1616
|
+
self._emit_activity(
|
|
1617
|
+
Activity(
|
|
1618
|
+
type=ActivityType.PROTOCOL_REQUEST,
|
|
1619
|
+
operation_id=operation_id,
|
|
1620
|
+
agent_id=self.agent_config.id,
|
|
1621
|
+
task_type="delete_property_list",
|
|
1622
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1623
|
+
)
|
|
1624
|
+
)
|
|
1625
|
+
|
|
1626
|
+
raw_result = await self.adapter.delete_property_list(params)
|
|
1627
|
+
|
|
1628
|
+
self._emit_activity(
|
|
1629
|
+
Activity(
|
|
1630
|
+
type=ActivityType.PROTOCOL_RESPONSE,
|
|
1631
|
+
operation_id=operation_id,
|
|
1632
|
+
agent_id=self.agent_config.id,
|
|
1633
|
+
task_type="delete_property_list",
|
|
1634
|
+
status=raw_result.status,
|
|
1635
|
+
timestamp=datetime.now(timezone.utc).isoformat(),
|
|
1636
|
+
)
|
|
1637
|
+
)
|
|
1638
|
+
|
|
1639
|
+
return self.adapter._parse_response(raw_result, DeletePropertyListResponse)
|
|
1640
|
+
|
|
776
1641
|
async def list_tools(self) -> list[str]:
|
|
777
1642
|
"""
|
|
778
1643
|
List available tools from the agent.
|