From 5fcecb0045bfd7a30981f7a731213c3e059577c0 Mon Sep 17 00:00:00 2001 From: Karim Rahme Date: Mon, 28 Sep 2026 10:15:28 +0200 Subject: [PATCH 1/2] harden tool build --- CHANGELOG.md | 6 + src/metorial/_generated/magnetar/__init__.py | 20 ++ .../_generated/magnetar/endpoints/__init__.py | 4 + .../magnetar/endpoints/callbacks.py | 5 +- .../magnetar/endpoints/chats_channels.py | 5 +- .../endpoints/dashboard_instance_callbacks.py | 5 +- .../dashboard_instance_chats_channels.py | 5 +- .../dashboard_instance_integrations.py | 10 +- ...tance_provider_deployments_auth_configs.py | 5 +- .../dashboard_instance_providers_triggers.py | 12 +- ...ashboard_organizations_event_deliveries.py | 84 +++++ ...d_organizations_event_delivery_attempts.py | 67 ++++ ...ganizations_event_destination_listeners.py | 15 +- ...hboard_organizations_event_destinations.py | 39 +- .../dashboard_organizations_events.py | 16 +- ...dashboard_organizations_outposts_access.py | 5 +- .../dashboard_organizations_webhook_events.py | 2 +- .../magnetar/endpoints/integrations.py | 10 +- .../management_instance_callbacks.py | 5 +- .../management_instance_chats_channels.py | 5 +- .../management_instance_integrations.py | 10 +- ...tance_provider_deployments_auth_configs.py | 5 +- .../management_instance_providers_triggers.py | 8 +- ...anagement_organization_event_deliveries.py | 81 +++++ ...nt_organization_event_delivery_attempts.py | 65 ++++ ...rganization_event_destination_listeners.py | 15 +- ...agement_organization_event_destinations.py | 38 +- .../management_organization_events.py | 16 +- .../management_organization_webhook_events.py | 2 +- .../provider_deployments_auth_configs.py | 5 +- .../magnetar/endpoints/providers_triggers.py | 8 +- .../magnetar/resources/callback_events/get.py | 2 + .../resources/callback_events/list.py | 120 ------- .../magnetar/resources/callbacks/list.py | 2 + .../magnetar/resources/chat/events/get.py | 4 +- .../magnetar/resources/chat/events/list.py | 6 +- .../magnetar/resources/chats/channels/get.py | 50 +++ .../magnetar/resources/chats/channels/list.py | 54 ++- .../magnetar/resources/chats/dms/open.py | 50 +++ .../dashboard/instance/callback_events/get.py | 2 + .../instance/callback_events/list.py | 120 ------- .../dashboard/instance/callbacks/list.py | 2 + .../dashboard/instance/chat/events/get.py | 4 +- .../dashboard/instance/chat/events/list.py | 6 +- .../dashboard/instance/chats/channels/get.py | 50 +++ .../dashboard/instance/chats/channels/list.py | 54 ++- .../dashboard/instance/chats/dms/open.py | 50 +++ .../dashboard/instance/integrations/create.py | 6 +- .../dashboard/instance/integrations/delete.py | 2 + .../dashboard/instance/integrations/get.py | 2 + .../dashboard/instance/integrations/list.py | 2 + .../dashboard/instance/integrations/update.py | 6 +- .../provider_deployments/auth_configs/list.py | 2 + .../instance/providers/triggers/list.py | 6 +- .../dashboard/instance/skills/create.py | 2 + .../dashboard/instance/skills/delete.py | 2 + .../dashboard/instance/skills/duplicate.py | 2 + .../dashboard/instance/skills/fork.py | 2 + .../dashboard/instance/skills/get.py | 2 + .../dashboard/instance/skills/items/create.py | 2 + .../dashboard/instance/skills/items/delete.py | 2 + .../dashboard/instance/skills/items/get.py | 2 + .../dashboard/instance/skills/items/list.py | 2 + .../dashboard/instance/skills/list.py | 2 + .../instance/skills/publish_consumer_skill.py | 2 + .../dashboard/instance/skills/share.py | 2 + .../instance/skills/templates/create.py | 2 + .../instance/skills/templates/delete.py | 2 + .../instance/skills/templates/get.py | 2 + .../instance/skills/templates/items/create.py | 2 + .../instance/skills/templates/items/delete.py | 2 + .../instance/skills/templates/items/get.py | 2 + .../instance/skills/templates/items/list.py | 2 + .../instance/skills/templates/list.py | 2 + .../instance/skills/templates/update.py | 2 + .../dashboard/instance/skills/update.py | 2 + .../dashboard/organizations/__init__.py | 2 + .../event_deliveries/__init__.py | 3 + .../organizations/event_deliveries/get.py | 258 ++++++++++++++ .../organizations/event_deliveries/list.py | 337 ++++++++++++++++++ .../organizations/event_deliveries/retry.py | 258 ++++++++++++++ .../event_delivery_attempts/__init__.py | 2 + .../event_delivery_attempts/get.py | 162 +++++++++ .../event_delivery_attempts/list.py | 239 +++++++++++++ .../event_destination_listeners/create.py | 6 +- .../event_destination_listeners/delete.py | 6 +- .../event_destination_listeners/get.py | 6 +- .../event_destination_listeners/list.py | 12 +- .../event_destination_listeners/update.py | 6 +- .../event_destinations/__init__.py | 1 + .../event_destinations/archive.py | 32 +- .../event_destinations/create.py | 60 +++- .../organizations/event_destinations/get.py | 32 +- .../organizations/event_destinations/list.py | 40 ++- .../organizations/event_destinations/ping.py | 258 ++++++++++++++ .../rotate_webhook_secret.py | 32 +- .../event_destinations/update.py | 60 +++- .../dashboard/organizations/events/get.py | 14 +- .../dashboard/organizations/events/list.py | 22 +- .../organizations/webhook_events/list.py | 4 +- .../magnetar/resources/integrations/create.py | 6 +- .../magnetar/resources/integrations/delete.py | 2 + .../magnetar/resources/integrations/get.py | 2 + .../magnetar/resources/integrations/list.py | 2 + .../magnetar/resources/integrations/update.py | 6 +- .../instance/callback_events/get.py | 2 + .../instance/callback_events/list.py | 120 ------- .../management/instance/callbacks/list.py | 2 + .../management/instance/chat/events/get.py | 4 +- .../management/instance/chat/events/list.py | 6 +- .../management/instance/chats/channels/get.py | 50 +++ .../instance/chats/channels/list.py | 54 ++- .../management/instance/chats/dms/open.py | 50 +++ .../instance/integrations/create.py | 6 +- .../instance/integrations/delete.py | 2 + .../management/instance/integrations/get.py | 2 + .../management/instance/integrations/list.py | 2 + .../instance/integrations/update.py | 6 +- .../provider_deployments/auth_configs/list.py | 2 + .../management/instance/skills/create.py | 2 + .../management/instance/skills/delete.py | 2 + .../management/instance/skills/duplicate.py | 2 + .../management/instance/skills/fork.py | 2 + .../management/instance/skills/get.py | 2 + .../instance/skills/items/create.py | 2 + .../instance/skills/items/delete.py | 2 + .../management/instance/skills/items/get.py | 2 + .../management/instance/skills/items/list.py | 2 + .../management/instance/skills/list.py | 2 + .../instance/skills/publish_consumer_skill.py | 2 + .../management/instance/skills/share.py | 2 + .../instance/skills/templates/create.py | 2 + .../instance/skills/templates/delete.py | 2 + .../instance/skills/templates/get.py | 2 + .../instance/skills/templates/items/create.py | 2 + .../instance/skills/templates/items/delete.py | 2 + .../instance/skills/templates/items/get.py | 2 + .../instance/skills/templates/items/list.py | 2 + .../instance/skills/templates/list.py | 2 + .../instance/skills/templates/update.py | 2 + .../management/instance/skills/update.py | 2 + .../management/organization/__init__.py | 2 + .../organization/event_deliveries/__init__.py | 3 + .../organization/event_deliveries/get.py | 258 ++++++++++++++ .../organization/event_deliveries/list.py | 337 ++++++++++++++++++ .../organization/event_deliveries/retry.py | 258 ++++++++++++++ .../event_delivery_attempts/__init__.py | 2 + .../event_delivery_attempts/get.py | 162 +++++++++ .../event_delivery_attempts/list.py | 239 +++++++++++++ .../event_destination_listeners/create.py | 6 +- .../event_destination_listeners/delete.py | 6 +- .../event_destination_listeners/get.py | 6 +- .../event_destination_listeners/list.py | 12 +- .../event_destination_listeners/update.py | 6 +- .../event_destinations/__init__.py | 1 + .../event_destinations/archive.py | 32 +- .../organization/event_destinations/create.py | 60 +++- .../organization/event_destinations/get.py | 32 +- .../organization/event_destinations/list.py | 40 ++- .../organization/event_destinations/ping.py | 258 ++++++++++++++ .../rotate_webhook_secret.py | 32 +- .../organization/event_destinations/update.py | 60 +++- .../management/organization/events/get.py | 14 +- .../management/organization/events/list.py | 22 +- .../organization/webhook_events/list.py | 4 +- .../provider_deployments/auth_configs/list.py | 2 + .../magnetar/resources/skills/create.py | 2 + .../magnetar/resources/skills/delete.py | 2 + .../magnetar/resources/skills/duplicate.py | 2 + .../magnetar/resources/skills/fork.py | 2 + .../magnetar/resources/skills/get.py | 2 + .../magnetar/resources/skills/items/create.py | 2 + .../magnetar/resources/skills/items/delete.py | 2 + .../magnetar/resources/skills/items/get.py | 2 + .../magnetar/resources/skills/items/list.py | 2 + .../magnetar/resources/skills/list.py | 2 + .../skills/publish_consumer_skill.py | 2 + .../magnetar/resources/skills/share.py | 2 + .../resources/skills/templates/create.py | 2 + .../resources/skills/templates/delete.py | 2 + .../resources/skills/templates/get.py | 2 + .../skills/templates/items/create.py | 2 + .../skills/templates/items/delete.py | 2 + .../resources/skills/templates/items/get.py | 2 + .../resources/skills/templates/items/list.py | 2 + .../resources/skills/templates/list.py | 2 + .../resources/skills/templates/update.py | 2 + .../magnetar/resources/skills/update.py | 2 + src/metorial/_magnetar_sdk.py | 25 +- src/metorial/_version.py | 2 +- src/metorial/integrations/autogen.py | 206 +++++++---- tests/test_autogen_integration.py | 258 ++++++++++++++ 192 files changed, 5224 insertions(+), 611 deletions(-) create mode 100644 src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_deliveries.py create mode 100644 src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_delivery_attempts.py create mode 100644 src/metorial/_generated/magnetar/endpoints/management_organization_event_deliveries.py create mode 100644 src/metorial/_generated/magnetar/endpoints/management_organization_event_delivery_attempts.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/__init__.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/get.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/list.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/retry.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/__init__.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/get.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/list.py create mode 100644 src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/ping.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/__init__.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/get.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/list.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/retry.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/__init__.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/get.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/list.py create mode 100644 src/metorial/_generated/magnetar/resources/management/organization/event_destinations/ping.py create mode 100644 tests/test_autogen_integration.py diff --git a/CHANGELOG.md b/CHANGELOG.md index a8cbe9ce..424f2ebc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to the Metorial Python SDK will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.4.1] - 2026-09-27 + +### Changed + +- Hardened how the Autogen integration builds tools. `create_autogen_tools()` now constructs each tool wrapper from an explicit `inspect.Signature` instead of assembling and compiling a source string, so tool metadata returned by an MCP server (name, description, and JSON-schema property names) is only ever handled as data. Tool and parameter names are also validated (`^[A-Za-z_][A-Za-z0-9_]{0,63}$`, excluding Python keywords and reserved names); a tool with an unusable name is skipped with a logged warning. Behavior is unchanged for well-formed tools. + ## [2.4.0] - 2026-07-05 This release contains breaking API and packaging changes. diff --git a/src/metorial/_generated/magnetar/__init__.py b/src/metorial/_generated/magnetar/__init__.py index 39c60647..eb9ece47 100644 --- a/src/metorial/_generated/magnetar/__init__.py +++ b/src/metorial/_generated/magnetar/__init__.py @@ -823,6 +823,13 @@ # DashboardOrganizationsApiKeysRotateOutput # DashboardOrganizationsApiKeysUpdateBody # DashboardOrganizationsApiKeysUpdateOutput +# DashboardOrganizationsEventDeliveriesGetOutput +# DashboardOrganizationsEventDeliveriesListOutput +# DashboardOrganizationsEventDeliveriesListQuery +# DashboardOrganizationsEventDeliveriesRetryOutput +# DashboardOrganizationsEventDeliveryAttemptsGetOutput +# DashboardOrganizationsEventDeliveryAttemptsListOutput +# DashboardOrganizationsEventDeliveryAttemptsListQuery # DashboardOrganizationsEventDestinationListenersCreateBody # DashboardOrganizationsEventDestinationListenersCreateOutput # DashboardOrganizationsEventDestinationListenersDeleteOutput @@ -837,6 +844,7 @@ # DashboardOrganizationsEventDestinationsGetOutput # DashboardOrganizationsEventDestinationsListOutput # DashboardOrganizationsEventDestinationsListQuery +# DashboardOrganizationsEventDestinationsPingOutput # DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput # DashboardOrganizationsEventDestinationsUpdateBody # DashboardOrganizationsEventDestinationsUpdateOutput @@ -867,6 +875,8 @@ # DashboardOrganizationsWebhookEventsListOutput # InstancesGetOutput # InstancesListOutput +# ManagementInstanceProvidersTriggersListOutput +# ManagementInstanceProvidersTriggersListQuery # TestHelpersConsumerOauthAuthorizationsCreateBody # TestHelpersConsumerOauthAuthorizationsCreateOutput # TokenGetOutput @@ -1689,6 +1699,13 @@ # mapDashboardOrganizationsApiKeysRotateOutput # mapDashboardOrganizationsApiKeysUpdateBody # mapDashboardOrganizationsApiKeysUpdateOutput +# mapDashboardOrganizationsEventDeliveriesGetOutput +# mapDashboardOrganizationsEventDeliveriesListOutput +# mapDashboardOrganizationsEventDeliveriesListQuery +# mapDashboardOrganizationsEventDeliveriesRetryOutput +# mapDashboardOrganizationsEventDeliveryAttemptsGetOutput +# mapDashboardOrganizationsEventDeliveryAttemptsListOutput +# mapDashboardOrganizationsEventDeliveryAttemptsListQuery # mapDashboardOrganizationsEventDestinationListenersCreateBody # mapDashboardOrganizationsEventDestinationListenersCreateOutput # mapDashboardOrganizationsEventDestinationListenersDeleteOutput @@ -1703,6 +1720,7 @@ # mapDashboardOrganizationsEventDestinationsGetOutput # mapDashboardOrganizationsEventDestinationsListOutput # mapDashboardOrganizationsEventDestinationsListQuery +# mapDashboardOrganizationsEventDestinationsPingOutput # mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput # mapDashboardOrganizationsEventDestinationsUpdateBody # mapDashboardOrganizationsEventDestinationsUpdateOutput @@ -1733,6 +1751,8 @@ # mapDashboardOrganizationsWebhookEventsListOutput # mapInstancesGetOutput # mapInstancesListOutput +# mapManagementInstanceProvidersTriggersListOutput +# mapManagementInstanceProvidersTriggersListQuery # mapTestHelpersConsumerOauthAuthorizationsCreateBody # mapTestHelpersConsumerOauthAuthorizationsCreateOutput # mapTokenGetOutput diff --git a/src/metorial/_generated/magnetar/endpoints/__init__.py b/src/metorial/_generated/magnetar/endpoints/__init__.py index ae900e00..16f72d71 100644 --- a/src/metorial/_generated/magnetar/endpoints/__init__.py +++ b/src/metorial/_generated/magnetar/endpoints/__init__.py @@ -173,6 +173,8 @@ from .dashboard_instance_stores_permissions import * from .dashboard_instance_tool_calls import * from .dashboard_organizations_api_keys import * +from .dashboard_organizations_event_deliveries import * +from .dashboard_organizations_event_delivery_attempts import * from .dashboard_organizations_event_destination_listeners import * from .dashboard_organizations_event_destinations import * from .dashboard_organizations_events import * @@ -347,6 +349,8 @@ from .management_instance_stores_permissions import * from .management_instance_tool_calls import * from .management_organization_api_keys import * +from .management_organization_event_deliveries import * +from .management_organization_event_delivery_attempts import * from .management_organization_event_destination_listeners import * from .management_organization_event_destinations import * from .management_organization_events import * diff --git a/src/metorial/_generated/magnetar/endpoints/callbacks.py b/src/metorial/_generated/magnetar/endpoints/callbacks.py index de9bbf17..09f3f225 100644 --- a/src/metorial/_generated/magnetar/endpoints/callbacks.py +++ b/src/metorial/_generated/magnetar/endpoints/callbacks.py @@ -8,7 +8,7 @@ class MetorialCallbacksEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: """ List callbacks Returns a paginated list of callbacks. @@ -22,6 +22,7 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be :param integration_id: Optional[Union[str, List[str]]] (optional) :param integration_provider_id: Optional[Union[str, List[str]]] (optional) :param provider_id: Optional[Union[str, List[str]]] (optional) + :param search: Optional[str] (optional) :param status: Optional[Union[str, List[str]]] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -47,6 +48,8 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be query_dict["integration_provider_id"] = integration_provider_id if provider_id is not None: query_dict["provider_id"] = provider_id + if search is not None: + query_dict["search"] = search if status is not None: query_dict["status"] = status if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/chats_channels.py b/src/metorial/_generated/magnetar/endpoints/chats_channels.py index ece7e4d4..e5116185 100644 --- a/src/metorial/_generated/magnetar/endpoints/chats_channels.py +++ b/src/metorial/_generated/magnetar/endpoints/chats_channels.py @@ -8,7 +8,7 @@ class MetorialChatsChannelsEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None) -> DashboardInstanceChatsChannelsListOutput: + def list(self, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None, has_access: Optional[bool] = None) -> DashboardInstanceChatsChannelsListOutput: """ List chat channels Returns a paginated list of channels for a chat. @@ -22,6 +22,7 @@ def list(self, chat_id: str, *, limit: Optional[float] = None, after: Optional[s :param workspace_id: Optional[str] (optional) :param type: Optional[str] (optional) :param search: Optional[str] (optional) + :param has_access: Optional[bool] (optional) :return: DashboardInstanceChatsChannelsListOutput """ # Build query parameters from keyword arguments @@ -42,6 +43,8 @@ def list(self, chat_id: str, *, limit: Optional[float] = None, after: Optional[s query_dict["type"] = type if search is not None: query_dict["search"] = search + if has_access is not None: + query_dict["has_access"] = has_access request = MetorialRequest( path=['chats', chat_id, 'channels'], diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_callbacks.py b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_callbacks.py index b3b54709..d9af75f8 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_callbacks.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_callbacks.py @@ -8,7 +8,7 @@ class MetorialDashboardInstanceCallbacksEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: + def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: """ List callbacks Returns a paginated list of callbacks. @@ -23,6 +23,7 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option :param integration_id: Optional[Union[str, List[str]]] (optional) :param integration_provider_id: Optional[Union[str, List[str]]] (optional) :param provider_id: Optional[Union[str, List[str]]] (optional) + :param search: Optional[str] (optional) :param status: Optional[Union[str, List[str]]] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -48,6 +49,8 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option query_dict["integration_provider_id"] = integration_provider_id if provider_id is not None: query_dict["provider_id"] = provider_id + if search is not None: + query_dict["search"] = search if status is not None: query_dict["status"] = status if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_chats_channels.py b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_chats_channels.py index 80b97752..c5a9b395 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_chats_channels.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_chats_channels.py @@ -8,7 +8,7 @@ class MetorialDashboardInstanceChatsChannelsEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None) -> DashboardInstanceChatsChannelsListOutput: + def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None, has_access: Optional[bool] = None) -> DashboardInstanceChatsChannelsListOutput: """ List chat channels Returns a paginated list of channels for a chat. @@ -23,6 +23,7 @@ def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, :param workspace_id: Optional[str] (optional) :param type: Optional[str] (optional) :param search: Optional[str] (optional) + :param has_access: Optional[bool] (optional) :return: DashboardInstanceChatsChannelsListOutput """ # Build query parameters from keyword arguments @@ -43,6 +44,8 @@ def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, query_dict["type"] = type if search is not None: query_dict["search"] = search + if has_access is not None: + query_dict["has_access"] = has_access request = MetorialRequest( path=['dashboard', 'instances', instance_id, 'chats', chat_id, 'channels'], diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_integrations.py b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_integrations.py index 2679fdc3..bd4610aa 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_integrations.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_integrations.py @@ -75,7 +75,7 @@ def get(self, instance_id: str, integration_id: str) -> DashboardInstanceIntegra ) return self._get(request).transform(mapDashboardInstanceIntegrationsGetOutput.from_dict) - def create(self, instance_id: str, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: + def create(self, instance_id: str, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: """ Create integration Creates a new integration. @@ -88,6 +88,7 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsCreateOutput """ # Build body parameters from keyword arguments @@ -105,6 +106,8 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['dashboard', 'instances', instance_id, 'integrations'], @@ -112,7 +115,7 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No ) return self._post(request).transform(mapDashboardInstanceIntegrationsCreateOutput.from_dict) - def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: + def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: """ Update integration Updates a specific integration. @@ -126,6 +129,7 @@ def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsUpdateOutput """ # Build body parameters from keyword arguments @@ -144,6 +148,8 @@ def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['dashboard', 'instances', instance_id, 'integrations', integration_id], diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_provider_deployments_auth_configs.py b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_provider_deployments_auth_configs.py index 42c19683..cbc7cb4f 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_provider_deployments_auth_configs.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_provider_deployments_auth_configs.py @@ -8,7 +8,7 @@ class MetorialDashboardInstanceProviderDeploymentsAuthConfigsEndpoint(BaseMetori def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: + def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, adapter: Optional[str] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: """ List provider auth configs Returns a paginated list of provider auth configs. @@ -31,6 +31,7 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option :param consumer_id: Optional[Union[str, List[str]]] (optional) :param identity_id: Optional[Union[str, List[str]]] (optional) :param identity_credential_id: Optional[Union[str, List[str]]] (optional) + :param adapter: Optional[str] (optional) :param search: Optional[str] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -72,6 +73,8 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option query_dict["identity_id"] = identity_id if identity_credential_id is not None: query_dict["identity_credential_id"] = identity_credential_id + if adapter is not None: + query_dict["adapter"] = adapter if search is not None: query_dict["search"] = search if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_providers_triggers.py b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_providers_triggers.py index 8c2f5e72..d60a7e4e 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_instance_providers_triggers.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_instance_providers_triggers.py @@ -8,10 +8,10 @@ class MetorialDashboardInstanceProvidersTriggersEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None) -> DashboardInstanceProvidersTriggersListOutput: + def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, provider_version_id: Optional[str] = None, user_managed_callbacks: Optional[bool] = None) -> DashboardInstanceProvidersTriggersListOutput: """ List provider triggers - Returns a paginated list of provider triggers for a specific provider version. + Returns a paginated list of provider triggers for a provider version or all active user-managed callbacks in the instance. :param instance_id: str :param limit: Optional[float] (optional) @@ -19,7 +19,8 @@ def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[fl :param before: Optional[str] (optional) :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) - :param provider_version_id: str + :param provider_version_id: Optional[str] (optional) + :param user_managed_callbacks: Optional[bool] (optional) :return: DashboardInstanceProvidersTriggersListOutput """ # Build query parameters from keyword arguments @@ -34,7 +35,10 @@ def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[fl query_dict["cursor"] = cursor if order is not None: query_dict["order"] = order - query_dict["provider_version_id"] = provider_version_id + if provider_version_id is not None: + query_dict["provider_version_id"] = provider_version_id + if user_managed_callbacks is not None: + query_dict["user_managed_callbacks"] = user_managed_callbacks request = MetorialRequest( path=['dashboard', 'instances', instance_id, 'provider-triggers'], diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_deliveries.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_deliveries.py new file mode 100644 index 00000000..bffe6dac --- /dev/null +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_deliveries.py @@ -0,0 +1,84 @@ +from typing import Any, Dict, List, Optional, Union +from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest +from ..resources import mapDashboardOrganizationsEventDeliveriesListOutput, DashboardOrganizationsEventDeliveriesListOutput, mapDashboardOrganizationsEventDeliveriesListQuery, DashboardOrganizationsEventDeliveriesListQuery, mapDashboardOrganizationsEventDeliveriesGetOutput, DashboardOrganizationsEventDeliveriesGetOutput, mapDashboardOrganizationsEventDeliveriesRetryOutput, DashboardOrganizationsEventDeliveriesRetryOutput + +class MetorialDashboardOrganizationsEventDeliveriesEndpoint(BaseMetorialEndpoint): + """An event delivery is Metorial's record of sending one event to one event destination, including every attempt it took to get there.""" + + def __init__(self, config: MetorialEndpointManager): + super().__init__(config) + + def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, event_id: Optional[Union[str, List[str]]] = None, event_type: Optional[Union[str, List[str]]] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDeliveriesListOutput: + """ + List event deliveries + List event deliveries recorded for the organization + + :param organization_id: str + :param limit: Optional[float] (optional) + :param after: Optional[str] (optional) + :param before: Optional[str] (optional) + :param cursor: Optional[str] (optional) + :param order: Optional[str] (optional) + :param status: Optional[Union[str, List[str]]] (optional) + :param event_id: Optional[Union[str, List[str]]] (optional) + :param event_type: Optional[Union[str, List[str]]] (optional) + :param event_destination_id: Optional[Union[str, List[str]]] (optional) + :param instance_id: Optional[Union[str, List[str]]] (optional) + :return: DashboardOrganizationsEventDeliveriesListOutput + """ + # Build query parameters from keyword arguments + query_dict = {} + if limit is not None: + query_dict["limit"] = limit + if after is not None: + query_dict["after"] = after + if before is not None: + query_dict["before"] = before + if cursor is not None: + query_dict["cursor"] = cursor + if order is not None: + query_dict["order"] = order + if status is not None: + query_dict["status"] = status + if event_id is not None: + query_dict["event_id"] = event_id + if event_type is not None: + query_dict["event_type"] = event_type + if event_destination_id is not None: + query_dict["event_destination_id"] = event_destination_id + if instance_id is not None: + query_dict["instance_id"] = instance_id + + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-deliveries'], + query=query_dict + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveriesListOutput.from_dict) + + def get(self, organization_id: str, event_delivery_id: str) -> DashboardOrganizationsEventDeliveriesGetOutput: + """ + Get event delivery + Get a specific event delivery recorded for the organization + + :param organization_id: str + :param event_delivery_id: str + :return: DashboardOrganizationsEventDeliveriesGetOutput + """ + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-deliveries', event_delivery_id] + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveriesGetOutput.from_dict) + + def retry(self, organization_id: str, event_delivery_id: str) -> DashboardOrganizationsEventDeliveriesRetryOutput: + """ + Retry event delivery + Schedules another attempt for a delivery that has finished, whether it succeeded or gave up. The delivery is given a fresh attempt budget. + + :param organization_id: str + :param event_delivery_id: str + :return: DashboardOrganizationsEventDeliveriesRetryOutput + """ + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-deliveries', event_delivery_id, 'retry'] + ) + return self._post(request).transform(mapDashboardOrganizationsEventDeliveriesRetryOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_delivery_attempts.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_delivery_attempts.py new file mode 100644 index 00000000..7066a79c --- /dev/null +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_delivery_attempts.py @@ -0,0 +1,67 @@ +from typing import Any, Dict, List, Optional, Union +from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest +from ..resources import mapDashboardOrganizationsEventDeliveryAttemptsListOutput, DashboardOrganizationsEventDeliveryAttemptsListOutput, mapDashboardOrganizationsEventDeliveryAttemptsListQuery, DashboardOrganizationsEventDeliveryAttemptsListQuery, mapDashboardOrganizationsEventDeliveryAttemptsGetOutput, DashboardOrganizationsEventDeliveryAttemptsGetOutput + +class MetorialDashboardOrganizationsEventDeliveryAttemptsEndpoint(BaseMetorialEndpoint): + """A delivery attempt is one request Metorial made to an event destination, with the request it sent and the response it got back.""" + + def __init__(self, config: MetorialEndpointManager): + super().__init__(config) + + def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, event_delivery_id: Optional[Union[str, List[str]]] = None, event_id: Optional[Union[str, List[str]]] = None, event_destination_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDeliveryAttemptsListOutput: + """ + List event delivery attempts + List delivery attempts recorded for the organization + + :param organization_id: str + :param limit: Optional[float] (optional) + :param after: Optional[str] (optional) + :param before: Optional[str] (optional) + :param cursor: Optional[str] (optional) + :param order: Optional[str] (optional) + :param status: Optional[Union[str, List[str]]] (optional) + :param event_delivery_id: Optional[Union[str, List[str]]] (optional) + :param event_id: Optional[Union[str, List[str]]] (optional) + :param event_destination_id: Optional[Union[str, List[str]]] (optional) + :return: DashboardOrganizationsEventDeliveryAttemptsListOutput + """ + # Build query parameters from keyword arguments + query_dict = {} + if limit is not None: + query_dict["limit"] = limit + if after is not None: + query_dict["after"] = after + if before is not None: + query_dict["before"] = before + if cursor is not None: + query_dict["cursor"] = cursor + if order is not None: + query_dict["order"] = order + if status is not None: + query_dict["status"] = status + if event_delivery_id is not None: + query_dict["event_delivery_id"] = event_delivery_id + if event_id is not None: + query_dict["event_id"] = event_id + if event_destination_id is not None: + query_dict["event_destination_id"] = event_destination_id + + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-delivery-attempts'], + query=query_dict + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveryAttemptsListOutput.from_dict) + + def get(self, organization_id: str, event_delivery_attempt_id: str) -> DashboardOrganizationsEventDeliveryAttemptsGetOutput: + """ + Get event delivery attempt + Get a specific delivery attempt, including the request Metorial sent and the response the destination returned + + :param organization_id: str + :param event_delivery_attempt_id: str + :return: DashboardOrganizationsEventDeliveryAttemptsGetOutput + """ + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-delivery-attempts', event_delivery_attempt_id] + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveryAttemptsGetOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destination_listeners.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destination_listeners.py index d8e31a15..38bfd34e 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destination_listeners.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destination_listeners.py @@ -3,12 +3,12 @@ from ..resources import mapDashboardOrganizationsEventDestinationListenersListOutput, DashboardOrganizationsEventDestinationListenersListOutput, mapDashboardOrganizationsEventDestinationListenersListQuery, DashboardOrganizationsEventDestinationListenersListQuery, mapDashboardOrganizationsEventDestinationListenersGetOutput, DashboardOrganizationsEventDestinationListenersGetOutput, mapDashboardOrganizationsEventDestinationListenersCreateOutput, DashboardOrganizationsEventDestinationListenersCreateOutput, mapDashboardOrganizationsEventDestinationListenersCreateBody, DashboardOrganizationsEventDestinationListenersCreateBody, mapDashboardOrganizationsEventDestinationListenersUpdateOutput, DashboardOrganizationsEventDestinationListenersUpdateOutput, mapDashboardOrganizationsEventDestinationListenersUpdateBody, DashboardOrganizationsEventDestinationListenersUpdateBody, mapDashboardOrganizationsEventDestinationListenersDeleteOutput, DashboardOrganizationsEventDestinationListenersDeleteOutput class MetorialDashboardOrganizationsEventDestinationListenersEndpoint(BaseMetorialEndpoint): - """Event destination listeners subscribe an event destination to events for a specific instance — generic resource events, a callback's trigger events, or a chat integration's events.""" + """Event destination listeners subscribe an event destination to events for a specific instance — generic resource events, a callback's trigger events, or a chat connection's events.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_integration_id: Optional[Union[str, List[str]]] = None, type: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationListenersListOutput: + def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, type: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationListenersListOutput: """ List event destination listeners Returns a paginated list of event destination listeners for the organization. @@ -22,7 +22,8 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op :param event_destination_id: Optional[Union[str, List[str]]] (optional) :param instance_id: Optional[Union[str, List[str]]] (optional) :param callback_id: Optional[Union[str, List[str]]] (optional) - :param chat_integration_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param provider_id: Optional[Union[str, List[str]]] (optional) :param type: Optional[Union[str, List[str]]] (optional) :return: DashboardOrganizationsEventDestinationListenersListOutput """ @@ -44,8 +45,10 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op query_dict["instance_id"] = instance_id if callback_id is not None: query_dict["callback_id"] = callback_id - if chat_integration_id is not None: - query_dict["chat_integration_id"] = chat_integration_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if provider_id is not None: + query_dict["provider_id"] = provider_id if type is not None: query_dict["type"] = type @@ -72,7 +75,7 @@ def get(self, organization_id: str, event_destination_listener_id: str) -> Dashb def create(self, organization_id: str) -> DashboardOrganizationsEventDestinationListenersCreateOutput: """ Create event destination listener - Subscribes an event destination to events for this instance — generic resource events, a callback's trigger events, or a chat integration's events. + Subscribes an event destination to events for this instance — generic resource events, a callback's trigger events, or a chat connection's events. :param organization_id: str :return: DashboardOrganizationsEventDestinationListenersCreateOutput diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destinations.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destinations.py index 754ba55d..dafe71d5 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destinations.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_event_destinations.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional, Union from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest -from ..resources import mapDashboardOrganizationsEventDestinationsListOutput, DashboardOrganizationsEventDestinationsListOutput, mapDashboardOrganizationsEventDestinationsListQuery, DashboardOrganizationsEventDestinationsListQuery, mapDashboardOrganizationsEventDestinationsGetOutput, DashboardOrganizationsEventDestinationsGetOutput, mapDashboardOrganizationsEventDestinationsCreateOutput, DashboardOrganizationsEventDestinationsCreateOutput, mapDashboardOrganizationsEventDestinationsCreateBody, DashboardOrganizationsEventDestinationsCreateBody, mapDashboardOrganizationsEventDestinationsUpdateOutput, DashboardOrganizationsEventDestinationsUpdateOutput, mapDashboardOrganizationsEventDestinationsUpdateBody, DashboardOrganizationsEventDestinationsUpdateBody, mapDashboardOrganizationsEventDestinationsArchiveOutput, DashboardOrganizationsEventDestinationsArchiveOutput, mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput +from ..resources import mapDashboardOrganizationsEventDestinationsListOutput, DashboardOrganizationsEventDestinationsListOutput, mapDashboardOrganizationsEventDestinationsListQuery, DashboardOrganizationsEventDestinationsListQuery, mapDashboardOrganizationsEventDestinationsGetOutput, DashboardOrganizationsEventDestinationsGetOutput, mapDashboardOrganizationsEventDestinationsCreateOutput, DashboardOrganizationsEventDestinationsCreateOutput, mapDashboardOrganizationsEventDestinationsCreateBody, DashboardOrganizationsEventDestinationsCreateBody, mapDashboardOrganizationsEventDestinationsUpdateOutput, DashboardOrganizationsEventDestinationsUpdateOutput, mapDashboardOrganizationsEventDestinationsUpdateBody, DashboardOrganizationsEventDestinationsUpdateBody, mapDashboardOrganizationsEventDestinationsArchiveOutput, DashboardOrganizationsEventDestinationsArchiveOutput, mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, mapDashboardOrganizationsEventDestinationsPingOutput, DashboardOrganizationsEventDestinationsPingOutput class MetorialDashboardOrganizationsEventDestinationsEndpoint(BaseMetorialEndpoint): """Event destinations are where Metorial delivers system events for your organization. Webhooks are currently the only supported delivery type.""" @@ -8,7 +8,7 @@ class MetorialDashboardOrganizationsEventDestinationsEndpoint(BaseMetorialEndpoi def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationsListOutput: + def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None) -> DashboardOrganizationsEventDestinationsListOutput: """ List event destinations List all event destinations configured for the organization @@ -20,6 +20,9 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) :param status: Optional[Union[str, List[str]]] (optional) + :param callback_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param search: Optional[str] (optional) :return: DashboardOrganizationsEventDestinationsListOutput """ # Build query parameters from keyword arguments @@ -36,6 +39,12 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op query_dict["order"] = order if status is not None: query_dict["status"] = status + if callback_id is not None: + query_dict["callback_id"] = callback_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if search is not None: + query_dict["search"] = search request = MetorialRequest( path=['dashboard', 'organizations', organization_id, 'event-destinations'], @@ -57,7 +66,7 @@ def get(self, organization_id: str, event_destination_id: str) -> DashboardOrgan ) return self._get(request).transform(mapDashboardOrganizationsEventDestinationsGetOutput.from_dict) - def create(self, organization_id: str, *, name: str, type: Any, webhook: Dict[str, Any], description: Optional[str] = None) -> DashboardOrganizationsEventDestinationsCreateOutput: + def create(self, organization_id: str, *, name: str, type: Any, webhook: Dict[str, Any], description: Optional[str] = None, retry: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsCreateOutput: """ Create event destination Create an event destination for the organization @@ -67,6 +76,7 @@ def create(self, organization_id: str, *, name: str, type: Any, webhook: Dict[st :param description: Optional[str] (optional) :param type: Any :param webhook: Dict[str, Any] + :param retry: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventDestinationsCreateOutput """ # Build body parameters from keyword arguments @@ -76,6 +86,8 @@ def create(self, organization_id: str, *, name: str, type: Any, webhook: Dict[st body_dict["description"] = description body_dict["type"] = type body_dict["webhook"] = webhook + if retry is not None: + body_dict["retry"] = retry request = MetorialRequest( path=['dashboard', 'organizations', organization_id, 'event-destinations'], @@ -83,7 +95,7 @@ def create(self, organization_id: str, *, name: str, type: Any, webhook: Dict[st ) return self._post(request).transform(mapDashboardOrganizationsEventDestinationsCreateOutput.from_dict) - def update(self, organization_id: str, event_destination_id: str, *, name: Optional[str] = None, description: Optional[str] = None, webhook: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsUpdateOutput: + def update(self, organization_id: str, event_destination_id: str, *, name: Optional[str] = None, description: Optional[str] = None, webhook: Optional[Dict[str, Any]] = None, retry: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsUpdateOutput: """ Update event destination Update an event destination configured for the organization @@ -93,6 +105,7 @@ def update(self, organization_id: str, event_destination_id: str, *, name: Optio :param name: Optional[str] (optional) :param description: Optional[str] (optional) :param webhook: Optional[Dict[str, Any]] (optional) + :param retry: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventDestinationsUpdateOutput """ # Build body parameters from keyword arguments @@ -103,6 +116,8 @@ def update(self, organization_id: str, event_destination_id: str, *, name: Optio body_dict["description"] = description if webhook is not None: body_dict["webhook"] = webhook + if retry is not None: + body_dict["retry"] = retry request = MetorialRequest( path=['dashboard', 'organizations', organization_id, 'event-destinations', event_destination_id], @@ -136,4 +151,18 @@ def rotate_webhook_secret(self, organization_id: str, event_destination_id: str) request = MetorialRequest( path=['dashboard', 'organizations', organization_id, 'event-destinations', event_destination_id, 'rotate-webhook-secret'] ) - return self._post(request).transform(mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput.from_dict) \ No newline at end of file + return self._post(request).transform(mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput.from_dict) + + def ping(self, organization_id: str, event_destination_id: str) -> DashboardOrganizationsEventDestinationsPingOutput: + """ + Ping event destination + Sends a test delivery to this event destination immediately, regardless of its listeners. The ping goes through the normal delivery/retry pipeline and shows up in delivery history. + + :param organization_id: str + :param event_destination_id: str + :return: DashboardOrganizationsEventDestinationsPingOutput + """ + request = MetorialRequest( + path=['dashboard', 'organizations', organization_id, 'event-destinations', event_destination_id, 'ping'] + ) + return self._post(request).transform(mapDashboardOrganizationsEventDestinationsPingOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_events.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_events.py index 2ecc6379..ea05212e 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_events.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_events.py @@ -3,12 +3,12 @@ from ..resources import mapDashboardOrganizationsEventsListOutput, DashboardOrganizationsEventsListOutput, mapDashboardOrganizationsEventsListQuery, DashboardOrganizationsEventsListQuery, mapDashboardOrganizationsEventsGetOutput, DashboardOrganizationsEventsGetOutput class MetorialDashboardOrganizationsEventsEndpoint(BaseMetorialEndpoint): - """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, and chat integration events.""" + """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, chat connection events, and manual pings.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, instance_id: Optional[str] = None, event_type: Optional[Union[str, List[str]]] = None, source: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, callback_trigger_key: Optional[Union[str, List[str]]] = None, chat_integration_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventsListOutput: + def list(self, organization_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, instance_id: Optional[str] = None, event_type: Optional[Union[str, List[str]]] = None, source: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, callback_trigger_key: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventsListOutput: """ List events List events recorded for the organization @@ -24,7 +24,9 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op :param source: Optional[Union[str, List[str]]] (optional) :param callback_id: Optional[Union[str, List[str]]] (optional) :param callback_trigger_key: Optional[Union[str, List[str]]] (optional) - :param chat_integration_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param provider_id: Optional[Union[str, List[str]]] (optional) + :param created_at: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventsListOutput """ # Build query parameters from keyword arguments @@ -49,8 +51,12 @@ def list(self, organization_id: str, *, limit: Optional[float] = None, after: Op query_dict["callback_id"] = callback_id if callback_trigger_key is not None: query_dict["callback_trigger_key"] = callback_trigger_key - if chat_integration_id is not None: - query_dict["chat_integration_id"] = chat_integration_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if provider_id is not None: + query_dict["provider_id"] = provider_id + if created_at is not None: + query_dict["created_at"] = created_at request = MetorialRequest( path=['dashboard', 'organizations', organization_id, 'events'], diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_outposts_access.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_outposts_access.py index 8202cccd..dfe85bb6 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_outposts_access.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_outposts_access.py @@ -28,7 +28,7 @@ def set(self, organization_id: str, outpost_id: str, *, grants: List[Dict[str, A ) return self._post(request).transform(mapDashboardOrganizationsOutpostsAccessSetOutput.from_dict) - def list(self, organization_id: str, outpost_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, organization_id: Optional[str] = None, instance_id: Optional[str] = None) -> DashboardOrganizationsOutpostsAccessListOutput: + def list(self, organization_id: str, outpost_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, instance_id: Optional[str] = None) -> DashboardOrganizationsOutpostsAccessListOutput: """ List outpost access List the access grants on an outpost, optionally filtered by organization or instance @@ -40,7 +40,6 @@ def list(self, organization_id: str, outpost_id: str, *, limit: Optional[float] :param before: Optional[str] (optional) :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) - :param organization_id: Optional[str] (optional) :param instance_id: Optional[str] (optional) :return: DashboardOrganizationsOutpostsAccessListOutput """ @@ -56,8 +55,6 @@ def list(self, organization_id: str, outpost_id: str, *, limit: Optional[float] query_dict["cursor"] = cursor if order is not None: query_dict["order"] = order - if organization_id is not None: - query_dict["organization_id"] = organization_id if instance_id is not None: query_dict["instance_id"] = instance_id diff --git a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_webhook_events.py b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_webhook_events.py index c65be567..e37a38c4 100644 --- a/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_webhook_events.py +++ b/src/metorial/_generated/magnetar/endpoints/dashboard_organizations_webhook_events.py @@ -2,7 +2,7 @@ from ..resources import mapDashboardOrganizationsWebhookEventsListOutput, DashboardOrganizationsWebhookEventsListOutput class MetorialDashboardOrganizationsWebhookEventsEndpoint(BaseMetorialEndpoint): - """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, and chat integration events.""" + """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, chat connection events, and manual pings.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) diff --git a/src/metorial/_generated/magnetar/endpoints/integrations.py b/src/metorial/_generated/magnetar/endpoints/integrations.py index 68e4e98f..b05bd569 100644 --- a/src/metorial/_generated/magnetar/endpoints/integrations.py +++ b/src/metorial/_generated/magnetar/endpoints/integrations.py @@ -73,7 +73,7 @@ def get(self, integration_id: str) -> DashboardInstanceIntegrationsGetOutput: ) return self._get(request).transform(mapDashboardInstanceIntegrationsGetOutput.from_dict) - def create(self, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: + def create(self, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: """ Create integration Creates a new integration. @@ -85,6 +85,7 @@ def create(self, *, name: str, description: Optional[str] = None, metadata: Opti :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsCreateOutput """ # Build body parameters from keyword arguments @@ -102,6 +103,8 @@ def create(self, *, name: str, description: Optional[str] = None, metadata: Opti body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['integrations'], @@ -109,7 +112,7 @@ def create(self, *, name: str, description: Optional[str] = None, metadata: Opti ) return self._post(request).transform(mapDashboardInstanceIntegrationsCreateOutput.from_dict) - def update(self, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: + def update(self, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: """ Update integration Updates a specific integration. @@ -122,6 +125,7 @@ def update(self, integration_id: str, *, name: Optional[str] = None, description :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsUpdateOutput """ # Build body parameters from keyword arguments @@ -140,6 +144,8 @@ def update(self, integration_id: str, *, name: Optional[str] = None, description body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['integrations', integration_id], diff --git a/src/metorial/_generated/magnetar/endpoints/management_instance_callbacks.py b/src/metorial/_generated/magnetar/endpoints/management_instance_callbacks.py index fd802209..d9ce98bb 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_instance_callbacks.py +++ b/src/metorial/_generated/magnetar/endpoints/management_instance_callbacks.py @@ -8,7 +8,7 @@ class MetorialManagementInstanceCallbacksEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: + def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, id: Optional[Union[str, List[str]]] = None, integration_id: Optional[Union[str, List[str]]] = None, integration_provider_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceCallbacksListOutput: """ List callbacks Returns a paginated list of callbacks. @@ -23,6 +23,7 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option :param integration_id: Optional[Union[str, List[str]]] (optional) :param integration_provider_id: Optional[Union[str, List[str]]] (optional) :param provider_id: Optional[Union[str, List[str]]] (optional) + :param search: Optional[str] (optional) :param status: Optional[Union[str, List[str]]] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -48,6 +49,8 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option query_dict["integration_provider_id"] = integration_provider_id if provider_id is not None: query_dict["provider_id"] = provider_id + if search is not None: + query_dict["search"] = search if status is not None: query_dict["status"] = status if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/management_instance_chats_channels.py b/src/metorial/_generated/magnetar/endpoints/management_instance_chats_channels.py index 09634e49..1f0b19a9 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_instance_chats_channels.py +++ b/src/metorial/_generated/magnetar/endpoints/management_instance_chats_channels.py @@ -8,7 +8,7 @@ class MetorialManagementInstanceChatsChannelsEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None) -> DashboardInstanceChatsChannelsListOutput: + def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, workspace_id: Optional[str] = None, type: Optional[str] = None, search: Optional[str] = None, has_access: Optional[bool] = None) -> DashboardInstanceChatsChannelsListOutput: """ List chat channels Returns a paginated list of channels for a chat. @@ -23,6 +23,7 @@ def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, :param workspace_id: Optional[str] (optional) :param type: Optional[str] (optional) :param search: Optional[str] (optional) + :param has_access: Optional[bool] (optional) :return: DashboardInstanceChatsChannelsListOutput """ # Build query parameters from keyword arguments @@ -43,6 +44,8 @@ def list(self, instance_id: str, chat_id: str, *, limit: Optional[float] = None, query_dict["type"] = type if search is not None: query_dict["search"] = search + if has_access is not None: + query_dict["has_access"] = has_access request = MetorialRequest( path=['instances', instance_id, 'chats', chat_id, 'channels'], diff --git a/src/metorial/_generated/magnetar/endpoints/management_instance_integrations.py b/src/metorial/_generated/magnetar/endpoints/management_instance_integrations.py index 82ff21a5..928706f2 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_instance_integrations.py +++ b/src/metorial/_generated/magnetar/endpoints/management_instance_integrations.py @@ -75,7 +75,7 @@ def get(self, instance_id: str, integration_id: str) -> DashboardInstanceIntegra ) return self._get(request).transform(mapDashboardInstanceIntegrationsGetOutput.from_dict) - def create(self, instance_id: str, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: + def create(self, instance_id: str, *, name: str, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsCreateOutput: """ Create integration Creates a new integration. @@ -88,6 +88,7 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsCreateOutput """ # Build body parameters from keyword arguments @@ -105,6 +106,8 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['instances', instance_id, 'integrations'], @@ -112,7 +115,7 @@ def create(self, instance_id: str, *, name: str, description: Optional[str] = No ) return self._post(request).transform(mapDashboardInstanceIntegrationsCreateOutput.from_dict) - def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: + def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = None, description: Optional[str] = None, metadata: Optional[Dict[str, Any]] = None, use_integration_name_in_tool_names: Optional[bool] = None, can_attach_custom_tool_filters: Optional[bool] = None, can_attach_custom_provider_config: Optional[bool] = None, can_override_tool_filters: Optional[bool] = None, enable_callback_tools: Optional[bool] = None) -> DashboardInstanceIntegrationsUpdateOutput: """ Update integration Updates a specific integration. @@ -126,6 +129,7 @@ def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = :param can_attach_custom_tool_filters: Optional[bool] (optional) :param can_attach_custom_provider_config: Optional[bool] (optional) :param can_override_tool_filters: Optional[bool] (optional) + :param enable_callback_tools: Optional[bool] (optional) :return: DashboardInstanceIntegrationsUpdateOutput """ # Build body parameters from keyword arguments @@ -144,6 +148,8 @@ def update(self, instance_id: str, integration_id: str, *, name: Optional[str] = body_dict["can_attach_custom_provider_config"] = can_attach_custom_provider_config if can_override_tool_filters is not None: body_dict["can_override_tool_filters"] = can_override_tool_filters + if enable_callback_tools is not None: + body_dict["enable_callback_tools"] = enable_callback_tools request = MetorialRequest( path=['instances', instance_id, 'integrations', integration_id], diff --git a/src/metorial/_generated/magnetar/endpoints/management_instance_provider_deployments_auth_configs.py b/src/metorial/_generated/magnetar/endpoints/management_instance_provider_deployments_auth_configs.py index c1480cf9..0639171b 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_instance_provider_deployments_auth_configs.py +++ b/src/metorial/_generated/magnetar/endpoints/management_instance_provider_deployments_auth_configs.py @@ -8,7 +8,7 @@ class MetorialManagementInstanceProviderDeploymentsAuthConfigsEndpoint(BaseMetor def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: + def list(self, instance_id: str, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, adapter: Optional[str] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: """ List provider auth configs Returns a paginated list of provider auth configs. @@ -31,6 +31,7 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option :param consumer_id: Optional[Union[str, List[str]]] (optional) :param identity_id: Optional[Union[str, List[str]]] (optional) :param identity_credential_id: Optional[Union[str, List[str]]] (optional) + :param adapter: Optional[str] (optional) :param search: Optional[str] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -72,6 +73,8 @@ def list(self, instance_id: str, *, limit: Optional[float] = None, after: Option query_dict["identity_id"] = identity_id if identity_credential_id is not None: query_dict["identity_credential_id"] = identity_credential_id + if adapter is not None: + query_dict["adapter"] = adapter if search is not None: query_dict["search"] = search if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/management_instance_providers_triggers.py b/src/metorial/_generated/magnetar/endpoints/management_instance_providers_triggers.py index 16c4ec56..9d2be231 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_instance_providers_triggers.py +++ b/src/metorial/_generated/magnetar/endpoints/management_instance_providers_triggers.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional, Union from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest -from ..resources import mapDashboardInstanceProvidersTriggersListOutput, DashboardInstanceProvidersTriggersListOutput, mapDashboardInstanceProvidersTriggersListQuery, DashboardInstanceProvidersTriggersListQuery, mapDashboardInstanceProvidersTriggersGetOutput, DashboardInstanceProvidersTriggersGetOutput +from ..resources import mapManagementInstanceProvidersTriggersListOutput, ManagementInstanceProvidersTriggersListOutput, mapManagementInstanceProvidersTriggersListQuery, ManagementInstanceProvidersTriggersListQuery, mapDashboardInstanceProvidersTriggersGetOutput, DashboardInstanceProvidersTriggersGetOutput class MetorialManagementInstanceProvidersTriggersEndpoint(BaseMetorialEndpoint): """A provider trigger describes an event source a provider can emit for callbacks. Use triggers to discover which callback subscriptions a provider version supports.""" @@ -8,7 +8,7 @@ class MetorialManagementInstanceProvidersTriggersEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None) -> DashboardInstanceProvidersTriggersListOutput: + def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None) -> ManagementInstanceProvidersTriggersListOutput: """ List provider triggers Returns a paginated list of provider triggers for a specific provider version. @@ -20,7 +20,7 @@ def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[fl :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) :param provider_version_id: str - :return: DashboardInstanceProvidersTriggersListOutput + :return: ManagementInstanceProvidersTriggersListOutput """ # Build query parameters from keyword arguments query_dict = {} @@ -40,7 +40,7 @@ def list(self, instance_id: str, *, provider_version_id: str, limit: Optional[fl path=['instances', instance_id, 'provider-triggers'], query=query_dict ) - return self._get(request).transform(mapDashboardInstanceProvidersTriggersListOutput.from_dict) + return self._get(request).transform(mapManagementInstanceProvidersTriggersListOutput.from_dict) def get(self, instance_id: str, provider_trigger_id: str) -> DashboardInstanceProvidersTriggersGetOutput: """ diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_event_deliveries.py b/src/metorial/_generated/magnetar/endpoints/management_organization_event_deliveries.py new file mode 100644 index 00000000..7271d965 --- /dev/null +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_event_deliveries.py @@ -0,0 +1,81 @@ +from typing import Any, Dict, List, Optional, Union +from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest +from ..resources import mapDashboardOrganizationsEventDeliveriesListOutput, DashboardOrganizationsEventDeliveriesListOutput, mapDashboardOrganizationsEventDeliveriesListQuery, DashboardOrganizationsEventDeliveriesListQuery, mapDashboardOrganizationsEventDeliveriesGetOutput, DashboardOrganizationsEventDeliveriesGetOutput, mapDashboardOrganizationsEventDeliveriesRetryOutput, DashboardOrganizationsEventDeliveriesRetryOutput + +class MetorialManagementOrganizationEventDeliveriesEndpoint(BaseMetorialEndpoint): + """An event delivery is Metorial's record of sending one event to one event destination, including every attempt it took to get there.""" + + def __init__(self, config: MetorialEndpointManager): + super().__init__(config) + + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, event_id: Optional[Union[str, List[str]]] = None, event_type: Optional[Union[str, List[str]]] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDeliveriesListOutput: + """ + List event deliveries + List event deliveries recorded for the organization + + :param limit: Optional[float] (optional) + :param after: Optional[str] (optional) + :param before: Optional[str] (optional) + :param cursor: Optional[str] (optional) + :param order: Optional[str] (optional) + :param status: Optional[Union[str, List[str]]] (optional) + :param event_id: Optional[Union[str, List[str]]] (optional) + :param event_type: Optional[Union[str, List[str]]] (optional) + :param event_destination_id: Optional[Union[str, List[str]]] (optional) + :param instance_id: Optional[Union[str, List[str]]] (optional) + :return: DashboardOrganizationsEventDeliveriesListOutput + """ + # Build query parameters from keyword arguments + query_dict = {} + if limit is not None: + query_dict["limit"] = limit + if after is not None: + query_dict["after"] = after + if before is not None: + query_dict["before"] = before + if cursor is not None: + query_dict["cursor"] = cursor + if order is not None: + query_dict["order"] = order + if status is not None: + query_dict["status"] = status + if event_id is not None: + query_dict["event_id"] = event_id + if event_type is not None: + query_dict["event_type"] = event_type + if event_destination_id is not None: + query_dict["event_destination_id"] = event_destination_id + if instance_id is not None: + query_dict["instance_id"] = instance_id + + request = MetorialRequest( + path=['organization', 'event-deliveries'], + query=query_dict + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveriesListOutput.from_dict) + + def get(self, event_delivery_id: str) -> DashboardOrganizationsEventDeliveriesGetOutput: + """ + Get event delivery + Get a specific event delivery recorded for the organization + + :param event_delivery_id: str + :return: DashboardOrganizationsEventDeliveriesGetOutput + """ + request = MetorialRequest( + path=['organization', 'event-deliveries', event_delivery_id] + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveriesGetOutput.from_dict) + + def retry(self, event_delivery_id: str) -> DashboardOrganizationsEventDeliveriesRetryOutput: + """ + Retry event delivery + Schedules another attempt for a delivery that has finished, whether it succeeded or gave up. The delivery is given a fresh attempt budget. + + :param event_delivery_id: str + :return: DashboardOrganizationsEventDeliveriesRetryOutput + """ + request = MetorialRequest( + path=['organization', 'event-deliveries', event_delivery_id, 'retry'] + ) + return self._post(request).transform(mapDashboardOrganizationsEventDeliveriesRetryOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_event_delivery_attempts.py b/src/metorial/_generated/magnetar/endpoints/management_organization_event_delivery_attempts.py new file mode 100644 index 00000000..057b5023 --- /dev/null +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_event_delivery_attempts.py @@ -0,0 +1,65 @@ +from typing import Any, Dict, List, Optional, Union +from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest +from ..resources import mapDashboardOrganizationsEventDeliveryAttemptsListOutput, DashboardOrganizationsEventDeliveryAttemptsListOutput, mapDashboardOrganizationsEventDeliveryAttemptsListQuery, DashboardOrganizationsEventDeliveryAttemptsListQuery, mapDashboardOrganizationsEventDeliveryAttemptsGetOutput, DashboardOrganizationsEventDeliveryAttemptsGetOutput + +class MetorialManagementOrganizationEventDeliveryAttemptsEndpoint(BaseMetorialEndpoint): + """A delivery attempt is one request Metorial made to an event destination, with the request it sent and the response it got back.""" + + def __init__(self, config: MetorialEndpointManager): + super().__init__(config) + + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, event_delivery_id: Optional[Union[str, List[str]]] = None, event_id: Optional[Union[str, List[str]]] = None, event_destination_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDeliveryAttemptsListOutput: + """ + List event delivery attempts + List delivery attempts recorded for the organization + + :param limit: Optional[float] (optional) + :param after: Optional[str] (optional) + :param before: Optional[str] (optional) + :param cursor: Optional[str] (optional) + :param order: Optional[str] (optional) + :param status: Optional[Union[str, List[str]]] (optional) + :param event_delivery_id: Optional[Union[str, List[str]]] (optional) + :param event_id: Optional[Union[str, List[str]]] (optional) + :param event_destination_id: Optional[Union[str, List[str]]] (optional) + :return: DashboardOrganizationsEventDeliveryAttemptsListOutput + """ + # Build query parameters from keyword arguments + query_dict = {} + if limit is not None: + query_dict["limit"] = limit + if after is not None: + query_dict["after"] = after + if before is not None: + query_dict["before"] = before + if cursor is not None: + query_dict["cursor"] = cursor + if order is not None: + query_dict["order"] = order + if status is not None: + query_dict["status"] = status + if event_delivery_id is not None: + query_dict["event_delivery_id"] = event_delivery_id + if event_id is not None: + query_dict["event_id"] = event_id + if event_destination_id is not None: + query_dict["event_destination_id"] = event_destination_id + + request = MetorialRequest( + path=['organization', 'event-delivery-attempts'], + query=query_dict + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveryAttemptsListOutput.from_dict) + + def get(self, event_delivery_attempt_id: str) -> DashboardOrganizationsEventDeliveryAttemptsGetOutput: + """ + Get event delivery attempt + Get a specific delivery attempt, including the request Metorial sent and the response the destination returned + + :param event_delivery_attempt_id: str + :return: DashboardOrganizationsEventDeliveryAttemptsGetOutput + """ + request = MetorialRequest( + path=['organization', 'event-delivery-attempts', event_delivery_attempt_id] + ) + return self._get(request).transform(mapDashboardOrganizationsEventDeliveryAttemptsGetOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_event_destination_listeners.py b/src/metorial/_generated/magnetar/endpoints/management_organization_event_destination_listeners.py index a9647532..eac8e4c1 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_organization_event_destination_listeners.py +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_event_destination_listeners.py @@ -3,12 +3,12 @@ from ..resources import mapDashboardOrganizationsEventDestinationListenersListOutput, DashboardOrganizationsEventDestinationListenersListOutput, mapDashboardOrganizationsEventDestinationListenersListQuery, DashboardOrganizationsEventDestinationListenersListQuery, mapDashboardOrganizationsEventDestinationListenersGetOutput, DashboardOrganizationsEventDestinationListenersGetOutput, mapDashboardOrganizationsEventDestinationListenersCreateOutput, DashboardOrganizationsEventDestinationListenersCreateOutput, mapDashboardOrganizationsEventDestinationListenersCreateBody, DashboardOrganizationsEventDestinationListenersCreateBody, mapDashboardOrganizationsEventDestinationListenersUpdateOutput, DashboardOrganizationsEventDestinationListenersUpdateOutput, mapDashboardOrganizationsEventDestinationListenersUpdateBody, DashboardOrganizationsEventDestinationListenersUpdateBody, mapDashboardOrganizationsEventDestinationListenersDeleteOutput, DashboardOrganizationsEventDestinationListenersDeleteOutput class MetorialManagementOrganizationEventDestinationListenersEndpoint(BaseMetorialEndpoint): - """Event destination listeners subscribe an event destination to events for a specific instance — generic resource events, a callback's trigger events, or a chat integration's events.""" + """Event destination listeners subscribe an event destination to events for a specific instance — generic resource events, a callback's trigger events, or a chat connection's events.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_integration_id: Optional[Union[str, List[str]]] = None, type: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationListenersListOutput: + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, event_destination_id: Optional[Union[str, List[str]]] = None, instance_id: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, type: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationListenersListOutput: """ List event destination listeners Returns a paginated list of event destination listeners for the organization. @@ -21,7 +21,8 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be :param event_destination_id: Optional[Union[str, List[str]]] (optional) :param instance_id: Optional[Union[str, List[str]]] (optional) :param callback_id: Optional[Union[str, List[str]]] (optional) - :param chat_integration_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param provider_id: Optional[Union[str, List[str]]] (optional) :param type: Optional[Union[str, List[str]]] (optional) :return: DashboardOrganizationsEventDestinationListenersListOutput """ @@ -43,8 +44,10 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be query_dict["instance_id"] = instance_id if callback_id is not None: query_dict["callback_id"] = callback_id - if chat_integration_id is not None: - query_dict["chat_integration_id"] = chat_integration_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if provider_id is not None: + query_dict["provider_id"] = provider_id if type is not None: query_dict["type"] = type @@ -70,7 +73,7 @@ def get(self, event_destination_listener_id: str) -> DashboardOrganizationsEvent def create(self) -> DashboardOrganizationsEventDestinationListenersCreateOutput: """ Create event destination listener - Subscribes an event destination to events for this instance — generic resource events, a callback's trigger events, or a chat integration's events. + Subscribes an event destination to events for this instance — generic resource events, a callback's trigger events, or a chat connection's events. :return: DashboardOrganizationsEventDestinationListenersCreateOutput diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_event_destinations.py b/src/metorial/_generated/magnetar/endpoints/management_organization_event_destinations.py index 4ade3abc..a2f37c72 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_organization_event_destinations.py +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_event_destinations.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional, Union from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest -from ..resources import mapDashboardOrganizationsEventDestinationsListOutput, DashboardOrganizationsEventDestinationsListOutput, mapDashboardOrganizationsEventDestinationsListQuery, DashboardOrganizationsEventDestinationsListQuery, mapDashboardOrganizationsEventDestinationsGetOutput, DashboardOrganizationsEventDestinationsGetOutput, mapDashboardOrganizationsEventDestinationsCreateOutput, DashboardOrganizationsEventDestinationsCreateOutput, mapDashboardOrganizationsEventDestinationsCreateBody, DashboardOrganizationsEventDestinationsCreateBody, mapDashboardOrganizationsEventDestinationsUpdateOutput, DashboardOrganizationsEventDestinationsUpdateOutput, mapDashboardOrganizationsEventDestinationsUpdateBody, DashboardOrganizationsEventDestinationsUpdateBody, mapDashboardOrganizationsEventDestinationsArchiveOutput, DashboardOrganizationsEventDestinationsArchiveOutput, mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput +from ..resources import mapDashboardOrganizationsEventDestinationsListOutput, DashboardOrganizationsEventDestinationsListOutput, mapDashboardOrganizationsEventDestinationsListQuery, DashboardOrganizationsEventDestinationsListQuery, mapDashboardOrganizationsEventDestinationsGetOutput, DashboardOrganizationsEventDestinationsGetOutput, mapDashboardOrganizationsEventDestinationsCreateOutput, DashboardOrganizationsEventDestinationsCreateOutput, mapDashboardOrganizationsEventDestinationsCreateBody, DashboardOrganizationsEventDestinationsCreateBody, mapDashboardOrganizationsEventDestinationsUpdateOutput, DashboardOrganizationsEventDestinationsUpdateOutput, mapDashboardOrganizationsEventDestinationsUpdateBody, DashboardOrganizationsEventDestinationsUpdateBody, mapDashboardOrganizationsEventDestinationsArchiveOutput, DashboardOrganizationsEventDestinationsArchiveOutput, mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput, mapDashboardOrganizationsEventDestinationsPingOutput, DashboardOrganizationsEventDestinationsPingOutput class MetorialManagementOrganizationEventDestinationsEndpoint(BaseMetorialEndpoint): """Event destinations are where Metorial delivers system events for your organization. Webhooks are currently the only supported delivery type.""" @@ -8,7 +8,7 @@ class MetorialManagementOrganizationEventDestinationsEndpoint(BaseMetorialEndpoi def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventDestinationsListOutput: + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None) -> DashboardOrganizationsEventDestinationsListOutput: """ List event destinations List all event destinations configured for the organization @@ -19,6 +19,9 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) :param status: Optional[Union[str, List[str]]] (optional) + :param callback_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param search: Optional[str] (optional) :return: DashboardOrganizationsEventDestinationsListOutput """ # Build query parameters from keyword arguments @@ -35,6 +38,12 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be query_dict["order"] = order if status is not None: query_dict["status"] = status + if callback_id is not None: + query_dict["callback_id"] = callback_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if search is not None: + query_dict["search"] = search request = MetorialRequest( path=['organization', 'event-destinations'], @@ -55,7 +64,7 @@ def get(self, event_destination_id: str) -> DashboardOrganizationsEventDestinati ) return self._get(request).transform(mapDashboardOrganizationsEventDestinationsGetOutput.from_dict) - def create(self, *, name: str, type: Any, webhook: Dict[str, Any], description: Optional[str] = None) -> DashboardOrganizationsEventDestinationsCreateOutput: + def create(self, *, name: str, type: Any, webhook: Dict[str, Any], description: Optional[str] = None, retry: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsCreateOutput: """ Create event destination Create an event destination for the organization @@ -64,6 +73,7 @@ def create(self, *, name: str, type: Any, webhook: Dict[str, Any], description: :param description: Optional[str] (optional) :param type: Any :param webhook: Dict[str, Any] + :param retry: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventDestinationsCreateOutput """ # Build body parameters from keyword arguments @@ -73,6 +83,8 @@ def create(self, *, name: str, type: Any, webhook: Dict[str, Any], description: body_dict["description"] = description body_dict["type"] = type body_dict["webhook"] = webhook + if retry is not None: + body_dict["retry"] = retry request = MetorialRequest( path=['organization', 'event-destinations'], @@ -80,7 +92,7 @@ def create(self, *, name: str, type: Any, webhook: Dict[str, Any], description: ) return self._post(request).transform(mapDashboardOrganizationsEventDestinationsCreateOutput.from_dict) - def update(self, event_destination_id: str, *, name: Optional[str] = None, description: Optional[str] = None, webhook: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsUpdateOutput: + def update(self, event_destination_id: str, *, name: Optional[str] = None, description: Optional[str] = None, webhook: Optional[Dict[str, Any]] = None, retry: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventDestinationsUpdateOutput: """ Update event destination Update an event destination configured for the organization @@ -89,6 +101,7 @@ def update(self, event_destination_id: str, *, name: Optional[str] = None, descr :param name: Optional[str] (optional) :param description: Optional[str] (optional) :param webhook: Optional[Dict[str, Any]] (optional) + :param retry: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventDestinationsUpdateOutput """ # Build body parameters from keyword arguments @@ -99,6 +112,8 @@ def update(self, event_destination_id: str, *, name: Optional[str] = None, descr body_dict["description"] = description if webhook is not None: body_dict["webhook"] = webhook + if retry is not None: + body_dict["retry"] = retry request = MetorialRequest( path=['organization', 'event-destinations', event_destination_id], @@ -130,4 +145,17 @@ def rotate_webhook_secret(self, event_destination_id: str) -> DashboardOrganizat request = MetorialRequest( path=['organization', 'event-destinations', event_destination_id, 'rotate-webhook-secret'] ) - return self._post(request).transform(mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput.from_dict) \ No newline at end of file + return self._post(request).transform(mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutput.from_dict) + + def ping(self, event_destination_id: str) -> DashboardOrganizationsEventDestinationsPingOutput: + """ + Ping event destination + Sends a test delivery to this event destination immediately, regardless of its listeners. The ping goes through the normal delivery/retry pipeline and shows up in delivery history. + + :param event_destination_id: str + :return: DashboardOrganizationsEventDestinationsPingOutput + """ + request = MetorialRequest( + path=['organization', 'event-destinations', event_destination_id, 'ping'] + ) + return self._post(request).transform(mapDashboardOrganizationsEventDestinationsPingOutput.from_dict) \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_events.py b/src/metorial/_generated/magnetar/endpoints/management_organization_events.py index 149c9bd3..ae839f7f 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_organization_events.py +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_events.py @@ -3,12 +3,12 @@ from ..resources import mapDashboardOrganizationsEventsListOutput, DashboardOrganizationsEventsListOutput, mapDashboardOrganizationsEventsListQuery, DashboardOrganizationsEventsListQuery, mapDashboardOrganizationsEventsGetOutput, DashboardOrganizationsEventsGetOutput class MetorialManagementOrganizationEventsEndpoint(BaseMetorialEndpoint): - """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, and chat integration events.""" + """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, chat connection events, and manual pings.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, instance_id: Optional[str] = None, event_type: Optional[Union[str, List[str]]] = None, source: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, callback_trigger_key: Optional[Union[str, List[str]]] = None, chat_integration_id: Optional[Union[str, List[str]]] = None) -> DashboardOrganizationsEventsListOutput: + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, instance_id: Optional[str] = None, event_type: Optional[Union[str, List[str]]] = None, source: Optional[Union[str, List[str]]] = None, callback_id: Optional[Union[str, List[str]]] = None, callback_trigger_key: Optional[Union[str, List[str]]] = None, chat_connection_id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, created_at: Optional[Dict[str, Any]] = None) -> DashboardOrganizationsEventsListOutput: """ List events List events recorded for the organization @@ -23,7 +23,9 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be :param source: Optional[Union[str, List[str]]] (optional) :param callback_id: Optional[Union[str, List[str]]] (optional) :param callback_trigger_key: Optional[Union[str, List[str]]] (optional) - :param chat_integration_id: Optional[Union[str, List[str]]] (optional) + :param chat_connection_id: Optional[Union[str, List[str]]] (optional) + :param provider_id: Optional[Union[str, List[str]]] (optional) + :param created_at: Optional[Dict[str, Any]] (optional) :return: DashboardOrganizationsEventsListOutput """ # Build query parameters from keyword arguments @@ -48,8 +50,12 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be query_dict["callback_id"] = callback_id if callback_trigger_key is not None: query_dict["callback_trigger_key"] = callback_trigger_key - if chat_integration_id is not None: - query_dict["chat_integration_id"] = chat_integration_id + if chat_connection_id is not None: + query_dict["chat_connection_id"] = chat_connection_id + if provider_id is not None: + query_dict["provider_id"] = provider_id + if created_at is not None: + query_dict["created_at"] = created_at request = MetorialRequest( path=['organization', 'events'], diff --git a/src/metorial/_generated/magnetar/endpoints/management_organization_webhook_events.py b/src/metorial/_generated/magnetar/endpoints/management_organization_webhook_events.py index 653f8dd6..d1cf143f 100644 --- a/src/metorial/_generated/magnetar/endpoints/management_organization_webhook_events.py +++ b/src/metorial/_generated/magnetar/endpoints/management_organization_webhook_events.py @@ -2,7 +2,7 @@ from ..resources import mapDashboardOrganizationsWebhookEventsListOutput, DashboardOrganizationsWebhookEventsListOutput class MetorialManagementOrganizationWebhookEventsEndpoint(BaseMetorialEndpoint): - """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, and chat integration events.""" + """Events are the record of everything Metorial delivers to your event destinations — normal resource events, callback occurrences, chat connection events, and manual pings.""" def __init__(self, config: MetorialEndpointManager): super().__init__(config) diff --git a/src/metorial/_generated/magnetar/endpoints/provider_deployments_auth_configs.py b/src/metorial/_generated/magnetar/endpoints/provider_deployments_auth_configs.py index 50d2b84b..af2139dd 100644 --- a/src/metorial/_generated/magnetar/endpoints/provider_deployments_auth_configs.py +++ b/src/metorial/_generated/magnetar/endpoints/provider_deployments_auth_configs.py @@ -8,7 +8,7 @@ class MetorialProviderDeploymentsAuthConfigsEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: + def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None, status: Optional[Union[str, List[str]]] = None, id: Optional[Union[str, List[str]]] = None, provider_id: Optional[Union[str, List[str]]] = None, provider_deployment_id: Optional[Union[str, List[str]]] = None, available_for_use: Optional[bool] = None, available_for_provider_deployment_id: Optional[str] = None, provider_auth_credentials_id: Optional[Union[str, List[str]]] = None, provider_auth_method_id: Optional[Union[str, List[str]]] = None, actor_id: Optional[Union[str, List[str]]] = None, consumer_id: Optional[Union[str, List[str]]] = None, identity_id: Optional[Union[str, List[str]]] = None, identity_credential_id: Optional[Union[str, List[str]]] = None, adapter: Optional[str] = None, search: Optional[str] = None, created_at: Optional[Dict[str, Any]] = None, updated_at: Optional[Dict[str, Any]] = None) -> DashboardInstanceProviderDeploymentsAuthConfigsListOutput: """ List provider auth configs Returns a paginated list of provider auth configs. @@ -30,6 +30,7 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be :param consumer_id: Optional[Union[str, List[str]]] (optional) :param identity_id: Optional[Union[str, List[str]]] (optional) :param identity_credential_id: Optional[Union[str, List[str]]] (optional) + :param adapter: Optional[str] (optional) :param search: Optional[str] (optional) :param created_at: Optional[Dict[str, Any]] (optional) :param updated_at: Optional[Dict[str, Any]] (optional) @@ -71,6 +72,8 @@ def list(self, *, limit: Optional[float] = None, after: Optional[str] = None, be query_dict["identity_id"] = identity_id if identity_credential_id is not None: query_dict["identity_credential_id"] = identity_credential_id + if adapter is not None: + query_dict["adapter"] = adapter if search is not None: query_dict["search"] = search if created_at is not None: diff --git a/src/metorial/_generated/magnetar/endpoints/providers_triggers.py b/src/metorial/_generated/magnetar/endpoints/providers_triggers.py index ae0179d6..2aee5dda 100644 --- a/src/metorial/_generated/magnetar/endpoints/providers_triggers.py +++ b/src/metorial/_generated/magnetar/endpoints/providers_triggers.py @@ -1,6 +1,6 @@ from typing import Any, Dict, List, Optional, Union from metorial._endpoint import BaseMetorialEndpoint, MetorialEndpointManager, MetorialRequest -from ..resources import mapDashboardInstanceProvidersTriggersListOutput, DashboardInstanceProvidersTriggersListOutput, mapDashboardInstanceProvidersTriggersListQuery, DashboardInstanceProvidersTriggersListQuery, mapDashboardInstanceProvidersTriggersGetOutput, DashboardInstanceProvidersTriggersGetOutput +from ..resources import mapManagementInstanceProvidersTriggersListOutput, ManagementInstanceProvidersTriggersListOutput, mapManagementInstanceProvidersTriggersListQuery, ManagementInstanceProvidersTriggersListQuery, mapDashboardInstanceProvidersTriggersGetOutput, DashboardInstanceProvidersTriggersGetOutput class MetorialProvidersTriggersEndpoint(BaseMetorialEndpoint): """A provider trigger describes an event source a provider can emit for callbacks. Use triggers to discover which callback subscriptions a provider version supports.""" @@ -8,7 +8,7 @@ class MetorialProvidersTriggersEndpoint(BaseMetorialEndpoint): def __init__(self, config: MetorialEndpointManager): super().__init__(config) - def list(self, *, provider_version_id: str, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None) -> DashboardInstanceProvidersTriggersListOutput: + def list(self, *, provider_version_id: str, limit: Optional[float] = None, after: Optional[str] = None, before: Optional[str] = None, cursor: Optional[str] = None, order: Optional[str] = None) -> ManagementInstanceProvidersTriggersListOutput: """ List provider triggers Returns a paginated list of provider triggers for a specific provider version. @@ -19,7 +19,7 @@ def list(self, *, provider_version_id: str, limit: Optional[float] = None, after :param cursor: Optional[str] (optional) :param order: Optional[str] (optional) :param provider_version_id: str - :return: DashboardInstanceProvidersTriggersListOutput + :return: ManagementInstanceProvidersTriggersListOutput """ # Build query parameters from keyword arguments query_dict = {} @@ -39,7 +39,7 @@ def list(self, *, provider_version_id: str, limit: Optional[float] = None, after path=['provider-triggers'], query=query_dict ) - return self._get(request).transform(mapDashboardInstanceProvidersTriggersListOutput.from_dict) + return self._get(request).transform(mapManagementInstanceProvidersTriggersListOutput.from_dict) def get(self, provider_trigger_id: str) -> DashboardInstanceProvidersTriggersGetOutput: """ diff --git a/src/metorial/_generated/magnetar/resources/callback_events/get.py b/src/metorial/_generated/magnetar/resources/callback_events/get.py index 14ee5375..e8499a28 100644 --- a/src/metorial/_generated/magnetar/resources/callback_events/get.py +++ b/src/metorial/_generated/magnetar/resources/callback_events/get.py @@ -22,6 +22,7 @@ class CallbackEventsGetOutputDetailsWebhookRequest: @dataclass class CallbackEventsGetOutputDetailsWebhook: object: str + id: str status: str received_at: datetime request: Optional[CallbackEventsGetOutputDetailsWebhookRequest] = None @@ -105,6 +106,7 @@ class mapCallbackEventsGetOutputDetailsWebhook: def from_dict(data: Dict[str, Any]) -> CallbackEventsGetOutputDetailsWebhook: return CallbackEventsGetOutputDetailsWebhook( object=data.get('object'), + id=data.get('id'), status=data.get('status'), request=mapCallbackEventsGetOutputDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None diff --git a/src/metorial/_generated/magnetar/resources/callback_events/list.py b/src/metorial/_generated/magnetar/resources/callback_events/list.py index decd10b3..c29db0e2 100644 --- a/src/metorial/_generated/magnetar/resources/callback_events/list.py +++ b/src/metorial/_generated/magnetar/resources/callback_events/list.py @@ -3,35 +3,6 @@ from datetime import datetime import dataclasses -@dataclass -class CallbackEventsListOutputItemsDetailsError: - object: str - code: str - message: str -@dataclass -class CallbackEventsListOutputItemsDetailsWebhookRequestBody: - encoding: str - content: str -@dataclass -class CallbackEventsListOutputItemsDetailsWebhookRequest: - object: str - method: str - url: str - headers: Dict[str, str] - body: Optional[CallbackEventsListOutputItemsDetailsWebhookRequestBody] = None -@dataclass -class CallbackEventsListOutputItemsDetailsWebhook: - object: str - status: str - received_at: datetime - request: Optional[CallbackEventsListOutputItemsDetailsWebhookRequest] = None -@dataclass -class CallbackEventsListOutputItemsDetails: - object: str - status: str - payload: Optional[Dict[str, Any]] = None - error: Optional[CallbackEventsListOutputItemsDetailsError] = None - webhook: Optional[CallbackEventsListOutputItemsDetailsWebhook] = None @dataclass class CallbackEventsListOutputItems: object: str @@ -45,7 +16,6 @@ class CallbackEventsListOutputItems: created_at: datetime mapped_type: Optional[str] = None mapped_id: Optional[str] = None - details: Optional[CallbackEventsListOutputItemsDetails] = None @dataclass class CallbackEventsListOutputPagination: has_more_before: bool @@ -56,95 +26,6 @@ class CallbackEventsListOutput: pagination: CallbackEventsListOutputPagination -class mapCallbackEventsListOutputItemsDetailsError: - @staticmethod - def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItemsDetailsError: - return CallbackEventsListOutputItemsDetailsError( - object=data.get('object'), - code=data.get('code'), - message=data.get('message') - ) - - @staticmethod - def to_dict(value: Union[CallbackEventsListOutputItemsDetailsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapCallbackEventsListOutputItemsDetailsWebhookRequestBody: - @staticmethod - def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItemsDetailsWebhookRequestBody: - return CallbackEventsListOutputItemsDetailsWebhookRequestBody( - encoding=data.get('encoding'), - content=data.get('content') - ) - - @staticmethod - def to_dict(value: Union[CallbackEventsListOutputItemsDetailsWebhookRequestBody, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapCallbackEventsListOutputItemsDetailsWebhookRequest: - @staticmethod - def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItemsDetailsWebhookRequest: - return CallbackEventsListOutputItemsDetailsWebhookRequest( - object=data.get('object'), - method=data.get('method'), - url=data.get('url'), - headers=data.get('headers'), - body=mapCallbackEventsListOutputItemsDetailsWebhookRequestBody.from_dict(data.get('body')) if data.get('body') else None - ) - - @staticmethod - def to_dict(value: Union[CallbackEventsListOutputItemsDetailsWebhookRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapCallbackEventsListOutputItemsDetailsWebhook: - @staticmethod - def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItemsDetailsWebhook: - return CallbackEventsListOutputItemsDetailsWebhook( - object=data.get('object'), - status=data.get('status'), - request=mapCallbackEventsListOutputItemsDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, - received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None - ) - - @staticmethod - def to_dict(value: Union[CallbackEventsListOutputItemsDetailsWebhook, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapCallbackEventsListOutputItemsDetails: - @staticmethod - def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItemsDetails: - return CallbackEventsListOutputItemsDetails( - object=data.get('object'), - status=data.get('status'), - payload=data.get('payload'), - error=mapCallbackEventsListOutputItemsDetailsError.from_dict(data.get('error')) if data.get('error') else None, - webhook=mapCallbackEventsListOutputItemsDetailsWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None - ) - - @staticmethod - def to_dict(value: Union[CallbackEventsListOutputItemsDetails, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - class mapCallbackEventsListOutputItems: @staticmethod def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItems: @@ -158,7 +39,6 @@ def from_dict(data: Dict[str, Any]) -> CallbackEventsListOutputItems: mapped_id=data.get('mapped_id'), callback_id=data.get('callback_id'), callback_instance_id=data.get('callback_instance_id'), - details=mapCallbackEventsListOutputItemsDetails.from_dict(data.get('details')) if data.get('details') else None, occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/callbacks/list.py b/src/metorial/_generated/magnetar/resources/callbacks/list.py index f9cfb1cd..bf60481a 100644 --- a/src/metorial/_generated/magnetar/resources/callbacks/list.py +++ b/src/metorial/_generated/magnetar/resources/callbacks/list.py @@ -133,6 +133,7 @@ class CallbacksListQuery: integration_id: Optional[Union[str, List[str]]] = None integration_provider_id: Optional[Union[str, List[str]]] = None provider_id: Optional[Union[str, List[str]]] = None + search: Optional[str] = None status: Optional[Union[str, List[str]]] = None created_at: Optional[CallbacksListQueryCreatedAt] = None updated_at: Optional[CallbacksListQueryUpdatedAt] = None @@ -151,6 +152,7 @@ def from_dict(data: Dict[str, Any]) -> CallbacksListQuery: integration_id=data.get('integration_id'), integration_provider_id=data.get('integration_provider_id'), provider_id=data.get('provider_id'), + search=data.get('search'), status=data.get('status'), created_at=mapCallbacksListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapCallbacksListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/chat/events/get.py b/src/metorial/_generated/magnetar/resources/chat/events/get.py index a6998816..230cdd9c 100644 --- a/src/metorial/_generated/magnetar/resources/chat/events/get.py +++ b/src/metorial/_generated/magnetar/resources/chat/events/get.py @@ -9,9 +9,10 @@ class ChatEventsGetOutput: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -32,6 +33,7 @@ def from_dict(data: Dict[str, Any]) -> ChatEventsGetOutput: id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), diff --git a/src/metorial/_generated/magnetar/resources/chat/events/list.py b/src/metorial/_generated/magnetar/resources/chat/events/list.py index 79c85cc9..ce1668aa 100644 --- a/src/metorial/_generated/magnetar/resources/chat/events/list.py +++ b/src/metorial/_generated/magnetar/resources/chat/events/list.py @@ -9,9 +9,10 @@ class ChatEventsListOutputItems: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -21,7 +22,6 @@ class ChatEventsListOutputItems: provider_thread_id: Optional[str] = None provider_message_id: Optional[str] = None provider_author_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None @dataclass class ChatEventsListOutputPagination: has_more_before: bool @@ -40,6 +40,7 @@ def from_dict(data: Dict[str, Any]) -> ChatEventsListOutputItems: id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), @@ -50,7 +51,6 @@ def from_dict(data: Dict[str, Any]) -> ChatEventsListOutputItems: provider_thread_id=data.get('provider_thread_id'), provider_message_id=data.get('provider_message_id'), provider_author_id=data.get('provider_author_id'), - payload=data.get('payload'), occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/chats/channels/get.py b/src/metorial/_generated/magnetar/resources/chats/channels/get.py index 7a950455..4254d8f8 100644 --- a/src/metorial/_generated/magnetar/resources/chats/channels/get.py +++ b/src/metorial/_generated/magnetar/resources/chats/channels/get.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ChatsChannelsGetOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ChatsChannelsGetOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class ChatsChannelsGetOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ChatsChannelsGetOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ChatsChannelsGetOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapChatsChannelsGetOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ChatsChannelsGetOutputRecipient: + return ChatsChannelsGetOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ChatsChannelsGetOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapChatsChannelsGetOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ChatsChannelsGetOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> ChatsChannelsGetOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapChatsChannelsGetOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapChatsChannelsGetOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/chats/channels/list.py b/src/metorial/_generated/magnetar/resources/chats/channels/list.py index 226844bf..79ec8308 100644 --- a/src/metorial/_generated/magnetar/resources/chats/channels/list.py +++ b/src/metorial/_generated/magnetar/resources/chats/channels/list.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ChatsChannelsListOutputItemsRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ChatsChannelsListOutputItemsContextAuthor: id: str @@ -29,12 +46,14 @@ class ChatsChannelsListOutputItems: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ChatsChannelsListOutputItemsRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ChatsChannelsListOutputItemsContext] = None @@ -49,6 +68,35 @@ class ChatsChannelsListOutput: pagination: ChatsChannelsListOutputPagination +class mapChatsChannelsListOutputItemsRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ChatsChannelsListOutputItemsRecipient: + return ChatsChannelsListOutputItemsRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ChatsChannelsListOutputItemsRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapChatsChannelsListOutputItemsContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ChatsChannelsListOutputItemsContextAuthor: @@ -117,6 +165,8 @@ def from_dict(data: Dict[str, Any]) -> ChatsChannelsListOutputItems: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapChatsChannelsListOutputItemsRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapChatsChannelsListOutputItemsContext.from_dict(data.get('context')) if data.get('context') else None, @@ -176,6 +226,7 @@ class ChatsChannelsListQuery: workspace_id: Optional[str] = None type: Optional[str] = None search: Optional[str] = None + has_access: Optional[bool] = None class mapChatsChannelsListQuery: @@ -189,7 +240,8 @@ def from_dict(data: Dict[str, Any]) -> ChatsChannelsListQuery: order=data.get('order'), workspace_id=data.get('workspace_id'), type=data.get('type'), - search=data.get('search') + search=data.get('search'), + has_access=data.get('has_access') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/chats/dms/open.py b/src/metorial/_generated/magnetar/resources/chats/dms/open.py index 4af4ec52..0d418e5f 100644 --- a/src/metorial/_generated/magnetar/resources/chats/dms/open.py +++ b/src/metorial/_generated/magnetar/resources/chats/dms/open.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ChatsDmsOpenOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ChatsDmsOpenOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class ChatsDmsOpenOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ChatsDmsOpenOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ChatsDmsOpenOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapChatsDmsOpenOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ChatsDmsOpenOutputRecipient: + return ChatsDmsOpenOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ChatsDmsOpenOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapChatsDmsOpenOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ChatsDmsOpenOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> ChatsDmsOpenOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapChatsDmsOpenOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapChatsDmsOpenOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/get.py index f9720f87..da6b1792 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/get.py @@ -22,6 +22,7 @@ class DashboardInstanceCallbackEventsGetOutputDetailsWebhookRequest: @dataclass class DashboardInstanceCallbackEventsGetOutputDetailsWebhook: object: str + id: str status: str received_at: datetime request: Optional[DashboardInstanceCallbackEventsGetOutputDetailsWebhookRequest] = None @@ -105,6 +106,7 @@ class mapDashboardInstanceCallbackEventsGetOutputDetailsWebhook: def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsGetOutputDetailsWebhook: return DashboardInstanceCallbackEventsGetOutputDetailsWebhook( object=data.get('object'), + id=data.get('id'), status=data.get('status'), request=mapDashboardInstanceCallbackEventsGetOutputDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/list.py index 9e3a37ea..2005da61 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/callback_events/list.py @@ -3,35 +3,6 @@ from datetime import datetime import dataclasses -@dataclass -class DashboardInstanceCallbackEventsListOutputItemsDetailsError: - object: str - code: str - message: str -@dataclass -class DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - encoding: str - content: str -@dataclass -class DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - object: str - method: str - url: str - headers: Dict[str, str] - body: Optional[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody] = None -@dataclass -class DashboardInstanceCallbackEventsListOutputItemsDetailsWebhook: - object: str - status: str - received_at: datetime - request: Optional[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest] = None -@dataclass -class DashboardInstanceCallbackEventsListOutputItemsDetails: - object: str - status: str - payload: Optional[Dict[str, Any]] = None - error: Optional[DashboardInstanceCallbackEventsListOutputItemsDetailsError] = None - webhook: Optional[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhook] = None @dataclass class DashboardInstanceCallbackEventsListOutputItems: object: str @@ -45,7 +16,6 @@ class DashboardInstanceCallbackEventsListOutputItems: created_at: datetime mapped_type: Optional[str] = None mapped_id: Optional[str] = None - details: Optional[DashboardInstanceCallbackEventsListOutputItemsDetails] = None @dataclass class DashboardInstanceCallbackEventsListOutputPagination: has_more_before: bool @@ -56,95 +26,6 @@ class DashboardInstanceCallbackEventsListOutput: pagination: DashboardInstanceCallbackEventsListOutputPagination -class mapDashboardInstanceCallbackEventsListOutputItemsDetailsError: - @staticmethod - def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItemsDetailsError: - return DashboardInstanceCallbackEventsListOutputItemsDetailsError( - object=data.get('object'), - code=data.get('code'), - message=data.get('message') - ) - - @staticmethod - def to_dict(value: Union[DashboardInstanceCallbackEventsListOutputItemsDetailsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - @staticmethod - def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - return DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody( - encoding=data.get('encoding'), - content=data.get('content') - ) - - @staticmethod - def to_dict(value: Union[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - @staticmethod - def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - return DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest( - object=data.get('object'), - method=data.get('method'), - url=data.get('url'), - headers=data.get('headers'), - body=mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody.from_dict(data.get('body')) if data.get('body') else None - ) - - @staticmethod - def to_dict(value: Union[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhook: - @staticmethod - def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItemsDetailsWebhook: - return DashboardInstanceCallbackEventsListOutputItemsDetailsWebhook( - object=data.get('object'), - status=data.get('status'), - request=mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, - received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None - ) - - @staticmethod - def to_dict(value: Union[DashboardInstanceCallbackEventsListOutputItemsDetailsWebhook, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapDashboardInstanceCallbackEventsListOutputItemsDetails: - @staticmethod - def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItemsDetails: - return DashboardInstanceCallbackEventsListOutputItemsDetails( - object=data.get('object'), - status=data.get('status'), - payload=data.get('payload'), - error=mapDashboardInstanceCallbackEventsListOutputItemsDetailsError.from_dict(data.get('error')) if data.get('error') else None, - webhook=mapDashboardInstanceCallbackEventsListOutputItemsDetailsWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None - ) - - @staticmethod - def to_dict(value: Union[DashboardInstanceCallbackEventsListOutputItemsDetails, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - class mapDashboardInstanceCallbackEventsListOutputItems: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutputItems: @@ -158,7 +39,6 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbackEventsListOutput mapped_id=data.get('mapped_id'), callback_id=data.get('callback_id'), callback_instance_id=data.get('callback_instance_id'), - details=mapDashboardInstanceCallbackEventsListOutputItemsDetails.from_dict(data.get('details')) if data.get('details') else None, occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/callbacks/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/callbacks/list.py index ed31927d..8f520c5e 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/callbacks/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/callbacks/list.py @@ -133,6 +133,7 @@ class DashboardInstanceCallbacksListQuery: integration_id: Optional[Union[str, List[str]]] = None integration_provider_id: Optional[Union[str, List[str]]] = None provider_id: Optional[Union[str, List[str]]] = None + search: Optional[str] = None status: Optional[Union[str, List[str]]] = None created_at: Optional[DashboardInstanceCallbacksListQueryCreatedAt] = None updated_at: Optional[DashboardInstanceCallbacksListQueryUpdatedAt] = None @@ -151,6 +152,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceCallbacksListQuery: integration_id=data.get('integration_id'), integration_provider_id=data.get('integration_provider_id'), provider_id=data.get('provider_id'), + search=data.get('search'), status=data.get('status'), created_at=mapDashboardInstanceCallbacksListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapDashboardInstanceCallbacksListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/get.py index 4f7df772..f10bb2d3 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/get.py @@ -9,9 +9,10 @@ class DashboardInstanceChatEventsGetOutput: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -32,6 +33,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatEventsGetOutput: id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/list.py index 19378fd8..42baaf0a 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/chat/events/list.py @@ -9,9 +9,10 @@ class DashboardInstanceChatEventsListOutputItems: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -21,7 +22,6 @@ class DashboardInstanceChatEventsListOutputItems: provider_thread_id: Optional[str] = None provider_message_id: Optional[str] = None provider_author_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None @dataclass class DashboardInstanceChatEventsListOutputPagination: has_more_before: bool @@ -40,6 +40,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatEventsListOutputItem id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), @@ -50,7 +51,6 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatEventsListOutputItem provider_thread_id=data.get('provider_thread_id'), provider_message_id=data.get('provider_message_id'), provider_author_id=data.get('provider_author_id'), - payload=data.get('payload'), occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/get.py index c1dfffa9..b5e8c09a 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/get.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class DashboardInstanceChatsChannelsGetOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class DashboardInstanceChatsChannelsGetOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class DashboardInstanceChatsChannelsGetOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[DashboardInstanceChatsChannelsGetOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[DashboardInstanceChatsChannelsGetOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapDashboardInstanceChatsChannelsGetOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsGetOutputRecipient: + return DashboardInstanceChatsChannelsGetOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardInstanceChatsChannelsGetOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardInstanceChatsChannelsGetOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsGetOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsGetOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapDashboardInstanceChatsChannelsGetOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapDashboardInstanceChatsChannelsGetOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/list.py index ccb586c0..a1cebae8 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/channels/list.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class DashboardInstanceChatsChannelsListOutputItemsRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class DashboardInstanceChatsChannelsListOutputItemsContextAuthor: id: str @@ -29,12 +46,14 @@ class DashboardInstanceChatsChannelsListOutputItems: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[DashboardInstanceChatsChannelsListOutputItemsRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[DashboardInstanceChatsChannelsListOutputItemsContext] = None @@ -49,6 +68,35 @@ class DashboardInstanceChatsChannelsListOutput: pagination: DashboardInstanceChatsChannelsListOutputPagination +class mapDashboardInstanceChatsChannelsListOutputItemsRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsListOutputItemsRecipient: + return DashboardInstanceChatsChannelsListOutputItemsRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardInstanceChatsChannelsListOutputItemsRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardInstanceChatsChannelsListOutputItemsContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsListOutputItemsContextAuthor: @@ -117,6 +165,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsListOutputI name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapDashboardInstanceChatsChannelsListOutputItemsRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapDashboardInstanceChatsChannelsListOutputItemsContext.from_dict(data.get('context')) if data.get('context') else None, @@ -176,6 +226,7 @@ class DashboardInstanceChatsChannelsListQuery: workspace_id: Optional[str] = None type: Optional[str] = None search: Optional[str] = None + has_access: Optional[bool] = None class mapDashboardInstanceChatsChannelsListQuery: @@ -189,7 +240,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsChannelsListQuery: order=data.get('order'), workspace_id=data.get('workspace_id'), type=data.get('type'), - search=data.get('search') + search=data.get('search'), + has_access=data.get('has_access') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/dms/open.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/dms/open.py index 0b0836a9..92641587 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/dms/open.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/chats/dms/open.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class DashboardInstanceChatsDmsOpenOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class DashboardInstanceChatsDmsOpenOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class DashboardInstanceChatsDmsOpenOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[DashboardInstanceChatsDmsOpenOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[DashboardInstanceChatsDmsOpenOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapDashboardInstanceChatsDmsOpenOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsDmsOpenOutputRecipient: + return DashboardInstanceChatsDmsOpenOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardInstanceChatsDmsOpenOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardInstanceChatsDmsOpenOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsDmsOpenOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceChatsDmsOpenOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapDashboardInstanceChatsDmsOpenOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapDashboardInstanceChatsDmsOpenOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/create.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/create.py index 60c27f2f..da08e72f 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/create.py @@ -8,6 +8,7 @@ class DashboardInstanceIntegrationsCreateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceIntegrationsCreateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsCreateOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class DashboardInstanceIntegrationsCreateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapDashboardInstanceIntegrationsCreateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsCreateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/delete.py index d54daaa6..8b1721f1 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/delete.py @@ -8,6 +8,7 @@ class DashboardInstanceIntegrationsDeleteOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceIntegrationsDeleteOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsDeleteOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/get.py index 8ef2e45c..10545c9f 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/get.py @@ -8,6 +8,7 @@ class DashboardInstanceIntegrationsGetOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceIntegrationsGetOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsGetOutputCon can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/list.py index 31d6a1a8..39e8a60e 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/list.py @@ -8,6 +8,7 @@ class DashboardInstanceIntegrationsListOutputItemsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceIntegrationsListOutputItemsProvidersConfig: @@ -76,6 +77,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsListOutputIt can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/update.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/update.py index 28c96997..c2b8353c 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/update.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/integrations/update.py @@ -8,6 +8,7 @@ class DashboardInstanceIntegrationsUpdateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceIntegrationsUpdateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsUpdateOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class DashboardInstanceIntegrationsUpdateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapDashboardInstanceIntegrationsUpdateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceIntegrationsUpdateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/provider_deployments/auth_configs/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/provider_deployments/auth_configs/list.py index 406bafff..99c69a0b 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/provider_deployments/auth_configs/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/provider_deployments/auth_configs/list.py @@ -309,6 +309,7 @@ class DashboardInstanceProviderDeploymentsAuthConfigsListQuery: consumer_id: Optional[Union[str, List[str]]] = None identity_id: Optional[Union[str, List[str]]] = None identity_credential_id: Optional[Union[str, List[str]]] = None + adapter: Optional[str] = None search: Optional[str] = None created_at: Optional[DashboardInstanceProviderDeploymentsAuthConfigsListQueryCreatedAt] = None updated_at: Optional[DashboardInstanceProviderDeploymentsAuthConfigsListQueryUpdatedAt] = None @@ -335,6 +336,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceProviderDeploymentsAuthC consumer_id=data.get('consumer_id'), identity_id=data.get('identity_id'), identity_credential_id=data.get('identity_credential_id'), + adapter=data.get('adapter'), search=data.get('search'), created_at=mapDashboardInstanceProviderDeploymentsAuthConfigsListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapDashboardInstanceProviderDeploymentsAuthConfigsListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/providers/triggers/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/providers/triggers/list.py index 6ac71b50..76527f9f 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/providers/triggers/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/providers/triggers/list.py @@ -128,12 +128,13 @@ def to_dict(value: Union[DashboardInstanceProvidersTriggersListOutput, Dict[str, @dataclass class DashboardInstanceProvidersTriggersListQuery: - provider_version_id: str limit: Optional[float] = None after: Optional[str] = None before: Optional[str] = None cursor: Optional[str] = None order: Optional[str] = None + provider_version_id: Optional[str] = None + user_managed_callbacks: Optional[bool] = None class mapDashboardInstanceProvidersTriggersListQuery: @@ -145,7 +146,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceProvidersTriggersListQue before=data.get('before'), cursor=data.get('cursor'), order=data.get('order'), - provider_version_id=data.get('provider_version_id') + provider_version_id=data.get('provider_version_id'), + user_managed_callbacks=data.get('user_managed_callbacks') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/create.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/create.py index 439f3367..0faf6dd4 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/create.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsCreateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsCreateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsCreateOutputIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/delete.py index b65185c6..8ba4501d 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/delete.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsDeleteOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsDeleteOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsDeleteOutputIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/duplicate.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/duplicate.py index 5e19c269..7869c16d 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/duplicate.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/duplicate.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsDuplicateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsDuplicateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsDuplicateOutputInt can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/fork.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/fork.py index b0396641..ea638b79 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/fork.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/fork.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsForkOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsForkOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsForkOutputIntegrat can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/get.py index 8b2b5995..082043af 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/get.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsGetOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsGetOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsGetOutputIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/create.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/create.py index bdd42cb6..278735a5 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/create.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsItemsCreateOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsItemsCreateOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsItemsCreateOutputI can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/delete.py index ad79b204..4631b16b 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/delete.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsItemsDeleteOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsItemsDeleteOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsItemsDeleteOutputI can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/get.py index f9080a2b..30d38ca8 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/get.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsItemsGetOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsItemsGetOutputInte can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/list.py index 7726af9a..db890bd6 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/items/list.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsItemsListOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsItemsListOutputItemsIntegration: @@ -57,6 +58,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsItemsListOutputIte can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/list.py index 53117d70..273cfbc7 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/list.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsListOutputItemsIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsListOutputItemsIntegrations: @@ -610,6 +611,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsListOutputItemsInt can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/publish_consumer_skill.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/publish_consumer_skill.py index a2e70925..c2bb7ac0 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/publish_consumer_skill.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/publish_consumer_skill.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsPublishConsumerSkillOutputIntegrationsConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsPublishConsumerSkillOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsPublishConsumerSki can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/share.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/share.py index 26644c85..d12072eb 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/share.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/share.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsShareOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsShareOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsShareOutputIntegra can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/create.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/create.py index b30eb19c..a9a17f50 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/create.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesCreateOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesCreateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesCreateOut can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/delete.py index 13e8f1d4..121d1281 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/delete.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesDeleteOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesDeleteOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesDeleteOut can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/get.py index 6f00d01a..ec318dfd 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/get.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesGetOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesGetOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesGetOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/create.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/create.py index c70df240..b1763d6c 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/create.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesItemsCreateOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesItemsCreateOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesItemsCrea can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/delete.py index 7f7e0dbf..d583fb1d 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/delete.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesItemsDeleteOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesItemsDeleteOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesItemsDele can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/get.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/get.py index e0387cda..796c6049 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/get.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesItemsGetOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesItemsGetO can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/list.py index 5f39ed03..e9fa0200 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/items/list.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesItemsListOutputItemsIntegrationConfigurati can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesItemsListOutputItemsIntegration: @@ -56,6 +57,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesItemsList can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/list.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/list.py index f7679245..5a165cb0 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/list.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesListOutputItemsItemsIntegrationConfigurati can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesListOutputItemsItemsIntegration: @@ -70,6 +71,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesListOutpu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/update.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/update.py index 0e18b6f8..cd513854 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/update.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/templates/update.py @@ -8,6 +8,7 @@ class DashboardInstanceSkillsTemplatesUpdateOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsTemplatesUpdateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsTemplatesUpdateOut can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/update.py b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/update.py index 39c70b8e..6ff442b0 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/update.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/instance/skills/update.py @@ -171,6 +171,7 @@ class DashboardInstanceSkillsUpdateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class DashboardInstanceSkillsUpdateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardInstanceSkillsUpdateOutputIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/__init__.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/__init__.py index 64ec18b7..cffc395d 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/__init__.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/__init__.py @@ -1,4 +1,6 @@ from .api_keys import * +from .event_deliveries import * +from .event_delivery_attempts import * from .event_destination_listeners import * from .event_destinations import * from .events import * diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/__init__.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/__init__.py new file mode 100644 index 00000000..6ac73ee8 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/__init__.py @@ -0,0 +1,3 @@ +from .get import * +from .list import * +from .retry import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/get.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/get.py new file mode 100644 index 00000000..2728d94d --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/get.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttemptsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDeliveriesGetOutputAttemptsError] = None + request: Optional[DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest] = None + response: Optional[DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse] = None +@dataclass +class DashboardOrganizationsEventDeliveriesGetOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: DashboardOrganizationsEventDeliveriesGetOutputRetry + attempts: List[DashboardOrganizationsEventDeliveriesGetOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[DashboardOrganizationsEventDeliveriesGetOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapDashboardOrganizationsEventDeliveriesGetOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputError: + return DashboardOrganizationsEventDeliveriesGetOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputRetry: + return DashboardOrganizationsEventDeliveriesGetOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttemptsError: + return DashboardOrganizationsEventDeliveriesGetOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders: + return DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest: + return DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders: + return DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse: + return DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutputAttempts: + return DashboardOrganizationsEventDeliveriesGetOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDeliveriesGetOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesGetOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesGetOutput: + return DashboardOrganizationsEventDeliveriesGetOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapDashboardOrganizationsEventDeliveriesGetOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapDashboardOrganizationsEventDeliveriesGetOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapDashboardOrganizationsEventDeliveriesGetOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesGetOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/list.py new file mode 100644 index 00000000..59f5c025 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/list.py @@ -0,0 +1,337 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItemsAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError] = None + request: Optional[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest] = None + response: Optional[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse] = None +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputItems: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: DashboardOrganizationsEventDeliveriesListOutputItemsRetry + attempts: List[DashboardOrganizationsEventDeliveriesListOutputItemsAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[DashboardOrganizationsEventDeliveriesListOutputItemsError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None +@dataclass +class DashboardOrganizationsEventDeliveriesListOutputPagination: + has_more_before: bool + has_more_after: bool +@dataclass +class DashboardOrganizationsEventDeliveriesListOutput: + items: List[DashboardOrganizationsEventDeliveriesListOutputItems] + pagination: DashboardOrganizationsEventDeliveriesListOutputPagination + + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsError: + return DashboardOrganizationsEventDeliveriesListOutputItemsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsRetry: + return DashboardOrganizationsEventDeliveriesListOutputItemsRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItemsAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItemsAttempts: + return DashboardOrganizationsEventDeliveriesListOutputItemsAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDeliveriesListOutputItemsAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItemsAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputItems: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputItems: + return DashboardOrganizationsEventDeliveriesListOutputItems( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapDashboardOrganizationsEventDeliveriesListOutputItemsError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapDashboardOrganizationsEventDeliveriesListOutputItemsRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapDashboardOrganizationsEventDeliveriesListOutputItemsAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputItems, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutputPagination: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutputPagination: + return DashboardOrganizationsEventDeliveriesListOutputPagination( + has_more_before=data.get('has_more_before'), + has_more_after=data.get('has_more_after') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutputPagination, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesListOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListOutput: + return DashboardOrganizationsEventDeliveriesListOutput( + items=[mapDashboardOrganizationsEventDeliveriesListOutputItems.from_dict(item) for item in data.get('items', []) if item], + pagination=mapDashboardOrganizationsEventDeliveriesListOutputPagination.from_dict(data.get('pagination')) if data.get('pagination') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + +@dataclass +class DashboardOrganizationsEventDeliveriesListQuery: + limit: Optional[float] = None + after: Optional[str] = None + before: Optional[str] = None + cursor: Optional[str] = None + order: Optional[str] = None + status: Optional[Union[str, List[str]]] = None + event_id: Optional[Union[str, List[str]]] = None + event_type: Optional[Union[str, List[str]]] = None + event_destination_id: Optional[Union[str, List[str]]] = None + instance_id: Optional[Union[str, List[str]]] = None + + +class mapDashboardOrganizationsEventDeliveriesListQuery: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesListQuery: + return DashboardOrganizationsEventDeliveriesListQuery( + limit=data.get('limit'), + after=data.get('after'), + before=data.get('before'), + cursor=data.get('cursor'), + order=data.get('order'), + status=data.get('status'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + instance_id=data.get('instance_id') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesListQuery, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/retry.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/retry.py new file mode 100644 index 00000000..b3178ed2 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_deliveries/retry.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttemptsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsError] = None + request: Optional[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest] = None + response: Optional[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse] = None +@dataclass +class DashboardOrganizationsEventDeliveriesRetryOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: DashboardOrganizationsEventDeliveriesRetryOutputRetry + attempts: List[DashboardOrganizationsEventDeliveriesRetryOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[DashboardOrganizationsEventDeliveriesRetryOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapDashboardOrganizationsEventDeliveriesRetryOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputError: + return DashboardOrganizationsEventDeliveriesRetryOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputRetry: + return DashboardOrganizationsEventDeliveriesRetryOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttemptsError: + return DashboardOrganizationsEventDeliveriesRetryOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders: + return DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest: + return DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders: + return DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse: + return DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutputAttempts: + return DashboardOrganizationsEventDeliveriesRetryOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDeliveriesRetryOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveriesRetryOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveriesRetryOutput: + return DashboardOrganizationsEventDeliveriesRetryOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapDashboardOrganizationsEventDeliveriesRetryOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapDashboardOrganizationsEventDeliveriesRetryOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapDashboardOrganizationsEventDeliveriesRetryOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveriesRetryOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/__init__.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/__init__.py new file mode 100644 index 00000000..65eb373b --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/__init__.py @@ -0,0 +1,2 @@ +from .get import * +from .list import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/get.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/get.py new file mode 100644 index 00000000..0b76b9b8 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/get.py @@ -0,0 +1,162 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutputError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutputRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutputResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsGetOutput: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDeliveryAttemptsGetOutputError] = None + request: Optional[DashboardOrganizationsEventDeliveryAttemptsGetOutputRequest] = None + response: Optional[DashboardOrganizationsEventDeliveryAttemptsGetOutputResponse] = None + + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutputError: + return DashboardOrganizationsEventDeliveryAttemptsGetOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders: + return DashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutputRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutputRequest: + return DashboardOrganizationsEventDeliveryAttemptsGetOutputRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDeliveryAttemptsGetOutputRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutputRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders: + return DashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutputResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutputResponse: + return DashboardOrganizationsEventDeliveryAttemptsGetOutputResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDeliveryAttemptsGetOutputResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutputResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsGetOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsGetOutput: + return DashboardOrganizationsEventDeliveryAttemptsGetOutput( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDeliveryAttemptsGetOutputError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDeliveryAttemptsGetOutputRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDeliveryAttemptsGetOutputResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsGetOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/list.py new file mode 100644 index 00000000..d86b8a87 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_delivery_attempts/list.py @@ -0,0 +1,239 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItemsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputItems: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsError] = None + request: Optional[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest] = None + response: Optional[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse] = None +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutputPagination: + has_more_before: bool + has_more_after: bool +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListOutput: + items: List[DashboardOrganizationsEventDeliveryAttemptsListOutputItems] + pagination: DashboardOrganizationsEventDeliveryAttemptsListOutputPagination + + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItemsError: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItemsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputItems: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputItems: + return DashboardOrganizationsEventDeliveryAttemptsListOutputItems( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDeliveryAttemptsListOutputItemsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputItems, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutputPagination: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutputPagination: + return DashboardOrganizationsEventDeliveryAttemptsListOutputPagination( + has_more_before=data.get('has_more_before'), + has_more_after=data.get('has_more_after') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutputPagination, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDeliveryAttemptsListOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListOutput: + return DashboardOrganizationsEventDeliveryAttemptsListOutput( + items=[mapDashboardOrganizationsEventDeliveryAttemptsListOutputItems.from_dict(item) for item in data.get('items', []) if item], + pagination=mapDashboardOrganizationsEventDeliveryAttemptsListOutputPagination.from_dict(data.get('pagination')) if data.get('pagination') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + +@dataclass +class DashboardOrganizationsEventDeliveryAttemptsListQuery: + limit: Optional[float] = None + after: Optional[str] = None + before: Optional[str] = None + cursor: Optional[str] = None + order: Optional[str] = None + status: Optional[Union[str, List[str]]] = None + event_delivery_id: Optional[Union[str, List[str]]] = None + event_id: Optional[Union[str, List[str]]] = None + event_destination_id: Optional[Union[str, List[str]]] = None + + +class mapDashboardOrganizationsEventDeliveryAttemptsListQuery: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDeliveryAttemptsListQuery: + return DashboardOrganizationsEventDeliveryAttemptsListQuery( + limit=data.get('limit'), + after=data.get('after'), + before=data.get('before'), + cursor=data.get('cursor'), + order=data.get('order'), + status=data.get('status'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDeliveryAttemptsListQuery, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/create.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/create.py index 9758008c..1c28db18 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/create.py @@ -15,7 +15,8 @@ class DashboardOrganizationsEventDestinationListenersCreateOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapDashboardOrganizationsEventDestinationListenersCreateOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/delete.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/delete.py index 937d8119..01ac5da5 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/delete.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/delete.py @@ -15,7 +15,8 @@ class DashboardOrganizationsEventDestinationListenersDeleteOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapDashboardOrganizationsEventDestinationListenersDeleteOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/get.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/get.py index 3402d7a1..ceed1ba5 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/get.py @@ -15,7 +15,8 @@ class DashboardOrganizationsEventDestinationListenersGetOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapDashboardOrganizationsEventDestinationListenersGetOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/list.py index 86d9700e..01f8a445 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/list.py @@ -15,7 +15,8 @@ class DashboardOrganizationsEventDestinationListenersListOutputItems: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationListenersListOutputPagination: has_more_before: bool @@ -38,7 +39,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -94,7 +96,8 @@ class DashboardOrganizationsEventDestinationListenersListQuery: event_destination_id: Optional[Union[str, List[str]]] = None instance_id: Optional[Union[str, List[str]]] = None callback_id: Optional[Union[str, List[str]]] = None - chat_integration_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + provider_id: Optional[Union[str, List[str]]] = None type: Optional[Union[str, List[str]]] = None @@ -110,7 +113,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_destination_id=data.get('event_destination_id'), instance_id=data.get('instance_id'), callback_id=data.get('callback_id'), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), type=data.get('type') ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/update.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/update.py index e2787186..fcd5b293 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/update.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destination_listeners/update.py @@ -15,7 +15,8 @@ class DashboardOrganizationsEventDestinationListenersUpdateOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapDashboardOrganizationsEventDestinationListenersUpdateOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/__init__.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/__init__.py index cbc79073..dbe47150 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/__init__.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/__init__.py @@ -2,5 +2,6 @@ from .create import * from .get import * from .list import * +from .ping import * from .rotate_webhook_secret import * from .update import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/archive.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/archive.py index 18383aa1..3dc55050 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/archive.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/archive.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsArchiveOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsArchiveOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsArchiveOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsArchiveOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsArchiveOutput: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsArchiveOutput: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsArchiveOutputRetry listeners: List[DashboardOrganizationsEventDestinationsArchiveOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsArchiveOutputWeb return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsArchiveOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsArchiveOutputRetry: + return DashboardOrganizationsEventDestinationsArchiveOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsArchiveOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsArchiveOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsArchiveOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsAr event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsAr status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsArchiveOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsArchiveOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsArchiveOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/create.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/create.py index 9cace0c7..7c6014f8 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/create.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/create.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsCreateOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsCreateOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsCreateOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsCreateOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsCreateOutput: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsCreateOutput: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsCreateOutputRetry listeners: List[DashboardOrganizationsEventDestinationsCreateOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsCreateOutputWebh return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsCreateOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCreateOutputRetry: + return DashboardOrganizationsEventDestinationsCreateOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsCreateOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsCreateOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCreateOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCr event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCr status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsCreateOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsCreateOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsCreateOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -110,11 +138,18 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsCreateOutput, Di class DashboardOrganizationsEventDestinationsCreateBodyWebhook: url: str @dataclass +class DashboardOrganizationsEventDestinationsCreateBodyRetry: + strategy: Optional[str] = None + max_attempts: Optional[float] = None + base_delay_seconds: Optional[float] = None + max_delay_seconds: Optional[float] = None +@dataclass class DashboardOrganizationsEventDestinationsCreateBody: name: str type: str webhook: DashboardOrganizationsEventDestinationsCreateBodyWebhook description: Optional[str] = None + retry: Optional[DashboardOrganizationsEventDestinationsCreateBodyRetry] = None class mapDashboardOrganizationsEventDestinationsCreateBodyWebhook: @@ -132,6 +167,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsCreateBodyWebhoo return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsCreateBodyRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCreateBodyRetry: + return DashboardOrganizationsEventDestinationsCreateBodyRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsCreateBodyRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsCreateBody: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCreateBody: @@ -139,7 +192,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsCr name=data.get('name'), description=data.get('description'), type=data.get('type'), - webhook=mapDashboardOrganizationsEventDestinationsCreateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None + webhook=mapDashboardOrganizationsEventDestinationsCreateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsCreateBodyRetry.from_dict(data.get('retry')) if data.get('retry') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/get.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/get.py index fd2f3e26..425870bf 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/get.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsGetOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsGetOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsGetOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsGetOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsGetOutput: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsGetOutput: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsGetOutputRetry listeners: List[DashboardOrganizationsEventDestinationsGetOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsGetOutputWebhook return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsGetOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsGetOutputRetry: + return DashboardOrganizationsEventDestinationsGetOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsGetOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsGetOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsGetOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsGe event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsGe status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsGetOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsGetOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsGetOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/list.py index 7c2ba031..dee0d669 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/list.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsListOutputItemsWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsListOutputItemsRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsListOutputItemsListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsListOutputItemsListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsListOutputItems: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsListOutputItems: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsListOutputItemsRetry listeners: List[DashboardOrganizationsEventDestinationsListOutputItemsListeners] created_at: datetime updated_at: datetime @@ -62,6 +70,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsListOutputItemsW return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsListOutputItemsRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsListOutputItemsRetry: + return DashboardOrganizationsEventDestinationsListOutputItemsRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsListOutputItemsRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsListOutputItemsListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsListOutputItemsListeners: @@ -74,7 +100,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsLi event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -99,6 +126,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsLi status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsListOutputItemsWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsListOutputItemsRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsListOutputItemsListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -154,6 +182,9 @@ class DashboardOrganizationsEventDestinationsListQuery: cursor: Optional[str] = None order: Optional[str] = None status: Optional[Union[str, List[str]]] = None + callback_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + search: Optional[str] = None class mapDashboardOrganizationsEventDestinationsListQuery: @@ -165,7 +196,10 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsLi before=data.get('before'), cursor=data.get('cursor'), order=data.get('order'), - status=data.get('status') + status=data.get('status'), + callback_id=data.get('callback_id'), + chat_connection_id=data.get('chat_connection_id'), + search=data.get('search') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/ping.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/ping.py new file mode 100644 index 00000000..2f6190d1 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/ping.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttemptsError: + code: str + message: str +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttemptsRequest: + url: str + method: str + headers: List[DashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[DashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class DashboardOrganizationsEventDestinationsPingOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[DashboardOrganizationsEventDestinationsPingOutputAttemptsError] = None + request: Optional[DashboardOrganizationsEventDestinationsPingOutputAttemptsRequest] = None + response: Optional[DashboardOrganizationsEventDestinationsPingOutputAttemptsResponse] = None +@dataclass +class DashboardOrganizationsEventDestinationsPingOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: DashboardOrganizationsEventDestinationsPingOutputRetry + attempts: List[DashboardOrganizationsEventDestinationsPingOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[DashboardOrganizationsEventDestinationsPingOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapDashboardOrganizationsEventDestinationsPingOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputError: + return DashboardOrganizationsEventDestinationsPingOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputRetry: + return DashboardOrganizationsEventDestinationsPingOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttemptsError: + return DashboardOrganizationsEventDestinationsPingOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders: + return DashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttemptsRequest: + return DashboardOrganizationsEventDestinationsPingOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapDashboardOrganizationsEventDestinationsPingOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders: + return DashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttemptsResponse: + return DashboardOrganizationsEventDestinationsPingOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapDashboardOrganizationsEventDestinationsPingOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutputAttempts: + return DashboardOrganizationsEventDestinationsPingOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapDashboardOrganizationsEventDestinationsPingOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapDashboardOrganizationsEventDestinationsPingOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapDashboardOrganizationsEventDestinationsPingOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapDashboardOrganizationsEventDestinationsPingOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsPingOutput: + return DashboardOrganizationsEventDestinationsPingOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapDashboardOrganizationsEventDestinationsPingOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapDashboardOrganizationsEventDestinationsPingOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapDashboardOrganizationsEventDestinationsPingOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsPingOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/rotate_webhook_secret.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/rotate_webhook_secret.py index 2e6ee48f..9423b1cc 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/rotate_webhook_secret.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/rotate_webhook_secret.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsRotateWebhookSecretOutput: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry listeners: List[DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsRotateWebhookSec return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry: + return DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsRo event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsRo status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsRotateWebhookSecretOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/update.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/update.py index ecc2b91b..7fa6a206 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/update.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/event_destinations/update.py @@ -9,6 +9,12 @@ class DashboardOrganizationsEventDestinationsUpdateOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsUpdateOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class DashboardOrganizationsEventDestinationsUpdateOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class DashboardOrganizationsEventDestinationsUpdateOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventDestinationsUpdateOutput: object: str @@ -29,6 +36,7 @@ class DashboardOrganizationsEventDestinationsUpdateOutput: name: str status: str type: str + retry: DashboardOrganizationsEventDestinationsUpdateOutputRetry listeners: List[DashboardOrganizationsEventDestinationsUpdateOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsUpdateOutputWebh return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsUpdateOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUpdateOutputRetry: + return DashboardOrganizationsEventDestinationsUpdateOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsUpdateOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsUpdateOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUpdateOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUp event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUp status=data.get('status'), type=data.get('type'), webhook=mapDashboardOrganizationsEventDestinationsUpdateOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsUpdateOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapDashboardOrganizationsEventDestinationsUpdateOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -110,10 +138,17 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsUpdateOutput, Di class DashboardOrganizationsEventDestinationsUpdateBodyWebhook: url: Optional[str] = None @dataclass +class DashboardOrganizationsEventDestinationsUpdateBodyRetry: + strategy: Optional[str] = None + max_attempts: Optional[float] = None + base_delay_seconds: Optional[float] = None + max_delay_seconds: Optional[float] = None +@dataclass class DashboardOrganizationsEventDestinationsUpdateBody: name: Optional[str] = None description: Optional[str] = None webhook: Optional[DashboardOrganizationsEventDestinationsUpdateBodyWebhook] = None + retry: Optional[DashboardOrganizationsEventDestinationsUpdateBodyRetry] = None class mapDashboardOrganizationsEventDestinationsUpdateBodyWebhook: @@ -131,13 +166,32 @@ def to_dict(value: Union[DashboardOrganizationsEventDestinationsUpdateBodyWebhoo return value return dataclasses.asdict(value) +class mapDashboardOrganizationsEventDestinationsUpdateBodyRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUpdateBodyRetry: + return DashboardOrganizationsEventDestinationsUpdateBodyRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[DashboardOrganizationsEventDestinationsUpdateBodyRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapDashboardOrganizationsEventDestinationsUpdateBody: @staticmethod def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventDestinationsUpdateBody: return DashboardOrganizationsEventDestinationsUpdateBody( name=data.get('name'), description=data.get('description'), - webhook=mapDashboardOrganizationsEventDestinationsUpdateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None + webhook=mapDashboardOrganizationsEventDestinationsUpdateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapDashboardOrganizationsEventDestinationsUpdateBodyRetry.from_dict(data.get('retry')) if data.get('retry') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/get.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/get.py index ba9edb51..d4b8ff6a 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/get.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/get.py @@ -12,11 +12,13 @@ class DashboardOrganizationsEventsGetOutput: event_type: str created_at: datetime instance_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None callback_id: Optional[str] = None + callback_event_id: Optional[str] = None callback_trigger_key: Optional[str] = None chat_event_id: Optional[str] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None + payload: Optional[Dict[str, Any]] = None class mapDashboardOrganizationsEventsGetOutput: @@ -29,12 +31,14 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventsGetOutput: instance_id=data.get('instance_id'), source=data.get('source'), event_type=data.get('event_type'), - payload=data.get('payload'), callback_id=data.get('callback_id'), + callback_event_id=data.get('callback_event_id'), callback_trigger_key=data.get('callback_trigger_key'), chat_event_id=data.get('chat_event_id'), - chat_integration_id=data.get('chat_integration_id'), - created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + payload=data.get('payload') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/list.py index 62e85651..167ca1bb 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/events/list.py @@ -12,11 +12,12 @@ class DashboardOrganizationsEventsListOutputItems: event_type: str created_at: datetime instance_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None callback_id: Optional[str] = None + callback_event_id: Optional[str] = None callback_trigger_key: Optional[str] = None chat_event_id: Optional[str] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class DashboardOrganizationsEventsListOutputPagination: has_more_before: bool @@ -37,11 +38,12 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventsListOutputIte instance_id=data.get('instance_id'), source=data.get('source'), event_type=data.get('event_type'), - payload=data.get('payload'), callback_id=data.get('callback_id'), + callback_event_id=data.get('callback_event_id'), callback_trigger_key=data.get('callback_trigger_key'), chat_event_id=data.get('chat_event_id'), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) @@ -87,6 +89,10 @@ def to_dict(value: Union[DashboardOrganizationsEventsListOutput, Dict[str, Any], return dataclasses.asdict(value) @dataclass +class DashboardOrganizationsEventsListQueryCreatedAt: + gt: Optional[datetime] = None + lt: Optional[datetime] = None +@dataclass class DashboardOrganizationsEventsListQuery: limit: Optional[float] = None after: Optional[str] = None @@ -98,7 +104,9 @@ class DashboardOrganizationsEventsListQuery: source: Optional[Union[str, List[str]]] = None callback_id: Optional[Union[str, List[str]]] = None callback_trigger_key: Optional[Union[str, List[str]]] = None - chat_integration_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + provider_id: Optional[Union[str, List[str]]] = None + created_at: Optional[DashboardOrganizationsEventsListQueryCreatedAt] = None class mapDashboardOrganizationsEventsListQuery: @@ -115,7 +123,9 @@ def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsEventsListQuery: source=data.get('source'), callback_id=data.get('callback_id'), callback_trigger_key=data.get('callback_trigger_key'), - chat_integration_id=data.get('chat_integration_id') + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), + created_at=mapDashboardOrganizationsEventsListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/dashboard/organizations/webhook_events/list.py b/src/metorial/_generated/magnetar/resources/dashboard/organizations/webhook_events/list.py index 2139045c..cef44aeb 100644 --- a/src/metorial/_generated/magnetar/resources/dashboard/organizations/webhook_events/list.py +++ b/src/metorial/_generated/magnetar/resources/dashboard/organizations/webhook_events/list.py @@ -7,6 +7,7 @@ class DashboardOrganizationsWebhookEventsListOutputItems: object: str name: str + description: str @dataclass class DashboardOrganizationsWebhookEventsListOutputPagination: has_more_before: bool @@ -22,7 +23,8 @@ class mapDashboardOrganizationsWebhookEventsListOutputItems: def from_dict(data: Dict[str, Any]) -> DashboardOrganizationsWebhookEventsListOutputItems: return DashboardOrganizationsWebhookEventsListOutputItems( object=data.get('object'), - name=data.get('name') + name=data.get('name'), + description=data.get('description') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/integrations/create.py b/src/metorial/_generated/magnetar/resources/integrations/create.py index 07be3669..e7efad60 100644 --- a/src/metorial/_generated/magnetar/resources/integrations/create.py +++ b/src/metorial/_generated/magnetar/resources/integrations/create.py @@ -8,6 +8,7 @@ class IntegrationsCreateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class IntegrationsCreateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsCreateOutputConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class IntegrationsCreateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapIntegrationsCreateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsCreateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/integrations/delete.py b/src/metorial/_generated/magnetar/resources/integrations/delete.py index 9d934aa1..6bec2ed2 100644 --- a/src/metorial/_generated/magnetar/resources/integrations/delete.py +++ b/src/metorial/_generated/magnetar/resources/integrations/delete.py @@ -8,6 +8,7 @@ class IntegrationsDeleteOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class IntegrationsDeleteOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsDeleteOutputConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/integrations/get.py b/src/metorial/_generated/magnetar/resources/integrations/get.py index 1217dac5..67ac99df 100644 --- a/src/metorial/_generated/magnetar/resources/integrations/get.py +++ b/src/metorial/_generated/magnetar/resources/integrations/get.py @@ -8,6 +8,7 @@ class IntegrationsGetOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class IntegrationsGetOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsGetOutputConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/integrations/list.py b/src/metorial/_generated/magnetar/resources/integrations/list.py index 5cfb5b52..279ef34a 100644 --- a/src/metorial/_generated/magnetar/resources/integrations/list.py +++ b/src/metorial/_generated/magnetar/resources/integrations/list.py @@ -8,6 +8,7 @@ class IntegrationsListOutputItemsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class IntegrationsListOutputItemsProvidersConfig: @@ -76,6 +77,7 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsListOutputItemsConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/integrations/update.py b/src/metorial/_generated/magnetar/resources/integrations/update.py index 5f3a40bb..4b70d5d3 100644 --- a/src/metorial/_generated/magnetar/resources/integrations/update.py +++ b/src/metorial/_generated/magnetar/resources/integrations/update.py @@ -8,6 +8,7 @@ class IntegrationsUpdateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class IntegrationsUpdateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsUpdateOutputConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class IntegrationsUpdateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapIntegrationsUpdateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> IntegrationsUpdateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/instance/callback_events/get.py b/src/metorial/_generated/magnetar/resources/management/instance/callback_events/get.py index 4dafba5a..72b41867 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/callback_events/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/callback_events/get.py @@ -22,6 +22,7 @@ class ManagementInstanceCallbackEventsGetOutputDetailsWebhookRequest: @dataclass class ManagementInstanceCallbackEventsGetOutputDetailsWebhook: object: str + id: str status: str received_at: datetime request: Optional[ManagementInstanceCallbackEventsGetOutputDetailsWebhookRequest] = None @@ -105,6 +106,7 @@ class mapManagementInstanceCallbackEventsGetOutputDetailsWebhook: def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsGetOutputDetailsWebhook: return ManagementInstanceCallbackEventsGetOutputDetailsWebhook( object=data.get('object'), + id=data.get('id'), status=data.get('status'), request=mapManagementInstanceCallbackEventsGetOutputDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None diff --git a/src/metorial/_generated/magnetar/resources/management/instance/callback_events/list.py b/src/metorial/_generated/magnetar/resources/management/instance/callback_events/list.py index 009eb8d7..336fe92b 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/callback_events/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/callback_events/list.py @@ -3,35 +3,6 @@ from datetime import datetime import dataclasses -@dataclass -class ManagementInstanceCallbackEventsListOutputItemsDetailsError: - object: str - code: str - message: str -@dataclass -class ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - encoding: str - content: str -@dataclass -class ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - object: str - method: str - url: str - headers: Dict[str, str] - body: Optional[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody] = None -@dataclass -class ManagementInstanceCallbackEventsListOutputItemsDetailsWebhook: - object: str - status: str - received_at: datetime - request: Optional[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest] = None -@dataclass -class ManagementInstanceCallbackEventsListOutputItemsDetails: - object: str - status: str - payload: Optional[Dict[str, Any]] = None - error: Optional[ManagementInstanceCallbackEventsListOutputItemsDetailsError] = None - webhook: Optional[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhook] = None @dataclass class ManagementInstanceCallbackEventsListOutputItems: object: str @@ -45,7 +16,6 @@ class ManagementInstanceCallbackEventsListOutputItems: created_at: datetime mapped_type: Optional[str] = None mapped_id: Optional[str] = None - details: Optional[ManagementInstanceCallbackEventsListOutputItemsDetails] = None @dataclass class ManagementInstanceCallbackEventsListOutputPagination: has_more_before: bool @@ -56,95 +26,6 @@ class ManagementInstanceCallbackEventsListOutput: pagination: ManagementInstanceCallbackEventsListOutputPagination -class mapManagementInstanceCallbackEventsListOutputItemsDetailsError: - @staticmethod - def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItemsDetailsError: - return ManagementInstanceCallbackEventsListOutputItemsDetailsError( - object=data.get('object'), - code=data.get('code'), - message=data.get('message') - ) - - @staticmethod - def to_dict(value: Union[ManagementInstanceCallbackEventsListOutputItemsDetailsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - @staticmethod - def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody: - return ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody( - encoding=data.get('encoding'), - content=data.get('content') - ) - - @staticmethod - def to_dict(value: Union[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - @staticmethod - def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest: - return ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest( - object=data.get('object'), - method=data.get('method'), - url=data.get('url'), - headers=data.get('headers'), - body=mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequestBody.from_dict(data.get('body')) if data.get('body') else None - ) - - @staticmethod - def to_dict(value: Union[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhook: - @staticmethod - def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItemsDetailsWebhook: - return ManagementInstanceCallbackEventsListOutputItemsDetailsWebhook( - object=data.get('object'), - status=data.get('status'), - request=mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhookRequest.from_dict(data.get('request')) if data.get('request') else None, - received_at=datetime.fromisoformat(data.get('received_at').replace('Z', '+00:00')) if data.get('received_at') else None - ) - - @staticmethod - def to_dict(value: Union[ManagementInstanceCallbackEventsListOutputItemsDetailsWebhook, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - -class mapManagementInstanceCallbackEventsListOutputItemsDetails: - @staticmethod - def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItemsDetails: - return ManagementInstanceCallbackEventsListOutputItemsDetails( - object=data.get('object'), - status=data.get('status'), - payload=data.get('payload'), - error=mapManagementInstanceCallbackEventsListOutputItemsDetailsError.from_dict(data.get('error')) if data.get('error') else None, - webhook=mapManagementInstanceCallbackEventsListOutputItemsDetailsWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None - ) - - @staticmethod - def to_dict(value: Union[ManagementInstanceCallbackEventsListOutputItemsDetails, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: - if value is None: - return None - if isinstance(value, dict): - return value - return dataclasses.asdict(value) - class mapManagementInstanceCallbackEventsListOutputItems: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutputItems: @@ -158,7 +39,6 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbackEventsListOutpu mapped_id=data.get('mapped_id'), callback_id=data.get('callback_id'), callback_instance_id=data.get('callback_instance_id'), - details=mapManagementInstanceCallbackEventsListOutputItemsDetails.from_dict(data.get('details')) if data.get('details') else None, occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/callbacks/list.py b/src/metorial/_generated/magnetar/resources/management/instance/callbacks/list.py index fbdadf85..25029cdc 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/callbacks/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/callbacks/list.py @@ -133,6 +133,7 @@ class ManagementInstanceCallbacksListQuery: integration_id: Optional[Union[str, List[str]]] = None integration_provider_id: Optional[Union[str, List[str]]] = None provider_id: Optional[Union[str, List[str]]] = None + search: Optional[str] = None status: Optional[Union[str, List[str]]] = None created_at: Optional[ManagementInstanceCallbacksListQueryCreatedAt] = None updated_at: Optional[ManagementInstanceCallbacksListQueryUpdatedAt] = None @@ -151,6 +152,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceCallbacksListQuery: integration_id=data.get('integration_id'), integration_provider_id=data.get('integration_provider_id'), provider_id=data.get('provider_id'), + search=data.get('search'), status=data.get('status'), created_at=mapManagementInstanceCallbacksListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapManagementInstanceCallbacksListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/management/instance/chat/events/get.py b/src/metorial/_generated/magnetar/resources/management/instance/chat/events/get.py index ee58bb5f..5833bbca 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/chat/events/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/chat/events/get.py @@ -9,9 +9,10 @@ class ManagementInstanceChatEventsGetOutput: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -32,6 +33,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatEventsGetOutput: id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), diff --git a/src/metorial/_generated/magnetar/resources/management/instance/chat/events/list.py b/src/metorial/_generated/magnetar/resources/management/instance/chat/events/list.py index 08f90554..d0462be4 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/chat/events/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/chat/events/list.py @@ -9,9 +9,10 @@ class ManagementInstanceChatEventsListOutputItems: id: str type: str source: str - chat_id: str + chat_connection_id: str occurred_at: datetime created_at: datetime + chat_id: Optional[str] = None channel_id: Optional[str] = None thread_id: Optional[str] = None message_id: Optional[str] = None @@ -21,7 +22,6 @@ class ManagementInstanceChatEventsListOutputItems: provider_thread_id: Optional[str] = None provider_message_id: Optional[str] = None provider_author_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None @dataclass class ManagementInstanceChatEventsListOutputPagination: has_more_before: bool @@ -40,6 +40,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatEventsListOutputIte id=data.get('id'), type=data.get('type'), source=data.get('source'), + chat_connection_id=data.get('chat_connection_id'), chat_id=data.get('chat_id'), channel_id=data.get('channel_id'), thread_id=data.get('thread_id'), @@ -50,7 +51,6 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatEventsListOutputIte provider_thread_id=data.get('provider_thread_id'), provider_message_id=data.get('provider_message_id'), provider_author_id=data.get('provider_author_id'), - payload=data.get('payload'), occurred_at=datetime.fromisoformat(data.get('occurred_at').replace('Z', '+00:00')) if data.get('occurred_at') else None, created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/get.py b/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/get.py index 73bea518..ed673619 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/get.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ManagementInstanceChatsChannelsGetOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ManagementInstanceChatsChannelsGetOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class ManagementInstanceChatsChannelsGetOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ManagementInstanceChatsChannelsGetOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ManagementInstanceChatsChannelsGetOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapManagementInstanceChatsChannelsGetOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsGetOutputRecipient: + return ManagementInstanceChatsChannelsGetOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementInstanceChatsChannelsGetOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementInstanceChatsChannelsGetOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsGetOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsGetOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapManagementInstanceChatsChannelsGetOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapManagementInstanceChatsChannelsGetOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/list.py b/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/list.py index 4766ceb1..caf566ca 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/chats/channels/list.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ManagementInstanceChatsChannelsListOutputItemsRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ManagementInstanceChatsChannelsListOutputItemsContextAuthor: id: str @@ -29,12 +46,14 @@ class ManagementInstanceChatsChannelsListOutputItems: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ManagementInstanceChatsChannelsListOutputItemsRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ManagementInstanceChatsChannelsListOutputItemsContext] = None @@ -49,6 +68,35 @@ class ManagementInstanceChatsChannelsListOutput: pagination: ManagementInstanceChatsChannelsListOutputPagination +class mapManagementInstanceChatsChannelsListOutputItemsRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsListOutputItemsRecipient: + return ManagementInstanceChatsChannelsListOutputItemsRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementInstanceChatsChannelsListOutputItemsRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementInstanceChatsChannelsListOutputItemsContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsListOutputItemsContextAuthor: @@ -117,6 +165,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsListOutput name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapManagementInstanceChatsChannelsListOutputItemsRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapManagementInstanceChatsChannelsListOutputItemsContext.from_dict(data.get('context')) if data.get('context') else None, @@ -176,6 +226,7 @@ class ManagementInstanceChatsChannelsListQuery: workspace_id: Optional[str] = None type: Optional[str] = None search: Optional[str] = None + has_access: Optional[bool] = None class mapManagementInstanceChatsChannelsListQuery: @@ -189,7 +240,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsChannelsListQuery: order=data.get('order'), workspace_id=data.get('workspace_id'), type=data.get('type'), - search=data.get('search') + search=data.get('search'), + has_access=data.get('has_access') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/instance/chats/dms/open.py b/src/metorial/_generated/magnetar/resources/management/instance/chats/dms/open.py index 390eb455..febd34c8 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/chats/dms/open.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/chats/dms/open.py @@ -3,6 +3,23 @@ from datetime import datetime import dataclasses +@dataclass +class ManagementInstanceChatsDmsOpenOutputRecipient: + object: str + id: str + chat_id: str + type: str + role: str + provider_type: str + provider_author_id: str + user_name: str + full_name: str + is_self: bool + created_at: datetime + updated_at: datetime + email: Optional[str] = None + image_url: Optional[str] = None + last_interaction_at: Optional[datetime] = None @dataclass class ManagementInstanceChatsDmsOpenOutputContextAuthor: id: str @@ -29,18 +46,49 @@ class ManagementInstanceChatsDmsOpenOutput: type: str provider_type: str provider_channel_id: str + has_access: bool created_at: datetime updated_at: datetime workspace_id: Optional[str] = None name: Optional[str] = None topic: Optional[str] = None subject: Optional[str] = None + recipient: Optional[ManagementInstanceChatsDmsOpenOutputRecipient] = None member_count: Optional[float] = None permalink: Optional[str] = None context: Optional[ManagementInstanceChatsDmsOpenOutputContext] = None last_interaction_at: Optional[datetime] = None +class mapManagementInstanceChatsDmsOpenOutputRecipient: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsDmsOpenOutputRecipient: + return ManagementInstanceChatsDmsOpenOutputRecipient( + object=data.get('object'), + id=data.get('id'), + chat_id=data.get('chat_id'), + type=data.get('type'), + role=data.get('role'), + provider_type=data.get('provider_type'), + provider_author_id=data.get('provider_author_id'), + user_name=data.get('user_name'), + full_name=data.get('full_name'), + email=data.get('email'), + image_url=data.get('image_url'), + is_self=data.get('is_self'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, + last_interaction_at=datetime.fromisoformat(data.get('last_interaction_at').replace('Z', '+00:00')) if data.get('last_interaction_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementInstanceChatsDmsOpenOutputRecipient, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementInstanceChatsDmsOpenOutputContextAuthor: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsDmsOpenOutputContextAuthor: @@ -109,6 +157,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceChatsDmsOpenOutput: name=data.get('name'), topic=data.get('topic'), subject=data.get('subject'), + has_access=data.get('has_access'), + recipient=mapManagementInstanceChatsDmsOpenOutputRecipient.from_dict(data.get('recipient')) if data.get('recipient') else None, member_count=data.get('member_count'), permalink=data.get('permalink'), context=mapManagementInstanceChatsDmsOpenOutputContext.from_dict(data.get('context')) if data.get('context') else None, diff --git a/src/metorial/_generated/magnetar/resources/management/instance/integrations/create.py b/src/metorial/_generated/magnetar/resources/management/instance/integrations/create.py index 5e0b331c..7f070160 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/integrations/create.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/integrations/create.py @@ -8,6 +8,7 @@ class ManagementInstanceIntegrationsCreateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceIntegrationsCreateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsCreateOutpu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class ManagementInstanceIntegrationsCreateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapManagementInstanceIntegrationsCreateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsCreateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/instance/integrations/delete.py b/src/metorial/_generated/magnetar/resources/management/instance/integrations/delete.py index f0bafaf6..4d43e6a9 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/integrations/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/integrations/delete.py @@ -8,6 +8,7 @@ class ManagementInstanceIntegrationsDeleteOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceIntegrationsDeleteOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsDeleteOutpu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/integrations/get.py b/src/metorial/_generated/magnetar/resources/management/instance/integrations/get.py index f4e37373..2054e88f 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/integrations/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/integrations/get.py @@ -8,6 +8,7 @@ class ManagementInstanceIntegrationsGetOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceIntegrationsGetOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsGetOutputCo can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/integrations/list.py b/src/metorial/_generated/magnetar/resources/management/instance/integrations/list.py index ae9ecc18..74792bf7 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/integrations/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/integrations/list.py @@ -8,6 +8,7 @@ class ManagementInstanceIntegrationsListOutputItemsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceIntegrationsListOutputItemsProvidersConfig: @@ -76,6 +77,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsListOutputI can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/integrations/update.py b/src/metorial/_generated/magnetar/resources/management/instance/integrations/update.py index e7d5fecc..8ad8dd63 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/integrations/update.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/integrations/update.py @@ -8,6 +8,7 @@ class ManagementInstanceIntegrationsUpdateOutputConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceIntegrationsUpdateOutputProvidersConfig: @@ -68,6 +69,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsUpdateOutpu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) @@ -187,6 +189,7 @@ class ManagementInstanceIntegrationsUpdateBody: can_attach_custom_tool_filters: Optional[bool] = None can_attach_custom_provider_config: Optional[bool] = None can_override_tool_filters: Optional[bool] = None + enable_callback_tools: Optional[bool] = None class mapManagementInstanceIntegrationsUpdateBody: @@ -199,7 +202,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceIntegrationsUpdateBody: use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names'), can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), - can_override_tool_filters=data.get('can_override_tool_filters') + can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/instance/provider_deployments/auth_configs/list.py b/src/metorial/_generated/magnetar/resources/management/instance/provider_deployments/auth_configs/list.py index 80585a88..87d06c74 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/provider_deployments/auth_configs/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/provider_deployments/auth_configs/list.py @@ -309,6 +309,7 @@ class ManagementInstanceProviderDeploymentsAuthConfigsListQuery: consumer_id: Optional[Union[str, List[str]]] = None identity_id: Optional[Union[str, List[str]]] = None identity_credential_id: Optional[Union[str, List[str]]] = None + adapter: Optional[str] = None search: Optional[str] = None created_at: Optional[ManagementInstanceProviderDeploymentsAuthConfigsListQueryCreatedAt] = None updated_at: Optional[ManagementInstanceProviderDeploymentsAuthConfigsListQueryUpdatedAt] = None @@ -335,6 +336,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceProviderDeploymentsAuth consumer_id=data.get('consumer_id'), identity_id=data.get('identity_id'), identity_credential_id=data.get('identity_credential_id'), + adapter=data.get('adapter'), search=data.get('search'), created_at=mapManagementInstanceProviderDeploymentsAuthConfigsListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapManagementInstanceProviderDeploymentsAuthConfigsListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/create.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/create.py index 003b3782..6a67238f 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/create.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/create.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsCreateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsCreateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsCreateOutputInteg can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/delete.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/delete.py index 1fe35e70..528fb6df 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/delete.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsDeleteOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsDeleteOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsDeleteOutputInteg can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/duplicate.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/duplicate.py index 3a452a99..5988dec1 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/duplicate.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/duplicate.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsDuplicateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsDuplicateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsDuplicateOutputIn can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/fork.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/fork.py index 7ec9e73b..f647102b 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/fork.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/fork.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsForkOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsForkOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsForkOutputIntegra can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/get.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/get.py index 9caa1bdb..d76ec3e0 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/get.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsGetOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsGetOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsGetOutputIntegrat can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/create.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/create.py index 684a8e5d..2f8e0399 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/create.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/create.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsItemsCreateOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsItemsCreateOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsItemsCreateOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/delete.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/delete.py index 45c5da90..254be5d0 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/delete.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsItemsDeleteOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsItemsDeleteOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsItemsDeleteOutput can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/get.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/get.py index f371ec22..477bca2b 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/get.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsItemsGetOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsItemsGetOutputInt can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/list.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/list.py index 99da2dde..cf5f5440 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/items/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/items/list.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsItemsListOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsItemsListOutputItemsIntegration: @@ -57,6 +58,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsItemsListOutputIt can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/list.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/list.py index d09de331..adf376cc 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/list.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsListOutputItemsIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsListOutputItemsIntegrations: @@ -610,6 +611,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsListOutputItemsIn can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/publish_consumer_skill.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/publish_consumer_skill.py index b34eab91..8e835304 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/publish_consumer_skill.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/publish_consumer_skill.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsPublishConsumerSkillOutputIntegrationsConfiguratio can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsPublishConsumerSkillOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsPublishConsumerSk can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/share.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/share.py index e2c6015f..33036f5e 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/share.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/share.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsShareOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsShareOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsShareOutputIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/create.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/create.py index 93c49d3f..87d787ed 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/create.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/create.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesCreateOutputItemsIntegrationConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesCreateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesCreateOu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/delete.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/delete.py index 8fecf732..22d91ae0 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/delete.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesDeleteOutputItemsIntegrationConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesDeleteOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesDeleteOu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/get.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/get.py index c2039d37..8d3c614a 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/get.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesGetOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesGetOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesGetOutpu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/create.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/create.py index d88e4ba6..afe58203 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/create.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/create.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesItemsCreateOutputIntegrationConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesItemsCreateOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesItemsCre can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/delete.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/delete.py index 29cccd33..5849ac45 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/delete.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesItemsDeleteOutputIntegrationConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesItemsDeleteOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesItemsDel can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/get.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/get.py index d0e53d66..8150751c 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/get.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/get.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesItemsGetOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesItemsGet can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/list.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/list.py index ded444c5..b9495fa9 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/items/list.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesItemsListOutputItemsIntegrationConfigurat can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesItemsListOutputItemsIntegration: @@ -56,6 +57,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesItemsLis can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/list.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/list.py index c74fc6f5..de50afaf 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/list.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/list.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesListOutputItemsItemsIntegrationConfigurat can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesListOutputItemsItemsIntegration: @@ -70,6 +71,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesListOutp can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/update.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/update.py index 93cc62e4..e4a7b71d 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/update.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/templates/update.py @@ -8,6 +8,7 @@ class ManagementInstanceSkillsTemplatesUpdateOutputItemsIntegrationConfiguration can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsTemplatesUpdateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsTemplatesUpdateOu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/instance/skills/update.py b/src/metorial/_generated/magnetar/resources/management/instance/skills/update.py index f8ce9c82..15c97802 100644 --- a/src/metorial/_generated/magnetar/resources/management/instance/skills/update.py +++ b/src/metorial/_generated/magnetar/resources/management/instance/skills/update.py @@ -171,6 +171,7 @@ class ManagementInstanceSkillsUpdateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class ManagementInstanceSkillsUpdateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementInstanceSkillsUpdateOutputInteg can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/__init__.py b/src/metorial/_generated/magnetar/resources/management/organization/__init__.py index 64ec18b7..cffc395d 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/__init__.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/__init__.py @@ -1,4 +1,6 @@ from .api_keys import * +from .event_deliveries import * +from .event_delivery_attempts import * from .event_destination_listeners import * from .event_destinations import * from .events import * diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/__init__.py b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/__init__.py new file mode 100644 index 00000000..6ac73ee8 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/__init__.py @@ -0,0 +1,3 @@ +from .get import * +from .list import * +from .retry import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/get.py b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/get.py new file mode 100644 index 00000000..39fd88cf --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/get.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttemptsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttemptsRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesGetOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDeliveriesGetOutputAttemptsError] = None + request: Optional[ManagementOrganizationEventDeliveriesGetOutputAttemptsRequest] = None + response: Optional[ManagementOrganizationEventDeliveriesGetOutputAttemptsResponse] = None +@dataclass +class ManagementOrganizationEventDeliveriesGetOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: ManagementOrganizationEventDeliveriesGetOutputRetry + attempts: List[ManagementOrganizationEventDeliveriesGetOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[ManagementOrganizationEventDeliveriesGetOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapManagementOrganizationEventDeliveriesGetOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputError: + return ManagementOrganizationEventDeliveriesGetOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputRetry: + return ManagementOrganizationEventDeliveriesGetOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttemptsError: + return ManagementOrganizationEventDeliveriesGetOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders: + return ManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttemptsRequest: + return ManagementOrganizationEventDeliveriesGetOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDeliveriesGetOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders: + return ManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttemptsResponse: + return ManagementOrganizationEventDeliveriesGetOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDeliveriesGetOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutputAttempts: + return ManagementOrganizationEventDeliveriesGetOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDeliveriesGetOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDeliveriesGetOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDeliveriesGetOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesGetOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesGetOutput: + return ManagementOrganizationEventDeliveriesGetOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapManagementOrganizationEventDeliveriesGetOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapManagementOrganizationEventDeliveriesGetOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapManagementOrganizationEventDeliveriesGetOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesGetOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/list.py b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/list.py new file mode 100644 index 00000000..e96ca02e --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/list.py @@ -0,0 +1,337 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttemptsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItemsAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsError] = None + request: Optional[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest] = None + response: Optional[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse] = None +@dataclass +class ManagementOrganizationEventDeliveriesListOutputItems: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: ManagementOrganizationEventDeliveriesListOutputItemsRetry + attempts: List[ManagementOrganizationEventDeliveriesListOutputItemsAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[ManagementOrganizationEventDeliveriesListOutputItemsError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None +@dataclass +class ManagementOrganizationEventDeliveriesListOutputPagination: + has_more_before: bool + has_more_after: bool +@dataclass +class ManagementOrganizationEventDeliveriesListOutput: + items: List[ManagementOrganizationEventDeliveriesListOutputItems] + pagination: ManagementOrganizationEventDeliveriesListOutputPagination + + +class mapManagementOrganizationEventDeliveriesListOutputItemsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsError: + return ManagementOrganizationEventDeliveriesListOutputItemsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsRetry: + return ManagementOrganizationEventDeliveriesListOutputItemsRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttemptsError: + return ManagementOrganizationEventDeliveriesListOutputItemsAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders: + return ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest: + return ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders: + return ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse: + return ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItemsAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItemsAttempts: + return ManagementOrganizationEventDeliveriesListOutputItemsAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDeliveriesListOutputItemsAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItemsAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputItems: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputItems: + return ManagementOrganizationEventDeliveriesListOutputItems( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapManagementOrganizationEventDeliveriesListOutputItemsError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapManagementOrganizationEventDeliveriesListOutputItemsRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapManagementOrganizationEventDeliveriesListOutputItemsAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputItems, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutputPagination: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutputPagination: + return ManagementOrganizationEventDeliveriesListOutputPagination( + has_more_before=data.get('has_more_before'), + has_more_after=data.get('has_more_after') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutputPagination, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesListOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListOutput: + return ManagementOrganizationEventDeliveriesListOutput( + items=[mapManagementOrganizationEventDeliveriesListOutputItems.from_dict(item) for item in data.get('items', []) if item], + pagination=mapManagementOrganizationEventDeliveriesListOutputPagination.from_dict(data.get('pagination')) if data.get('pagination') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + +@dataclass +class ManagementOrganizationEventDeliveriesListQuery: + limit: Optional[float] = None + after: Optional[str] = None + before: Optional[str] = None + cursor: Optional[str] = None + order: Optional[str] = None + status: Optional[Union[str, List[str]]] = None + event_id: Optional[Union[str, List[str]]] = None + event_type: Optional[Union[str, List[str]]] = None + event_destination_id: Optional[Union[str, List[str]]] = None + instance_id: Optional[Union[str, List[str]]] = None + + +class mapManagementOrganizationEventDeliveriesListQuery: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesListQuery: + return ManagementOrganizationEventDeliveriesListQuery( + limit=data.get('limit'), + after=data.get('after'), + before=data.get('before'), + cursor=data.get('cursor'), + order=data.get('order'), + status=data.get('status'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + instance_id=data.get('instance_id') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesListQuery, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/retry.py b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/retry.py new file mode 100644 index 00000000..c3ab6fbc --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_deliveries/retry.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttemptsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDeliveriesRetryOutputAttemptsError] = None + request: Optional[ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest] = None + response: Optional[ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse] = None +@dataclass +class ManagementOrganizationEventDeliveriesRetryOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: ManagementOrganizationEventDeliveriesRetryOutputRetry + attempts: List[ManagementOrganizationEventDeliveriesRetryOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[ManagementOrganizationEventDeliveriesRetryOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapManagementOrganizationEventDeliveriesRetryOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputError: + return ManagementOrganizationEventDeliveriesRetryOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputRetry: + return ManagementOrganizationEventDeliveriesRetryOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttemptsError: + return ManagementOrganizationEventDeliveriesRetryOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders: + return ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest: + return ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDeliveriesRetryOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders: + return ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse: + return ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDeliveriesRetryOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutputAttempts: + return ManagementOrganizationEventDeliveriesRetryOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDeliveriesRetryOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDeliveriesRetryOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDeliveriesRetryOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveriesRetryOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveriesRetryOutput: + return ManagementOrganizationEventDeliveriesRetryOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapManagementOrganizationEventDeliveriesRetryOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapManagementOrganizationEventDeliveriesRetryOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapManagementOrganizationEventDeliveriesRetryOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveriesRetryOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/__init__.py b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/__init__.py new file mode 100644 index 00000000..65eb373b --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/__init__.py @@ -0,0 +1,2 @@ +from .get import * +from .list import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/get.py b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/get.py new file mode 100644 index 00000000..6a8d452c --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/get.py @@ -0,0 +1,162 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutputError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutputRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutputResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveryAttemptsGetOutput: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDeliveryAttemptsGetOutputError] = None + request: Optional[ManagementOrganizationEventDeliveryAttemptsGetOutputRequest] = None + response: Optional[ManagementOrganizationEventDeliveryAttemptsGetOutputResponse] = None + + +class mapManagementOrganizationEventDeliveryAttemptsGetOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutputError: + return ManagementOrganizationEventDeliveryAttemptsGetOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders: + return ManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsGetOutputRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutputRequest: + return ManagementOrganizationEventDeliveryAttemptsGetOutputRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDeliveryAttemptsGetOutputRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutputRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders: + return ManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsGetOutputResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutputResponse: + return ManagementOrganizationEventDeliveryAttemptsGetOutputResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDeliveryAttemptsGetOutputResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutputResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsGetOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsGetOutput: + return ManagementOrganizationEventDeliveryAttemptsGetOutput( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDeliveryAttemptsGetOutputError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDeliveryAttemptsGetOutputRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDeliveryAttemptsGetOutputResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsGetOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/list.py b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/list.py new file mode 100644 index 00000000..702e73df --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_delivery_attempts/list.py @@ -0,0 +1,239 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItemsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputItems: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDeliveryAttemptsListOutputItemsError] = None + request: Optional[ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest] = None + response: Optional[ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse] = None +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutputPagination: + has_more_before: bool + has_more_after: bool +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListOutput: + items: List[ManagementOrganizationEventDeliveryAttemptsListOutputItems] + pagination: ManagementOrganizationEventDeliveryAttemptsListOutputPagination + + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItemsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItemsError: + return ManagementOrganizationEventDeliveryAttemptsListOutputItemsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItemsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders: + return ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest: + return ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDeliveryAttemptsListOutputItemsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders: + return ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse: + return ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDeliveryAttemptsListOutputItemsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputItems: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputItems: + return ManagementOrganizationEventDeliveryAttemptsListOutputItems( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDeliveryAttemptsListOutputItemsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDeliveryAttemptsListOutputItemsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDeliveryAttemptsListOutputItemsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputItems, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutputPagination: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutputPagination: + return ManagementOrganizationEventDeliveryAttemptsListOutputPagination( + has_more_before=data.get('has_more_before'), + has_more_after=data.get('has_more_after') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutputPagination, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDeliveryAttemptsListOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListOutput: + return ManagementOrganizationEventDeliveryAttemptsListOutput( + items=[mapManagementOrganizationEventDeliveryAttemptsListOutputItems.from_dict(item) for item in data.get('items', []) if item], + pagination=mapManagementOrganizationEventDeliveryAttemptsListOutputPagination.from_dict(data.get('pagination')) if data.get('pagination') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + +@dataclass +class ManagementOrganizationEventDeliveryAttemptsListQuery: + limit: Optional[float] = None + after: Optional[str] = None + before: Optional[str] = None + cursor: Optional[str] = None + order: Optional[str] = None + status: Optional[Union[str, List[str]]] = None + event_delivery_id: Optional[Union[str, List[str]]] = None + event_id: Optional[Union[str, List[str]]] = None + event_destination_id: Optional[Union[str, List[str]]] = None + + +class mapManagementOrganizationEventDeliveryAttemptsListQuery: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDeliveryAttemptsListQuery: + return ManagementOrganizationEventDeliveryAttemptsListQuery( + limit=data.get('limit'), + after=data.get('after'), + before=data.get('before'), + cursor=data.get('cursor'), + order=data.get('order'), + status=data.get('status'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDeliveryAttemptsListQuery, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/create.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/create.py index 7551608e..a8713777 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/create.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/create.py @@ -15,7 +15,8 @@ class ManagementOrganizationEventDestinationListenersCreateOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapManagementOrganizationEventDestinationListenersCreateOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/delete.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/delete.py index 77f120da..2aea8182 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/delete.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/delete.py @@ -15,7 +15,8 @@ class ManagementOrganizationEventDestinationListenersDeleteOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapManagementOrganizationEventDestinationListenersDeleteOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/get.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/get.py index 23bcc9a9..ce9621dd 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/get.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/get.py @@ -15,7 +15,8 @@ class ManagementOrganizationEventDestinationListenersGetOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapManagementOrganizationEventDestinationListenersGetOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/list.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/list.py index ee6a3008..cc7e2c38 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/list.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/list.py @@ -15,7 +15,8 @@ class ManagementOrganizationEventDestinationListenersListOutputItems: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationListenersListOutputPagination: has_more_before: bool @@ -38,7 +39,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -94,7 +96,8 @@ class ManagementOrganizationEventDestinationListenersListQuery: event_destination_id: Optional[Union[str, List[str]]] = None instance_id: Optional[Union[str, List[str]]] = None callback_id: Optional[Union[str, List[str]]] = None - chat_integration_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + provider_id: Optional[Union[str, List[str]]] = None type: Optional[Union[str, List[str]]] = None @@ -110,7 +113,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_destination_id=data.get('event_destination_id'), instance_id=data.get('instance_id'), callback_id=data.get('callback_id'), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), type=data.get('type') ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/update.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/update.py index 7ebd2131..bd46cf35 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/update.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destination_listeners/update.py @@ -15,7 +15,8 @@ class ManagementOrganizationEventDestinationListenersUpdateOutput: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None class mapManagementOrganizationEventDestinationListenersUpdateOutput: @@ -30,7 +31,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationLis event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/__init__.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/__init__.py index cbc79073..dbe47150 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/__init__.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/__init__.py @@ -2,5 +2,6 @@ from .create import * from .get import * from .list import * +from .ping import * from .rotate_webhook_secret import * from .update import * \ No newline at end of file diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/archive.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/archive.py index c40d94d6..25edffbd 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/archive.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/archive.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsArchiveOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsArchiveOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsArchiveOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsArchiveOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsArchiveOutput: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsArchiveOutput: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsArchiveOutputRetry listeners: List[ManagementOrganizationEventDestinationsArchiveOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsArchiveOutputWeb return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsArchiveOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsArchiveOutputRetry: + return ManagementOrganizationEventDestinationsArchiveOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsArchiveOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsArchiveOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsArchiveOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsAr event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsAr status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsArchiveOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsArchiveOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsArchiveOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/create.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/create.py index af5be902..961de152 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/create.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/create.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsCreateOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsCreateOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsCreateOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsCreateOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsCreateOutput: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsCreateOutput: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsCreateOutputRetry listeners: List[ManagementOrganizationEventDestinationsCreateOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsCreateOutputWebh return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsCreateOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCreateOutputRetry: + return ManagementOrganizationEventDestinationsCreateOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsCreateOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsCreateOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCreateOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCr event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCr status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsCreateOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsCreateOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsCreateOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -110,11 +138,18 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsCreateOutput, Di class ManagementOrganizationEventDestinationsCreateBodyWebhook: url: str @dataclass +class ManagementOrganizationEventDestinationsCreateBodyRetry: + strategy: Optional[str] = None + max_attempts: Optional[float] = None + base_delay_seconds: Optional[float] = None + max_delay_seconds: Optional[float] = None +@dataclass class ManagementOrganizationEventDestinationsCreateBody: name: str type: str webhook: ManagementOrganizationEventDestinationsCreateBodyWebhook description: Optional[str] = None + retry: Optional[ManagementOrganizationEventDestinationsCreateBodyRetry] = None class mapManagementOrganizationEventDestinationsCreateBodyWebhook: @@ -132,6 +167,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsCreateBodyWebhoo return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsCreateBodyRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCreateBodyRetry: + return ManagementOrganizationEventDestinationsCreateBodyRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsCreateBodyRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsCreateBody: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCreateBody: @@ -139,7 +192,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsCr name=data.get('name'), description=data.get('description'), type=data.get('type'), - webhook=mapManagementOrganizationEventDestinationsCreateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None + webhook=mapManagementOrganizationEventDestinationsCreateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsCreateBodyRetry.from_dict(data.get('retry')) if data.get('retry') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/get.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/get.py index d14db91b..1288f690 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/get.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/get.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsGetOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsGetOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsGetOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsGetOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsGetOutput: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsGetOutput: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsGetOutputRetry listeners: List[ManagementOrganizationEventDestinationsGetOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsGetOutputWebhook return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsGetOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsGetOutputRetry: + return ManagementOrganizationEventDestinationsGetOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsGetOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsGetOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsGetOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsGe event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsGe status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsGetOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsGetOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsGetOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/list.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/list.py index b8be294c..117a7d4d 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/list.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/list.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsListOutputItemsWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsListOutputItemsRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsListOutputItemsListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsListOutputItemsListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsListOutputItems: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsListOutputItems: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsListOutputItemsRetry listeners: List[ManagementOrganizationEventDestinationsListOutputItemsListeners] created_at: datetime updated_at: datetime @@ -62,6 +70,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsListOutputItemsW return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsListOutputItemsRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsListOutputItemsRetry: + return ManagementOrganizationEventDestinationsListOutputItemsRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsListOutputItemsRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsListOutputItemsListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsListOutputItemsListeners: @@ -74,7 +100,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsLi event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -99,6 +126,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsLi status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsListOutputItemsWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsListOutputItemsRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsListOutputItemsListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -154,6 +182,9 @@ class ManagementOrganizationEventDestinationsListQuery: cursor: Optional[str] = None order: Optional[str] = None status: Optional[Union[str, List[str]]] = None + callback_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + search: Optional[str] = None class mapManagementOrganizationEventDestinationsListQuery: @@ -165,7 +196,10 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsLi before=data.get('before'), cursor=data.get('cursor'), order=data.get('order'), - status=data.get('status') + status=data.get('status'), + callback_id=data.get('callback_id'), + chat_connection_id=data.get('chat_connection_id'), + search=data.get('search') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/ping.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/ping.py new file mode 100644 index 00000000..b3525d31 --- /dev/null +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/ping.py @@ -0,0 +1,258 @@ +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Union +from datetime import datetime +import dataclasses + +@dataclass +class ManagementOrganizationEventDestinationsPingOutputError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDestinationsPingOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttemptsError: + code: str + message: str +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttemptsRequest: + url: str + method: str + headers: List[ManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders] + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders: + key: str + value: str +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttemptsResponse: + status_code: float + is_body_truncated: bool + headers: Optional[List[ManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders]] = None + body: Optional[str] = None +@dataclass +class ManagementOrganizationEventDestinationsPingOutputAttempts: + object: str + id: str + event_delivery_id: str + event_id: str + event_destination_id: str + status: str + attempt_number: float + duration_ms: float + is_retryable: bool + started_at: datetime + completed_at: datetime + created_at: datetime + error: Optional[ManagementOrganizationEventDestinationsPingOutputAttemptsError] = None + request: Optional[ManagementOrganizationEventDestinationsPingOutputAttemptsRequest] = None + response: Optional[ManagementOrganizationEventDestinationsPingOutputAttemptsResponse] = None +@dataclass +class ManagementOrganizationEventDestinationsPingOutput: + object: str + id: str + organization_id: str + event_id: str + event_type: str + event_destination_id: str + type: str + status: str + attempt_count: float + retry: ManagementOrganizationEventDestinationsPingOutputRetry + attempts: List[ManagementOrganizationEventDestinationsPingOutputAttempts] + created_at: datetime + updated_at: datetime + instance_id: Optional[str] = None + error: Optional[ManagementOrganizationEventDestinationsPingOutputError] = None + last_attempt_at: Optional[datetime] = None + next_attempt_at: Optional[datetime] = None + completed_at: Optional[datetime] = None + + +class mapManagementOrganizationEventDestinationsPingOutputError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputError: + return ManagementOrganizationEventDestinationsPingOutputError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputRetry: + return ManagementOrganizationEventDestinationsPingOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttemptsError: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttemptsError: + return ManagementOrganizationEventDestinationsPingOutputAttemptsError( + code=data.get('code'), + message=data.get('message') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttemptsError, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders: + return ManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttemptsRequest: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttemptsRequest: + return ManagementOrganizationEventDestinationsPingOutputAttemptsRequest( + url=data.get('url'), + method=data.get('method'), + headers=[mapManagementOrganizationEventDestinationsPingOutputAttemptsRequestHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttemptsRequest, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders: + return ManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders( + key=data.get('key'), + value=data.get('value') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttemptsResponse: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttemptsResponse: + return ManagementOrganizationEventDestinationsPingOutputAttemptsResponse( + status_code=data.get('status_code'), + headers=[mapManagementOrganizationEventDestinationsPingOutputAttemptsResponseHeaders.from_dict(item) for item in data.get('headers', []) if item], + body=data.get('body'), + is_body_truncated=data.get('is_body_truncated') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttemptsResponse, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutputAttempts: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutputAttempts: + return ManagementOrganizationEventDestinationsPingOutputAttempts( + object=data.get('object'), + id=data.get('id'), + event_delivery_id=data.get('event_delivery_id'), + event_id=data.get('event_id'), + event_destination_id=data.get('event_destination_id'), + status=data.get('status'), + attempt_number=data.get('attempt_number'), + duration_ms=data.get('duration_ms'), + is_retryable=data.get('is_retryable'), + error=mapManagementOrganizationEventDestinationsPingOutputAttemptsError.from_dict(data.get('error')) if data.get('error') else None, + request=mapManagementOrganizationEventDestinationsPingOutputAttemptsRequest.from_dict(data.get('request')) if data.get('request') else None, + response=mapManagementOrganizationEventDestinationsPingOutputAttemptsResponse.from_dict(data.get('response')) if data.get('response') else None, + started_at=datetime.fromisoformat(data.get('started_at').replace('Z', '+00:00')) if data.get('started_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutputAttempts, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + +class mapManagementOrganizationEventDestinationsPingOutput: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsPingOutput: + return ManagementOrganizationEventDestinationsPingOutput( + object=data.get('object'), + id=data.get('id'), + organization_id=data.get('organization_id'), + instance_id=data.get('instance_id'), + event_id=data.get('event_id'), + event_type=data.get('event_type'), + event_destination_id=data.get('event_destination_id'), + type=data.get('type'), + status=data.get('status'), + attempt_count=data.get('attempt_count'), + error=mapManagementOrganizationEventDestinationsPingOutputError.from_dict(data.get('error')) if data.get('error') else None, + retry=mapManagementOrganizationEventDestinationsPingOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, + attempts=[mapManagementOrganizationEventDestinationsPingOutputAttempts.from_dict(item) for item in data.get('attempts', []) if item], + last_attempt_at=datetime.fromisoformat(data.get('last_attempt_at').replace('Z', '+00:00')) if data.get('last_attempt_at') else None, + next_attempt_at=datetime.fromisoformat(data.get('next_attempt_at').replace('Z', '+00:00')) if data.get('next_attempt_at') else None, + completed_at=datetime.fromisoformat(data.get('completed_at').replace('Z', '+00:00')) if data.get('completed_at') else None, + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsPingOutput, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + # assume dataclass for generated models + return dataclasses.asdict(value) + diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/rotate_webhook_secret.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/rotate_webhook_secret.py index 62e48fe4..0602609d 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/rotate_webhook_secret.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/rotate_webhook_secret.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsRotateWebhookSecretOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsRotateWebhookSecretOutput: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsRotateWebhookSecretOutput: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry listeners: List[ManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsRotateWebhookSec return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry: + return ManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsRo event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsRo status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsRotateWebhookSecretOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsRotateWebhookSecretOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsRotateWebhookSecretOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, diff --git a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/update.py b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/update.py index 9d3cdf1d..f6209343 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/update.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/event_destinations/update.py @@ -9,6 +9,12 @@ class ManagementOrganizationEventDestinationsUpdateOutputWebhook: method: str signing_secret: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsUpdateOutputRetry: + strategy: str + max_attempts: float + base_delay_seconds: float + max_delay_seconds: float +@dataclass class ManagementOrganizationEventDestinationsUpdateOutputListeners: object: str id: str @@ -20,7 +26,8 @@ class ManagementOrganizationEventDestinationsUpdateOutputListeners: event_types: Optional[List[str]] = None callback_id: Optional[str] = None triggers: Optional[List[str]] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventDestinationsUpdateOutput: object: str @@ -29,6 +36,7 @@ class ManagementOrganizationEventDestinationsUpdateOutput: name: str status: str type: str + retry: ManagementOrganizationEventDestinationsUpdateOutputRetry listeners: List[ManagementOrganizationEventDestinationsUpdateOutputListeners] created_at: datetime updated_at: datetime @@ -54,6 +62,24 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsUpdateOutputWebh return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsUpdateOutputRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUpdateOutputRetry: + return ManagementOrganizationEventDestinationsUpdateOutputRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsUpdateOutputRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsUpdateOutputListeners: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUpdateOutputListeners: @@ -66,7 +92,8 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUp event_types=data.get('event_types', []), callback_id=data.get('callback_id'), triggers=data.get('triggers', []), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None ) @@ -91,6 +118,7 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUp status=data.get('status'), type=data.get('type'), webhook=mapManagementOrganizationEventDestinationsUpdateOutputWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsUpdateOutputRetry.from_dict(data.get('retry')) if data.get('retry') else None, listeners=[mapManagementOrganizationEventDestinationsUpdateOutputListeners.from_dict(item) for item in data.get('listeners', []) if item], created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, updated_at=datetime.fromisoformat(data.get('updated_at').replace('Z', '+00:00')) if data.get('updated_at') else None, @@ -110,10 +138,17 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsUpdateOutput, Di class ManagementOrganizationEventDestinationsUpdateBodyWebhook: url: Optional[str] = None @dataclass +class ManagementOrganizationEventDestinationsUpdateBodyRetry: + strategy: Optional[str] = None + max_attempts: Optional[float] = None + base_delay_seconds: Optional[float] = None + max_delay_seconds: Optional[float] = None +@dataclass class ManagementOrganizationEventDestinationsUpdateBody: name: Optional[str] = None description: Optional[str] = None webhook: Optional[ManagementOrganizationEventDestinationsUpdateBodyWebhook] = None + retry: Optional[ManagementOrganizationEventDestinationsUpdateBodyRetry] = None class mapManagementOrganizationEventDestinationsUpdateBodyWebhook: @@ -131,13 +166,32 @@ def to_dict(value: Union[ManagementOrganizationEventDestinationsUpdateBodyWebhoo return value return dataclasses.asdict(value) +class mapManagementOrganizationEventDestinationsUpdateBodyRetry: + @staticmethod + def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUpdateBodyRetry: + return ManagementOrganizationEventDestinationsUpdateBodyRetry( + strategy=data.get('strategy'), + max_attempts=data.get('max_attempts'), + base_delay_seconds=data.get('base_delay_seconds'), + max_delay_seconds=data.get('max_delay_seconds') + ) + + @staticmethod + def to_dict(value: Union[ManagementOrganizationEventDestinationsUpdateBodyRetry, Dict[str, Any], None]) -> Optional[Dict[str, Any]]: + if value is None: + return None + if isinstance(value, dict): + return value + return dataclasses.asdict(value) + class mapManagementOrganizationEventDestinationsUpdateBody: @staticmethod def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventDestinationsUpdateBody: return ManagementOrganizationEventDestinationsUpdateBody( name=data.get('name'), description=data.get('description'), - webhook=mapManagementOrganizationEventDestinationsUpdateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None + webhook=mapManagementOrganizationEventDestinationsUpdateBodyWebhook.from_dict(data.get('webhook')) if data.get('webhook') else None, + retry=mapManagementOrganizationEventDestinationsUpdateBodyRetry.from_dict(data.get('retry')) if data.get('retry') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/organization/events/get.py b/src/metorial/_generated/magnetar/resources/management/organization/events/get.py index 0859ca86..8b84450b 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/events/get.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/events/get.py @@ -12,11 +12,13 @@ class ManagementOrganizationEventsGetOutput: event_type: str created_at: datetime instance_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None callback_id: Optional[str] = None + callback_event_id: Optional[str] = None callback_trigger_key: Optional[str] = None chat_event_id: Optional[str] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None + payload: Optional[Dict[str, Any]] = None class mapManagementOrganizationEventsGetOutput: @@ -29,12 +31,14 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventsGetOutput: instance_id=data.get('instance_id'), source=data.get('source'), event_type=data.get('event_type'), - payload=data.get('payload'), callback_id=data.get('callback_id'), + callback_event_id=data.get('callback_event_id'), callback_trigger_key=data.get('callback_trigger_key'), chat_event_id=data.get('chat_event_id'), - chat_integration_id=data.get('chat_integration_id'), - created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), + created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None, + payload=data.get('payload') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/organization/events/list.py b/src/metorial/_generated/magnetar/resources/management/organization/events/list.py index 26951944..67befebc 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/events/list.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/events/list.py @@ -12,11 +12,12 @@ class ManagementOrganizationEventsListOutputItems: event_type: str created_at: datetime instance_id: Optional[str] = None - payload: Optional[Dict[str, Any]] = None callback_id: Optional[str] = None + callback_event_id: Optional[str] = None callback_trigger_key: Optional[str] = None chat_event_id: Optional[str] = None - chat_integration_id: Optional[str] = None + chat_connection_id: Optional[str] = None + provider_id: Optional[str] = None @dataclass class ManagementOrganizationEventsListOutputPagination: has_more_before: bool @@ -37,11 +38,12 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventsListOutputIte instance_id=data.get('instance_id'), source=data.get('source'), event_type=data.get('event_type'), - payload=data.get('payload'), callback_id=data.get('callback_id'), + callback_event_id=data.get('callback_event_id'), callback_trigger_key=data.get('callback_trigger_key'), chat_event_id=data.get('chat_event_id'), - chat_integration_id=data.get('chat_integration_id'), + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), created_at=datetime.fromisoformat(data.get('created_at').replace('Z', '+00:00')) if data.get('created_at') else None ) @@ -87,6 +89,10 @@ def to_dict(value: Union[ManagementOrganizationEventsListOutput, Dict[str, Any], return dataclasses.asdict(value) @dataclass +class ManagementOrganizationEventsListQueryCreatedAt: + gt: Optional[datetime] = None + lt: Optional[datetime] = None +@dataclass class ManagementOrganizationEventsListQuery: limit: Optional[float] = None after: Optional[str] = None @@ -98,7 +104,9 @@ class ManagementOrganizationEventsListQuery: source: Optional[Union[str, List[str]]] = None callback_id: Optional[Union[str, List[str]]] = None callback_trigger_key: Optional[Union[str, List[str]]] = None - chat_integration_id: Optional[Union[str, List[str]]] = None + chat_connection_id: Optional[Union[str, List[str]]] = None + provider_id: Optional[Union[str, List[str]]] = None + created_at: Optional[ManagementOrganizationEventsListQueryCreatedAt] = None class mapManagementOrganizationEventsListQuery: @@ -115,7 +123,9 @@ def from_dict(data: Dict[str, Any]) -> ManagementOrganizationEventsListQuery: source=data.get('source'), callback_id=data.get('callback_id'), callback_trigger_key=data.get('callback_trigger_key'), - chat_integration_id=data.get('chat_integration_id') + chat_connection_id=data.get('chat_connection_id'), + provider_id=data.get('provider_id'), + created_at=mapManagementOrganizationEventsListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/management/organization/webhook_events/list.py b/src/metorial/_generated/magnetar/resources/management/organization/webhook_events/list.py index 3a539335..372bf701 100644 --- a/src/metorial/_generated/magnetar/resources/management/organization/webhook_events/list.py +++ b/src/metorial/_generated/magnetar/resources/management/organization/webhook_events/list.py @@ -7,6 +7,7 @@ class ManagementOrganizationWebhookEventsListOutputItems: object: str name: str + description: str @dataclass class ManagementOrganizationWebhookEventsListOutputPagination: has_more_before: bool @@ -22,7 +23,8 @@ class mapManagementOrganizationWebhookEventsListOutputItems: def from_dict(data: Dict[str, Any]) -> ManagementOrganizationWebhookEventsListOutputItems: return ManagementOrganizationWebhookEventsListOutputItems( object=data.get('object'), - name=data.get('name') + name=data.get('name'), + description=data.get('description') ) @staticmethod diff --git a/src/metorial/_generated/magnetar/resources/provider_deployments/auth_configs/list.py b/src/metorial/_generated/magnetar/resources/provider_deployments/auth_configs/list.py index d01f6fd9..ac44e75c 100644 --- a/src/metorial/_generated/magnetar/resources/provider_deployments/auth_configs/list.py +++ b/src/metorial/_generated/magnetar/resources/provider_deployments/auth_configs/list.py @@ -309,6 +309,7 @@ class ProviderDeploymentsAuthConfigsListQuery: consumer_id: Optional[Union[str, List[str]]] = None identity_id: Optional[Union[str, List[str]]] = None identity_credential_id: Optional[Union[str, List[str]]] = None + adapter: Optional[str] = None search: Optional[str] = None created_at: Optional[ProviderDeploymentsAuthConfigsListQueryCreatedAt] = None updated_at: Optional[ProviderDeploymentsAuthConfigsListQueryUpdatedAt] = None @@ -335,6 +336,7 @@ def from_dict(data: Dict[str, Any]) -> ProviderDeploymentsAuthConfigsListQuery: consumer_id=data.get('consumer_id'), identity_id=data.get('identity_id'), identity_credential_id=data.get('identity_credential_id'), + adapter=data.get('adapter'), search=data.get('search'), created_at=mapProviderDeploymentsAuthConfigsListQueryCreatedAt.from_dict(data.get('created_at')) if data.get('created_at') else None, updated_at=mapProviderDeploymentsAuthConfigsListQueryUpdatedAt.from_dict(data.get('updated_at')) if data.get('updated_at') else None diff --git a/src/metorial/_generated/magnetar/resources/skills/create.py b/src/metorial/_generated/magnetar/resources/skills/create.py index 457d45bf..05c16a03 100644 --- a/src/metorial/_generated/magnetar/resources/skills/create.py +++ b/src/metorial/_generated/magnetar/resources/skills/create.py @@ -171,6 +171,7 @@ class SkillsCreateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsCreateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsCreateOutputIntegrationsConfigurati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/delete.py b/src/metorial/_generated/magnetar/resources/skills/delete.py index 64233ff4..63e2c859 100644 --- a/src/metorial/_generated/magnetar/resources/skills/delete.py +++ b/src/metorial/_generated/magnetar/resources/skills/delete.py @@ -171,6 +171,7 @@ class SkillsDeleteOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsDeleteOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsDeleteOutputIntegrationsConfigurati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/duplicate.py b/src/metorial/_generated/magnetar/resources/skills/duplicate.py index f29d36ec..75c92af3 100644 --- a/src/metorial/_generated/magnetar/resources/skills/duplicate.py +++ b/src/metorial/_generated/magnetar/resources/skills/duplicate.py @@ -171,6 +171,7 @@ class SkillsDuplicateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsDuplicateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsDuplicateOutputIntegrationsConfigur can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/fork.py b/src/metorial/_generated/magnetar/resources/skills/fork.py index 9a80cd8c..60c574ba 100644 --- a/src/metorial/_generated/magnetar/resources/skills/fork.py +++ b/src/metorial/_generated/magnetar/resources/skills/fork.py @@ -171,6 +171,7 @@ class SkillsForkOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsForkOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsForkOutputIntegrationsConfiguration can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/get.py b/src/metorial/_generated/magnetar/resources/skills/get.py index 794286a3..9ed704a8 100644 --- a/src/metorial/_generated/magnetar/resources/skills/get.py +++ b/src/metorial/_generated/magnetar/resources/skills/get.py @@ -171,6 +171,7 @@ class SkillsGetOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsGetOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsGetOutputIntegrationsConfiguration: can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/items/create.py b/src/metorial/_generated/magnetar/resources/skills/items/create.py index ac800eb8..7e31c0f8 100644 --- a/src/metorial/_generated/magnetar/resources/skills/items/create.py +++ b/src/metorial/_generated/magnetar/resources/skills/items/create.py @@ -8,6 +8,7 @@ class SkillsItemsCreateOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsItemsCreateOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsItemsCreateOutputIntegrationConfigu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/items/delete.py b/src/metorial/_generated/magnetar/resources/skills/items/delete.py index 15d691b6..dd1f8d4e 100644 --- a/src/metorial/_generated/magnetar/resources/skills/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/skills/items/delete.py @@ -8,6 +8,7 @@ class SkillsItemsDeleteOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsItemsDeleteOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsItemsDeleteOutputIntegrationConfigu can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/items/get.py b/src/metorial/_generated/magnetar/resources/skills/items/get.py index c8ab425a..9ac8c7e5 100644 --- a/src/metorial/_generated/magnetar/resources/skills/items/get.py +++ b/src/metorial/_generated/magnetar/resources/skills/items/get.py @@ -8,6 +8,7 @@ class SkillsItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsItemsGetOutputIntegration: @@ -49,6 +50,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsItemsGetOutputIntegrationConfigurat can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/items/list.py b/src/metorial/_generated/magnetar/resources/skills/items/list.py index aa644472..8716cfe7 100644 --- a/src/metorial/_generated/magnetar/resources/skills/items/list.py +++ b/src/metorial/_generated/magnetar/resources/skills/items/list.py @@ -8,6 +8,7 @@ class SkillsItemsListOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsItemsListOutputItemsIntegration: @@ -57,6 +58,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsItemsListOutputItemsIntegrationConf can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/list.py b/src/metorial/_generated/magnetar/resources/skills/list.py index 31a9d980..ea0a2108 100644 --- a/src/metorial/_generated/magnetar/resources/skills/list.py +++ b/src/metorial/_generated/magnetar/resources/skills/list.py @@ -171,6 +171,7 @@ class SkillsListOutputItemsIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsListOutputItemsIntegrations: @@ -610,6 +611,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsListOutputItemsIntegrationsConfigur can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/publish_consumer_skill.py b/src/metorial/_generated/magnetar/resources/skills/publish_consumer_skill.py index 4584750f..464e0222 100644 --- a/src/metorial/_generated/magnetar/resources/skills/publish_consumer_skill.py +++ b/src/metorial/_generated/magnetar/resources/skills/publish_consumer_skill.py @@ -171,6 +171,7 @@ class SkillsPublishConsumerSkillOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsPublishConsumerSkillOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsPublishConsumerSkillOutputIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/share.py b/src/metorial/_generated/magnetar/resources/skills/share.py index cb0d63ee..5dd7b85a 100644 --- a/src/metorial/_generated/magnetar/resources/skills/share.py +++ b/src/metorial/_generated/magnetar/resources/skills/share.py @@ -171,6 +171,7 @@ class SkillsShareOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsShareOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsShareOutputIntegrationsConfiguratio can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/create.py b/src/metorial/_generated/magnetar/resources/skills/templates/create.py index d9460edc..4c863ae6 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/create.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/create.py @@ -8,6 +8,7 @@ class SkillsTemplatesCreateOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesCreateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesCreateOutputItemsIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/delete.py b/src/metorial/_generated/magnetar/resources/skills/templates/delete.py index d1f84cd5..142ab397 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/delete.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/delete.py @@ -8,6 +8,7 @@ class SkillsTemplatesDeleteOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesDeleteOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesDeleteOutputItemsIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/get.py b/src/metorial/_generated/magnetar/resources/skills/templates/get.py index 01de46e4..11df244e 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/get.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/get.py @@ -8,6 +8,7 @@ class SkillsTemplatesGetOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesGetOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesGetOutputItemsIntegrationC can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/items/create.py b/src/metorial/_generated/magnetar/resources/skills/templates/items/create.py index 0e0e03ad..483025f1 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/items/create.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/items/create.py @@ -8,6 +8,7 @@ class SkillsTemplatesItemsCreateOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesItemsCreateOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesItemsCreateOutputIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/items/delete.py b/src/metorial/_generated/magnetar/resources/skills/templates/items/delete.py index 2446454e..fe0144c9 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/items/delete.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/items/delete.py @@ -8,6 +8,7 @@ class SkillsTemplatesItemsDeleteOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesItemsDeleteOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesItemsDeleteOutputIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/items/get.py b/src/metorial/_generated/magnetar/resources/skills/templates/items/get.py index 0e40664f..ea76aeb8 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/items/get.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/items/get.py @@ -8,6 +8,7 @@ class SkillsTemplatesItemsGetOutputIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesItemsGetOutputIntegration: @@ -48,6 +49,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesItemsGetOutputIntegrationC can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/items/list.py b/src/metorial/_generated/magnetar/resources/skills/templates/items/list.py index 90de3c14..036b4e1a 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/items/list.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/items/list.py @@ -8,6 +8,7 @@ class SkillsTemplatesItemsListOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesItemsListOutputItemsIntegration: @@ -56,6 +57,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesItemsListOutputItemsIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/list.py b/src/metorial/_generated/magnetar/resources/skills/templates/list.py index c85f9964..166ba728 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/list.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/list.py @@ -8,6 +8,7 @@ class SkillsTemplatesListOutputItemsItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesListOutputItemsItemsIntegration: @@ -70,6 +71,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesListOutputItemsItemsIntegr can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/templates/update.py b/src/metorial/_generated/magnetar/resources/skills/templates/update.py index bab26d64..627fb88f 100644 --- a/src/metorial/_generated/magnetar/resources/skills/templates/update.py +++ b/src/metorial/_generated/magnetar/resources/skills/templates/update.py @@ -8,6 +8,7 @@ class SkillsTemplatesUpdateOutputItemsIntegrationConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsTemplatesUpdateOutputItemsIntegration: @@ -62,6 +63,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsTemplatesUpdateOutputItemsIntegrati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_generated/magnetar/resources/skills/update.py b/src/metorial/_generated/magnetar/resources/skills/update.py index 9d5030b6..2f5c3a96 100644 --- a/src/metorial/_generated/magnetar/resources/skills/update.py +++ b/src/metorial/_generated/magnetar/resources/skills/update.py @@ -171,6 +171,7 @@ class SkillsUpdateOutputIntegrationsConfiguration: can_attach_custom_tool_filters: bool can_attach_custom_provider_config: bool can_override_tool_filters: bool + enable_callback_tools: bool use_integration_name_in_tool_names: Optional[bool] = None @dataclass class SkillsUpdateOutputIntegrations: @@ -602,6 +603,7 @@ def from_dict(data: Dict[str, Any]) -> SkillsUpdateOutputIntegrationsConfigurati can_attach_custom_tool_filters=data.get('can_attach_custom_tool_filters'), can_attach_custom_provider_config=data.get('can_attach_custom_provider_config'), can_override_tool_filters=data.get('can_override_tool_filters'), + enable_callback_tools=data.get('enable_callback_tools'), use_integration_name_in_tool_names=data.get('use_integration_name_in_tool_names') ) diff --git a/src/metorial/_magnetar_sdk.py b/src/metorial/_magnetar_sdk.py index f5d71358..c081e780 100644 --- a/src/metorial/_magnetar_sdk.py +++ b/src/metorial/_magnetar_sdk.py @@ -14,17 +14,14 @@ from typing import Any from metorial._endpoint import MetorialEndpointManager -from metorial._generated.magnetar.endpoints.callbacks import ( - MetorialCallbacksEndpoint, -) -from metorial._generated.magnetar.endpoints.callbacks_destinations import ( - MetorialCallbacksDestinationsEndpoint, +from metorial._generated.magnetar.endpoints.callback_events import ( + MetorialCallbackEventsEndpoint, ) -from metorial._generated.magnetar.endpoints.callbacks_events import ( - MetorialCallbacksEventsEndpoint, +from metorial._generated.magnetar.endpoints.callback_instances import ( + MetorialCallbackInstancesEndpoint, ) -from metorial._generated.magnetar.endpoints.callbacks_instances import ( - MetorialCallbacksInstancesEndpoint, +from metorial._generated.magnetar.endpoints.callbacks import ( + MetorialCallbacksEndpoint, ) from metorial._generated.magnetar.endpoints.custom_providers import ( MetorialCustomProvidersEndpoint, @@ -507,15 +504,13 @@ def __init__(self, manager: MetorialEndpointManager) -> None: class MagnetarCallbacksGroup(MetorialCallbacksEndpoint): """Callbacks endpoint group with typed sub-endpoints.""" - destinations: MetorialCallbacksDestinationsEndpoint - events: MetorialCallbacksEventsEndpoint - instances: MetorialCallbacksInstancesEndpoint + events: MetorialCallbackEventsEndpoint + instances: MetorialCallbackInstancesEndpoint def __init__(self, manager: MetorialEndpointManager) -> None: super().__init__(manager) - self.destinations = MetorialCallbacksDestinationsEndpoint(manager) - self.events = MetorialCallbacksEventsEndpoint(manager) - self.instances = MetorialCallbacksInstancesEndpoint(manager) + self.events = MetorialCallbackEventsEndpoint(manager) + self.instances = MetorialCallbackInstancesEndpoint(manager) class MagnetarMagicMcpGroup: diff --git a/src/metorial/_version.py b/src/metorial/_version.py index 5549d766..2d120f62 100644 --- a/src/metorial/_version.py +++ b/src/metorial/_version.py @@ -1,3 +1,3 @@ """Metorial SDK version.""" -__version__ = "2.4.0" +__version__ = "2.4.1" diff --git a/src/metorial/integrations/autogen.py b/src/metorial/integrations/autogen.py index 13a549be..da9e5288 100644 --- a/src/metorial/integrations/autogen.py +++ b/src/metorial/integrations/autogen.py @@ -2,7 +2,11 @@ from __future__ import annotations +import inspect import json +import keyword +import logging +import re from collections.abc import Callable from typing import TYPE_CHECKING, Any @@ -14,6 +18,56 @@ except ImportError: FunctionTool = None +logger = logging.getLogger(__name__) + +# A valid Python identifier of at most 64 characters. Server-supplied tool and +# parameter names are checked against this before they are ever used to build a +# function signature. +_IDENT_RE = re.compile(r"^[A-Za-z_][A-Za-z0-9_]{0,63}$") + +# Parameter names that autogen's FunctionTool injects itself; a tool may not +# declare them as parameters. +_RESERVED_PARAMS = frozenset({"cancellation_token"}) + + +def _build_tool_fn( + tool_manager: Any, + tool_name: str, + func_name: str, + description: str, + params: list[inspect.Parameter], +) -> Callable[..., Any]: + """ + Build an async callable that autogen's FunctionTool can introspect. + + The function is created as a real closure and given an explicit + ``inspect.Signature`` instead of being compiled from a source string. All + server-controlled values (``tool_name``, ``description``, parameter names) + are treated as data only and are never parsed or executed. + """ + + async def _invoke(**kwargs: Any) -> str: + args = {k: v for k, v in kwargs.items() if v is not None} + try: + result = await tool_manager.execute_tool(tool_name, args) + if hasattr(result, "model_dump"): + result = result.model_dump() + return json.dumps(result, ensure_ascii=False, default=str) + except Exception as e: + return json.dumps({"error": str(e)}, ensure_ascii=False) + + _invoke.__signature__ = inspect.Signature(params, return_annotation=str) + # autogen's FunctionTool resolves parameter types via typing.get_type_hints, + # which reads __annotations__ rather than __signature__, so keep the two in + # sync. Real type objects (not strings) are used so no evaluation is needed. + annotations: dict[str, Any] = {p.name: p.annotation for p in params} + annotations["return"] = str + _invoke.__annotations__ = annotations + _invoke.__name__ = func_name + _invoke.__qualname__ = func_name + _invoke.__doc__ = description + return _invoke + def create_autogen_tools(session: ProviderSession) -> list[Any]: """ @@ -60,91 +114,105 @@ def create_autogen_tools(session: ProviderSession) -> list[Any]: if tool_manager is None: return tools + # JSON-schema type -> Python annotation used only to describe the signature. + type_map = { + "string": str, + "integer": int, + "number": float, + "boolean": bool, + "array": list, + "object": dict, + } + + seen_names: set[str] = set() + for tool in tool_manager.get_tools(): tool_name = tool.name tool_description = tool.description or f"Tool: {tool_name}" + # Derive a safe Python identifier for the exposed function name. The + # original tool_name is what we hand back to execute_tool; it is only ever + # data. Hyphens (common in MCP tool names like "list-issues") and other + # non-identifier characters are collapsed to underscores. + func_name = re.sub(r"[^A-Za-z0-9_]", "_", tool_name) + if not _IDENT_RE.match(func_name) or keyword.iskeyword(func_name): + logger.warning( + "Skipping tool with unusable name %r (sanitized to %r)", + tool_name, + func_name, + ) + continue + if func_name in seen_names: + logger.warning( + "Skipping tool %r: duplicate sanitized function name %r", + tool_name, + func_name, + ) + continue + schema = tool.get_parameters_as("json-schema") or {} - properties = schema.get("properties", {}) - required_params = set(schema.get("required", [])) - - # Build parameter list for the function signature - type_map = { - "string": str, - "integer": int, - "number": float, - "boolean": bool, - "array": list, - "object": dict, - } - - # Sort: required params first, optional params after + properties = schema.get("properties") + if not isinstance(properties, dict): + properties = {} + raw_required = schema.get("required") + required_params = ( + {r for r in raw_required if isinstance(r, str)} + if isinstance(raw_required, list) + else set() + ) + + # Validate every parameter name before it becomes part of a signature. A + # non-identifier, keyword or reserved name means we skip the whole tool + # rather than risk an exception (or, historically, code injection). + invalid_prop = next( + ( + name + for name in properties + if not isinstance(name, str) + or not _IDENT_RE.match(name) + or keyword.iskeyword(name) + or name in _RESERVED_PARAMS + ), + None, + ) + if invalid_prop is not None: + logger.warning( + "Skipping tool %r: invalid parameter name %r", tool_name, invalid_prop + ) + continue + + # Sort: required params first, optional params after. required_props = [(n, s) for n, s in properties.items() if n in required_params] optional_props = [(n, s) for n, s in properties.items() if n not in required_params] params = [] - param_annotations = {} for prop_name, prop_schema in required_props + optional_props: - json_type = prop_schema.get("type", "string") - py_type = type_map.get(json_type, str) - if prop_name not in required_params: - py_type = py_type | None - param_annotations[prop_name] = py_type + if not isinstance(prop_schema, dict): + prop_schema = {} + py_type = type_map.get(prop_schema.get("type"), str) if prop_name in required_params: - params.append(f"{prop_name}: __annotations__['{prop_name}']") + params.append( + inspect.Parameter( + prop_name, + inspect.Parameter.KEYWORD_ONLY, + annotation=py_type, + ) + ) else: - params.append(f"{prop_name}: __annotations__['{prop_name}'] = None") - param_annotations["return"] = str - - func_name = tool_name.replace("-", "_") - params_str = ", ".join(params) if params else "" - - # Dynamically create a function with explicit parameters - # so autogen's FunctionTool can inspect the signature - func_code = f"async def {func_name}({params_str}) -> str:\n" - func_code += f" '''{tool_description}'''\n" - func_code += ( - f" _kwargs = {{{', '.join(repr(p) + ': ' + p for p in properties)}}}\n" - ) - func_code += " _kwargs = {k: v for k, v in _kwargs.items() if v is not None}\n" - func_code += " return await _executor(_tool_name, _kwargs)\n" + params.append( + inspect.Parameter( + prop_name, + inspect.Parameter.KEYWORD_ONLY, + annotation=py_type | None, + default=None, + ) + ) - async def _make_executor(name: str): - async def _executor(tool_name_inner: str, kwargs: dict) -> str: - try: - result = await tool_manager.execute_tool(tool_name_inner, kwargs) - if hasattr(result, "model_dump"): - result = result.model_dump() - return json.dumps(result, ensure_ascii=False, default=str) - except Exception as e: - return json.dumps({"error": str(e)}, ensure_ascii=False) - - return _executor - - # We can't await here, so create the executor synchronously - def _make_executor_sync(name: str): - async def _executor(tool_name_inner: str, kwargs: dict) -> str: - try: - result = await tool_manager.execute_tool(tool_name_inner, kwargs) - if hasattr(result, "model_dump"): - result = result.model_dump() - return json.dumps(result, ensure_ascii=False, default=str) - except Exception as e: - return json.dumps({"error": str(e)}, ensure_ascii=False) - - return _executor - - executor = _make_executor_sync(tool_name) - local_ns: dict[str, Any] = { - "_executor": executor, - "_tool_name": tool_name, - "__annotations__": param_annotations, - } - exec(func_code, local_ns) # noqa: S102 - fn = local_ns[func_name] + fn = _build_tool_fn(tool_manager, tool_name, func_name, tool_description, params) autogen_tool = FunctionTool(fn, description=tool_description, name=func_name) tools.append(autogen_tool) + seen_names.add(func_name) return tools diff --git a/tests/test_autogen_integration.py b/tests/test_autogen_integration.py new file mode 100644 index 00000000..53df67b6 --- /dev/null +++ b/tests/test_autogen_integration.py @@ -0,0 +1,258 @@ +"""Regression tests for the Autogen integration. + +These focus on C-10a: a hostile or compromised MCP server must not be able to +execute arbitrary Python when ``create_autogen_tools`` builds tool wrappers from +server-supplied tool metadata (name, description, JSON-schema property names). + +The ``autogen`` integration module has no runtime dependency on the rest of the +``metorial`` package (its only ``metorial`` import is guarded by +``TYPE_CHECKING``), so it is loaded standalone here. This keeps the tests +independent of unrelated top-level import concerns and of whether ``autogen`` is +installed. +""" + +from __future__ import annotations + +import importlib.util +import inspect +import json +import keyword +from pathlib import Path +from typing import Any + +import pytest + +_MODULE_PATH = ( + Path(__file__).resolve().parents[1] + / "src" + / "metorial" + / "integrations" + / "autogen.py" +) + + +def _load_autogen_module(): + """Import ``metorial/integrations/autogen.py`` in isolation.""" + spec = importlib.util.spec_from_file_location( + "metorial_autogen_under_test", _MODULE_PATH + ) + assert spec is not None and spec.loader is not None + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +@pytest.fixture +def autogen_mod(): + """A freshly loaded module so ``FunctionTool`` overrides never leak.""" + return _load_autogen_module() + + +class RecordingFunctionTool: + """Stand-in for ``autogen_core.tools.FunctionTool`` that records its inputs.""" + + def __init__(self, func, description=None, name=None): + self.func = func + self.description = description + self.name = name + + +class StubTool: + """Minimal stand-in for ``MetorialMcpTool``.""" + + def __init__(self, name: str, description: str | None, schema: Any): + self.name = name + self.description = description + self._schema = schema + + def get_parameters_as(self, fmt: str) -> Any: + assert fmt == "json-schema" + return self._schema + + +class StubToolManager: + def __init__(self, tools: list[StubTool]): + self._tools = tools + self.calls: list[tuple[str, dict]] = [] + + def get_tools(self) -> list[StubTool]: + return self._tools + + async def execute_tool(self, name: str, args: dict) -> dict: + self.calls.append((name, dict(args))) + return {"tool": name, "args": args} + + +class StubSession: + def __init__(self, tool_manager: StubToolManager | None): + self.tool_manager = tool_manager + + +def _build(autogen_mod, tools, fake=RecordingFunctionTool): + autogen_mod.FunctionTool = fake + manager = StubToolManager(tools) + session = StubSession(manager) + built = autogen_mod.create_autogen_tools(session) + return manager, built + + +def test_malicious_description_is_not_executed(autogen_mod): + """A description that closes the docstring and adds code must not run.""" + import builtins + + sentinel = "_metorial_autogen_rce_sentinel" + if hasattr(builtins, sentinel): + delattr(builtins, sentinel) + + payload = ( + "Innocent looking tool.'''\n" + "import builtins\n" + f"setattr(builtins, {sentinel!r}, True)\n" + "'''" + ) + tool = StubTool("safe_tool", payload, {"type": "object", "properties": {}}) + + try: + _, built = _build(autogen_mod, [tool]) + assert not hasattr(builtins, sentinel), "server description was executed" + assert len(built) == 1 + # The description is carried as data only, never parsed. + assert built[0].description == payload + assert built[0].func.__doc__ == payload + finally: + if hasattr(builtins, sentinel): + delattr(builtins, sentinel) + + +def test_tool_names_are_sanitized_or_skipped(autogen_mod): + """Injection characters in a name are neutralized; unusable names skipped.""" + tools = [ + # Injection payload collapses to a plain identifier and is kept, harmless. + StubTool("evil'''\nimport os\n#", "d", {"properties": {}}), + StubTool("good-tool", "d", {"properties": {}}), # -> good_tool + StubTool("1bad", "d", {"properties": {}}), # leading digit -> skipped + StubTool("class", "d", {"properties": {}}), # keyword -> skipped + StubTool("", "d", {"properties": {}}), # empty -> skipped + ] + + _, built = _build(autogen_mod, tools) + names = {t.name for t in built} + + assert "good_tool" in names + assert "1bad" not in names + assert "class" not in names + assert "" not in names + assert len(built) == 2 + # Every exposed name is a real, safe Python identifier. + for name in names: + assert name.isidentifier() + assert not keyword.iskeyword(name) + + +def test_invalid_property_names_skip_tool(autogen_mod): + """Non-identifier / keyword / reserved property names skip the whole tool.""" + tools = [ + StubTool("bad0", "d", {"properties": {"a): pass\n#": {"type": "string"}}}), + StubTool("bad1", "d", {"properties": {"class": {"type": "string"}}}), + StubTool("bad2", "d", {"properties": {"cancellation_token": {"type": "string"}}}), + StubTool("bad3", "d", {"properties": {"123": {"type": "string"}}}), + StubTool("good_tool", "d", {"properties": {"q": {"type": "string"}}}), + ] + + _, built = _build(autogen_mod, tools) + assert {t.name for t in built} == {"good_tool"} + + +async def test_normal_tool_signature_and_execution(autogen_mod): + """A well-formed tool yields the expected signature and executes correctly.""" + schema = { + "type": "object", + "properties": { + "q": {"type": "string"}, + "limit": {"type": "integer"}, + }, + "required": ["q"], + } + tool = StubTool("list-issues", "List issues.", schema) + + manager, built = _build(autogen_mod, [tool]) + assert len(built) == 1 + ft = built[0] + assert ft.name == "list_issues" + + sig = inspect.signature(ft.func) + assert list(sig.parameters) == ["q", "limit"] + + q = sig.parameters["q"] + assert q.kind is inspect.Parameter.KEYWORD_ONLY + assert q.default is inspect.Parameter.empty + assert q.annotation is str + + limit = sig.parameters["limit"] + assert limit.kind is inspect.Parameter.KEYWORD_ONLY + assert limit.default is None + assert limit.annotation == (int | None) + + assert sig.return_annotation is str + + # None-valued optionals are dropped before hitting the executor. + out = await ft.func(q="hello", limit=None) + assert manager.calls == [("list-issues", {"q": "hello"})] + assert json.loads(out) == {"tool": "list-issues", "args": {"q": "hello"}} + + manager.calls.clear() + await ft.func(q="hi", limit=5) + assert manager.calls == [("list-issues", {"q": "hi", "limit": 5})] + + +def test_none_tool_manager_returns_empty(autogen_mod): + autogen_mod.FunctionTool = RecordingFunctionTool + assert autogen_mod.create_autogen_tools(StubSession(None)) == [] + + +def test_missing_autogen_dependency_raises(autogen_mod): + autogen_mod.FunctionTool = None + with pytest.raises(ImportError): + autogen_mod.create_autogen_tools(StubSession(StubToolManager([]))) + + +async def test_real_functiontool_reads_signature_and_runs(): + """With autogen installed, a real FunctionTool introspects and runs the tool. + + This is the end-to-end guard against the RCE fix regressing: autogen's + FunctionTool resolves parameter types via ``typing.get_type_hints`` (reading + ``__annotations__``) and builds a pydantic args model, so the generated + wrapper must expose both a matching ``__signature__`` and ``__annotations__``. + """ + pytest.importorskip("autogen_core") + from autogen_core import CancellationToken + + autogen_mod = _load_autogen_module() + schema = { + "type": "object", + "properties": { + "q": {"type": "string"}, + "n": {"type": "integer"}, + }, + "required": ["q"], + } + tool = StubTool("list-issues", "List issues.", schema) + manager = StubToolManager([tool]) + built = autogen_mod.create_autogen_tools(StubSession(manager)) + + assert len(built) == 1 + ft = built[0] + + params = ft.schema["parameters"] + assert set(params["properties"]) == {"q", "n"} + assert "q" in params.get("required", []) + assert ft.description == "List issues." + + # Execute through autogen end-to-end and confirm it reaches the executor. + args_model = ft.args_type()(q="hello", n=3) + result = await ft.run(args_model, CancellationToken()) + assert manager.calls == [("list-issues", {"q": "hello", "n": 3})] + assert json.loads(result) == { + "tool": "list-issues", + "args": {"q": "hello", "n": 3}, + } From a6fc895da25ecb328402cc095035bc14b38a6607 Mon Sep 17 00:00:00 2001 From: Karim Rahme Date: Mon, 28 Sep 2026 10:28:29 +0200 Subject: [PATCH 2/2] fix union bug --- src/metorial/integrations/autogen.py | 12 ++++++++- tests/test_autogen_integration.py | 40 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/metorial/integrations/autogen.py b/src/metorial/integrations/autogen.py index da9e5288..b0acd0fe 100644 --- a/src/metorial/integrations/autogen.py +++ b/src/metorial/integrations/autogen.py @@ -189,7 +189,17 @@ def create_autogen_tools(session: ProviderSession) -> list[Any]: for prop_name, prop_schema in required_props + optional_props: if not isinstance(prop_schema, dict): prop_schema = {} - py_type = type_map.get(prop_schema.get("type"), str) + # JSON Schema "type" may be a string or a list (e.g. ["string", "null"] + # for a nullable field). Normalize to a single hashable key before the + # lookup so a list type never raises TypeError and aborts the build. + json_type = prop_schema.get("type") + if isinstance(json_type, list): + json_type = next( + (t for t in json_type if isinstance(t, str) and t != "null"), None + ) + if not isinstance(json_type, str): + json_type = None + py_type = type_map.get(json_type, str) if prop_name in required_params: params.append( inspect.Parameter( diff --git a/tests/test_autogen_integration.py b/tests/test_autogen_integration.py index 53df67b6..a024ff15 100644 --- a/tests/test_autogen_integration.py +++ b/tests/test_autogen_integration.py @@ -205,6 +205,46 @@ async def test_normal_tool_signature_and_execution(autogen_mod): assert manager.calls == [("list-issues", {"q": "hi", "limit": 5})] +def test_union_list_schema_type_does_not_abort_build(autogen_mod): + """A JSON-schema "type" list (e.g. ["string", "null"]) must not crash the loop. + + A single nullable field previously raised TypeError (unhashable list key) and + dropped every tool; it should map to the concrete type and leave other tools + intact. + """ + nullable = StubTool( + "nullable-tool", + "Has a nullable field.", + { + "type": "object", + "properties": { + "name": {"type": ["string", "null"]}, + "count": {"type": ["integer", "null"]}, + "weird": {"type": []}, # degenerate: no concrete type -> falls back to str + }, + "required": ["name"], + }, + ) + plain = StubTool("plain-tool", "Plain.", {"properties": {"q": {"type": "string"}}}) + + _, built = _build(autogen_mod, [nullable, plain]) + + # Both tools survive; the nullable field did not abort the whole build. + names = {t.name for t in built} + assert names == {"nullable_tool", "plain_tool"} + + ft = next(t for t in built if t.name == "nullable_tool") + sig = inspect.signature(ft.func) + # "string" chosen from ["string", "null"]; required -> no default. + assert sig.parameters["name"].annotation is str + assert sig.parameters["name"].default is inspect.Parameter.empty + # "integer" chosen from ["integer", "null"]; optional -> int | None, default None. + assert sig.parameters["count"].annotation == (int | None) + assert sig.parameters["count"].default is None + # Empty type list -> str fallback. + assert sig.parameters["weird"].annotation == (str | None) + + def test_none_tool_manager_returns_empty(autogen_mod): autogen_mod.FunctionTool = RecordingFunctionTool assert autogen_mod.create_autogen_tools(StubSession(None)) == []