From 25db0630e27902e8612bd1c0e55597d664c29218 Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 1/7] feat(user_management)!: SDK surface change: Parameter type changed for "verification_id" on "UserManagement.authenticate_with_radar_sms_challenge" --- src/workos/user_management/_resource.py | 40 ++++++++++++++++++++----- tests/test_user_management.py | 4 --- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/workos/user_management/_resource.py b/src/workos/user_management/_resource.py index 976eba7a..702595bd 100644 --- a/src/workos/user_management/_resource.py +++ b/src/workos/user_management/_resource.py @@ -15,6 +15,9 @@ from workos.common.models.create_user_password_hash_type import ( CreateUserPasswordHashType, ) +from workos.common.models.create_user_password_salt_position import ( + CreateUserPasswordSaltPosition, +) from workos.common.models.pagination_order import PaginationOrder from workos.common.models.resend_user_invite_options_locale import ( ResendUserInviteOptionsLocale, @@ -83,6 +86,7 @@ class PasswordHashed: password_hash: str password_hash_type: CreateUserPasswordHashType | str + password_salt_position: CreateUserPasswordSaltPosition | str | None = None class UserManagement: @@ -508,8 +512,8 @@ def authenticate_with_radar_sms_challenge( self, *, code: str, - verification_id: str, - phone_number: str, + verification_id: str | None = None, + phone_number: str | None = None, pending_authentication_token: str, ip_address: str | None = None, device_id: str | None = None, @@ -520,14 +524,16 @@ def authenticate_with_radar_sms_challenge( body: dict[str, Any] = { "grant_type": "urn:workos:oauth:grant-type:radar-sms-challenge:code", "code": code, - "verification_id": verification_id, - "phone_number": phone_number, "pending_authentication_token": pending_authentication_token, } if self._client.client_id is not None: body["client_id"] = self._client.client_id if self._client._api_key is not None: body["client_secret"] = self._client._api_key + if verification_id is not None: + body["verification_id"] = verification_id + if phone_number is not None: + body["phone_number"] = phone_number if ip_address is not None: body["ip_address"] = ip_address if device_id is not None: @@ -1153,6 +1159,10 @@ def create_user( elif isinstance(password, PasswordHashed): body["password_hash"] = password.password_hash body["password_hash_type"] = enum_value(password.password_hash_type) + if password.password_salt_position is not None: + body["password_salt_position"] = enum_value( + password.password_salt_position + ) return self._client.request( method="post", path=("user_management", "users"), @@ -1286,6 +1296,10 @@ def update_user( elif isinstance(password, PasswordHashed): body["password_hash"] = password.password_hash body["password_hash_type"] = enum_value(password.password_hash_type) + if password.password_salt_position is not None: + body["password_salt_position"] = enum_value( + password.password_salt_position + ) return self._client.request( method="put", path=("user_management", "users", str(id)), @@ -2865,8 +2879,8 @@ async def authenticate_with_radar_sms_challenge( self, *, code: str, - verification_id: str, - phone_number: str, + verification_id: str | None = None, + phone_number: str | None = None, pending_authentication_token: str, ip_address: str | None = None, device_id: str | None = None, @@ -2877,14 +2891,16 @@ async def authenticate_with_radar_sms_challenge( body: dict[str, Any] = { "grant_type": "urn:workos:oauth:grant-type:radar-sms-challenge:code", "code": code, - "verification_id": verification_id, - "phone_number": phone_number, "pending_authentication_token": pending_authentication_token, } if self._client.client_id is not None: body["client_id"] = self._client.client_id if self._client._api_key is not None: body["client_secret"] = self._client._api_key + if verification_id is not None: + body["verification_id"] = verification_id + if phone_number is not None: + body["phone_number"] = phone_number if ip_address is not None: body["ip_address"] = ip_address if device_id is not None: @@ -3510,6 +3526,10 @@ async def create_user( elif isinstance(password, PasswordHashed): body["password_hash"] = password.password_hash body["password_hash_type"] = enum_value(password.password_hash_type) + if password.password_salt_position is not None: + body["password_salt_position"] = enum_value( + password.password_salt_position + ) return await self._client.request( method="post", path=("user_management", "users"), @@ -3643,6 +3663,10 @@ async def update_user( elif isinstance(password, PasswordHashed): body["password_hash"] = password.password_hash body["password_hash_type"] = enum_value(password.password_hash_type) + if password.password_salt_position is not None: + body["password_salt_position"] = enum_value( + password.password_salt_position + ) return await self._client.request( method="put", path=("user_management", "users", str(id)), diff --git a/tests/test_user_management.py b/tests/test_user_management.py index 5417db30..21109f21 100644 --- a/tests/test_user_management.py +++ b/tests/test_user_management.py @@ -858,8 +858,6 @@ def test_authenticate_with_radar_sms_challenge(self, workos, httpx_mock): httpx_mock.add_response(json=load_fixture("authenticate_response.json")) result = workos.user_management.authenticate_with_radar_sms_challenge( code="test_code", - verification_id="test_verification_id", - phone_number="test_phone_number", pending_authentication_token="test_pending_authentication_token", ) assert isinstance(result, AuthenticateResponse) @@ -1766,8 +1764,6 @@ async def test_authenticate_with_radar_sms_challenge( result = ( await async_workos.user_management.authenticate_with_radar_sms_challenge( code="test_code", - verification_id="test_verification_id", - phone_number="test_phone_number", pending_authentication_token="test_pending_authentication_token", ) ) From a43e6d4e78c2eb1c2679c80efcef53cee85040de Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 2/7] feat(connect): Add Connect API surface --- ...udit_log_configuration_log_stream_state.py | 5 +- ...audit_log_configuration_log_stream_type.py | 3 +- .../models/audit_log_configuration_state.py | 3 +- src/workos/common/models/connected_account.py | 19 ++ .../common/models/connection_activated.py | 21 +- .../models/connection_activated_data.py | 27 ++- .../connection_activated_data_domain.py | 9 +- .../models/connection_activated_data_state.py | 3 +- .../connection_activated_data_status.py | 3 +- .../common/models/connection_deactivated.py | 21 +- .../common/models/connection_deleted.py | 21 +- .../common/models/connection_deleted_data.py | 19 +- ...ction_saml_certificate_renewal_required.py | 23 ++- ..._saml_certificate_renewal_required_data.py | 20 +- ...icate_renewal_required_data_certificate.py | 17 +- ...uired_data_certificate_certificate_type.py | 5 +- ...ficate_renewal_required_data_connection.py | 13 +- .../connection_saml_certificate_renewed.py | 21 +- ...onnection_saml_certificate_renewed_data.py | 21 +- ...ml_certificate_renewed_data_certificate.py | 17 +- ...newed_data_certificate_certificate_type.py | 1 + ...aml_certificate_renewed_data_connection.py | 1 + ..._rule_updated_context_configured_target.py | 20 +- ..._updated_context_configured_target_user.py | 11 +- ...ous_attribute_context_configured_target.py | 1 + ...ttribute_context_configured_target_user.py | 1 + .../common/models/pipe_connected_account.py | 21 +- .../pipes_connected_account_connected.py | 21 +- ...pes_connected_account_connection_failed.py | 21 +- ...onnected_account_connection_failed_data.py | 24 +-- .../pipes_connected_account_disconnected.py | 21 +- ...onnected_account_reauthorization_needed.py | 23 ++- src/workos/connect/_resource.py | 185 +++++++++--------- .../application_credentials_list_item.py | 14 +- .../models/applications_registration_types.py | 3 +- .../models/external_auth_complete_response.py | 9 +- .../models/new_connect_application_secret.py | 14 +- .../connect/models/redirect_uri_input.py | 11 +- .../connect/models/user_consent_option.py | 14 +- .../models/user_consent_option_choice.py | 13 +- .../models/user_management_login_request.py | 18 +- src/workos/connect/models/user_object.py | 17 +- .../models/audit_log_configuration.py | 20 +- .../audit_log_configuration_log_stream.py | 18 +- ...uthorized_connect_application_list_data.py | 21 +- ...ns_list_response_data_connected_account.py | 19 ++ tests/fixtures/connected_account.json | 5 + ..._list_response_data_connected_account.json | 5 + tests/test_connect.py | 23 ++- 49 files changed, 453 insertions(+), 413 deletions(-) diff --git a/src/workos/common/models/audit_log_configuration_log_stream_state.py b/src/workos/common/models/audit_log_configuration_log_stream_state.py index 155db1a0..39243737 100644 --- a/src/workos/common/models/audit_log_configuration_log_stream_state.py +++ b/src/workos/common/models/audit_log_configuration_log_stream_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,9 +17,7 @@ class AuditLogConfigurationLogStreamState(str, Enum): INVALID = "invalid" @classmethod - def _missing_( - cls, value: object - ) -> Optional["AuditLogConfigurationLogStreamState"]: + def _missing_(cls, value: object) -> AuditLogConfigurationLogStreamState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/audit_log_configuration_log_stream_type.py b/src/workos/common/models/audit_log_configuration_log_stream_type.py index ed488044..5051dfa5 100644 --- a/src/workos/common/models/audit_log_configuration_log_stream_type.py +++ b/src/workos/common/models/audit_log_configuration_log_stream_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -21,7 +20,7 @@ class AuditLogConfigurationLogStreamType(str, Enum): SPLUNK = "Splunk" @classmethod - def _missing_(cls, value: object) -> Optional["AuditLogConfigurationLogStreamType"]: + def _missing_(cls, value: object) -> AuditLogConfigurationLogStreamType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/audit_log_configuration_state.py b/src/workos/common/models/audit_log_configuration_state.py index d1021747..a26414ad 100644 --- a/src/workos/common/models/audit_log_configuration_state.py +++ b/src/workos/common/models/audit_log_configuration_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class AuditLogConfigurationState(str, Enum): DISABLED = "disabled" @classmethod - def _missing_(cls, value: object) -> Optional["AuditLogConfigurationState"]: + def _missing_(cls, value: object) -> AuditLogConfigurationState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/connected_account.py b/src/workos/common/models/connected_account.py index 5bbb93d9..838d5159 100644 --- a/src/workos/common/models/connected_account.py +++ b/src/workos/common/models/connected_account.py @@ -39,6 +39,12 @@ class ConnectedAccount: """The authentication method used for this connection (`oauth`, `api_key`, or `client_credentials`). Defaults to `oauth` if absent.""" api_key_last_4: str | None = None """The last four characters of the API key, or `null` for OAuth connections.""" + client_id: str | None = None + """The client ID supplied for this connection. Only present when `auth_method` is `client_credentials`.""" + client_secret_last_4: str | None = None + """The last four characters of the client secret supplied for this connection, or `null` when it can't be read. Only present when `auth_method` is `client_credentials`.""" + config: dict[str, str] | None = None + """The connection-level configuration values stored for this connection — the fields the provider declares at `installation` scope, excluding any it declares as secret. Only present when `auth_method` is `client_credentials`.""" @classmethod def from_dict(cls, data: dict[str, Any]) -> ConnectedAccount: @@ -57,6 +63,9 @@ def from_dict(cls, data: dict[str, Any]) -> ConnectedAccount: if (_v_auth_method := data.get("auth_method")) is not None else None, api_key_last_4=data.get("api_key_last_4"), + client_id=data.get("client_id"), + client_secret_last_4=data.get("client_secret_last_4"), + config=data.get("config"), ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectedAccount", e) @@ -90,4 +99,14 @@ def to_dict(self) -> dict[str, Any]: result["api_key_last_4"] = self.api_key_last_4 else: result["api_key_last_4"] = None + if self.client_id is not None: + result["client_id"] = self.client_id + else: + result["client_id"] = None + if self.client_secret_last_4 is not None: + result["client_secret_last_4"] = self.client_secret_last_4 + else: + result["client_secret_last_4"] = None + if self.config is not None: + result["config"] = self.config return result diff --git a/src/workos/common/models/connection_activated.py b/src/workos/common/models/connection_activated.py index c0f60117..e534d11e 100644 --- a/src/workos/common/models/connection_activated.py +++ b/src/workos/common/models/connection_activated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_activated_data import ConnectionActivatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class ConnectionActivated: id: str """Unique identifier for the event.""" event: Literal["connection.activated"] - data: "ConnectionActivatedData" + data: ConnectionActivatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivated": + def from_dict(cls, data: dict[str, Any]) -> ConnectionActivated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivated": id=data["id"], event=data.get("event", "connection.activated"), data=ConnectionActivatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionActivated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/connection_activated_data.py b/src/workos/common/models/connection_activated_data.py index 8bcb652e..e79cf62d 100644 --- a/src/workos/common/models/connection_activated_data.py +++ b/src/workos/common/models/connection_activated_data.py @@ -5,15 +5,14 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error -from .connection_activated_data_domain import ConnectionActivatedDataDomain from .connection_activated_data_connection_type import ( ConnectionActivatedDataConnectionType, ) +from .connection_activated_data_domain import ConnectionActivatedDataDomain from .connection_activated_data_state import ConnectionActivatedDataState from .connection_activated_data_status import ConnectionActivatedDataStatus @@ -26,11 +25,11 @@ class ConnectionActivatedData: """Distinguishes the connection object.""" id: str """Unique identifier of the connection.""" - state: "ConnectionActivatedDataState" + state: ConnectionActivatedDataState """The current state of the connection.""" name: str """The name of the connection.""" - connection_type: "ConnectionActivatedDataConnectionType" + connection_type: ConnectionActivatedDataConnectionType """The type of the connection.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -38,15 +37,15 @@ class ConnectionActivatedData: """An ISO 8601 timestamp.""" external_key: str """The external key of the connection.""" - status: "ConnectionActivatedDataStatus" + status: ConnectionActivatedDataStatus """Deprecated. Use state instead.""" - domains: List["ConnectionActivatedDataDomain"] + domains: list[ConnectionActivatedDataDomain] """The domains associated with the connection.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the connection belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivatedData": + def from_dict(cls, data: dict[str, Any]) -> ConnectionActivatedData: """Deserialize from a dictionary.""" try: return cls( @@ -62,7 +61,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivatedData": external_key=data["external_key"], status=ConnectionActivatedDataStatus(data["status"]), domains=[ - ConnectionActivatedDataDomain.from_dict(cast(Dict[str, Any], item)) + ConnectionActivatedDataDomain.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["domains"]) ], organization_id=data.get("organization_id"), @@ -70,9 +69,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionActivatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["state"] = ( diff --git a/src/workos/common/models/connection_activated_data_domain.py b/src/workos/common/models/connection_activated_data_domain.py index 1072e3bb..cb048f7b 100644 --- a/src/workos/common/models/connection_activated_data_domain.py +++ b/src/workos/common/models/connection_activated_data_domain.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -19,7 +20,7 @@ class ConnectionActivatedDataDomain: """The domain value.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivatedDataDomain": + def from_dict(cls, data: dict[str, Any]) -> ConnectionActivatedDataDomain: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionActivatedDataDomain": except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionActivatedDataDomain", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["domain"] = self.domain diff --git a/src/workos/common/models/connection_activated_data_state.py b/src/workos/common/models/connection_activated_data_state.py index f16b8a07..0ca7c3ee 100644 --- a/src/workos/common/models/connection_activated_data_state.py +++ b/src/workos/common/models/connection_activated_data_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,7 +18,7 @@ class ConnectionActivatedDataState(str, Enum): DELETING = "deleting" @classmethod - def _missing_(cls, value: object) -> Optional["ConnectionActivatedDataState"]: + def _missing_(cls, value: object) -> ConnectionActivatedDataState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/connection_activated_data_status.py b/src/workos/common/models/connection_activated_data_status.py index 73628492..18a8e5fa 100644 --- a/src/workos/common/models/connection_activated_data_status.py +++ b/src/workos/common/models/connection_activated_data_status.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class ConnectionActivatedDataStatus(str, Enum): UNLINKED = "unlinked" @classmethod - def _missing_(cls, value: object) -> Optional["ConnectionActivatedDataStatus"]: + def _missing_(cls, value: object) -> ConnectionActivatedDataStatus | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/connection_deactivated.py b/src/workos/common/models/connection_deactivated.py index 1e6ad18b..afbf5e0d 100644 --- a/src/workos/common/models/connection_deactivated.py +++ b/src/workos/common/models/connection_deactivated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_deactivated_data import ConnectionDeactivatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class ConnectionDeactivated: id: str """Unique identifier for the event.""" event: Literal["connection.deactivated"] - data: "ConnectionDeactivatedData" + data: ConnectionDeactivatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeactivated": + def from_dict(cls, data: dict[str, Any]) -> ConnectionDeactivated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeactivated": id=data["id"], event=data.get("event", "connection.deactivated"), data=ConnectionDeactivatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionDeactivated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/connection_deleted.py b/src/workos/common/models/connection_deleted.py index fa8725ec..33a066d1 100644 --- a/src/workos/common/models/connection_deleted.py +++ b/src/workos/common/models/connection_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_deleted_data import ConnectionDeletedData from .event_context import EventContext @@ -22,14 +21,14 @@ class ConnectionDeleted: id: str """Unique identifier for the event.""" event: Literal["connection.deleted"] - data: "ConnectionDeletedData" + data: ConnectionDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeleted": + def from_dict(cls, data: dict[str, Any]) -> ConnectionDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeleted": id=data["id"], event=data.get("event", "connection.deleted"), data=ConnectionDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/connection_deleted_data.py b/src/workos/common/models/connection_deleted_data.py index 64bae622..5efdd751 100644 --- a/src/workos/common/models/connection_deleted_data.py +++ b/src/workos/common/models/connection_deleted_data.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .connection_deleted_data_connection_type import ConnectionDeletedDataConnectionType from .connection_deleted_data_state import ConnectionDeletedDataState @@ -20,21 +21,21 @@ class ConnectionDeletedData: """Distinguishes the connection object.""" id: str """Unique identifier of the connection.""" - state: "ConnectionDeletedDataState" + state: ConnectionDeletedDataState """The current state of the connection.""" name: str """The name of the connection.""" - connection_type: "ConnectionDeletedDataConnectionType" + connection_type: ConnectionDeletedDataConnectionType """The type of the connection.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the connection belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeletedData": + def from_dict(cls, data: dict[str, Any]) -> ConnectionDeletedData: """Deserialize from a dictionary.""" try: return cls( @@ -52,9 +53,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionDeletedData": except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionDeletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["state"] = ( diff --git a/src/workos/common/models/connection_saml_certificate_renewal_required.py b/src/workos/common/models/connection_saml_certificate_renewal_required.py index 2185ed68..9fd1a365 100644 --- a/src/workos/common/models/connection_saml_certificate_renewal_required.py +++ b/src/workos/common/models/connection_saml_certificate_renewal_required.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_saml_certificate_renewal_required_data import ( ConnectionSAMLCertificateRenewalRequiredData, @@ -24,16 +23,16 @@ class ConnectionSAMLCertificateRenewalRequired: id: str """Unique identifier for the event.""" event: Literal["connection.saml_certificate_renewal_required"] - data: "ConnectionSAMLCertificateRenewalRequiredData" + data: ConnectionSAMLCertificateRenewalRequiredData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "ConnectionSAMLCertificateRenewalRequired": + cls, data: dict[str, Any] + ) -> ConnectionSAMLCertificateRenewalRequired: """Deserialize from a dictionary.""" try: return cls( @@ -41,19 +40,19 @@ def from_dict( id=data["id"], event=data.get("event", "connection.saml_certificate_renewal_required"), data=ConnectionSAMLCertificateRenewalRequiredData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionSAMLCertificateRenewalRequired", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/connection_saml_certificate_renewal_required_data.py b/src/workos/common/models/connection_saml_certificate_renewal_required_data.py index ae5a1e46..9969b119 100644 --- a/src/workos/common/models/connection_saml_certificate_renewal_required_data.py +++ b/src/workos/common/models/connection_saml_certificate_renewal_required_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .connection_saml_certificate_renewal_required_data_certificate import ( @@ -19,34 +19,34 @@ class ConnectionSAMLCertificateRenewalRequiredData: """The event payload.""" - connection: "ConnectionSAMLCertificateRenewalRequiredDataConnection" + connection: ConnectionSAMLCertificateRenewalRequiredDataConnection """The connection with the expiring certificate.""" - certificate: "ConnectionSAMLCertificateRenewalRequiredDataCertificate" + certificate: ConnectionSAMLCertificateRenewalRequiredDataCertificate """The SAML certificate details.""" days_until_expiry: int """The number of days until the certificate expires.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "ConnectionSAMLCertificateRenewalRequiredData": + cls, data: dict[str, Any] + ) -> ConnectionSAMLCertificateRenewalRequiredData: """Deserialize from a dictionary.""" try: return cls( connection=ConnectionSAMLCertificateRenewalRequiredDataConnection.from_dict( - cast(Dict[str, Any], data["connection"]) + cast(dict[str, Any], data["connection"]) ), certificate=ConnectionSAMLCertificateRenewalRequiredDataCertificate.from_dict( - cast(Dict[str, Any], data["certificate"]) + cast(dict[str, Any], data["certificate"]) ), days_until_expiry=data["days_until_expiry"], ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionSAMLCertificateRenewalRequiredData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["connection"] = self.connection.to_dict() result["certificate"] = self.certificate.to_dict() result["days_until_expiry"] = self.days_until_expiry diff --git a/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate.py b/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate.py index 7234f392..82e7fb59 100644 --- a/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate.py +++ b/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .connection_saml_certificate_renewal_required_data_certificate_certificate_type import ( ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType, ) @@ -18,7 +19,7 @@ class ConnectionSAMLCertificateRenewalRequiredDataCertificate: """The SAML certificate details.""" certificate_type: ( - "ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType" + ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType ) """The type of the SAML certificate.""" expiry_date: datetime @@ -28,8 +29,8 @@ class ConnectionSAMLCertificateRenewalRequiredDataCertificate: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "ConnectionSAMLCertificateRenewalRequiredDataCertificate": + cls, data: dict[str, Any] + ) -> ConnectionSAMLCertificateRenewalRequiredDataCertificate: """Deserialize from a dictionary.""" try: return cls( @@ -44,9 +45,9 @@ def from_dict( "ConnectionSAMLCertificateRenewalRequiredDataCertificate", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["certificate_type"] = ( self.certificate_type.value if isinstance(self.certificate_type, Enum) diff --git a/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate_certificate_type.py b/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate_certificate_type.py index 14a72d4f..9dfdef57 100644 --- a/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate_certificate_type.py +++ b/src/workos/common/models/connection_saml_certificate_renewal_required_data_certificate_certificate_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,9 +18,7 @@ class ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType(str @classmethod def _missing_( cls, value: object - ) -> Optional[ - "ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType" - ]: + ) -> ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/connection_saml_certificate_renewal_required_data_connection.py b/src/workos/common/models/connection_saml_certificate_renewal_required_data_connection.py index ed7008ed..4b776936 100644 --- a/src/workos/common/models/connection_saml_certificate_renewal_required_data_connection.py +++ b/src/workos/common/models/connection_saml_certificate_renewal_required_data_connection.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,13 +14,13 @@ class ConnectionSAMLCertificateRenewalRequiredDataConnection: id: str """Unique identifier of the connection.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the connection belongs to.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "ConnectionSAMLCertificateRenewalRequiredDataConnection": + cls, data: dict[str, Any] + ) -> ConnectionSAMLCertificateRenewalRequiredDataConnection: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +32,9 @@ def from_dict( "ConnectionSAMLCertificateRenewalRequiredDataConnection", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id if self.organization_id is not None: result["organization_id"] = self.organization_id diff --git a/src/workos/common/models/connection_saml_certificate_renewed.py b/src/workos/common/models/connection_saml_certificate_renewed.py index e212fddb..e61166b0 100644 --- a/src/workos/common/models/connection_saml_certificate_renewed.py +++ b/src/workos/common/models/connection_saml_certificate_renewed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_saml_certificate_renewed_data import ( ConnectionSAMLCertificateRenewedData, @@ -24,14 +23,14 @@ class ConnectionSAMLCertificateRenewed: id: str """Unique identifier for the event.""" event: Literal["connection.saml_certificate_renewed"] - data: "ConnectionSAMLCertificateRenewedData" + data: ConnectionSAMLCertificateRenewedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionSAMLCertificateRenewed": + def from_dict(cls, data: dict[str, Any]) -> ConnectionSAMLCertificateRenewed: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ConnectionSAMLCertificateRenewed": id=data["id"], event=data.get("event", "connection.saml_certificate_renewed"), data=ConnectionSAMLCertificateRenewedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionSAMLCertificateRenewed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/connection_saml_certificate_renewed_data.py b/src/workos/common/models/connection_saml_certificate_renewed_data.py index 169bfe0b..7fcba202 100644 --- a/src/workos/common/models/connection_saml_certificate_renewed_data.py +++ b/src/workos/common/models/connection_saml_certificate_renewed_data.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .connection_saml_certificate_renewed_data_certificate import ( ConnectionSAMLCertificateRenewedDataCertificate, @@ -21,32 +20,32 @@ class ConnectionSAMLCertificateRenewedData: """The event payload.""" - connection: "ConnectionSAMLCertificateRenewedDataConnection" + connection: ConnectionSAMLCertificateRenewedDataConnection """The connection with the renewed certificate.""" - certificate: "ConnectionSAMLCertificateRenewedDataCertificate" + certificate: ConnectionSAMLCertificateRenewedDataCertificate """The renewed SAML certificate details.""" renewed_at: datetime """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ConnectionSAMLCertificateRenewedData": + def from_dict(cls, data: dict[str, Any]) -> ConnectionSAMLCertificateRenewedData: """Deserialize from a dictionary.""" try: return cls( connection=ConnectionSAMLCertificateRenewedDataConnection.from_dict( - cast(Dict[str, Any], data["connection"]) + cast(dict[str, Any], data["connection"]) ), certificate=ConnectionSAMLCertificateRenewedDataCertificate.from_dict( - cast(Dict[str, Any], data["certificate"]) + cast(dict[str, Any], data["certificate"]) ), renewed_at=_parse_datetime(data["renewed_at"]), ) except (KeyError, ValueError) as e: _raise_deserialize_error("ConnectionSAMLCertificateRenewedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["connection"] = self.connection.to_dict() result["certificate"] = self.certificate.to_dict() result["renewed_at"] = _format_datetime(self.renewed_at) diff --git a/src/workos/common/models/connection_saml_certificate_renewed_data_certificate.py b/src/workos/common/models/connection_saml_certificate_renewed_data_certificate.py index 6f107f4a..a7d4a2b4 100644 --- a/src/workos/common/models/connection_saml_certificate_renewed_data_certificate.py +++ b/src/workos/common/models/connection_saml_certificate_renewed_data_certificate.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .connection_saml_certificate_renewed_data_certificate_certificate_type import ( ConnectionSAMLCertificateRenewedDataCertificateCertificateType, ) @@ -17,15 +18,15 @@ class ConnectionSAMLCertificateRenewedDataCertificate: """The renewed SAML certificate details.""" - certificate_type: "ConnectionSAMLCertificateRenewedDataCertificateCertificateType" + certificate_type: ConnectionSAMLCertificateRenewedDataCertificateCertificateType """The type of the SAML certificate.""" expiry_date: datetime """An ISO 8601 timestamp.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "ConnectionSAMLCertificateRenewedDataCertificate": + cls, data: dict[str, Any] + ) -> ConnectionSAMLCertificateRenewedDataCertificate: """Deserialize from a dictionary.""" try: return cls( @@ -39,9 +40,9 @@ def from_dict( "ConnectionSAMLCertificateRenewedDataCertificate", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["certificate_type"] = ( self.certificate_type.value if isinstance(self.certificate_type, Enum) diff --git a/src/workos/common/models/connection_saml_certificate_renewed_data_certificate_certificate_type.py b/src/workos/common/models/connection_saml_certificate_renewed_data_certificate_certificate_type.py index 1d1274ea..1703f65f 100644 --- a/src/workos/common/models/connection_saml_certificate_renewed_data_certificate_certificate_type.py +++ b/src/workos/common/models/connection_saml_certificate_renewed_data_certificate_certificate_type.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .connection_saml_certificate_renewal_required_data_certificate_certificate_type import ( ConnectionSAMLCertificateRenewalRequiredDataCertificateCertificateType, ) diff --git a/src/workos/common/models/connection_saml_certificate_renewed_data_connection.py b/src/workos/common/models/connection_saml_certificate_renewed_data_connection.py index 2eef2fed..8a343600 100644 --- a/src/workos/common/models/connection_saml_certificate_renewed_data_connection.py +++ b/src/workos/common/models/connection_saml_certificate_renewed_data_connection.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .connection_saml_certificate_renewal_required_data_connection import ( ConnectionSAMLCertificateRenewalRequiredDataConnection, ) diff --git a/src/workos/common/models/flag_rule_updated_context_configured_target.py b/src/workos/common/models/flag_rule_updated_context_configured_target.py index df29f009..4d335ecd 100644 --- a/src/workos/common/models/flag_rule_updated_context_configured_target.py +++ b/src/workos/common/models/flag_rule_updated_context_configured_target.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List +from typing import Any, cast + from workos._types import _raise_deserialize_error from .flag_rule_updated_context_configured_target_organization import ( @@ -19,27 +19,25 @@ class FlagRuleUpdatedContextConfiguredTarget: """The configured targets for the flag rule.""" - organizations: List["FlagRuleUpdatedContextConfiguredTargetOrganization"] + organizations: list[FlagRuleUpdatedContextConfiguredTargetOrganization] """The organizations targeted by the flag rule.""" - users: List["FlagRuleUpdatedContextConfiguredTargetUser"] + users: list[FlagRuleUpdatedContextConfiguredTargetUser] """The users targeted by the flag rule.""" @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagRuleUpdatedContextConfiguredTarget": + def from_dict(cls, data: dict[str, Any]) -> FlagRuleUpdatedContextConfiguredTarget: """Deserialize from a dictionary.""" try: return cls( organizations=[ FlagRuleUpdatedContextConfiguredTargetOrganization.from_dict( - cast(Dict[str, Any], item) + cast(dict[str, Any], item) ) for item in cast(list[Any], data["organizations"]) ], users=[ FlagRuleUpdatedContextConfiguredTargetUser.from_dict( - cast(Dict[str, Any], item) + cast(dict[str, Any], item) ) for item in cast(list[Any], data["users"]) ], @@ -47,9 +45,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdatedContextConfiguredTarget", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organizations"] = [item.to_dict() for item in self.organizations] result["users"] = [item.to_dict() for item in self.users] return result diff --git a/src/workos/common/models/flag_rule_updated_context_configured_target_user.py b/src/workos/common/models/flag_rule_updated_context_configured_target_user.py index 7019377a..db84985c 100644 --- a/src/workos/common/models/flag_rule_updated_context_configured_target_user.py +++ b/src/workos/common/models/flag_rule_updated_context_configured_target_user.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -18,8 +19,8 @@ class FlagRuleUpdatedContextConfiguredTargetUser: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagRuleUpdatedContextConfiguredTargetUser": + cls, data: dict[str, Any] + ) -> FlagRuleUpdatedContextConfiguredTargetUser: """Deserialize from a dictionary.""" try: return cls( @@ -29,9 +30,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdatedContextConfiguredTargetUser", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["email"] = self.email return result diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target.py index 28f3c66b..1f04b033 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .flag_rule_updated_context_configured_target import ( FlagRuleUpdatedContextConfiguredTarget, ) diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target_user.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target_user.py index 2bd46f17..e78d88f7 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target_user.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_configured_target_user.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .flag_rule_updated_context_configured_target_user import ( FlagRuleUpdatedContextConfiguredTargetUser, ) diff --git a/src/workos/common/models/pipe_connected_account.py b/src/workos/common/models/pipe_connected_account.py index 14673ec4..345b31fd 100644 --- a/src/workos/common/models/pipe_connected_account.py +++ b/src/workos/common/models/pipe_connected_account.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .pipe_connected_account_state import PipeConnectedAccountState @@ -23,13 +24,13 @@ class PipeConnectedAccount: """The unique ID of the data integration.""" provider_slug: str """The provider slug for this connected account.""" - user_id: Optional[str] + user_id: str | None """The ID of the User the connected account belongs to.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the Organization the connected account belongs to.""" - scopes: List[str] + scopes: list[str] """The OAuth scopes granted for this connected account.""" - state: "PipeConnectedAccountState" + state: PipeConnectedAccountState """The state of the connected account.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -37,7 +38,7 @@ class PipeConnectedAccount: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PipeConnectedAccount": + def from_dict(cls, data: dict[str, Any]) -> PipeConnectedAccount: """Deserialize from a dictionary.""" try: return cls( @@ -55,9 +56,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "PipeConnectedAccount": except (KeyError, ValueError) as e: _raise_deserialize_error("PipeConnectedAccount", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["data_integration_id"] = self.data_integration_id diff --git a/src/workos/common/models/pipes_connected_account_connected.py b/src/workos/common/models/pipes_connected_account_connected.py index 04e53e97..87707c72 100644 --- a/src/workos/common/models/pipes_connected_account_connected.py +++ b/src/workos/common/models/pipes_connected_account_connected.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .pipe_connected_account import PipeConnectedAccount @@ -22,32 +21,32 @@ class PipesConnectedAccountConnected: id: str """Unique identifier for the event.""" event: Literal["pipes.connected_account.connected"] - data: "PipeConnectedAccount" + data: PipeConnectedAccount """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PipesConnectedAccountConnected": + def from_dict(cls, data: dict[str, Any]) -> PipesConnectedAccountConnected: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "pipes.connected_account.connected"), - data=PipeConnectedAccount.from_dict(cast(Dict[str, Any], data["data"])), + data=PipeConnectedAccount.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PipesConnectedAccountConnected", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/pipes_connected_account_connection_failed.py b/src/workos/common/models/pipes_connected_account_connection_failed.py index 5f72dd98..7c8c9c87 100644 --- a/src/workos/common/models/pipes_connected_account_connection_failed.py +++ b/src/workos/common/models/pipes_connected_account_connection_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .pipes_connected_account_connection_failed_data import ( @@ -24,14 +23,14 @@ class PipesConnectedAccountConnectionFailed: id: str """Unique identifier for the event.""" event: Literal["pipes.connected_account.connection_failed"] - data: "PipesConnectedAccountConnectionFailedData" + data: PipesConnectedAccountConnectionFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PipesConnectedAccountConnectionFailed": + def from_dict(cls, data: dict[str, Any]) -> PipesConnectedAccountConnectionFailed: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PipesConnectedAccountConnectionFail id=data["id"], event=data.get("event", "pipes.connected_account.connection_failed"), data=PipesConnectedAccountConnectionFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PipesConnectedAccountConnectionFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/pipes_connected_account_connection_failed_data.py b/src/workos/common/models/pipes_connected_account_connection_failed_data.py index f6a5c129..fdee3e18 100644 --- a/src/workos/common/models/pipes_connected_account_connection_failed_data.py +++ b/src/workos/common/models/pipes_connected_account_connection_failed_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -19,25 +19,25 @@ class PipesConnectedAccountConnectionFailedData: """The unique ID of the data integration.""" provider_slug: str """The provider slug for this connection attempt.""" - user_id: Optional[str] + user_id: str | None """The ID of the User the connection attempt belongs to.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the Organization the connection attempt belongs to.""" error_code: str """A machine-readable error code for the failure.""" - error_reason: Optional[str] + error_reason: str | None """A human-readable explanation of the failure.""" - provider_error: Optional[str] + provider_error: str | None """The raw error code returned by the OAuth provider.""" - provider_error_description: Optional[str] + provider_error_description: str | None """The raw error description returned by the OAuth provider.""" created_at: datetime """An ISO 8601 timestamp.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "PipesConnectedAccountConnectionFailedData": + cls, data: dict[str, Any] + ) -> PipesConnectedAccountConnectionFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -55,9 +55,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("PipesConnectedAccountConnectionFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["data_integration_id"] = self.data_integration_id result["provider_slug"] = self.provider_slug diff --git a/src/workos/common/models/pipes_connected_account_disconnected.py b/src/workos/common/models/pipes_connected_account_disconnected.py index 9694ae1c..2d0ddeae 100644 --- a/src/workos/common/models/pipes_connected_account_disconnected.py +++ b/src/workos/common/models/pipes_connected_account_disconnected.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .pipe_connected_account import PipeConnectedAccount @@ -22,32 +21,32 @@ class PipesConnectedAccountDisconnected: id: str """Unique identifier for the event.""" event: Literal["pipes.connected_account.disconnected"] - data: "PipeConnectedAccount" + data: PipeConnectedAccount """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PipesConnectedAccountDisconnected": + def from_dict(cls, data: dict[str, Any]) -> PipesConnectedAccountDisconnected: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "pipes.connected_account.disconnected"), - data=PipeConnectedAccount.from_dict(cast(Dict[str, Any], data["data"])), + data=PipeConnectedAccount.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PipesConnectedAccountDisconnected", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/pipes_connected_account_reauthorization_needed.py b/src/workos/common/models/pipes_connected_account_reauthorization_needed.py index 5d981c1f..2c88bcbe 100644 --- a/src/workos/common/models/pipes_connected_account_reauthorization_needed.py +++ b/src/workos/common/models/pipes_connected_account_reauthorization_needed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .pipe_connected_account import PipeConnectedAccount @@ -22,16 +21,16 @@ class PipesConnectedAccountReauthorizationNeeded: id: str """Unique identifier for the event.""" event: Literal["pipes.connected_account.reauthorization_needed"] - data: "PipeConnectedAccount" + data: PipeConnectedAccount """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "PipesConnectedAccountReauthorizationNeeded": + cls, data: dict[str, Any] + ) -> PipesConnectedAccountReauthorizationNeeded: """Deserialize from a dictionary.""" try: return cls( @@ -40,18 +39,18 @@ def from_dict( event=data.get( "event", "pipes.connected_account.reauthorization_needed" ), - data=PipeConnectedAccount.from_dict(cast(Dict[str, Any], data["data"])), + data=PipeConnectedAccount.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PipesConnectedAccountReauthorizationNeeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/connect/_resource.py b/src/workos/connect/_resource.py index 2cea71f8..0c65c13d 100644 --- a/src/workos/connect/_resource.py +++ b/src/workos/connect/_resource.py @@ -2,14 +2,22 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union, cast +from typing import TYPE_CHECKING, Any, cast if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven +from workos.common.models.connect_application import ( + ConnectApplication, + ConnectApplicationVariant, +) +from workos.common.models.pagination_order import PaginationOrder + +from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value from .models import ( ApplicationCredentialsListItem, + ApplicationsRegistrationTypes, CreateM2MApplication, CreateOAuthApplication, ExternalAuthCompleteResponse, @@ -18,17 +26,12 @@ UserConsentOption, UserObject, ) -from workos.common.models.connect_application import ConnectApplication -from workos.common.models.connect_application import ConnectApplicationVariant -from .models import ApplicationsRegistrationTypes -from workos.common.models.pagination_order import PaginationOrder -from .._pagination import AsyncPage, SyncPage class Connect: """Connect API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def complete_oauth2( @@ -36,8 +39,8 @@ def complete_oauth2( *, external_auth_id: str, user: UserObject, - user_consent_options: Optional[List[UserConsentOption]] = None, - request_options: Optional[RequestOptions] = None, + user_consent_options: list[UserConsentOption] | None = None, + request_options: RequestOptions | None = None, ) -> ExternalAuthCompleteResponse: """Complete external authentication @@ -69,7 +72,7 @@ def complete_oauth2( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "external_auth_id": external_auth_id, @@ -93,15 +96,13 @@ def complete_oauth2( def list_applications( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - registration_types: Optional[ - List[Union[ApplicationsRegistrationTypes, str]] - ] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + registration_types: list[ApplicationsRegistrationTypes | str] | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[ConnectApplicationVariant]: """List Connect Applications @@ -153,8 +154,8 @@ def list_applications( def create_application( self, *, - body: Union[CreateOAuthApplication, CreateM2MApplication, Dict[str, Any]], - request_options: Optional[RequestOptions] = None, + body: CreateOAuthApplication | CreateM2MApplication | dict[str, Any], + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Create a Connect Application @@ -174,7 +175,7 @@ def create_application( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - _body: Dict[str, Any] = body if isinstance(body, dict) else body.to_dict() + _body: dict[str, Any] = body if isinstance(body, dict) else body.to_dict() return cast( ConnectApplicationVariant, self._client.request( @@ -191,15 +192,15 @@ def create_oauth_application( *, name: str, is_first_party: bool, - description: Optional[str] = None, - scopes: Optional[List[str]] = None, - redirect_uris: Optional[List[RedirectUriInput]] = None, - uses_pkce: Optional[bool] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None = None, + scopes: list[str] | None = None, + redirect_uris: list[RedirectUriInput] | None = None, + uses_pkce: bool | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: - """Create oauth application.""" - body: Dict[str, Any] = { + """Create OAuth application.""" + body: dict[str, Any] = { "application_type": "oauth", "name": name, "is_first_party": is_first_party, @@ -231,12 +232,12 @@ def create_m2m_application( *, name: str, organization_id: str, - description: Optional[str] = None, - scopes: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + description: str | None = None, + scopes: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: - """Create m2m application.""" - body: Dict[str, Any] = { + """Create M2M application.""" + body: dict[str, Any] = { "application_type": "m2m", "name": name, "organization_id": organization_id, @@ -261,7 +262,7 @@ def get_application( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Get a Connect Application @@ -294,11 +295,11 @@ def update_application( self, id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - scopes: Union[List[str], None, NotGiven] = NOT_GIVEN, - redirect_uris: Union[List[RedirectUriInput], None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + scopes: list[str] | None | NotGiven = NOT_GIVEN, + redirect_uris: list[RedirectUriInput] | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Update a Connect Application @@ -322,7 +323,7 @@ def update_application( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -354,7 +355,7 @@ def delete_application( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Connect Application @@ -380,8 +381,8 @@ def list_application_client_secrets( self, id: str, *, - request_options: Optional[RequestOptions] = None, - ) -> List[ApplicationCredentialsListItem]: + request_options: RequestOptions | None = None, + ) -> list[ApplicationCredentialsListItem]: """List Client Secrets for a Connect Application List all client secrets associated with a Connect Application. @@ -405,7 +406,7 @@ def list_application_client_secrets( request_options=request_options, ) return [ - ApplicationCredentialsListItem.from_dict(cast(Dict[str, Any], item)) + ApplicationCredentialsListItem.from_dict(cast(dict[str, Any], item)) for item in raw ] @@ -413,7 +414,7 @@ def create_application_client_secret( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> NewConnectApplicationSecret: """Create a new client secret for a Connect Application @@ -433,7 +434,7 @@ def create_application_client_secret( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} return self._client.request( method="post", path=("connect", "applications", str(id), "client_secrets"), @@ -446,7 +447,7 @@ def delete_client_secret( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Client Secret @@ -472,7 +473,7 @@ def delete_client_secret( class AsyncConnect: """Connect API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def complete_oauth2( @@ -480,8 +481,8 @@ async def complete_oauth2( *, external_auth_id: str, user: UserObject, - user_consent_options: Optional[List[UserConsentOption]] = None, - request_options: Optional[RequestOptions] = None, + user_consent_options: list[UserConsentOption] | None = None, + request_options: RequestOptions | None = None, ) -> ExternalAuthCompleteResponse: """Complete external authentication @@ -513,7 +514,7 @@ async def complete_oauth2( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "external_auth_id": external_auth_id, @@ -537,15 +538,13 @@ async def complete_oauth2( async def list_applications( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - registration_types: Optional[ - List[Union[ApplicationsRegistrationTypes, str]] - ] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + registration_types: list[ApplicationsRegistrationTypes | str] | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[ConnectApplicationVariant]: """List Connect Applications @@ -597,8 +596,8 @@ async def list_applications( async def create_application( self, *, - body: Union[CreateOAuthApplication, CreateM2MApplication, Dict[str, Any]], - request_options: Optional[RequestOptions] = None, + body: CreateOAuthApplication | CreateM2MApplication | dict[str, Any], + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Create a Connect Application @@ -618,7 +617,7 @@ async def create_application( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - _body: Dict[str, Any] = body if isinstance(body, dict) else body.to_dict() + _body: dict[str, Any] = body if isinstance(body, dict) else body.to_dict() return cast( ConnectApplicationVariant, await self._client.request( @@ -635,15 +634,15 @@ async def create_oauth_application( *, name: str, is_first_party: bool, - description: Optional[str] = None, - scopes: Optional[List[str]] = None, - redirect_uris: Optional[List[RedirectUriInput]] = None, - uses_pkce: Optional[bool] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None = None, + scopes: list[str] | None = None, + redirect_uris: list[RedirectUriInput] | None = None, + uses_pkce: bool | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: - """Create oauth application.""" - body: Dict[str, Any] = { + """Create OAuth application.""" + body: dict[str, Any] = { "application_type": "oauth", "name": name, "is_first_party": is_first_party, @@ -675,12 +674,12 @@ async def create_m2m_application( *, name: str, organization_id: str, - description: Optional[str] = None, - scopes: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + description: str | None = None, + scopes: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: - """Create m2m application.""" - body: Dict[str, Any] = { + """Create M2M application.""" + body: dict[str, Any] = { "application_type": "m2m", "name": name, "organization_id": organization_id, @@ -705,7 +704,7 @@ async def get_application( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Get a Connect Application @@ -738,11 +737,11 @@ async def update_application( self, id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - scopes: Union[List[str], None, NotGiven] = NOT_GIVEN, - redirect_uris: Union[List[RedirectUriInput], None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + scopes: list[str] | None | NotGiven = NOT_GIVEN, + redirect_uris: list[RedirectUriInput] | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ConnectApplicationVariant: """Update a Connect Application @@ -766,7 +765,7 @@ async def update_application( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -798,7 +797,7 @@ async def delete_application( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Connect Application @@ -824,8 +823,8 @@ async def list_application_client_secrets( self, id: str, *, - request_options: Optional[RequestOptions] = None, - ) -> List[ApplicationCredentialsListItem]: + request_options: RequestOptions | None = None, + ) -> list[ApplicationCredentialsListItem]: """List Client Secrets for a Connect Application List all client secrets associated with a Connect Application. @@ -849,7 +848,7 @@ async def list_application_client_secrets( request_options=request_options, ) return [ - ApplicationCredentialsListItem.from_dict(cast(Dict[str, Any], item)) + ApplicationCredentialsListItem.from_dict(cast(dict[str, Any], item)) for item in raw ] @@ -857,7 +856,7 @@ async def create_application_client_secret( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> NewConnectApplicationSecret: """Create a new client secret for a Connect Application @@ -877,7 +876,7 @@ async def create_application_client_secret( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} return await self._client.request( method="post", path=("connect", "applications", str(id), "client_secrets"), @@ -890,7 +889,7 @@ async def delete_client_secret( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Client Secret diff --git a/src/workos/connect/models/application_credentials_list_item.py b/src/workos/connect/models/application_credentials_list_item.py index f3569fd2..d1e8244d 100644 --- a/src/workos/connect/models/application_credentials_list_item.py +++ b/src/workos/connect/models/application_credentials_list_item.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -19,7 +19,7 @@ class ApplicationCredentialsListItem: """The unique ID of the client secret.""" secret_hint: str """A hint showing the last few characters of the secret value.""" - last_used_at: Optional[datetime] + last_used_at: datetime | None """The timestamp when the client secret was last used, or null if never used.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -27,7 +27,7 @@ class ApplicationCredentialsListItem: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApplicationCredentialsListItem": + def from_dict(cls, data: dict[str, Any]) -> ApplicationCredentialsListItem: """Deserialize from a dictionary.""" try: return cls( @@ -43,9 +43,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApplicationCredentialsListItem": except (KeyError, ValueError) as e: _raise_deserialize_error("ApplicationCredentialsListItem", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["secret_hint"] = self.secret_hint diff --git a/src/workos/connect/models/applications_registration_types.py b/src/workos/connect/models/applications_registration_types.py index b7f239e0..70349e89 100644 --- a/src/workos/connect/models/applications_registration_types.py +++ b/src/workos/connect/models/applications_registration_types.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class ApplicationsRegistrationTypes(str, Enum): AUTHENTICATED = "authenticated" @classmethod - def _missing_(cls, value: object) -> Optional["ApplicationsRegistrationTypes"]: + def _missing_(cls, value: object) -> ApplicationsRegistrationTypes | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/connect/models/external_auth_complete_response.py b/src/workos/connect/models/external_auth_complete_response.py index ec3ce6c2..86dd6173 100644 --- a/src/workos/connect/models/external_auth_complete_response.py +++ b/src/workos/connect/models/external_auth_complete_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class ExternalAuthCompleteResponse: """URI to redirect the user back to AuthKit to complete the OAuth flow.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ExternalAuthCompleteResponse": + def from_dict(cls, data: dict[str, Any]) -> ExternalAuthCompleteResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "ExternalAuthCompleteResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("ExternalAuthCompleteResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["redirect_uri"] = self.redirect_uri return result diff --git a/src/workos/connect/models/new_connect_application_secret.py b/src/workos/connect/models/new_connect_application_secret.py index 4efe0840..1d1e386c 100644 --- a/src/workos/connect/models/new_connect_application_secret.py +++ b/src/workos/connect/models/new_connect_application_secret.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -19,7 +19,7 @@ class NewConnectApplicationSecret: """The unique ID of the client secret.""" secret_hint: str """A hint showing the last few characters of the secret value.""" - last_used_at: Optional[datetime] + last_used_at: datetime | None """The timestamp when the client secret was last used, or null if never used.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -29,7 +29,7 @@ class NewConnectApplicationSecret: """The plaintext secret value. Only returned at creation time and cannot be retrieved later.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "NewConnectApplicationSecret": + def from_dict(cls, data: dict[str, Any]) -> NewConnectApplicationSecret: """Deserialize from a dictionary.""" try: return cls( @@ -46,9 +46,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "NewConnectApplicationSecret": except (KeyError, ValueError) as e: _raise_deserialize_error("NewConnectApplicationSecret", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["secret_hint"] = self.secret_hint diff --git a/src/workos/connect/models/redirect_uri_input.py b/src/workos/connect/models/redirect_uri_input.py index aa67623f..07895fe4 100644 --- a/src/workos/connect/models/redirect_uri_input.py +++ b/src/workos/connect/models/redirect_uri_input.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,11 +14,11 @@ class RedirectUriInput: uri: str """The redirect URI.""" - default: Optional[bool] = None + default: bool | None = None """Whether this is the default redirect URI.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RedirectUriInput": + def from_dict(cls, data: dict[str, Any]) -> RedirectUriInput: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RedirectUriInput": except (KeyError, ValueError) as e: _raise_deserialize_error("RedirectUriInput", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["uri"] = self.uri if self.default is not None: result["default"] = self.default diff --git a/src/workos/connect/models/user_consent_option.py b/src/workos/connect/models/user_consent_option.py index dde760f0..c3b1b812 100644 --- a/src/workos/connect/models/user_consent_option.py +++ b/src/workos/connect/models/user_consent_option.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Literal +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .user_consent_option_choice import UserConsentOptionChoice @@ -20,11 +20,11 @@ class UserConsentOption: """The type of consent option.""" label: str """A human-readable label for this consent option.""" - choices: List["UserConsentOptionChoice"] + choices: list[UserConsentOptionChoice] """The available choices for this consent option.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserConsentOption": + def from_dict(cls, data: dict[str, Any]) -> UserConsentOption: """Deserialize from a dictionary.""" try: return cls( @@ -32,16 +32,16 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserConsentOption": type=data.get("type", "enum"), label=data["label"], choices=[ - UserConsentOptionChoice.from_dict(cast(Dict[str, Any], item)) + UserConsentOptionChoice.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["choices"]) ], ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserConsentOption", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["claim"] = self.claim result["type"] = self.type result["label"] = self.label diff --git a/src/workos/connect/models/user_consent_option_choice.py b/src/workos/connect/models/user_consent_option_choice.py index 0639bb65..df82dfef 100644 --- a/src/workos/connect/models/user_consent_option_choice.py +++ b/src/workos/connect/models/user_consent_option_choice.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,13 +12,13 @@ class UserConsentOptionChoice: """User Consent Option Choice model.""" - value: Optional[str] = None + value: str | None = None """The value of this choice.""" - label: Optional[str] = None + label: str | None = None """A human-readable label for this choice.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserConsentOptionChoice": + def from_dict(cls, data: dict[str, Any]) -> UserConsentOptionChoice: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserConsentOptionChoice": except (KeyError, ValueError) as e: _raise_deserialize_error("UserConsentOptionChoice", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.value is not None: result["value"] = self.value if self.label is not None: diff --git a/src/workos/connect/models/user_management_login_request.py b/src/workos/connect/models/user_management_login_request.py index c1ebac9a..067ff9bc 100644 --- a/src/workos/connect/models/user_management_login_request.py +++ b/src/workos/connect/models/user_management_login_request.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .user_consent_option import UserConsentOption @@ -17,20 +17,20 @@ class UserManagementLoginRequest: external_auth_id: str """Identifier provided when AuthKit redirected to your login page.""" - user: "UserObject" + user: UserObject """The user to create or update in AuthKit.""" - user_consent_options: Optional[List["UserConsentOption"]] = None + user_consent_options: list[UserConsentOption] | None = None """Array of [User Consent Options](https://workos.com/docs/reference/workos-connect/standalone/user-consent-options) to store with the session.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserManagementLoginRequest": + def from_dict(cls, data: dict[str, Any]) -> UserManagementLoginRequest: """Deserialize from a dictionary.""" try: return cls( external_auth_id=data["external_auth_id"], - user=UserObject.from_dict(cast(Dict[str, Any], data["user"])), + user=UserObject.from_dict(cast(dict[str, Any], data["user"])), user_consent_options=[ - UserConsentOption.from_dict(cast(Dict[str, Any], item)) + UserConsentOption.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_user_consent_options) ] if (_v_user_consent_options := data.get("user_consent_options")) @@ -40,9 +40,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserManagementLoginRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("UserManagementLoginRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["external_auth_id"] = self.external_auth_id result["user"] = self.user.to_dict() if self.user_consent_options is not None: diff --git a/src/workos/connect/models/user_object.py b/src/workos/connect/models/user_object.py index 14c3cf67..f2d0c6f5 100644 --- a/src/workos/connect/models/user_object.py +++ b/src/workos/connect/models/user_object.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,17 +16,17 @@ class UserObject: """Your application's user identifier, which will be stored as an [`external_id`](https://workos.com/docs/authkit/metadata/external-identifiers). Used for upserting and deduplication.""" email: str """The user's email address.""" - first_name: Optional[str] = None + first_name: str | None = None """The user's first name.""" - last_name: Optional[str] = None + last_name: str | None = None """The user's last name.""" - name: Optional[str] = None + name: str | None = None """The user's full name.""" - metadata: Optional[Dict[str, str]] = None + metadata: dict[str, str] | None = None """A set of key-value pairs to attach to the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserObject": + def from_dict(cls, data: dict[str, Any]) -> UserObject: """Deserialize from a dictionary.""" try: return cls( @@ -39,9 +40,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserObject": except (KeyError, ValueError) as e: _raise_deserialize_error("UserObject", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["email"] = self.email if self.first_name is not None: diff --git a/src/workos/organizations/models/audit_log_configuration.py b/src/workos/organizations/models/audit_log_configuration.py index cc4da171..eb832b48 100644 --- a/src/workos/organizations/models/audit_log_configuration.py +++ b/src/workos/organizations/models/audit_log_configuration.py @@ -4,15 +4,15 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error +from typing import Any, cast -from .audit_log_configuration_log_stream import AuditLogConfigurationLogStream +from workos._types import _raise_deserialize_error from workos.common.models.audit_log_configuration_state import ( AuditLogConfigurationState, ) +from .audit_log_configuration_log_stream import AuditLogConfigurationLogStream + @dataclass(slots=True) class AuditLogConfiguration: @@ -22,13 +22,13 @@ class AuditLogConfiguration: """Unique identifier of the Organization.""" retention_period_in_days: int """The number of days Audit Log events will be retained before being permanently deleted.""" - state: "AuditLogConfigurationState" + state: AuditLogConfigurationState """The current state of the audit log configuration for the organization.""" - log_stream: Optional["AuditLogConfigurationLogStream"] = None + log_stream: AuditLogConfigurationLogStream | None = None """The Audit Log Stream currently configured for the organization, if any.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogConfiguration": + def from_dict(cls, data: dict[str, Any]) -> AuditLogConfiguration: """Deserialize from a dictionary.""" try: return cls( @@ -36,7 +36,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogConfiguration": retention_period_in_days=data["retention_period_in_days"], state=AuditLogConfigurationState(data["state"]), log_stream=AuditLogConfigurationLogStream.from_dict( - cast(Dict[str, Any], _v_log_stream) + cast(dict[str, Any], _v_log_stream) ) if (_v_log_stream := data.get("log_stream")) is not None else None, @@ -44,9 +44,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogConfiguration": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogConfiguration", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_id"] = self.organization_id result["retention_period_in_days"] = self.retention_period_in_days result["state"] = ( diff --git a/src/workos/organizations/models/audit_log_configuration_log_stream.py b/src/workos/organizations/models/audit_log_configuration_log_stream.py index 37a3208a..3357560e 100644 --- a/src/workos/organizations/models/audit_log_configuration_log_stream.py +++ b/src/workos/organizations/models/audit_log_configuration_log_stream.py @@ -5,9 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.audit_log_configuration_log_stream_state import ( AuditLogConfigurationLogStreamState, ) @@ -22,17 +22,17 @@ class AuditLogConfigurationLogStream: id: str """Unique identifier of the Audit Log Stream.""" - type: "AuditLogConfigurationLogStreamType" + type: AuditLogConfigurationLogStreamType """The type of the Audit Log Stream destination.""" - state: "AuditLogConfigurationLogStreamState" + state: AuditLogConfigurationLogStreamState """The current state of the Audit Log Stream.""" - last_synced_at: Optional[str] + last_synced_at: str | None """ISO-8601 timestamp of when the last event was successfully synced, or null if no events have been synced.""" created_at: datetime """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogConfigurationLogStream": + def from_dict(cls, data: dict[str, Any]) -> AuditLogConfigurationLogStream: """Deserialize from a dictionary.""" try: return cls( @@ -45,9 +45,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogConfigurationLogStream": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogConfigurationLogStream", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["type"] = self.type.value if isinstance(self.type, Enum) else self.type result["state"] = ( diff --git a/src/workos/organizations/models/organization_authorized_connect_application_list_data.py b/src/workos/organizations/models/organization_authorized_connect_application_list_data.py index 5bfeef20..6a81454a 100644 --- a/src/workos/organizations/models/organization_authorized_connect_application_list_data.py +++ b/src/workos/organizations/models/organization_authorized_connect_application_list_data.py @@ -3,10 +3,9 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error +from typing import Any, Literal, cast +from workos._types import _raise_deserialize_error from workos.common.models.connect_application import ( ConnectApplication, ConnectApplicationVariant, @@ -21,18 +20,18 @@ class OrganizationAuthorizedConnectApplicationListData: """Distinguishes the authorized connect application object.""" id: str """The unique ID of the authorized connect application.""" - granted_scopes: List[str] + granted_scopes: list[str] """The scopes granted by the user to the application.""" - application: "ConnectApplicationVariant" + application: ConnectApplicationVariant user_id: str """The ID of the user who authorized the application.""" - oauth_resource: Optional[str] = None + oauth_resource: str | None = None """The OAuth resource associated with the authorized connect application, if one was requested.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "OrganizationAuthorizedConnectApplicationListData": + cls, data: dict[str, Any] + ) -> OrganizationAuthorizedConnectApplicationListData: """Deserialize from a dictionary.""" try: return cls( @@ -40,7 +39,7 @@ def from_dict( id=data["id"], granted_scopes=data["granted_scopes"], application=ConnectApplication.from_dict( - cast(Dict[str, Any], data["application"]) + cast(dict[str, Any], data["application"]) ), user_id=data["user_id"], oauth_resource=data.get("oauth_resource"), @@ -50,9 +49,9 @@ def from_dict( "OrganizationAuthorizedConnectApplicationListData", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["granted_scopes"] = self.granted_scopes diff --git a/src/workos/pipes/models/data_integrations_list_response_data_connected_account.py b/src/workos/pipes/models/data_integrations_list_response_data_connected_account.py index 3df37718..51acd981 100644 --- a/src/workos/pipes/models/data_integrations_list_response_data_connected_account.py +++ b/src/workos/pipes/models/data_integrations_list_response_data_connected_account.py @@ -44,6 +44,12 @@ class DataIntegrationsListResponseDataConnectedAccount: """The authentication method used for this connection (`oauth`, `api_key`, or `client_credentials`). Defaults to `oauth` if absent.""" api_key_last_4: str | None = None """The last four characters of the API key, or `null` for OAuth connections.""" + client_id: str | None = None + """The client ID supplied for this connection. Only present when `auth_method` is `client_credentials`.""" + client_secret_last_4: str | None = None + """The last four characters of the client secret supplied for this connection, or `null` when it can't be read. Only present when `auth_method` is `client_credentials`.""" + config: dict[str, str] | None = None + """The connection-level configuration values stored for this connection — the fields the provider declares at `installation` scope, excluding any it declares as secret. Only present when `auth_method` is `client_credentials`.""" userland_user_id: str | None = None """Use `user_id` instead. @@ -72,6 +78,9 @@ def from_dict( if (_v_auth_method := data.get("auth_method")) is not None else None, api_key_last_4=data.get("api_key_last_4"), + client_id=data.get("client_id"), + client_secret_last_4=data.get("client_secret_last_4"), + config=data.get("config"), userland_user_id=data.get("userlandUserId"), ) except (KeyError, ValueError) as e: @@ -108,6 +117,16 @@ def to_dict(self) -> dict[str, Any]: result["api_key_last_4"] = self.api_key_last_4 else: result["api_key_last_4"] = None + if self.client_id is not None: + result["client_id"] = self.client_id + else: + result["client_id"] = None + if self.client_secret_last_4 is not None: + result["client_secret_last_4"] = self.client_secret_last_4 + else: + result["client_secret_last_4"] = None + if self.config is not None: + result["config"] = self.config if self.userland_user_id is not None: result["userlandUserId"] = self.userland_user_id else: diff --git a/tests/fixtures/connected_account.json b/tests/fixtures/connected_account.json index 4417fc9b..a863395d 100644 --- a/tests/fixtures/connected_account.json +++ b/tests/fixtures/connected_account.json @@ -9,6 +9,11 @@ ], "auth_method": "oauth", "api_key_last_4": null, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": { + "instance_url": "https://example.my.salesforce.com" + }, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z" diff --git a/tests/fixtures/data_integrations_list_response_data_connected_account.json b/tests/fixtures/data_integrations_list_response_data_connected_account.json index 0710c967..467bb97e 100644 --- a/tests/fixtures/data_integrations_list_response_data_connected_account.json +++ b/tests/fixtures/data_integrations_list_response_data_connected_account.json @@ -9,6 +9,11 @@ ], "auth_method": "oauth", "api_key_last_4": null, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": { + "instance_url": "https://example.my.salesforce.com" + }, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", diff --git a/tests/test_connect.py b/tests/test_connect.py index a8279e6a..8ce56d8b 100644 --- a/tests/test_connect.py +++ b/tests/test_connect.py @@ -3,17 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import ConnectApplicationOAuth, PaginationOrder -from workos.connect.models import ( - ApplicationCredentialsListItem, - ExternalAuthCompleteResponse, - NewConnectApplicationSecret, - UserObject, -) -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -22,6 +14,17 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import ( + ConnectApplicationOAuth, + PaginationOrder, +) +from workos.connect.models import ( + ApplicationCredentialsListItem, + ExternalAuthCompleteResponse, + NewConnectApplicationSecret, + UserObject, +) class TestConnect: From c2793ba4a83807c47308ed2e7dc61999e1a0f767 Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 3/7] feat(sso): Add SSO API surface --- .../models/authentication_sso_failed.py | 21 +++++++-------- .../models/authentication_sso_failed_data.py | 26 +++++++++---------- .../authentication_sso_failed_data_error.py | 1 + .../authentication_sso_failed_data_sso.py | 15 ++++++----- .../models/authentication_sso_started.py | 21 +++++++-------- .../models/authentication_sso_started_data.py | 22 ++++++++-------- .../models/authentication_sso_succeeded.py | 21 +++++++-------- .../authentication_sso_succeeded_data.py | 20 +++++++------- .../models/authentication_sso_timed_out.py | 21 +++++++-------- .../authentication_sso_timed_out_data.py | 26 +++++++++---------- ...authentication_sso_timed_out_data_error.py | 1 + ...nnection_activated_data_connection_type.py | 9 ++++--- ...ection_deactivated_data_connection_type.py | 1 + ...connection_deleted_data_connection_type.py | 1 + src/workos/common/models/connection_type.py | 4 +++ .../sso/models/connections_connection_type.py | 4 +++ 16 files changed, 112 insertions(+), 102 deletions(-) diff --git a/src/workos/common/models/authentication_sso_failed.py b/src/workos/common/models/authentication_sso_failed.py index 5f988302..bc187c37 100644 --- a/src/workos/common/models/authentication_sso_failed.py +++ b/src/workos/common/models/authentication_sso_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_sso_failed_data import AuthenticationSSOFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationSSOFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.sso_failed"] - data: "AuthenticationSSOFailedData" + data: AuthenticationSSOFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailed": id=data["id"], event=data.get("event", "authentication.sso_failed"), data=AuthenticationSSOFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_sso_failed_data.py b/src/workos/common/models/authentication_sso_failed_data.py index 02952d5f..fea96b2a 100644 --- a/src/workos/common/models/authentication_sso_failed_data.py +++ b/src/workos/common/models/authentication_sso_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_sso_failed_data_error import AuthenticationSSOFailedDataError @@ -17,21 +17,21 @@ class AuthenticationSSOFailedData: type: Literal["sso"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - sso: "AuthenticationSSOFailedDataSSO" + sso: AuthenticationSSOFailedDataSSO """SSO connection details.""" - error: "AuthenticationSSOFailedDataError" + error: AuthenticationSSOFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -42,18 +42,18 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailedData": user_id=data["user_id"], email=data["email"], sso=AuthenticationSSOFailedDataSSO.from_dict( - cast(Dict[str, Any], data["sso"]) + cast(dict[str, Any], data["sso"]) ), error=AuthenticationSSOFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_sso_failed_data_error.py b/src/workos/common/models/authentication_sso_failed_data_error.py index 965ebbe6..1d8b6cc9 100644 --- a/src/workos/common/models/authentication_sso_failed_data_error.py +++ b/src/workos/common/models/authentication_sso_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_sso_failed_data_sso.py b/src/workos/common/models/authentication_sso_failed_data_sso.py index 493d4dcc..39f0feed 100644 --- a/src/workos/common/models/authentication_sso_failed_data_sso.py +++ b/src/workos/common/models/authentication_sso_failed_data_sso.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,15 +12,15 @@ class AuthenticationSSOFailedDataSSO: """SSO connection details.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the organization.""" - connection_id: Optional[str] + connection_id: str | None """The ID of the SSO connection.""" - session_id: Optional[str] + session_id: str | None """The ID of the SSO session.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailedDataSSO": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOFailedDataSSO: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOFailedDataSSO": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOFailedDataSSO", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.organization_id is not None: result["organization_id"] = self.organization_id else: diff --git a/src/workos/common/models/authentication_sso_started.py b/src/workos/common/models/authentication_sso_started.py index 0871ab16..a9b3dd89 100644 --- a/src/workos/common/models/authentication_sso_started.py +++ b/src/workos/common/models/authentication_sso_started.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_sso_started_data import AuthenticationSSOStartedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationSSOStarted: id: str """Unique identifier for the event.""" event: Literal["authentication.sso_started"] - data: "AuthenticationSSOStartedData" + data: AuthenticationSSOStartedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOStarted": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOStarted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOStarted": id=data["id"], event=data.get("event", "authentication.sso_started"), data=AuthenticationSSOStartedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOStarted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_sso_started_data.py b/src/workos/common/models/authentication_sso_started_data.py index 912e0ff8..bb254250 100644 --- a/src/workos/common/models/authentication_sso_started_data.py +++ b/src/workos/common/models/authentication_sso_started_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_sso_started_data_sso import AuthenticationSSOStartedDataSSO @@ -16,19 +16,19 @@ class AuthenticationSSOStartedData: type: Literal["sso"] status: Literal["started"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - sso: "AuthenticationSSOStartedDataSSO" + sso: AuthenticationSSOStartedDataSSO """SSO connection details.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOStartedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOStartedData: """Deserialize from a dictionary.""" try: return cls( @@ -39,15 +39,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOStartedData": user_id=data["user_id"], email=data["email"], sso=AuthenticationSSOStartedDataSSO.from_dict( - cast(Dict[str, Any], data["sso"]) + cast(dict[str, Any], data["sso"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOStartedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_sso_succeeded.py b/src/workos/common/models/authentication_sso_succeeded.py index d7e574c4..e2507345 100644 --- a/src/workos/common/models/authentication_sso_succeeded.py +++ b/src/workos/common/models/authentication_sso_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_sso_succeeded_data import AuthenticationSSOSucceededData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationSSOSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.sso_succeeded"] - data: "AuthenticationSSOSucceededData" + data: AuthenticationSSOSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOSucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOSucceeded": id=data["id"], event=data.get("event", "authentication.sso_succeeded"), data=AuthenticationSSOSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_sso_succeeded_data.py b/src/workos/common/models/authentication_sso_succeeded_data.py index 1f5a9dce..dc5d43d5 100644 --- a/src/workos/common/models/authentication_sso_succeeded_data.py +++ b/src/workos/common/models/authentication_sso_succeeded_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_sso_succeeded_data_sso import AuthenticationSSOSucceededDataSSO @@ -16,19 +16,19 @@ class AuthenticationSSOSucceededData: type: Literal["sso"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" email: str """The email address of the user.""" - sso: "AuthenticationSSOSucceededDataSSO" + sso: AuthenticationSSOSucceededDataSSO """SSO connection details.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOSucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -39,15 +39,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOSucceededData": user_id=data["user_id"], email=data["email"], sso=AuthenticationSSOSucceededDataSSO.from_dict( - cast(Dict[str, Any], data["sso"]) + cast(dict[str, Any], data["sso"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_sso_timed_out.py b/src/workos/common/models/authentication_sso_timed_out.py index 49aab5e9..75193cd3 100644 --- a/src/workos/common/models/authentication_sso_timed_out.py +++ b/src/workos/common/models/authentication_sso_timed_out.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_sso_timed_out_data import AuthenticationSSOTimedOutData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationSSOTimedOut: id: str """Unique identifier for the event.""" event: Literal["authentication.sso_timed_out"] - data: "AuthenticationSSOTimedOutData" + data: AuthenticationSSOTimedOutData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOTimedOut": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOTimedOut: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOTimedOut": id=data["id"], event=data.get("event", "authentication.sso_timed_out"), data=AuthenticationSSOTimedOutData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOTimedOut", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_sso_timed_out_data.py b/src/workos/common/models/authentication_sso_timed_out_data.py index 4202c516..02323423 100644 --- a/src/workos/common/models/authentication_sso_timed_out_data.py +++ b/src/workos/common/models/authentication_sso_timed_out_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_sso_timed_out_data_error import AuthenticationSSOTimedOutDataError @@ -17,21 +17,21 @@ class AuthenticationSSOTimedOutData: type: Literal["sso"] status: Literal["timed_out"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - sso: "AuthenticationSSOTimedOutDataSSO" + sso: AuthenticationSSOTimedOutDataSSO """SSO connection details.""" - error: "AuthenticationSSOTimedOutDataError" + error: AuthenticationSSOTimedOutDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOTimedOutData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationSSOTimedOutData: """Deserialize from a dictionary.""" try: return cls( @@ -42,18 +42,18 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationSSOTimedOutData": user_id=data["user_id"], email=data["email"], sso=AuthenticationSSOTimedOutDataSSO.from_dict( - cast(Dict[str, Any], data["sso"]) + cast(dict[str, Any], data["sso"]) ), error=AuthenticationSSOTimedOutDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationSSOTimedOutData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_sso_timed_out_data_error.py b/src/workos/common/models/authentication_sso_timed_out_data_error.py index ec3190ee..636be09b 100644 --- a/src/workos/common/models/authentication_sso_timed_out_data_error.py +++ b/src/workos/common/models/authentication_sso_timed_out_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/connection_activated_data_connection_type.py b/src/workos/common/models/connection_activated_data_connection_type.py index e1a03153..861d23f7 100644 --- a/src/workos/common/models/connection_activated_data_connection_type.py +++ b/src/workos/common/models/connection_activated_data_connection_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -34,6 +33,8 @@ class ConnectionActivatedDataConnectionType(str, Enum): GOOGLE_OAUTH = "GoogleOAuth" GOOGLE_OIDC = "GoogleOIDC" GOOGLE_SAML = "GoogleSAML" + GROK_OAUTH = "GrokOAuth" + XO_AUTH = "XOAuth" INTUIT_OAUTH = "IntuitOAuth" JUMP_CLOUD_SAML = "JumpCloudSAML" KEYCLOAK_SAML = "KeycloakSAML" @@ -64,9 +65,7 @@ class ConnectionActivatedDataConnectionType(str, Enum): XERO_OAUTH = "XeroOAuth" @classmethod - def _missing_( - cls, value: object - ) -> Optional["ConnectionActivatedDataConnectionType"]: + def _missing_(cls, value: object) -> ConnectionActivatedDataConnectionType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) @@ -98,6 +97,8 @@ def _missing_( "GoogleOAuth", "GoogleOIDC", "GoogleSAML", + "GrokOAuth", + "XOAuth", "IntuitOAuth", "JumpCloudSAML", "KeycloakSAML", diff --git a/src/workos/common/models/connection_deactivated_data_connection_type.py b/src/workos/common/models/connection_deactivated_data_connection_type.py index 93b70864..44fa3723 100644 --- a/src/workos/common/models/connection_deactivated_data_connection_type.py +++ b/src/workos/common/models/connection_deactivated_data_connection_type.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .connection_activated_data_connection_type import ( ConnectionActivatedDataConnectionType, ) diff --git a/src/workos/common/models/connection_deleted_data_connection_type.py b/src/workos/common/models/connection_deleted_data_connection_type.py index 0a807ad6..bd597267 100644 --- a/src/workos/common/models/connection_deleted_data_connection_type.py +++ b/src/workos/common/models/connection_deleted_data_connection_type.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .connection_activated_data_connection_type import ( ConnectionActivatedDataConnectionType, ) diff --git a/src/workos/common/models/connection_type.py b/src/workos/common/models/connection_type.py index 31b74d2b..683aa706 100644 --- a/src/workos/common/models/connection_type.py +++ b/src/workos/common/models/connection_type.py @@ -34,6 +34,8 @@ class ConnectionType(str, Enum): GOOGLE_OAUTH = "GoogleOAuth" GOOGLE_OIDC = "GoogleOIDC" GOOGLE_SAML = "GoogleSAML" + GROK_OAUTH = "GrokOAuth" + XO_AUTH = "XOAuth" INTUIT_OAUTH = "IntuitOAuth" JUMP_CLOUD_SAML = "JumpCloudSAML" KEYCLOAK_SAML = "KeycloakSAML" @@ -97,6 +99,8 @@ def _missing_(cls, value: object) -> ConnectionType | None: "GoogleOAuth", "GoogleOIDC", "GoogleSAML", + "GrokOAuth", + "XOAuth", "IntuitOAuth", "JumpCloudSAML", "KeycloakSAML", diff --git a/src/workos/sso/models/connections_connection_type.py b/src/workos/sso/models/connections_connection_type.py index 414ea61c..27c252b7 100644 --- a/src/workos/sso/models/connections_connection_type.py +++ b/src/workos/sso/models/connections_connection_type.py @@ -32,6 +32,8 @@ class ConnectionsConnectionType(str, Enum): GOOGLE_OAUTH = "GoogleOAuth" GOOGLE_OIDC = "GoogleOIDC" GOOGLE_SAML = "GoogleSAML" + GROK_OAUTH = "GrokOAuth" + XO_AUTH = "XOAuth" INTUIT_OAUTH = "IntuitOAuth" JUMP_CLOUD_SAML = "JumpCloudSAML" KEYCLOAK_SAML = "KeycloakSAML" @@ -92,6 +94,8 @@ def _missing_(cls, value: object) -> ConnectionsConnectionType | None: "GoogleOAuth", "GoogleOIDC", "GoogleSAML", + "GrokOAuth", + "XOAuth", "IntuitOAuth", "JumpCloudSAML", "KeycloakSAML", From ba2eaf31c443723ad8e43f5bee3540d78493123e Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 4/7] feat(user_management): Update user management API surface --- ...enticate_response_authentication_method.py | 4 +++ .../create_user_password_salt_position.py | 27 +++++++++++++++++++ .../update_user_password_salt_position.py | 8 ++++++ .../user_identities_get_item_provider.py | 4 +++ .../create_user_organization_membership.py | 13 ++++----- .../update_user_organization_membership.py | 13 ++++----- .../user_management/models/create_user.py | 19 ++++++++++++- ...lenge_code_session_authenticate_request.py | 18 +++++++------ .../user_management/models/update_user.py | 19 ++++++++++++- tests/fixtures/create_user.json | 3 ++- tests/fixtures/update_user.json | 3 ++- 11 files changed, 107 insertions(+), 24 deletions(-) create mode 100644 src/workos/common/models/create_user_password_salt_position.py create mode 100644 src/workos/common/models/update_user_password_salt_position.py diff --git a/src/workos/common/models/authenticate_response_authentication_method.py b/src/workos/common/models/authenticate_response_authentication_method.py index 720cb48d..53d66a1f 100644 --- a/src/workos/common/models/authenticate_response_authentication_method.py +++ b/src/workos/common/models/authenticate_response_authentication_method.py @@ -22,6 +22,8 @@ class AuthenticateResponseAuthenticationMethod(str, Enum): GIT_HUB_OAUTH = "GitHubOAuth" GIT_LAB_OAUTH = "GitLabOAuth" GOOGLE_OAUTH = "GoogleOAuth" + GROK_OAUTH = "GrokOAuth" + XO_AUTH = "XOAuth" INTUIT_OAUTH = "IntuitOAuth" LINKED_IN_OAUTH = "LinkedInOAuth" MICROSOFT_OAUTH = "MicrosoftOAuth" @@ -58,6 +60,8 @@ def _missing_( "GitHubOAuth", "GitLabOAuth", "GoogleOAuth", + "GrokOAuth", + "XOAuth", "IntuitOAuth", "LinkedInOAuth", "MicrosoftOAuth", diff --git a/src/workos/common/models/create_user_password_salt_position.py b/src/workos/common/models/create_user_password_salt_position.py new file mode 100644 index 00000000..d39b5983 --- /dev/null +++ b/src/workos/common/models/create_user_password_salt_position.py @@ -0,0 +1,27 @@ +# This file is auto-generated by oagen. Do not edit. + +"""Enumeration of create user password salt position values.""" + +from __future__ import annotations + +from enum import Enum +from typing import Literal, TypeAlias + + +class CreateUserPasswordSaltPosition(str, Enum): + """Known values for CreateUserPasswordSaltPosition.""" + + PREFIX = "prefix" + SUFFIX = "suffix" + + @classmethod + def _missing_(cls, value: object) -> CreateUserPasswordSaltPosition | None: + if not isinstance(value, str): + return None + unknown = str.__new__(cls, value) + unknown._name_ = value.upper() + unknown._value_ = value + return unknown + + +CreateUserPasswordSaltPositionLiteral: TypeAlias = Literal["prefix", "suffix"] diff --git a/src/workos/common/models/update_user_password_salt_position.py b/src/workos/common/models/update_user_password_salt_position.py new file mode 100644 index 00000000..014a1ab9 --- /dev/null +++ b/src/workos/common/models/update_user_password_salt_position.py @@ -0,0 +1,8 @@ +# This file is auto-generated by oagen. Do not edit. + +from typing import TypeAlias + +from .create_user_password_salt_position import CreateUserPasswordSaltPosition + +UpdateUserPasswordSaltPosition: TypeAlias = CreateUserPasswordSaltPosition +__all__ = ["UpdateUserPasswordSaltPosition"] diff --git a/src/workos/common/models/user_identities_get_item_provider.py b/src/workos/common/models/user_identities_get_item_provider.py index 7c38a9ff..1e512d8f 100644 --- a/src/workos/common/models/user_identities_get_item_provider.py +++ b/src/workos/common/models/user_identities_get_item_provider.py @@ -17,6 +17,8 @@ class UserIdentitiesGetItemProvider(str, Enum): GITHUB_OAUTH = "GithubOAuth" GIT_LAB_OAUTH = "GitLabOAuth" GOOGLE_OAUTH = "GoogleOAuth" + GROK_OAUTH = "GrokOAuth" + XO_AUTH = "XOAuth" INTUIT_OAUTH = "IntuitOAuth" LINKED_IN_OAUTH = "LinkedInOAuth" MICROSOFT_OAUTH = "MicrosoftOAuth" @@ -43,6 +45,8 @@ def _missing_(cls, value: object) -> UserIdentitiesGetItemProvider | None: "GithubOAuth", "GitLabOAuth", "GoogleOAuth", + "GrokOAuth", + "XOAuth", "IntuitOAuth", "LinkedInOAuth", "MicrosoftOAuth", diff --git a/src/workos/organization_membership/models/create_user_organization_membership.py b/src/workos/organization_membership/models/create_user_organization_membership.py index 60e0fad3..a379abec 100644 --- a/src/workos/organization_membership/models/create_user_organization_membership.py +++ b/src/workos/organization_membership/models/create_user_organization_membership.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, List, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,13 +16,13 @@ class CreateUserOrganizationMembership: """The ID of the [user](https://workos.com/docs/reference/authkit/user).""" organization_id: str """The ID of the [organization](https://workos.com/docs/reference/organization) which the user belongs to.""" - role_slug: Optional[str] = None + role_slug: str | None = None """A single role identifier. Defaults to `member` or the explicit default role. Mutually exclusive with `role_slugs`.""" - role_slugs: Optional[List[str]] = None + role_slugs: list[str] | None = None """An array of role identifiers. Limited to one role when Multiple Roles is disabled. Mutually exclusive with `role_slug`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateUserOrganizationMembership": + def from_dict(cls, data: dict[str, Any]) -> CreateUserOrganizationMembership: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateUserOrganizationMembership": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateUserOrganizationMembership", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["user_id"] = self.user_id result["organization_id"] = self.organization_id if self.role_slug is not None: diff --git a/src/workos/organization_membership/models/update_user_organization_membership.py b/src/workos/organization_membership/models/update_user_organization_membership.py index cb152d29..17fdf3f2 100644 --- a/src/workos/organization_membership/models/update_user_organization_membership.py +++ b/src/workos/organization_membership/models/update_user_organization_membership.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, List, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,13 +12,13 @@ class UpdateUserOrganizationMembership: """Update User Organization Membership model.""" - role_slug: Optional[str] = None + role_slug: str | None = None """A single role identifier. Defaults to `member` or the explicit default role. Mutually exclusive with `role_slugs`.""" - role_slugs: Optional[List[str]] = None + role_slugs: list[str] | None = None """An array of role identifiers. Limited to one role when Multiple Roles is disabled. Mutually exclusive with `role_slug`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateUserOrganizationMembership": + def from_dict(cls, data: dict[str, Any]) -> UpdateUserOrganizationMembership: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateUserOrganizationMembership": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateUserOrganizationMembership", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.role_slug is not None: result["role_slug"] = self.role_slug if self.role_slugs is not None: diff --git a/src/workos/user_management/models/create_user.py b/src/workos/user_management/models/create_user.py index 2d12323a..064704df 100644 --- a/src/workos/user_management/models/create_user.py +++ b/src/workos/user_management/models/create_user.py @@ -10,6 +10,9 @@ from workos.common.models.create_user_password_hash_type import ( CreateUserPasswordHashType, ) +from workos.common.models.create_user_password_salt_position import ( + CreateUserPasswordSaltPosition, +) @dataclass(slots=True) @@ -37,11 +40,13 @@ class CreateUser: signals_id: str | None = None """An optional Radar signals ID to correlate client-side signals with this request.""" password: str | None = None - """The password to set for the user. Mutually exclusive with `password_hash` and `password_hash_type`.""" + """The password to set for the user. Mutually exclusive with `password_hash`, `password_hash_type`, and `password_salt_position`.""" password_hash: str | None = None """The hashed password to set for the user. Required with `password_hash_type`. Mutually exclusive with `password`.""" password_hash_type: CreateUserPasswordHashType | None = None """The algorithm originally used to hash the password, used when providing a `password_hash`. Required with `password_hash`. Mutually exclusive with `password`.""" + password_salt_position: CreateUserPasswordSaltPosition | None = None + """The position of the salt relative to the password when the `password_hash` digest was computed: `prefix` for `hash(salt + password)` or `suffix` for `hash(password + salt)`. Only supported with the `ssha256` hash type and only valid when a `password_hash` is provided. Defaults to `suffix`. Mutually exclusive with `password`.""" @classmethod def from_dict(cls, data: dict[str, Any]) -> CreateUser: @@ -63,6 +68,12 @@ def from_dict(cls, data: dict[str, Any]) -> CreateUser: password_hash_type=CreateUserPasswordHashType(_v_password_hash_type) if (_v_password_hash_type := data.get("password_hash_type")) is not None else None, + password_salt_position=CreateUserPasswordSaltPosition( + _v_password_salt_position + ) + if (_v_password_salt_position := data.get("password_salt_position")) + is not None + else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("CreateUser", e) @@ -117,4 +128,10 @@ def to_dict(self) -> dict[str, Any]: if isinstance(self.password_hash_type, Enum) else self.password_hash_type ) + if self.password_salt_position is not None: + result["password_salt_position"] = ( + self.password_salt_position.value + if isinstance(self.password_salt_position, Enum) + else self.password_salt_position + ) return result diff --git a/src/workos/user_management/models/radar_sms_challenge_code_session_authenticate_request.py b/src/workos/user_management/models/radar_sms_challenge_code_session_authenticate_request.py index 4b516fca..f7e66c43 100644 --- a/src/workos/user_management/models/radar_sms_challenge_code_session_authenticate_request.py +++ b/src/workos/user_management/models/radar_sms_challenge_code_session_authenticate_request.py @@ -19,12 +19,12 @@ class RadarSmsChallengeCodeSessionAuthenticateRequest: grant_type: Literal["urn:workos:oauth:grant-type:radar-sms-challenge:code"] code: str """The one-time code from the Radar SMS challenge.""" - verification_id: str - """The ID of the Radar SMS verification being confirmed.""" - phone_number: str - """The phone number the Radar SMS challenge was sent to.""" pending_authentication_token: str """The pending authentication token from a previous authentication attempt.""" + verification_id: str | None = None + """The ID of the Radar SMS verification being confirmed. Required for sign-up challenges; omitted for sign-in challenges, where the verification is resolved server-side.""" + phone_number: str | None = None + """The phone number the Radar SMS challenge was sent to. Required for sign-up challenges; omitted for sign-in challenges, where the phone number on file is resolved server-side.""" ip_address: str | None = None """The IP address of the user's request.""" device_id: str | None = None @@ -45,9 +45,9 @@ def from_dict( "grant_type", "urn:workos:oauth:grant-type:radar-sms-challenge:code" ), code=data["code"], - verification_id=data["verification_id"], - phone_number=data["phone_number"], pending_authentication_token=data["pending_authentication_token"], + verification_id=data.get("verification_id"), + phone_number=data.get("phone_number"), ip_address=data.get("ip_address"), device_id=data.get("device_id"), user_agent=data.get("user_agent"), @@ -64,9 +64,11 @@ def to_dict(self) -> dict[str, Any]: result["client_secret"] = self.client_secret result["grant_type"] = self.grant_type result["code"] = self.code - result["verification_id"] = self.verification_id - result["phone_number"] = self.phone_number result["pending_authentication_token"] = self.pending_authentication_token + if self.verification_id is not None: + result["verification_id"] = self.verification_id + if self.phone_number is not None: + result["phone_number"] = self.phone_number if self.ip_address is not None: result["ip_address"] = self.ip_address if self.device_id is not None: diff --git a/src/workos/user_management/models/update_user.py b/src/workos/user_management/models/update_user.py index 763dd792..a84da49e 100644 --- a/src/workos/user_management/models/update_user.py +++ b/src/workos/user_management/models/update_user.py @@ -10,6 +10,9 @@ from workos.common.models.update_user_password_hash_type import ( UpdateUserPasswordHashType, ) +from workos.common.models.update_user_password_salt_position import ( + UpdateUserPasswordSaltPosition, +) @dataclass(slots=True) @@ -33,11 +36,13 @@ class UpdateUser: locale: str | None = None """The user's preferred locale.""" password: str | None = None - """The password to set for the user. Mutually exclusive with `password_hash` and `password_hash_type`.""" + """The password to set for the user. Mutually exclusive with `password_hash`, `password_hash_type`, and `password_salt_position`.""" password_hash: str | None = None """The hashed password to set for the user. Required with `password_hash_type`. Mutually exclusive with `password`.""" password_hash_type: UpdateUserPasswordHashType | None = None """The algorithm originally used to hash the password, used when providing a `password_hash`. Required with `password_hash`. Mutually exclusive with `password`.""" + password_salt_position: UpdateUserPasswordSaltPosition | None = None + """The position of the salt relative to the password when the `password_hash` digest was computed: `prefix` for `hash(salt + password)` or `suffix` for `hash(password + salt)`. Only supported with the `ssha256` hash type and only valid when a `password_hash` is provided. Defaults to `suffix`. Mutually exclusive with `password`.""" @classmethod def from_dict(cls, data: dict[str, Any]) -> UpdateUser: @@ -57,6 +62,12 @@ def from_dict(cls, data: dict[str, Any]) -> UpdateUser: password_hash_type=UpdateUserPasswordHashType(_v_password_hash_type) if (_v_password_hash_type := data.get("password_hash_type")) is not None else None, + password_salt_position=UpdateUserPasswordSaltPosition( + _v_password_salt_position + ) + if (_v_password_salt_position := data.get("password_salt_position")) + is not None + else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateUser", e) @@ -96,4 +107,10 @@ def to_dict(self) -> dict[str, Any]: if isinstance(self.password_hash_type, Enum) else self.password_hash_type ) + if self.password_salt_position is not None: + result["password_salt_position"] = ( + self.password_salt_position.value + if isinstance(self.password_salt_position, Enum) + else self.password_salt_position + ) return result diff --git a/tests/fixtures/create_user.json b/tests/fixtures/create_user.json index a851bca9..3426c4df 100644 --- a/tests/fixtures/create_user.json +++ b/tests/fixtures/create_user.json @@ -13,5 +13,6 @@ "signals_id": "01JBS0GN92GC2RJQS4X9DBPQ2A", "password": "strong_password_123!", "password_hash": "$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy", - "password_hash_type": "bcrypt" + "password_hash_type": "bcrypt", + "password_salt_position": "prefix" } diff --git a/tests/fixtures/update_user.json b/tests/fixtures/update_user.json index d00ee5ca..ba548aa5 100644 --- a/tests/fixtures/update_user.json +++ b/tests/fixtures/update_user.json @@ -11,5 +11,6 @@ "locale": "en-US", "password": "strong_password_123!", "password_hash": "$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy", - "password_hash_type": "bcrypt" + "password_hash_type": "bcrypt", + "password_salt_position": "prefix" } From ef0619ef452a0b210fb8dc192588a12fdb69c245 Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 5/7] fix(user_management): Update user management API surface --- .../models/create_organization_api_key.py | 16 +++---- .../models/audit_log_event_create_response.py | 9 ++-- .../models/create_authorization_permission.py | 13 ++--- .../models/create_authorization_resource.py | 17 +++---- .../models/create_organization_role.py | 15 +++--- .../models/update_authorization_permission.py | 13 ++--- .../models/update_authorization_resource.py | 19 ++++---- ...gent_registration_claim_attempt_created.py | 21 ++++----- ...registration_claim_attempt_created_data.py | 11 +++-- .../models/agent_registration_created.py | 21 ++++----- .../models/agent_registration_created_data.py | 20 ++++---- ...egistration_created_data_agent_identity.py | 13 ++--- .../agent_registration_created_data_kind.py | 3 +- .../agent_registration_created_data_method.py | 3 +- .../agent_registration_created_data_status.py | 3 +- src/workos/common/models/api_key_created.py | 21 ++++----- .../common/models/api_key_created_data.py | 25 +++++----- .../models/api_key_created_data_owner.py | 9 ++-- src/workos/common/models/api_key_updated.py | 21 ++++----- .../common/models/api_key_updated_data.py | 29 ++++++------ ...api_key_updated_data_previous_attribute.py | 14 +++--- ...hentication_factors_create_request_type.py | 5 +- .../create_data_integration_auth_methods.py | 27 ++--------- .../models/create_webhook_endpoint_events.py | 5 +- .../common/models/dsync_group_created.py | 21 ++++----- .../common/models/dsync_group_updated.py | 21 ++++----- .../common/models/dsync_group_updated_data.py | 16 +++---- .../common/models/dsync_token_created.py | 21 ++++----- .../common/models/dsync_token_created_data.py | 14 +++--- .../common/models/dsync_user_created.py | 21 ++++----- .../common/models/dsync_user_updated.py | 21 ++++----- .../common/models/dsync_user_updated_data.py | 47 +++++++++---------- .../models/email_verification_created.py | 21 ++++----- .../models/email_verification_created_data.py | 12 ++--- src/workos/common/models/flag_created.py | 21 ++++----- .../common/models/flag_created_context.py | 14 +++--- src/workos/common/models/flag_created_data.py | 21 ++++----- src/workos/common/models/flag_rule_updated.py | 21 ++++----- .../models/flag_rule_updated_context.py | 26 +++++----- .../flag_rule_updated_context_access_type.py | 3 +- ...rule_updated_context_previous_attribute.py | 20 ++++---- ...ated_context_previous_attribute_context.py | 30 ++++++------ ..._previous_attribute_context_access_type.py | 1 + ...updated_context_previous_attribute_data.py | 15 +++--- src/workos/common/models/flag_updated.py | 21 ++++----- .../common/models/flag_updated_context.py | 18 +++---- ...flag_updated_context_previous_attribute.py | 14 +++--- ...updated_context_previous_attribute_data.py | 21 ++++----- src/workos/common/models/group_created.py | 21 ++++----- src/workos/common/models/group_updated.py | 21 ++++----- .../common/models/invitation_created.py | 21 ++++----- .../common/models/magic_auth_created.py | 21 ++++----- .../common/models/magic_auth_created_data.py | 12 ++--- .../common/models/organization_created.py | 21 ++++----- .../models/organization_created_data.py | 23 +++++---- .../organization_created_data_domain_state.py | 3 +- ...eated_data_domain_verification_strategy.py | 3 +- .../models/organization_domain_created.py | 21 ++++----- ...main_created_data_verification_strategy.py | 1 + .../models/organization_domain_updated.py | 21 ++++----- ...main_updated_data_verification_strategy.py | 1 + .../models/organization_membership_created.py | 21 ++++----- .../organization_membership_created_data.py | 27 +++++------ ...nization_membership_created_data_status.py | 5 +- .../models/organization_membership_updated.py | 21 ++++----- ...nization_membership_updated_data_status.py | 1 + .../models/organization_role_created.py | 21 ++++----- .../models/organization_role_created_data.py | 16 +++---- .../models/organization_role_updated.py | 21 ++++----- .../common/models/organization_updated.py | 21 ++++----- ...dated_data_domain_verification_strategy.py | 1 + .../common/models/password_reset_created.py | 21 ++++----- .../models/password_reset_created_data.py | 12 ++--- .../common/models/permission_created.py | 21 ++++----- .../common/models/permission_updated.py | 21 ++++----- .../common/models/radar_challenge_created.py | 21 ++++----- .../models/radar_challenge_created_data.py | 9 ++-- src/workos/common/models/role_created.py | 21 ++++----- src/workos/common/models/role_created_data.py | 14 +++--- src/workos/common/models/role_updated.py | 21 ++++----- src/workos/common/models/session_created.py | 21 ++++----- .../session_created_data_auth_method.py | 3 +- .../models/session_created_data_status.py | 3 +- .../models/update_webhook_endpoint_status.py | 3 +- .../models/user_api_key_created_data_owner.py | 9 ++-- src/workos/common/models/user_created.py | 21 ++++----- src/workos/common/models/user_updated.py | 21 ++++----- .../common/models/vault_data_created.py | 21 ++++----- .../common/models/vault_data_created_data.py | 14 +++--- .../vault_data_created_data_actor_source.py | 3 +- .../common/models/vault_data_updated.py | 21 ++++----- src/workos/common/models/vault_kek_created.py | 21 ++++----- .../common/models/vault_kek_created_data.py | 12 +++-- .../common/models/waitlist_user_created.py | 21 ++++----- .../models/create_application_secret.py | 9 ++-- .../connect/models/create_m2m_application.py | 13 ++--- .../models/create_oauth_application.py | 22 ++++----- .../models/update_oauth_application.py | 20 ++++---- src/workos/groups/models/create_group.py | 11 +++-- .../groups/models/create_group_membership.py | 9 ++-- src/workos/groups/models/update_group.py | 1 + .../authentication_factors_create_request.py | 19 ++++---- .../models/create_organization_domain.py | 9 ++-- .../models/update_audit_logs_retention.py | 9 ++-- .../models/update_organization.py | 26 +++++----- .../pipes/models/create_data_integration.py | 2 +- ...standalone_update_radar_attempt_request.py | 15 +++--- ...ar_standalone_update_radar_list_request.py | 1 + .../vault/models/create_data_key_request.py | 11 +++-- .../vault/models/create_data_key_response.py | 11 +++-- .../vault/models/create_object_request.py | 11 +++-- .../vault/models/update_object_request.py | 11 +++-- .../models/create_webhook_endpoint.py | 12 ++--- .../models/update_webhook_endpoint.py | 16 +++---- tests/fixtures/waitlist_user_created.json | 1 + 115 files changed, 853 insertions(+), 900 deletions(-) diff --git a/src/workos/api_keys/models/create_organization_api_key.py b/src/workos/api_keys/models/create_organization_api_key.py index b9f53f66..9d8a1c5d 100644 --- a/src/workos/api_keys/models/create_organization_api_key.py +++ b/src/workos/api_keys/models/create_organization_api_key.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, List, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -15,13 +15,13 @@ class CreateOrganizationApiKey: name: str """The name for the API key.""" - permissions: Optional[List[str]] = None + permissions: list[str] | None = None """The permission slugs to assign to the API key.""" - expires_at: Optional[datetime] = None + expires_at: datetime | None = None """The timestamp when the API key should expire. Must be a future timestamp. If omitted, the key does not expire.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationApiKey": + def from_dict(cls, data: dict[str, Any]) -> CreateOrganizationApiKey: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationApiKey": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateOrganizationApiKey", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name if self.permissions is not None: result["permissions"] = self.permissions diff --git a/src/workos/audit_logs/models/audit_log_event_create_response.py b/src/workos/audit_logs/models/audit_log_event_create_response.py index 14353c2d..3be14930 100644 --- a/src/workos/audit_logs/models/audit_log_event_create_response.py +++ b/src/workos/audit_logs/models/audit_log_event_create_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AuditLogEventCreateResponse: """Whether the Audit Log event was created successfully.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventCreateResponse": + def from_dict(cls, data: dict[str, Any]) -> AuditLogEventCreateResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventCreateResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogEventCreateResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["success"] = self.success return result diff --git a/src/workos/authorization/models/create_authorization_permission.py b/src/workos/authorization/models/create_authorization_permission.py index af789d69..825a5d6f 100644 --- a/src/workos/authorization/models/create_authorization_permission.py +++ b/src/workos/authorization/models/create_authorization_permission.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,13 +16,13 @@ class CreateAuthorizationPermission: """A unique key to reference the permission. Must be lowercase and contain only letters, numbers, hyphens, underscores, colons, periods, and asterisks.""" name: str """A descriptive name for the Permission.""" - description: Optional[str] = None + description: str | None = None """An optional description of the Permission.""" - resource_type_slug: Optional[str] = None + resource_type_slug: str | None = None """The slug of the resource type this permission is scoped to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateAuthorizationPermission": + def from_dict(cls, data: dict[str, Any]) -> CreateAuthorizationPermission: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateAuthorizationPermission": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateAuthorizationPermission", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["slug"] = self.slug result["name"] = self.name if self.description is not None: diff --git a/src/workos/authorization/models/create_authorization_resource.py b/src/workos/authorization/models/create_authorization_resource.py index 8fd685aa..bcbdf9db 100644 --- a/src/workos/authorization/models/create_authorization_resource.py +++ b/src/workos/authorization/models/create_authorization_resource.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -19,17 +20,17 @@ class CreateAuthorizationResource: """The slug of the resource type.""" organization_id: str """The ID of the organization this resource belongs to.""" - description: Optional[str] = None + description: str | None = None """An optional description of the resource.""" - parent_resource_id: Optional[str] = None + parent_resource_id: str | None = None """The ID of the parent resource. Mutually exclusive with `parent_resource_external_id` and `parent_resource_type_slug`.""" - parent_resource_external_id: Optional[str] = None + parent_resource_external_id: str | None = None """The external ID of the parent resource. Required with `parent_resource_type_slug`. Mutually exclusive with `parent_resource_id`.""" - parent_resource_type_slug: Optional[str] = None + parent_resource_type_slug: str | None = None """The resource type slug of the parent resource. Required with `parent_resource_external_id`. Mutually exclusive with `parent_resource_id`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateAuthorizationResource": + def from_dict(cls, data: dict[str, Any]) -> CreateAuthorizationResource: """Deserialize from a dictionary.""" try: return cls( @@ -45,9 +46,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateAuthorizationResource": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateAuthorizationResource", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["external_id"] = self.external_id result["name"] = self.name result["resource_type_slug"] = self.resource_type_slug diff --git a/src/workos/authorization/models/create_organization_role.py b/src/workos/authorization/models/create_organization_role.py index 2b04ff51..8d8bc08e 100644 --- a/src/workos/authorization/models/create_organization_role.py +++ b/src/workos/authorization/models/create_organization_role.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,15 +14,15 @@ class CreateOrganizationRole: name: str """A descriptive name for the role.""" - slug: Optional[str] = None + slug: str | None = None """A unique identifier for the role within the organization. When provided, must begin with 'org-' and contain only lowercase letters, numbers, hyphens, and underscores. When omitted, a slug is auto-generated from the role name and a random suffix.""" - description: Optional[str] = None + description: str | None = None """An optional description of the role's purpose.""" - resource_type_slug: Optional[str] = None + resource_type_slug: str | None = None """The slug of the resource type the role is scoped to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationRole": + def from_dict(cls, data: dict[str, Any]) -> CreateOrganizationRole: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationRole": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateOrganizationRole", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name if self.slug is not None: result["slug"] = self.slug diff --git a/src/workos/authorization/models/update_authorization_permission.py b/src/workos/authorization/models/update_authorization_permission.py index 7481ac1e..1bc3829d 100644 --- a/src/workos/authorization/models/update_authorization_permission.py +++ b/src/workos/authorization/models/update_authorization_permission.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,13 +12,13 @@ class UpdateAuthorizationPermission: """Update Authorization Permission model.""" - name: Optional[str] = None + name: str | None = None """A descriptive name for the Permission.""" - description: Optional[str] = None + description: str | None = None """An optional description of the Permission.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuthorizationPermission": + def from_dict(cls, data: dict[str, Any]) -> UpdateAuthorizationPermission: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuthorizationPermission": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateAuthorizationPermission", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.name is not None: result["name"] = self.name if self.description is not None: diff --git a/src/workos/authorization/models/update_authorization_resource.py b/src/workos/authorization/models/update_authorization_resource.py index 268acc43..08282b69 100644 --- a/src/workos/authorization/models/update_authorization_resource.py +++ b/src/workos/authorization/models/update_authorization_resource.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,19 +12,19 @@ class UpdateAuthorizationResource: """Update Authorization Resource model.""" - name: Optional[str] = None + name: str | None = None """A display name for the resource.""" - description: Optional[str] = None + description: str | None = None """An optional description of the resource.""" - parent_resource_id: Optional[str] = None + parent_resource_id: str | None = None """The ID of the parent resource. Mutually exclusive with `parent_resource_external_id` and `parent_resource_type_slug`.""" - parent_resource_external_id: Optional[str] = None + parent_resource_external_id: str | None = None """The external ID of the parent resource. Required with `parent_resource_type_slug`. Mutually exclusive with `parent_resource_id`.""" - parent_resource_type_slug: Optional[str] = None + parent_resource_type_slug: str | None = None """The resource type slug of the parent resource. Required with `parent_resource_external_id`. Mutually exclusive with `parent_resource_id`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuthorizationResource": + def from_dict(cls, data: dict[str, Any]) -> UpdateAuthorizationResource: """Deserialize from a dictionary.""" try: return cls( @@ -36,9 +37,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuthorizationResource": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateAuthorizationResource", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.name is not None: result["name"] = self.name if self.description is not None: diff --git a/src/workos/common/models/agent_registration_claim_attempt_created.py b/src/workos/common/models/agent_registration_claim_attempt_created.py index e1a2cfd3..767a77c4 100644 --- a/src/workos/common/models/agent_registration_claim_attempt_created.py +++ b/src/workos/common/models/agent_registration_claim_attempt_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_claim_attempt_created_data import ( AgentRegistrationClaimAttemptCreatedData, @@ -24,14 +23,14 @@ class AgentRegistrationClaimAttemptCreated: id: str """Unique identifier for the event.""" event: Literal["agent.registration.claim.attempt.created"] - data: "AgentRegistrationClaimAttemptCreatedData" + data: AgentRegistrationClaimAttemptCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimAttemptCreated": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationClaimAttemptCreated: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimAttemptCreate id=data["id"], event=data.get("event", "agent.registration.claim.attempt.created"), data=AgentRegistrationClaimAttemptCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimAttemptCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_claim_attempt_created_data.py b/src/workos/common/models/agent_registration_claim_attempt_created_data.py index af59cd23..c09e49b2 100644 --- a/src/workos/common/models/agent_registration_claim_attempt_created_data.py +++ b/src/workos/common/models/agent_registration_claim_attempt_created_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -30,8 +31,8 @@ class AgentRegistrationClaimAttemptCreatedData: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentRegistrationClaimAttemptCreatedData": + cls, data: dict[str, Any] + ) -> AgentRegistrationClaimAttemptCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -47,9 +48,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimAttemptCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["agent_registration_id"] = self.agent_registration_id diff --git a/src/workos/common/models/agent_registration_created.py b/src/workos/common/models/agent_registration_created.py index 1916c277..06a5dc3c 100644 --- a/src/workos/common/models/agent_registration_created.py +++ b/src/workos/common/models/agent_registration_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_created_data import AgentRegistrationCreatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AgentRegistrationCreated: id: str """Unique identifier for the event.""" event: Literal["agent.registration.created"] - data: "AgentRegistrationCreatedData" + data: AgentRegistrationCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCreated": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCreated": id=data["id"], event=data.get("event", "agent.registration.created"), data=AgentRegistrationCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_created_data.py b/src/workos/common/models/agent_registration_created_data.py index f19988af..e2d2b667 100644 --- a/src/workos/common/models/agent_registration_created_data.py +++ b/src/workos/common/models/agent_registration_created_data.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, Literal +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .agent_registration_created_data_agent_identity import ( @@ -24,15 +24,15 @@ class AgentRegistrationCreatedData: """Distinguishes the agent registration object.""" id: str """Unique identifier of the agent registration.""" - agent_identity: "AgentRegistrationCreatedDataAgentIdentity" + agent_identity: AgentRegistrationCreatedDataAgentIdentity """The agent identity for this registration.""" organization_id: str """The ID of the organization the registration belongs to.""" - status: "AgentRegistrationCreatedDataStatus" + status: AgentRegistrationCreatedDataStatus """The current status of the registration.""" - kind: "AgentRegistrationCreatedDataKind" + kind: AgentRegistrationCreatedDataKind """The kind of the registration.""" - method: "AgentRegistrationCreatedDataMethod" + method: AgentRegistrationCreatedDataMethod """The authentication method of the registration.""" created_at: str """The timestamp when the registration was created.""" @@ -40,14 +40,14 @@ class AgentRegistrationCreatedData: """The timestamp when the registration was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCreatedData": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationCreatedData: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "agent_registration"), id=data["id"], agent_identity=AgentRegistrationCreatedDataAgentIdentity.from_dict( - cast(Dict[str, Any], data["agent_identity"]) + cast(dict[str, Any], data["agent_identity"]) ), organization_id=data["organization_id"], status=AgentRegistrationCreatedDataStatus(data["status"]), @@ -59,9 +59,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["agent_identity"] = self.agent_identity.to_dict() diff --git a/src/workos/common/models/agent_registration_created_data_agent_identity.py b/src/workos/common/models/agent_registration_created_data_agent_identity.py index 307cad94..72144452 100644 --- a/src/workos/common/models/agent_registration_created_data_agent_identity.py +++ b/src/workos/common/models/agent_registration_created_data_agent_identity.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional, Union +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -15,13 +16,13 @@ class AgentRegistrationCreatedDataAgentIdentity: """Distinguishes the agent identity object.""" id: str """Unique identifier of the agent identity.""" - userland_user_id: Union[str, Optional[Literal["null"]]] + userland_user_id: str | Literal["null"] | None """The ID of the userland user bound to this agent identity.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentRegistrationCreatedDataAgentIdentity": + cls, data: dict[str, Any] + ) -> AgentRegistrationCreatedDataAgentIdentity: """Deserialize from a dictionary.""" try: return cls( @@ -32,9 +33,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCreatedDataAgentIdentity", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["userland_user_id"] = self.userland_user_id diff --git a/src/workos/common/models/agent_registration_created_data_kind.py b/src/workos/common/models/agent_registration_created_data_kind.py index d779c734..01a5be1c 100644 --- a/src/workos/common/models/agent_registration_created_data_kind.py +++ b/src/workos/common/models/agent_registration_created_data_kind.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class AgentRegistrationCreatedDataKind(str, Enum): IDENTITY_ASSERTION = "identity_assertion" @classmethod - def _missing_(cls, value: object) -> Optional["AgentRegistrationCreatedDataKind"]: + def _missing_(cls, value: object) -> AgentRegistrationCreatedDataKind | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/agent_registration_created_data_method.py b/src/workos/common/models/agent_registration_created_data_method.py index c25ec748..4fbd04d1 100644 --- a/src/workos/common/models/agent_registration_created_data_method.py +++ b/src/workos/common/models/agent_registration_created_data_method.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class AgentRegistrationCreatedDataMethod(str, Enum): ID_JAG = "id_jag" @classmethod - def _missing_(cls, value: object) -> Optional["AgentRegistrationCreatedDataMethod"]: + def _missing_(cls, value: object) -> AgentRegistrationCreatedDataMethod | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/agent_registration_created_data_status.py b/src/workos/common/models/agent_registration_created_data_status.py index 8bd7209d..b185749c 100644 --- a/src/workos/common/models/agent_registration_created_data_status.py +++ b/src/workos/common/models/agent_registration_created_data_status.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class AgentRegistrationCreatedDataStatus(str, Enum): REVOKED = "revoked" @classmethod - def _missing_(cls, value: object) -> Optional["AgentRegistrationCreatedDataStatus"]: + def _missing_(cls, value: object) -> AgentRegistrationCreatedDataStatus | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/api_key_created.py b/src/workos/common/models/api_key_created.py index 61dfc0fd..ca5b8e0b 100644 --- a/src/workos/common/models/api_key_created.py +++ b/src/workos/common/models/api_key_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .api_key_created_data import ApiKeyCreatedData from .event_context import EventContext @@ -22,32 +21,32 @@ class ApiKeyCreated: id: str """Unique identifier for the event.""" event: Literal["api_key.created"] - data: "ApiKeyCreatedData" + data: ApiKeyCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyCreated": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "api_key.created"), - data=ApiKeyCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=ApiKeyCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/api_key_created_data.py b/src/workos/common/models/api_key_created_data.py index 7ba32b61..ce67304c 100644 --- a/src/workos/common/models/api_key_created_data.py +++ b/src/workos/common/models/api_key_created_data.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional, Union -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .api_key_created_data_owner import ApiKeyCreatedDataOwner from .user_api_key_created_data_owner import UserApiKeyCreatedDataOwner @@ -21,17 +20,17 @@ class ApiKeyCreatedData: """Distinguishes the API key object.""" id: str """Unique identifier of the API key.""" - owner: Union["ApiKeyCreatedDataOwner", "UserApiKeyCreatedDataOwner"] + owner: ApiKeyCreatedDataOwner | UserApiKeyCreatedDataOwner """The owner of the API key.""" name: str """The name of the API key.""" obfuscated_value: str """The obfuscated value of the API key.""" - last_used_at: Optional[str] + last_used_at: str | None """The timestamp when the API key was last used.""" - expires_at: Optional[datetime] + expires_at: datetime | None """Timestamp when the API Key expires. Null means the key does not expire.""" - permissions: List[str] + permissions: list[str] """The permissions granted to the API key.""" created_at: str """The timestamp when the API key was created.""" @@ -39,13 +38,13 @@ class ApiKeyCreatedData: """The timestamp when the API key was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyCreatedData": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyCreatedData: """Deserialize from a dictionary.""" try: _owner_raw = data["owner"] - _owner_data = cast(Dict[str, Any], _owner_raw) + _owner_data = cast(dict[str, Any], _owner_raw) _owner_disc = cast(str, _owner_data.get("type")) - _owner_disc_map: Dict[str, Any] = { + _owner_disc_map: dict[str, Any] = { "organization": ApiKeyCreatedDataOwner, "user": UserApiKeyCreatedDataOwner, } @@ -72,9 +71,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["owner"] = self.owner.to_dict() diff --git a/src/workos/common/models/api_key_created_data_owner.py b/src/workos/common/models/api_key_created_data_owner.py index e99edf06..3925c8c4 100644 --- a/src/workos/common/models/api_key_created_data_owner.py +++ b/src/workos/common/models/api_key_created_data_owner.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class ApiKeyCreatedDataOwner: """The unique identifier of the API key owner.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyCreatedDataOwner": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyCreatedDataOwner: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyCreatedDataOwner": except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyCreatedDataOwner", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["id"] = self.id return result diff --git a/src/workos/common/models/api_key_updated.py b/src/workos/common/models/api_key_updated.py index d31b83ba..7e8f42a6 100644 --- a/src/workos/common/models/api_key_updated.py +++ b/src/workos/common/models/api_key_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .api_key_updated_data import ApiKeyUpdatedData from .event_context import EventContext @@ -22,32 +21,32 @@ class ApiKeyUpdated: id: str """Unique identifier for the event.""" event: Literal["api_key.updated"] - data: "ApiKeyUpdatedData" + data: ApiKeyUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyUpdated": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "api_key.updated"), - data=ApiKeyUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=ApiKeyUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/api_key_updated_data.py b/src/workos/common/models/api_key_updated_data.py index 6c4580c8..22df787e 100644 --- a/src/workos/common/models/api_key_updated_data.py +++ b/src/workos/common/models/api_key_updated_data.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional, Union -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .api_key_updated_data_owner import ApiKeyUpdatedDataOwner from .api_key_updated_data_previous_attribute import ApiKeyUpdatedDataPreviousAttribute @@ -22,33 +21,33 @@ class ApiKeyUpdatedData: """Distinguishes the API key object.""" id: str """Unique identifier of the API key.""" - owner: Union["ApiKeyUpdatedDataOwner", "UserApiKeyUpdatedDataOwner"] + owner: ApiKeyUpdatedDataOwner | UserApiKeyUpdatedDataOwner """The owner of the API key.""" name: str """The name of the API key.""" obfuscated_value: str """The obfuscated value of the API key.""" - last_used_at: Optional[str] + last_used_at: str | None """The timestamp when the API key was last used.""" - expires_at: Optional[datetime] + expires_at: datetime | None """Timestamp when the API Key expires. Null means the key does not expire.""" - permissions: List[str] + permissions: list[str] """The permissions granted to the API key.""" created_at: str """The timestamp when the API key was created.""" updated_at: str """The timestamp when the API key was last updated.""" - previous_attributes: "ApiKeyUpdatedDataPreviousAttribute" + previous_attributes: ApiKeyUpdatedDataPreviousAttribute """Previous API key attributes before the update.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyUpdatedData": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyUpdatedData: """Deserialize from a dictionary.""" try: _owner_raw = data["owner"] - _owner_data = cast(Dict[str, Any], _owner_raw) + _owner_data = cast(dict[str, Any], _owner_raw) _owner_disc = cast(str, _owner_data.get("type")) - _owner_disc_map: Dict[str, Any] = { + _owner_disc_map: dict[str, Any] = { "organization": ApiKeyUpdatedDataOwner, "user": UserApiKeyUpdatedDataOwner, } @@ -72,15 +71,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyUpdatedData": created_at=data["created_at"], updated_at=data["updated_at"], previous_attributes=ApiKeyUpdatedDataPreviousAttribute.from_dict( - cast(Dict[str, Any], data["previous_attributes"]) + cast(dict[str, Any], data["previous_attributes"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyUpdatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["owner"] = self.owner.to_dict() diff --git a/src/workos/common/models/api_key_updated_data_previous_attribute.py b/src/workos/common/models/api_key_updated_data_previous_attribute.py index ef71f669..98f7c84b 100644 --- a/src/workos/common/models/api_key_updated_data_previous_attribute.py +++ b/src/workos/common/models/api_key_updated_data_previous_attribute.py @@ -4,20 +4,20 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) class ApiKeyUpdatedDataPreviousAttribute: """Previous API key attributes before the update.""" - expires_at: Optional[datetime] + expires_at: datetime | None """The previous timestamp when the API Key expired. Null means the key did not expire.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyUpdatedDataPreviousAttribute": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyUpdatedDataPreviousAttribute: """Deserialize from a dictionary.""" try: return cls( @@ -28,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyUpdatedDataPreviousAttribute" except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyUpdatedDataPreviousAttribute", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.expires_at is not None: result["expires_at"] = _format_datetime(self.expires_at) else: diff --git a/src/workos/common/models/authentication_factors_create_request_type.py b/src/workos/common/models/authentication_factors_create_request_type.py index 09c88b52..5ace6acc 100644 --- a/src/workos/common/models/authentication_factors_create_request_type.py +++ b/src/workos/common/models/authentication_factors_create_request_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,9 +16,7 @@ class AuthenticationFactorsCreateRequestType(str, Enum): TOTP = "totp" @classmethod - def _missing_( - cls, value: object - ) -> Optional["AuthenticationFactorsCreateRequestType"]: + def _missing_(cls, value: object) -> AuthenticationFactorsCreateRequestType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/create_data_integration_auth_methods.py b/src/workos/common/models/create_data_integration_auth_methods.py index acfd3197..37d5ef95 100644 --- a/src/workos/common/models/create_data_integration_auth_methods.py +++ b/src/workos/common/models/create_data_integration_auth_methods.py @@ -1,27 +1,8 @@ # This file is auto-generated by oagen. Do not edit. -"""Enumeration of create data integration auth methods values.""" +from typing import TypeAlias -from __future__ import annotations +from .connected_account_auth_method import ConnectedAccountAuthMethod -from enum import Enum -from typing import Literal, TypeAlias - - -class CreateDataIntegrationAuthMethods(str, Enum): - """Known values for CreateDataIntegrationAuthMethods.""" - - OAUTH = "oauth" - API_KEY = "api_key" - - @classmethod - def _missing_(cls, value: object) -> CreateDataIntegrationAuthMethods | None: - if not isinstance(value, str): - return None - unknown = str.__new__(cls, value) - unknown._name_ = value.upper() - unknown._value_ = value - return unknown - - -CreateDataIntegrationAuthMethodsLiteral: TypeAlias = Literal["oauth", "api_key"] +CreateDataIntegrationAuthMethods: TypeAlias = ConnectedAccountAuthMethod +__all__ = ["CreateDataIntegrationAuthMethods"] diff --git a/src/workos/common/models/create_webhook_endpoint_events.py b/src/workos/common/models/create_webhook_endpoint_events.py index eb5742b0..99d60301 100644 --- a/src/workos/common/models/create_webhook_endpoint_events.py +++ b/src/workos/common/models/create_webhook_endpoint_events.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,6 +18,7 @@ class CreateWebhookEndpointEvents(str, Enum): AGENT_REGISTRATION_CLAIM_COMPLETED = "agent.registration.claim.completed" AGENT_REGISTRATION_CREDENTIAL_ISSUED = "agent.registration.credential.issued" AGENT_REGISTRATION_DELETED = "agent.registration.deleted" + AGENT_REGISTRATION_REFRESHED = "agent.registration.refreshed" AGENT_REGISTRATION_EXPIRED = "agent.registration.expired" AGENT_REGISTRATION_ORGANIZATION_SWITCHED = ( "agent.registration.organization.switched" @@ -120,7 +120,7 @@ class CreateWebhookEndpointEvents(str, Enum): WAITLIST_USER_DENIED = "waitlist_user.denied" @classmethod - def _missing_(cls, value: object) -> Optional["CreateWebhookEndpointEvents"]: + def _missing_(cls, value: object) -> CreateWebhookEndpointEvents | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) @@ -135,6 +135,7 @@ def _missing_(cls, value: object) -> Optional["CreateWebhookEndpointEvents"]: "agent.registration.claim.completed", "agent.registration.credential.issued", "agent.registration.deleted", + "agent.registration.refreshed", "agent.registration.expired", "agent.registration.organization.switched", "agent.registration.revoked", diff --git a/src/workos/common/models/dsync_group_created.py b/src/workos/common/models/dsync_group_created.py index 95bbf6ad..1298d154 100644 --- a/src/workos/common/models/dsync_group_created.py +++ b/src/workos/common/models/dsync_group_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .directory_group import DirectoryGroup from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncGroupCreated: id: str """Unique identifier for the event.""" event: Literal["dsync.group.created"] - data: "DirectoryGroup" + data: DirectoryGroup """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupCreated": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.group.created"), - data=DirectoryGroup.from_dict(cast(Dict[str, Any], data["data"])), + data=DirectoryGroup.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_group_updated.py b/src/workos/common/models/dsync_group_updated.py index b89bcde3..2f01ee7c 100644 --- a/src/workos/common/models/dsync_group_updated.py +++ b/src/workos/common/models/dsync_group_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_group_updated_data import DsyncGroupUpdatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class DsyncGroupUpdated: id: str """Unique identifier for the event.""" event: Literal["dsync.group.updated"] - data: "DsyncGroupUpdatedData" + data: DsyncGroupUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUpdated": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUpdated": id=data["id"], event=data.get("event", "dsync.group.updated"), data=DsyncGroupUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_group_updated_data.py b/src/workos/common/models/dsync_group_updated_data.py index 1a2d2bcc..0715578e 100644 --- a/src/workos/common/models/dsync_group_updated_data.py +++ b/src/workos/common/models/dsync_group_updated_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -29,12 +29,12 @@ class DsyncGroupUpdatedData: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - raw_attributes: Optional[Dict[str, Any]] = None + raw_attributes: dict[str, Any] | None = None """The raw attributes received from the directory provider.""" - previous_attributes: Optional[Dict[str, Any]] = None + previous_attributes: dict[str, Any] | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUpdatedData": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupUpdatedData: """Deserialize from a dictionary.""" try: return cls( @@ -52,9 +52,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUpdatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupUpdatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["idp_id"] = self.idp_id diff --git a/src/workos/common/models/dsync_token_created.py b/src/workos/common/models/dsync_token_created.py index 1faac071..295ebd60 100644 --- a/src/workos/common/models/dsync_token_created.py +++ b/src/workos/common/models/dsync_token_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_token_created_data import DsyncTokenCreatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class DsyncTokenCreated: id: str """Unique identifier for the event.""" event: Literal["dsync.token.created"] - data: "DsyncTokenCreatedData" + data: DsyncTokenCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenCreated": + def from_dict(cls, data: dict[str, Any]) -> DsyncTokenCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenCreated": id=data["id"], event=data.get("event", "dsync.token.created"), data=DsyncTokenCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncTokenCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_token_created_data.py b/src/workos/common/models/dsync_token_created_data.py index b016e7ea..3020c46d 100644 --- a/src/workos/common/models/dsync_token_created_data.py +++ b/src/workos/common/models/dsync_token_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -23,11 +23,11 @@ class DsyncTokenCreatedData: """The trailing characters of the bearer token, for identification only. The full token value is never included in events.""" created_at: datetime """An ISO 8601 timestamp.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the directory belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenCreatedData": + def from_dict(cls, data: dict[str, Any]) -> DsyncTokenCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncTokenCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["directory_id"] = self.directory_id diff --git a/src/workos/common/models/dsync_user_created.py b/src/workos/common/models/dsync_user_created.py index 3471b110..50f869a1 100644 --- a/src/workos/common/models/dsync_user_created.py +++ b/src/workos/common/models/dsync_user_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .directory_user import DirectoryUser from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncUserCreated: id: str """Unique identifier for the event.""" event: Literal["dsync.user.created"] - data: "DirectoryUser" + data: DirectoryUser """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserCreated": + def from_dict(cls, data: dict[str, Any]) -> DsyncUserCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.user.created"), - data=DirectoryUser.from_dict(cast(Dict[str, Any], data["data"])), + data=DirectoryUser.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncUserCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_user_updated.py b/src/workos/common/models/dsync_user_updated.py index 1d528b1c..9596942b 100644 --- a/src/workos/common/models/dsync_user_updated.py +++ b/src/workos/common/models/dsync_user_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_user_updated_data import DsyncUserUpdatedData from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncUserUpdated: id: str """Unique identifier for the event.""" event: Literal["dsync.user.updated"] - data: "DsyncUserUpdatedData" + data: DsyncUserUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserUpdated": + def from_dict(cls, data: dict[str, Any]) -> DsyncUserUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.user.updated"), - data=DsyncUserUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=DsyncUserUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncUserUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_user_updated_data.py b/src/workos/common/models/dsync_user_updated_data.py index 82715e5c..0abf68de 100644 --- a/src/workos/common/models/dsync_user_updated_data.py +++ b/src/workos/common/models/dsync_user_updated_data.py @@ -5,14 +5,13 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_user_updated_data_email import DsyncUserUpdatedDataEmail -from .slim_role import SlimRole from .dsync_user_updated_data_state import DsyncUserUpdatedDataState +from .slim_role import SlimRole @dataclass(slots=True) @@ -29,45 +28,45 @@ class DsyncUserUpdatedData: """The identifier for the Organization in which the Directory resides.""" idp_id: str """Unique identifier for the user, assigned by the Directory Provider. Different Directory Providers use different ID formats.""" - email: Optional[str] + email: str | None """The email address of the user.""" - state: "DsyncUserUpdatedDataState" + state: DsyncUserUpdatedDataState """The state of the user.""" - custom_attributes: Dict[str, Any] + custom_attributes: dict[str, Any] """An object containing the custom attribute mapping for the Directory Provider.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - first_name: Optional[str] = None + first_name: str | None = None """The first name of the user.""" - last_name: Optional[str] = None + last_name: str | None = None """The last name of the user.""" - name: Optional[str] = None + name: str | None = None """The full name of the user.""" - emails: Optional[List["DsyncUserUpdatedDataEmail"]] = None + emails: list[DsyncUserUpdatedDataEmail] | None = None """A list of email addresses for the user. .. deprecated:: This field is deprecated.""" - job_title: Optional[str] = None + job_title: str | None = None """The job title of the user. .. deprecated:: This field is deprecated.""" - username: Optional[str] = None + username: str | None = None """The username of the user. .. deprecated:: This field is deprecated.""" - raw_attributes: Optional[Dict[str, Any]] = None + raw_attributes: dict[str, Any] | None = None """The raw attributes received from the directory provider. .. deprecated:: This field is deprecated.""" - role: Optional["SlimRole"] = None - roles: Optional[List["SlimRole"]] = None + role: SlimRole | None = None + roles: list[SlimRole] | None = None """All roles assigned to the user.""" - previous_attributes: Optional[Dict[str, Any]] = None + previous_attributes: dict[str, Any] | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserUpdatedData": + def from_dict(cls, data: dict[str, Any]) -> DsyncUserUpdatedData: """Deserialize from a dictionary.""" try: return cls( @@ -85,7 +84,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserUpdatedData": last_name=data.get("last_name"), name=data.get("name"), emails=[ - DsyncUserUpdatedDataEmail.from_dict(cast(Dict[str, Any], item)) + DsyncUserUpdatedDataEmail.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_emails) ] if (_v_emails := data.get("emails")) is not None @@ -93,11 +92,11 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserUpdatedData": job_title=data.get("job_title"), username=data.get("username"), raw_attributes=data.get("raw_attributes"), - role=SlimRole.from_dict(cast(Dict[str, Any], _v_role)) + role=SlimRole.from_dict(cast(dict[str, Any], _v_role)) if (_v_role := data.get("role")) is not None else None, roles=[ - SlimRole.from_dict(cast(Dict[str, Any], item)) + SlimRole.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_roles) ] if (_v_roles := data.get("roles")) is not None @@ -107,9 +106,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserUpdatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncUserUpdatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["directory_id"] = self.directory_id diff --git a/src/workos/common/models/email_verification_created.py b/src/workos/common/models/email_verification_created.py index 0f38e7c8..0969b916 100644 --- a/src/workos/common/models/email_verification_created.py +++ b/src/workos/common/models/email_verification_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .email_verification_created_data import EmailVerificationCreatedData from .event_context import EventContext @@ -22,14 +21,14 @@ class EmailVerificationCreated: id: str """Unique identifier for the event.""" event: Literal["email_verification.created"] - data: "EmailVerificationCreatedData" + data: EmailVerificationCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EmailVerificationCreated": + def from_dict(cls, data: dict[str, Any]) -> EmailVerificationCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "EmailVerificationCreated": id=data["id"], event=data.get("event", "email_verification.created"), data=EmailVerificationCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("EmailVerificationCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/email_verification_created_data.py b/src/workos/common/models/email_verification_created_data.py index b9a74a3c..edca5890 100644 --- a/src/workos/common/models/email_verification_created_data.py +++ b/src/workos/common/models/email_verification_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -29,7 +29,7 @@ class EmailVerificationCreatedData: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EmailVerificationCreatedData": + def from_dict(cls, data: dict[str, Any]) -> EmailVerificationCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -44,9 +44,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EmailVerificationCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("EmailVerificationCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/common/models/flag_created.py b/src/workos/common/models/flag_created.py index b316cd20..a8656580 100644 --- a/src/workos/common/models/flag_created.py +++ b/src/workos/common/models/flag_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .flag_created_context import FlagCreatedContext from .flag_created_data import FlagCreatedData @@ -22,33 +21,33 @@ class FlagCreated: id: str """Unique identifier for the event.""" event: Literal["flag.created"] - data: "FlagCreatedData" + data: FlagCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: "FlagCreatedContext" + context: FlagCreatedContext """Additional context about the event.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagCreated": + def from_dict(cls, data: dict[str, Any]) -> FlagCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "flag.created"), - data=FlagCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=FlagCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), context=FlagCreatedContext.from_dict( - cast(Dict[str, Any], data["context"]) + cast(dict[str, Any], data["context"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/flag_created_context.py b/src/workos/common/models/flag_created_context.py index 55c1af15..f5942eaf 100644 --- a/src/workos/common/models/flag_created_context.py +++ b/src/workos/common/models/flag_created_context.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .flag_created_context_actor import FlagCreatedContextActor @@ -16,25 +16,25 @@ class FlagCreatedContext: client_id: str """The client ID associated with the flag event.""" - actor: "FlagCreatedContextActor" + actor: FlagCreatedContextActor """The actor who performed the action.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagCreatedContext": + def from_dict(cls, data: dict[str, Any]) -> FlagCreatedContext: """Deserialize from a dictionary.""" try: return cls( client_id=data["client_id"], actor=FlagCreatedContextActor.from_dict( - cast(Dict[str, Any], data["actor"]) + cast(dict[str, Any], data["actor"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagCreatedContext", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["client_id"] = self.client_id result["actor"] = self.actor.to_dict() return result diff --git a/src/workos/common/models/flag_created_data.py b/src/workos/common/models/flag_created_data.py index bdbe6b23..1725d677 100644 --- a/src/workos/common/models/flag_created_data.py +++ b/src/workos/common/models/flag_created_data.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .flag_created_data_owner import FlagCreatedDataOwner @@ -25,11 +24,11 @@ class FlagCreatedData: """A unique key to reference the Feature Flag.""" name: str """A descriptive name for the Feature Flag.""" - description: Optional[str] + description: str | None """A description for the Feature Flag.""" - owner: Optional["FlagCreatedDataOwner"] + owner: FlagCreatedDataOwner | None """The owner of the Feature Flag.""" - tags: List[str] + tags: list[str] """Labels assigned to the Feature Flag for categorizing and filtering.""" enabled: bool """Specifies whether the Feature Flag is active for the current environment.""" @@ -41,7 +40,7 @@ class FlagCreatedData: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagCreatedData": + def from_dict(cls, data: dict[str, Any]) -> FlagCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -51,7 +50,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "FlagCreatedData": slug=data["slug"], name=data["name"], description=data["description"], - owner=FlagCreatedDataOwner.from_dict(cast(Dict[str, Any], _v_owner)) + owner=FlagCreatedDataOwner.from_dict(cast(dict[str, Any], _v_owner)) if (_v_owner := data["owner"]) is not None else None, tags=data["tags"], @@ -63,9 +62,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "FlagCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("FlagCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["environment_id"] = self.environment_id diff --git a/src/workos/common/models/flag_rule_updated.py b/src/workos/common/models/flag_rule_updated.py index d53a806e..1f59fe39 100644 --- a/src/workos/common/models/flag_rule_updated.py +++ b/src/workos/common/models/flag_rule_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .flag_rule_updated_context import FlagRuleUpdatedContext from .flag_rule_updated_data import FlagRuleUpdatedData @@ -22,33 +21,33 @@ class FlagRuleUpdated: id: str """Unique identifier for the event.""" event: Literal["flag.rule_updated"] - data: "FlagRuleUpdatedData" + data: FlagRuleUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: "FlagRuleUpdatedContext" + context: FlagRuleUpdatedContext """Additional context about the event.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagRuleUpdated": + def from_dict(cls, data: dict[str, Any]) -> FlagRuleUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "flag.rule_updated"), - data=FlagRuleUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=FlagRuleUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), context=FlagRuleUpdatedContext.from_dict( - cast(Dict[str, Any], data["context"]) + cast(dict[str, Any], data["context"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/flag_rule_updated_context.py b/src/workos/common/models/flag_rule_updated_context.py index ae068f45..9b22def4 100644 --- a/src/workos/common/models/flag_rule_updated_context.py +++ b/src/workos/common/models/flag_rule_updated_context.py @@ -4,10 +4,11 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error +from .flag_rule_updated_context_access_type import FlagRuleUpdatedContextAccessType from .flag_rule_updated_context_actor import FlagRuleUpdatedContextActor from .flag_rule_updated_context_configured_target import ( FlagRuleUpdatedContextConfiguredTarget, @@ -15,7 +16,6 @@ from .flag_rule_updated_context_previous_attribute import ( FlagRuleUpdatedContextPreviousAttribute, ) -from .flag_rule_updated_context_access_type import FlagRuleUpdatedContextAccessType @dataclass(slots=True) @@ -24,38 +24,38 @@ class FlagRuleUpdatedContext: client_id: str """The client ID associated with the flag event.""" - actor: "FlagRuleUpdatedContextActor" + actor: FlagRuleUpdatedContextActor """The actor who performed the action.""" - access_type: "FlagRuleUpdatedContextAccessType" + access_type: FlagRuleUpdatedContextAccessType """The access type of the flag rule.""" - configured_targets: "FlagRuleUpdatedContextConfiguredTarget" + configured_targets: FlagRuleUpdatedContextConfiguredTarget """The configured targets for the flag rule.""" - previous_attributes: "FlagRuleUpdatedContextPreviousAttribute" + previous_attributes: FlagRuleUpdatedContextPreviousAttribute """Attributes that changed from their previous values.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagRuleUpdatedContext": + def from_dict(cls, data: dict[str, Any]) -> FlagRuleUpdatedContext: """Deserialize from a dictionary.""" try: return cls( client_id=data["client_id"], actor=FlagRuleUpdatedContextActor.from_dict( - cast(Dict[str, Any], data["actor"]) + cast(dict[str, Any], data["actor"]) ), access_type=FlagRuleUpdatedContextAccessType(data["access_type"]), configured_targets=FlagRuleUpdatedContextConfiguredTarget.from_dict( - cast(Dict[str, Any], data["configured_targets"]) + cast(dict[str, Any], data["configured_targets"]) ), previous_attributes=FlagRuleUpdatedContextPreviousAttribute.from_dict( - cast(Dict[str, Any], data["previous_attributes"]) + cast(dict[str, Any], data["previous_attributes"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdatedContext", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["client_id"] = self.client_id result["actor"] = self.actor.to_dict() result["access_type"] = ( diff --git a/src/workos/common/models/flag_rule_updated_context_access_type.py b/src/workos/common/models/flag_rule_updated_context_access_type.py index 3a7ed2a0..9bb0acca 100644 --- a/src/workos/common/models/flag_rule_updated_context_access_type.py +++ b/src/workos/common/models/flag_rule_updated_context_access_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class FlagRuleUpdatedContextAccessType(str, Enum): ALL = "all" @classmethod - def _missing_(cls, value: object) -> Optional["FlagRuleUpdatedContextAccessType"]: + def _missing_(cls, value: object) -> FlagRuleUpdatedContextAccessType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute.py index 08713dec..3233c0cb 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .flag_rule_updated_context_previous_attribute_context import ( @@ -19,25 +19,23 @@ class FlagRuleUpdatedContextPreviousAttribute: """Attributes that changed from their previous values.""" - data: Optional["FlagRuleUpdatedContextPreviousAttributeData"] = None + data: FlagRuleUpdatedContextPreviousAttributeData | None = None """The previous data attributes of the flag.""" - context: Optional["FlagRuleUpdatedContextPreviousAttributeContext"] = None + context: FlagRuleUpdatedContextPreviousAttributeContext | None = None """The previous context attributes of the flag rule.""" @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagRuleUpdatedContextPreviousAttribute": + def from_dict(cls, data: dict[str, Any]) -> FlagRuleUpdatedContextPreviousAttribute: """Deserialize from a dictionary.""" try: return cls( data=FlagRuleUpdatedContextPreviousAttributeData.from_dict( - cast(Dict[str, Any], _v_data) + cast(dict[str, Any], _v_data) ) if (_v_data := data.get("data")) is not None else None, context=FlagRuleUpdatedContextPreviousAttributeContext.from_dict( - cast(Dict[str, Any], _v_context) + cast(dict[str, Any], _v_context) ) if (_v_context := data.get("context")) is not None else None, @@ -45,9 +43,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdatedContextPreviousAttribute", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.data is not None: result["data"] = self.data.to_dict() if self.context is not None: diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context.py index bc1edef1..e4470de7 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context.py @@ -4,35 +4,33 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error -from .flag_rule_updated_context_previous_attribute_context_configured_target import ( - FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget, -) from .flag_rule_updated_context_previous_attribute_context_access_type import ( FlagRuleUpdatedContextPreviousAttributeContextAccessType, ) +from .flag_rule_updated_context_previous_attribute_context_configured_target import ( + FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget, +) @dataclass(slots=True) class FlagRuleUpdatedContextPreviousAttributeContext: """The previous context attributes of the flag rule.""" - access_type: Optional[ - "FlagRuleUpdatedContextPreviousAttributeContextAccessType" - ] = None + access_type: FlagRuleUpdatedContextPreviousAttributeContextAccessType | None = None """The previous access type of the flag rule.""" - configured_targets: Optional[ - "FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget" - ] = None + configured_targets: ( + FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget | None + ) = None """The previous configured targets for the flag rule.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagRuleUpdatedContextPreviousAttributeContext": + cls, data: dict[str, Any] + ) -> FlagRuleUpdatedContextPreviousAttributeContext: """Deserialize from a dictionary.""" try: return cls( @@ -42,7 +40,7 @@ def from_dict( if (_v_access_type := data.get("access_type")) is not None else None, configured_targets=FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget.from_dict( - cast(Dict[str, Any], _v_configured_targets) + cast(dict[str, Any], _v_configured_targets) ) if (_v_configured_targets := data.get("configured_targets")) is not None else None, @@ -52,9 +50,9 @@ def from_dict( "FlagRuleUpdatedContextPreviousAttributeContext", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.access_type is not None: result["access_type"] = ( self.access_type.value diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_access_type.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_access_type.py index 0ec0f9ba..11008851 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_access_type.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute_context_access_type.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .flag_rule_updated_context_access_type import FlagRuleUpdatedContextAccessType FlagRuleUpdatedContextPreviousAttributeContextAccessType: TypeAlias = ( diff --git a/src/workos/common/models/flag_rule_updated_context_previous_attribute_data.py b/src/workos/common/models/flag_rule_updated_context_previous_attribute_data.py index 1c4692f1..8a7a75f2 100644 --- a/src/workos/common/models/flag_rule_updated_context_previous_attribute_data.py +++ b/src/workos/common/models/flag_rule_updated_context_previous_attribute_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,15 +12,15 @@ class FlagRuleUpdatedContextPreviousAttributeData: """The previous data attributes of the flag.""" - enabled: Optional[bool] = None + enabled: bool | None = None """Whether the flag was previously enabled.""" - default_value: Optional[bool] = None + default_value: bool | None = None """The previous default value of the flag.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagRuleUpdatedContextPreviousAttributeData": + cls, data: dict[str, Any] + ) -> FlagRuleUpdatedContextPreviousAttributeData: """Deserialize from a dictionary.""" try: return cls( @@ -29,9 +30,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("FlagRuleUpdatedContextPreviousAttributeData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.enabled is not None: result["enabled"] = self.enabled if self.default_value is not None: diff --git a/src/workos/common/models/flag_updated.py b/src/workos/common/models/flag_updated.py index a99c937e..a6ca6790 100644 --- a/src/workos/common/models/flag_updated.py +++ b/src/workos/common/models/flag_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .flag_updated_context import FlagUpdatedContext from .flag_updated_data import FlagUpdatedData @@ -22,33 +21,33 @@ class FlagUpdated: id: str """Unique identifier for the event.""" event: Literal["flag.updated"] - data: "FlagUpdatedData" + data: FlagUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: "FlagUpdatedContext" + context: FlagUpdatedContext """Additional context about the event.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagUpdated": + def from_dict(cls, data: dict[str, Any]) -> FlagUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "flag.updated"), - data=FlagUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=FlagUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), context=FlagUpdatedContext.from_dict( - cast(Dict[str, Any], data["context"]) + cast(dict[str, Any], data["context"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/flag_updated_context.py b/src/workos/common/models/flag_updated_context.py index a14a4f91..777d66ff 100644 --- a/src/workos/common/models/flag_updated_context.py +++ b/src/workos/common/models/flag_updated_context.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .flag_updated_context_actor import FlagUpdatedContextActor @@ -17,22 +17,22 @@ class FlagUpdatedContext: client_id: str """The client ID associated with the flag event.""" - actor: "FlagUpdatedContextActor" + actor: FlagUpdatedContextActor """The actor who performed the action.""" - previous_attributes: Optional["FlagUpdatedContextPreviousAttribute"] = None + previous_attributes: FlagUpdatedContextPreviousAttribute | None = None """Attributes that changed from their previous values.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagUpdatedContext": + def from_dict(cls, data: dict[str, Any]) -> FlagUpdatedContext: """Deserialize from a dictionary.""" try: return cls( client_id=data["client_id"], actor=FlagUpdatedContextActor.from_dict( - cast(Dict[str, Any], data["actor"]) + cast(dict[str, Any], data["actor"]) ), previous_attributes=FlagUpdatedContextPreviousAttribute.from_dict( - cast(Dict[str, Any], _v_previous_attributes) + cast(dict[str, Any], _v_previous_attributes) ) if (_v_previous_attributes := data.get("previous_attributes")) is not None @@ -41,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "FlagUpdatedContext": except (KeyError, ValueError) as e: _raise_deserialize_error("FlagUpdatedContext", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["client_id"] = self.client_id result["actor"] = self.actor.to_dict() if self.previous_attributes is not None: diff --git a/src/workos/common/models/flag_updated_context_previous_attribute.py b/src/workos/common/models/flag_updated_context_previous_attribute.py index 9a0ed3c3..5c4cef89 100644 --- a/src/workos/common/models/flag_updated_context_previous_attribute.py +++ b/src/workos/common/models/flag_updated_context_previous_attribute.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .flag_updated_context_previous_attribute_data import ( @@ -16,16 +16,16 @@ class FlagUpdatedContextPreviousAttribute: """Attributes that changed from their previous values.""" - data: Optional["FlagUpdatedContextPreviousAttributeData"] = None + data: FlagUpdatedContextPreviousAttributeData | None = None """The previous data attributes of the flag.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagUpdatedContextPreviousAttribute": + def from_dict(cls, data: dict[str, Any]) -> FlagUpdatedContextPreviousAttribute: """Deserialize from a dictionary.""" try: return cls( data=FlagUpdatedContextPreviousAttributeData.from_dict( - cast(Dict[str, Any], _v_data) + cast(dict[str, Any], _v_data) ) if (_v_data := data.get("data")) is not None else None, @@ -33,9 +33,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "FlagUpdatedContextPreviousAttribute except (KeyError, ValueError) as e: _raise_deserialize_error("FlagUpdatedContextPreviousAttribute", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.data is not None: result["data"] = self.data.to_dict() return result diff --git a/src/workos/common/models/flag_updated_context_previous_attribute_data.py b/src/workos/common/models/flag_updated_context_previous_attribute_data.py index 6e22b19d..7c84b0c8 100644 --- a/src/workos/common/models/flag_updated_context_previous_attribute_data.py +++ b/src/workos/common/models/flag_updated_context_previous_attribute_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, List, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,21 +12,19 @@ class FlagUpdatedContextPreviousAttributeData: """The previous data attributes of the flag.""" - name: Optional[str] = None + name: str | None = None """The previous name of the flag.""" - description: Optional[str] = None + description: str | None = None """The previous description of the flag.""" - tags: Optional[List[str]] = None + tags: list[str] | None = None """The previous tags of the flag.""" - enabled: Optional[bool] = None + enabled: bool | None = None """Whether the flag was previously enabled.""" - default_value: Optional[bool] = None + default_value: bool | None = None """The previous default value of the flag.""" @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "FlagUpdatedContextPreviousAttributeData": + def from_dict(cls, data: dict[str, Any]) -> FlagUpdatedContextPreviousAttributeData: """Deserialize from a dictionary.""" try: return cls( @@ -38,9 +37,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("FlagUpdatedContextPreviousAttributeData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.name is not None: result["name"] = self.name if self.description is not None: diff --git a/src/workos/common/models/group_created.py b/src/workos/common/models/group_created.py index 3bf15f76..2c32e170 100644 --- a/src/workos/common/models/group_created.py +++ b/src/workos/common/models/group_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .group import Group @@ -22,32 +21,32 @@ class GroupCreated: id: str """Unique identifier for the event.""" event: Literal["group.created"] - data: "Group" + data: Group """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupCreated": + def from_dict(cls, data: dict[str, Any]) -> GroupCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "group.created"), - data=Group.from_dict(cast(Dict[str, Any], data["data"])), + data=Group.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/group_updated.py b/src/workos/common/models/group_updated.py index 8318de60..ea2d9c9f 100644 --- a/src/workos/common/models/group_updated.py +++ b/src/workos/common/models/group_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .group import Group @@ -22,32 +21,32 @@ class GroupUpdated: id: str """Unique identifier for the event.""" event: Literal["group.updated"] - data: "Group" + data: Group """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupUpdated": + def from_dict(cls, data: dict[str, Any]) -> GroupUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "group.updated"), - data=Group.from_dict(cast(Dict[str, Any], data["data"])), + data=Group.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/invitation_created.py b/src/workos/common/models/invitation_created.py index 2d492f97..3d98565d 100644 --- a/src/workos/common/models/invitation_created.py +++ b/src/workos/common/models/invitation_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .invitation_created_data import InvitationCreatedData @@ -22,14 +21,14 @@ class InvitationCreated: id: str """Unique identifier for the event.""" event: Literal["invitation.created"] - data: "InvitationCreatedData" + data: InvitationCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "InvitationCreated": + def from_dict(cls, data: dict[str, Any]) -> InvitationCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "InvitationCreated": id=data["id"], event=data.get("event", "invitation.created"), data=InvitationCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("InvitationCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/magic_auth_created.py b/src/workos/common/models/magic_auth_created.py index 04e865b7..a8941072 100644 --- a/src/workos/common/models/magic_auth_created.py +++ b/src/workos/common/models/magic_auth_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .magic_auth_created_data import MagicAuthCreatedData @@ -22,32 +21,32 @@ class MagicAuthCreated: id: str """Unique identifier for the event.""" event: Literal["magic_auth.created"] - data: "MagicAuthCreatedData" + data: MagicAuthCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "MagicAuthCreated": + def from_dict(cls, data: dict[str, Any]) -> MagicAuthCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "magic_auth.created"), - data=MagicAuthCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=MagicAuthCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("MagicAuthCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/magic_auth_created_data.py b/src/workos/common/models/magic_auth_created_data.py index 2dfad24a..50c27dd4 100644 --- a/src/workos/common/models/magic_auth_created_data.py +++ b/src/workos/common/models/magic_auth_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -29,7 +29,7 @@ class MagicAuthCreatedData: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "MagicAuthCreatedData": + def from_dict(cls, data: dict[str, Any]) -> MagicAuthCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -44,9 +44,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "MagicAuthCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("MagicAuthCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/common/models/organization_created.py b/src/workos/common/models/organization_created.py index dced9181..e34fb3a5 100644 --- a/src/workos/common/models/organization_created.py +++ b/src/workos/common/models/organization_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_created_data import OrganizationCreatedData @@ -22,14 +21,14 @@ class OrganizationCreated: id: str """Unique identifier for the event.""" event: Literal["organization.created"] - data: "OrganizationCreatedData" + data: OrganizationCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationCreated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationCreated": id=data["id"], event=data.get("event", "organization.created"), data=OrganizationCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_created_data.py b/src/workos/common/models/organization_created_data.py index 7589e4a6..8b18b921 100644 --- a/src/workos/common/models/organization_created_data.py +++ b/src/workos/common/models/organization_created_data.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .organization_created_data_domain import OrganizationCreatedDataDomain @@ -22,21 +21,21 @@ class OrganizationCreatedData: """Unique identifier of the Organization.""" name: str """A descriptive name for the Organization. This field does not need to be unique.""" - domains: List["OrganizationCreatedDataDomain"] + domains: list[OrganizationCreatedDataDomain] """List of Organization Domains.""" - metadata: Dict[str, str] + metadata: dict[str, str] """Object containing [metadata](https://workos.com/docs/authkit/metadata) key/value pairs associated with the Organization.""" - external_id: Optional[str] + external_id: str | None """The external ID of the Organization.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - stripe_customer_id: Optional[str] = None + stripe_customer_id: str | None = None """The Stripe customer ID of the Organization.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationCreatedData": + def from_dict(cls, data: dict[str, Any]) -> OrganizationCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -44,7 +43,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationCreatedData": id=data["id"], name=data["name"], domains=[ - OrganizationCreatedDataDomain.from_dict(cast(Dict[str, Any], item)) + OrganizationCreatedDataDomain.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["domains"]) ], metadata=data["metadata"], @@ -56,9 +55,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["name"] = self.name diff --git a/src/workos/common/models/organization_created_data_domain_state.py b/src/workos/common/models/organization_created_data_domain_state.py index 2d30b29e..e6da54c6 100644 --- a/src/workos/common/models/organization_created_data_domain_state.py +++ b/src/workos/common/models/organization_created_data_domain_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,7 +18,7 @@ class OrganizationCreatedDataDomainState(str, Enum): VERIFIED = "verified" @classmethod - def _missing_(cls, value: object) -> Optional["OrganizationCreatedDataDomainState"]: + def _missing_(cls, value: object) -> OrganizationCreatedDataDomainState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/organization_created_data_domain_verification_strategy.py b/src/workos/common/models/organization_created_data_domain_verification_strategy.py index d2f4ccda..39697c92 100644 --- a/src/workos/common/models/organization_created_data_domain_verification_strategy.py +++ b/src/workos/common/models/organization_created_data_domain_verification_strategy.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class OrganizationCreatedDataDomainVerificationStrategy(str, Enum): @classmethod def _missing_( cls, value: object - ) -> Optional["OrganizationCreatedDataDomainVerificationStrategy"]: + ) -> OrganizationCreatedDataDomainVerificationStrategy | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/organization_domain_created.py b/src/workos/common/models/organization_domain_created.py index 8f876f33..205ab3da 100644 --- a/src/workos/common/models/organization_domain_created.py +++ b/src/workos/common/models/organization_domain_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_domain_created_data import OrganizationDomainCreatedData @@ -22,14 +21,14 @@ class OrganizationDomainCreated: id: str """Unique identifier for the event.""" event: Literal["organization_domain.created"] - data: "OrganizationDomainCreatedData" + data: OrganizationDomainCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainCreated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainCreated": id=data["id"], event=data.get("event", "organization_domain.created"), data=OrganizationDomainCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_domain_created_data_verification_strategy.py b/src/workos/common/models/organization_domain_created_data_verification_strategy.py index a169f23a..9817e502 100644 --- a/src/workos/common/models/organization_domain_created_data_verification_strategy.py +++ b/src/workos/common/models/organization_domain_created_data_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_domain_updated.py b/src/workos/common/models/organization_domain_updated.py index 1c5cadb2..b302e3db 100644 --- a/src/workos/common/models/organization_domain_updated.py +++ b/src/workos/common/models/organization_domain_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_domain_updated_data import OrganizationDomainUpdatedData @@ -22,14 +21,14 @@ class OrganizationDomainUpdated: id: str """Unique identifier for the event.""" event: Literal["organization_domain.updated"] - data: "OrganizationDomainUpdatedData" + data: OrganizationDomainUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainUpdated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainUpdated": id=data["id"], event=data.get("event", "organization_domain.updated"), data=OrganizationDomainUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_domain_updated_data_verification_strategy.py b/src/workos/common/models/organization_domain_updated_data_verification_strategy.py index 2191981a..d87b49d6 100644 --- a/src/workos/common/models/organization_domain_updated_data_verification_strategy.py +++ b/src/workos/common/models/organization_domain_updated_data_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_membership_created.py b/src/workos/common/models/organization_membership_created.py index 92beced3..85245de0 100644 --- a/src/workos/common/models/organization_membership_created.py +++ b/src/workos/common/models/organization_membership_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_membership_created_data import OrganizationMembershipCreatedData @@ -22,14 +21,14 @@ class OrganizationMembershipCreated: id: str """Unique identifier for the event.""" event: Literal["organization_membership.created"] - data: "OrganizationMembershipCreatedData" + data: OrganizationMembershipCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipCreated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationMembershipCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipCreated": id=data["id"], event=data.get("event", "organization_membership.created"), data=OrganizationMembershipCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationMembershipCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_membership_created_data.py b/src/workos/common/models/organization_membership_created_data.py index bb742f77..832820e7 100644 --- a/src/workos/common/models/organization_membership_created_data.py +++ b/src/workos/common/models/organization_membership_created_data.py @@ -5,15 +5,14 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error -from .slim_role import SlimRole from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) +from .slim_role import SlimRole @dataclass(slots=True) @@ -28,11 +27,11 @@ class OrganizationMembershipCreatedData: """The ID of the user.""" organization_id: str """The ID of the organization.""" - status: "OrganizationMembershipCreatedDataStatus" + status: OrganizationMembershipCreatedDataStatus """The status of the organization membership.""" - role: "SlimRole" + role: SlimRole """The role associated with the membership.""" - custom_attributes: Dict[str, Any] + custom_attributes: dict[str, Any] """Custom attributes associated with the membership.""" directory_managed: bool """Whether the membership is managed by a directory sync provider.""" @@ -40,11 +39,11 @@ class OrganizationMembershipCreatedData: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - roles: Optional[List["SlimRole"]] = None + roles: list[SlimRole] | None = None """The roles associated with the membership.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipCreatedData": + def from_dict(cls, data: dict[str, Any]) -> OrganizationMembershipCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -53,13 +52,13 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipCreatedData": user_id=data["user_id"], organization_id=data["organization_id"], status=OrganizationMembershipCreatedDataStatus(data["status"]), - role=SlimRole.from_dict(cast(Dict[str, Any], data["role"])), + role=SlimRole.from_dict(cast(dict[str, Any], data["role"])), custom_attributes=data["custom_attributes"], directory_managed=data["directory_managed"], created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), roles=[ - SlimRole.from_dict(cast(Dict[str, Any], item)) + SlimRole.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_roles) ] if (_v_roles := data.get("roles")) is not None @@ -68,9 +67,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationMembershipCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/common/models/organization_membership_created_data_status.py b/src/workos/common/models/organization_membership_created_data_status.py index 297fee7a..841a0644 100644 --- a/src/workos/common/models/organization_membership_created_data_status.py +++ b/src/workos/common/models/organization_membership_created_data_status.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,9 +16,7 @@ class OrganizationMembershipCreatedDataStatus(str, Enum): PENDING = "pending" @classmethod - def _missing_( - cls, value: object - ) -> Optional["OrganizationMembershipCreatedDataStatus"]: + def _missing_(cls, value: object) -> OrganizationMembershipCreatedDataStatus | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/organization_membership_updated.py b/src/workos/common/models/organization_membership_updated.py index a5a124b0..cf7612e0 100644 --- a/src/workos/common/models/organization_membership_updated.py +++ b/src/workos/common/models/organization_membership_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_membership_updated_data import OrganizationMembershipUpdatedData @@ -22,14 +21,14 @@ class OrganizationMembershipUpdated: id: str """Unique identifier for the event.""" event: Literal["organization_membership.updated"] - data: "OrganizationMembershipUpdatedData" + data: OrganizationMembershipUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipUpdated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationMembershipUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipUpdated": id=data["id"], event=data.get("event", "organization_membership.updated"), data=OrganizationMembershipUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationMembershipUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_membership_updated_data_status.py b/src/workos/common/models/organization_membership_updated_data_status.py index 13348036..cd65e39d 100644 --- a/src/workos/common/models/organization_membership_updated_data_status.py +++ b/src/workos/common/models/organization_membership_updated_data_status.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) diff --git a/src/workos/common/models/organization_role_created.py b/src/workos/common/models/organization_role_created.py index 3eac8508..2640effa 100644 --- a/src/workos/common/models/organization_role_created.py +++ b/src/workos/common/models/organization_role_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_role_created_data import OrganizationRoleCreatedData @@ -22,14 +21,14 @@ class OrganizationRoleCreated: id: str """Unique identifier for the event.""" event: Literal["organization_role.created"] - data: "OrganizationRoleCreatedData" + data: OrganizationRoleCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleCreated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationRoleCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleCreated": id=data["id"], event=data.get("event", "organization_role.created"), data=OrganizationRoleCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationRoleCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_role_created_data.py b/src/workos/common/models/organization_role_created_data.py index c2438209..bda3cf48 100644 --- a/src/workos/common/models/organization_role_created_data.py +++ b/src/workos/common/models/organization_role_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -21,11 +21,11 @@ class OrganizationRoleCreatedData: """The slug identifier of the role.""" name: str """The name of the role.""" - description: Optional[str] + description: str | None """A description of the role.""" resource_type_slug: str """The slug of the resource type the role applies to.""" - permissions: List[str] + permissions: list[str] """The permissions granted by the role.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -33,7 +33,7 @@ class OrganizationRoleCreatedData: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleCreatedData": + def from_dict(cls, data: dict[str, Any]) -> OrganizationRoleCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -50,9 +50,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationRoleCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["organization_id"] = self.organization_id result["slug"] = self.slug diff --git a/src/workos/common/models/organization_role_updated.py b/src/workos/common/models/organization_role_updated.py index 31499846..d95e73d2 100644 --- a/src/workos/common/models/organization_role_updated.py +++ b/src/workos/common/models/organization_role_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_role_updated_data import OrganizationRoleUpdatedData @@ -22,14 +21,14 @@ class OrganizationRoleUpdated: id: str """Unique identifier for the event.""" event: Literal["organization_role.updated"] - data: "OrganizationRoleUpdatedData" + data: OrganizationRoleUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleUpdated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationRoleUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleUpdated": id=data["id"], event=data.get("event", "organization_role.updated"), data=OrganizationRoleUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationRoleUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_updated.py b/src/workos/common/models/organization_updated.py index f1a30e81..99bfae38 100644 --- a/src/workos/common/models/organization_updated.py +++ b/src/workos/common/models/organization_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_updated_data import OrganizationUpdatedData @@ -22,14 +21,14 @@ class OrganizationUpdated: id: str """Unique identifier for the event.""" event: Literal["organization.updated"] - data: "OrganizationUpdatedData" + data: OrganizationUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationUpdated": + def from_dict(cls, data: dict[str, Any]) -> OrganizationUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationUpdated": id=data["id"], event=data.get("event", "organization.updated"), data=OrganizationUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_updated_data_domain_verification_strategy.py b/src/workos/common/models/organization_updated_data_domain_verification_strategy.py index 0e5a1f97..ef8b7dce 100644 --- a/src/workos/common/models/organization_updated_data_domain_verification_strategy.py +++ b/src/workos/common/models/organization_updated_data_domain_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/password_reset_created.py b/src/workos/common/models/password_reset_created.py index fa243571..2d5fdfaa 100644 --- a/src/workos/common/models/password_reset_created.py +++ b/src/workos/common/models/password_reset_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .password_reset_created_data import PasswordResetCreatedData @@ -22,14 +21,14 @@ class PasswordResetCreated: id: str """Unique identifier for the event.""" event: Literal["password_reset.created"] - data: "PasswordResetCreatedData" + data: PasswordResetCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetCreated": + def from_dict(cls, data: dict[str, Any]) -> PasswordResetCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetCreated": id=data["id"], event=data.get("event", "password_reset.created"), data=PasswordResetCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PasswordResetCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/password_reset_created_data.py b/src/workos/common/models/password_reset_created_data.py index 2f1a348d..d051767e 100644 --- a/src/workos/common/models/password_reset_created_data.py +++ b/src/workos/common/models/password_reset_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -27,7 +27,7 @@ class PasswordResetCreatedData: """The timestamp when the password reset token was created.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetCreatedData": + def from_dict(cls, data: dict[str, Any]) -> PasswordResetCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("PasswordResetCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/common/models/permission_created.py b/src/workos/common/models/permission_created.py index 86795636..aca488be 100644 --- a/src/workos/common/models/permission_created.py +++ b/src/workos/common/models/permission_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .permission_created_data import PermissionCreatedData @@ -22,14 +21,14 @@ class PermissionCreated: id: str """Unique identifier for the event.""" event: Literal["permission.created"] - data: "PermissionCreatedData" + data: PermissionCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PermissionCreated": + def from_dict(cls, data: dict[str, Any]) -> PermissionCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PermissionCreated": id=data["id"], event=data.get("event", "permission.created"), data=PermissionCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PermissionCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/permission_updated.py b/src/workos/common/models/permission_updated.py index 72612eaf..dba8000f 100644 --- a/src/workos/common/models/permission_updated.py +++ b/src/workos/common/models/permission_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .permission_updated_data import PermissionUpdatedData @@ -22,14 +21,14 @@ class PermissionUpdated: id: str """Unique identifier for the event.""" event: Literal["permission.updated"] - data: "PermissionUpdatedData" + data: PermissionUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PermissionUpdated": + def from_dict(cls, data: dict[str, Any]) -> PermissionUpdated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PermissionUpdated": id=data["id"], event=data.get("event", "permission.updated"), data=PermissionUpdatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PermissionUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/radar_challenge_created.py b/src/workos/common/models/radar_challenge_created.py index 8c566104..c53fd643 100644 --- a/src/workos/common/models/radar_challenge_created.py +++ b/src/workos/common/models/radar_challenge_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .radar_challenge_created_data import RadarChallengeCreatedData @@ -22,14 +21,14 @@ class RadarChallengeCreated: id: str """Unique identifier for the event.""" event: Literal["radar.challenge_created"] - data: "RadarChallengeCreatedData" + data: RadarChallengeCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RadarChallengeCreated": + def from_dict(cls, data: dict[str, Any]) -> RadarChallengeCreated: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "RadarChallengeCreated": id=data["id"], event=data.get("event", "radar.challenge_created"), data=RadarChallengeCreatedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("RadarChallengeCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/radar_challenge_created_data.py b/src/workos/common/models/radar_challenge_created_data.py index b4ee14ba..9488c8e9 100644 --- a/src/workos/common/models/radar_challenge_created_data.py +++ b/src/workos/common/models/radar_challenge_created_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -21,7 +22,7 @@ class RadarChallengeCreatedData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RadarChallengeCreatedData": + def from_dict(cls, data: dict[str, Any]) -> RadarChallengeCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RadarChallengeCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("RadarChallengeCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["radar_challenge_id"] = self.radar_challenge_id result["user_id"] = self.user_id diff --git a/src/workos/common/models/role_created.py b/src/workos/common/models/role_created.py index 8532139f..22522c62 100644 --- a/src/workos/common/models/role_created.py +++ b/src/workos/common/models/role_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .role_created_data import RoleCreatedData @@ -22,32 +21,32 @@ class RoleCreated: id: str """Unique identifier for the event.""" event: Literal["role.created"] - data: "RoleCreatedData" + data: RoleCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RoleCreated": + def from_dict(cls, data: dict[str, Any]) -> RoleCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "role.created"), - data=RoleCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=RoleCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("RoleCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/role_created_data.py b/src/workos/common/models/role_created_data.py index a6b347c1..f7f134ef 100644 --- a/src/workos/common/models/role_created_data.py +++ b/src/workos/common/models/role_created_data.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -23,11 +23,11 @@ class RoleCreatedData: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - permissions: Optional[List[str]] = None + permissions: list[str] | None = None """The permissions granted by the role.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RoleCreatedData": + def from_dict(cls, data: dict[str, Any]) -> RoleCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RoleCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("RoleCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["slug"] = self.slug result["resource_type_slug"] = self.resource_type_slug diff --git a/src/workos/common/models/role_updated.py b/src/workos/common/models/role_updated.py index 9c100c67..aaf8644d 100644 --- a/src/workos/common/models/role_updated.py +++ b/src/workos/common/models/role_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .role_updated_data import RoleUpdatedData @@ -22,32 +21,32 @@ class RoleUpdated: id: str """Unique identifier for the event.""" event: Literal["role.updated"] - data: "RoleUpdatedData" + data: RoleUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RoleUpdated": + def from_dict(cls, data: dict[str, Any]) -> RoleUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "role.updated"), - data=RoleUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=RoleUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("RoleUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/session_created.py b/src/workos/common/models/session_created.py index a3d2fbc1..1709dfa2 100644 --- a/src/workos/common/models/session_created.py +++ b/src/workos/common/models/session_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .session_created_data import SessionCreatedData @@ -22,32 +21,32 @@ class SessionCreated: id: str """Unique identifier for the event.""" event: Literal["session.created"] - data: "SessionCreatedData" + data: SessionCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "SessionCreated": + def from_dict(cls, data: dict[str, Any]) -> SessionCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "session.created"), - data=SessionCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=SessionCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("SessionCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/session_created_data_auth_method.py b/src/workos/common/models/session_created_data_auth_method.py index d2ae2a7d..b088fa75 100644 --- a/src/workos/common/models/session_created_data_auth_method.py +++ b/src/workos/common/models/session_created_data_auth_method.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -24,7 +23,7 @@ class SessionCreatedDataAuthMethod(str, Enum): UNKNOWN = "unknown" @classmethod - def _missing_(cls, value: object) -> Optional["SessionCreatedDataAuthMethod"]: + def _missing_(cls, value: object) -> SessionCreatedDataAuthMethod | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/session_created_data_status.py b/src/workos/common/models/session_created_data_status.py index 17bad1de..63fcace7 100644 --- a/src/workos/common/models/session_created_data_status.py +++ b/src/workos/common/models/session_created_data_status.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class SessionCreatedDataStatus(str, Enum): REVOKED = "revoked" @classmethod - def _missing_(cls, value: object) -> Optional["SessionCreatedDataStatus"]: + def _missing_(cls, value: object) -> SessionCreatedDataStatus | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/update_webhook_endpoint_status.py b/src/workos/common/models/update_webhook_endpoint_status.py index 927bafde..630605b8 100644 --- a/src/workos/common/models/update_webhook_endpoint_status.py +++ b/src/workos/common/models/update_webhook_endpoint_status.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class UpdateWebhookEndpointStatus(str, Enum): DISABLED = "disabled" @classmethod - def _missing_(cls, value: object) -> Optional["UpdateWebhookEndpointStatus"]: + def _missing_(cls, value: object) -> UpdateWebhookEndpointStatus | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/user_api_key_created_data_owner.py b/src/workos/common/models/user_api_key_created_data_owner.py index fc8a89f6..741fa45b 100644 --- a/src/workos/common/models/user_api_key_created_data_owner.py +++ b/src/workos/common/models/user_api_key_created_data_owner.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -19,7 +20,7 @@ class UserApiKeyCreatedDataOwner: """The unique identifier of the organization the API key belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserApiKeyCreatedDataOwner": + def from_dict(cls, data: dict[str, Any]) -> UserApiKeyCreatedDataOwner: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserApiKeyCreatedDataOwner": except (KeyError, ValueError) as e: _raise_deserialize_error("UserApiKeyCreatedDataOwner", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["id"] = self.id result["organization_id"] = self.organization_id diff --git a/src/workos/common/models/user_created.py b/src/workos/common/models/user_created.py index 5bfc6410..924ecba0 100644 --- a/src/workos/common/models/user_created.py +++ b/src/workos/common/models/user_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .user import User @@ -22,32 +21,32 @@ class UserCreated: id: str """Unique identifier for the event.""" event: Literal["user.created"] - data: "User" + data: User """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserCreated": + def from_dict(cls, data: dict[str, Any]) -> UserCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "user.created"), - data=User.from_dict(cast(Dict[str, Any], data["data"])), + data=User.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/user_updated.py b/src/workos/common/models/user_updated.py index e3159d50..3a65e9ec 100644 --- a/src/workos/common/models/user_updated.py +++ b/src/workos/common/models/user_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .user import User @@ -22,32 +21,32 @@ class UserUpdated: id: str """Unique identifier for the event.""" event: Literal["user.updated"] - data: "User" + data: User """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserUpdated": + def from_dict(cls, data: dict[str, Any]) -> UserUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "user.updated"), - data=User.from_dict(cast(Dict[str, Any], data["data"])), + data=User.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_data_created.py b/src/workos/common/models/vault_data_created.py index 33ed01d9..f61b1d87 100644 --- a/src/workos/common/models/vault_data_created.py +++ b/src/workos/common/models/vault_data_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_data_created_data import VaultDataCreatedData @@ -22,32 +21,32 @@ class VaultDataCreated: id: str """Unique identifier for the event.""" event: Literal["vault.data.created"] - data: "VaultDataCreatedData" + data: VaultDataCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataCreated": + def from_dict(cls, data: dict[str, Any]) -> VaultDataCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.data.created"), - data=VaultDataCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultDataCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_data_created_data.py b/src/workos/common/models/vault_data_created_data.py index 4155b560..1f37072c 100644 --- a/src/workos/common/models/vault_data_created_data.py +++ b/src/workos/common/models/vault_data_created_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_data_created_data_actor_source import VaultDataCreatedDataActorSource @@ -15,17 +17,17 @@ class VaultDataCreatedData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultDataCreatedDataActorSource" + actor_source: VaultDataCreatedDataActorSource actor_name: str """The name of the actor.""" kv_name: str """The name of the key-value store.""" key_id: str """The unique identifier of the encryption key.""" - key_context: Dict[str, str] + key_context: dict[str, str] @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataCreatedData": + def from_dict(cls, data: dict[str, Any]) -> VaultDataCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -39,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDataCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/vault_data_created_data_actor_source.py b/src/workos/common/models/vault_data_created_data_actor_source.py index 94994e67..c430187f 100644 --- a/src/workos/common/models/vault_data_created_data_actor_source.py +++ b/src/workos/common/models/vault_data_created_data_actor_source.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class VaultDataCreatedDataActorSource(str, Enum): DASHBOARD = "dashboard" @classmethod - def _missing_(cls, value: object) -> Optional["VaultDataCreatedDataActorSource"]: + def _missing_(cls, value: object) -> VaultDataCreatedDataActorSource | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/vault_data_updated.py b/src/workos/common/models/vault_data_updated.py index 791be53f..b0ae5b60 100644 --- a/src/workos/common/models/vault_data_updated.py +++ b/src/workos/common/models/vault_data_updated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_data_updated_data import VaultDataUpdatedData @@ -22,32 +21,32 @@ class VaultDataUpdated: id: str """Unique identifier for the event.""" event: Literal["vault.data.updated"] - data: "VaultDataUpdatedData" + data: VaultDataUpdatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataUpdated": + def from_dict(cls, data: dict[str, Any]) -> VaultDataUpdated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.data.updated"), - data=VaultDataUpdatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultDataUpdatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataUpdated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_kek_created.py b/src/workos/common/models/vault_kek_created.py index 3fe21141..459782eb 100644 --- a/src/workos/common/models/vault_kek_created.py +++ b/src/workos/common/models/vault_kek_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_kek_created_data import VaultKekCreatedData @@ -22,32 +21,32 @@ class VaultKekCreated: id: str """Unique identifier for the event.""" event: Literal["vault.kek.created"] - data: "VaultKekCreatedData" + data: VaultKekCreatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultKekCreated": + def from_dict(cls, data: dict[str, Any]) -> VaultKekCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.kek.created"), - data=VaultKekCreatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultKekCreatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultKekCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_kek_created_data.py b/src/workos/common/models/vault_kek_created_data.py index 975e0e96..328955dd 100644 --- a/src/workos/common/models/vault_kek_created_data.py +++ b/src/workos/common/models/vault_kek_created_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_kek_created_data_actor_source import VaultKekCreatedDataActorSource @@ -15,7 +17,7 @@ class VaultKekCreatedData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultKekCreatedDataActorSource" + actor_source: VaultKekCreatedDataActorSource actor_name: str """The name of the actor.""" key_name: str @@ -24,7 +26,7 @@ class VaultKekCreatedData: """The unique identifier of the key encryption key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultKekCreatedData": + def from_dict(cls, data: dict[str, Any]) -> VaultKekCreatedData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +39,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultKekCreatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultKekCreatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/waitlist_user_created.py b/src/workos/common/models/waitlist_user_created.py index f02037cc..00deaedd 100644 --- a/src/workos/common/models/waitlist_user_created.py +++ b/src/workos/common/models/waitlist_user_created.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .waitlist_user import WaitlistUser @@ -22,32 +21,32 @@ class WaitlistUserCreated: id: str """Unique identifier for the event.""" event: Literal["waitlist_user.created"] - data: "WaitlistUser" + data: WaitlistUser """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WaitlistUserCreated": + def from_dict(cls, data: dict[str, Any]) -> WaitlistUserCreated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "waitlist_user.created"), - data=WaitlistUser.from_dict(cast(Dict[str, Any], data["data"])), + data=WaitlistUser.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("WaitlistUserCreated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/connect/models/create_application_secret.py b/src/workos/connect/models/create_application_secret.py index 94dba52c..d0068ee7 100644 --- a/src/workos/connect/models/create_application_secret.py +++ b/src/workos/connect/models/create_application_secret.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -12,14 +13,14 @@ class CreateApplicationSecret: """Create Application Secret model.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateApplicationSecret": + def from_dict(cls, data: dict[str, Any]) -> CreateApplicationSecret: """Deserialize from a dictionary.""" try: return cls() except (KeyError, ValueError) as e: _raise_deserialize_error("CreateApplicationSecret", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} return result diff --git a/src/workos/connect/models/create_m2m_application.py b/src/workos/connect/models/create_m2m_application.py index 6cde06b4..661763fa 100644 --- a/src/workos/connect/models/create_m2m_application.py +++ b/src/workos/connect/models/create_m2m_application.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, List, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -17,13 +18,13 @@ class CreateM2MApplication: """The type of application to create.""" organization_id: str """The organization ID this application belongs to.""" - description: Optional[str] = None + description: str | None = None """A description for the application.""" - scopes: Optional[List[str]] = None + scopes: list[str] | None = None """The OAuth scopes granted to the application.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateM2MApplication": + def from_dict(cls, data: dict[str, Any]) -> CreateM2MApplication: """Deserialize from a dictionary.""" try: return cls( @@ -36,9 +37,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateM2MApplication": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateM2MApplication", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name result["application_type"] = self.application_type result["organization_id"] = self.organization_id diff --git a/src/workos/connect/models/create_oauth_application.py b/src/workos/connect/models/create_oauth_application.py index 67e00d54..9f2e9a1f 100644 --- a/src/workos/connect/models/create_oauth_application.py +++ b/src/workos/connect/models/create_oauth_application.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .redirect_uri_input import RedirectUriInput @@ -20,19 +20,19 @@ class CreateOAuthApplication: """The type of application to create.""" is_first_party: bool """Whether this is a first-party application. Third-party applications require an organization_id.""" - description: Optional[str] = None + description: str | None = None """A description for the application.""" - scopes: Optional[List[str]] = None + scopes: list[str] | None = None """The OAuth scopes granted to the application.""" - redirect_uris: Optional[List["RedirectUriInput"]] = None + redirect_uris: list[RedirectUriInput] | None = None """Redirect URIs for the application.""" - uses_pkce: Optional[bool] = None + uses_pkce: bool | None = None """Whether the application uses PKCE (Proof Key for Code Exchange).""" - organization_id: Optional[str] = None + organization_id: str | None = None """The organization ID this application belongs to. Required when is_first_party is false.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateOAuthApplication": + def from_dict(cls, data: dict[str, Any]) -> CreateOAuthApplication: """Deserialize from a dictionary.""" try: return cls( @@ -42,7 +42,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateOAuthApplication": description=data.get("description"), scopes=data.get("scopes"), redirect_uris=[ - RedirectUriInput.from_dict(cast(Dict[str, Any], item)) + RedirectUriInput.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_redirect_uris) ] if (_v_redirect_uris := data.get("redirect_uris")) is not None @@ -53,9 +53,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateOAuthApplication": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateOAuthApplication", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name result["application_type"] = self.application_type result["is_first_party"] = self.is_first_party diff --git a/src/workos/connect/models/update_oauth_application.py b/src/workos/connect/models/update_oauth_application.py index f555cffb..36c95d61 100644 --- a/src/workos/connect/models/update_oauth_application.py +++ b/src/workos/connect/models/update_oauth_application.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .redirect_uri_input import RedirectUriInput @@ -14,17 +14,17 @@ class UpdateOAuthApplication: """Update O Auth Application model.""" - name: Optional[str] = None + name: str | None = None """The name of the application.""" - description: Optional[str] = None + description: str | None = None """A description for the application.""" - scopes: Optional[List[str]] = None + scopes: list[str] | None = None """The OAuth scopes granted to the application.""" - redirect_uris: Optional[List["RedirectUriInput"]] = None + redirect_uris: list[RedirectUriInput] | None = None """Updated redirect URIs for the application. OAuth applications only.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateOAuthApplication": + def from_dict(cls, data: dict[str, Any]) -> UpdateOAuthApplication: """Deserialize from a dictionary.""" try: return cls( @@ -32,7 +32,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateOAuthApplication": description=data.get("description"), scopes=data.get("scopes"), redirect_uris=[ - RedirectUriInput.from_dict(cast(Dict[str, Any], item)) + RedirectUriInput.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_redirect_uris) ] if (_v_redirect_uris := data.get("redirect_uris")) is not None @@ -41,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateOAuthApplication": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateOAuthApplication", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.name is not None: result["name"] = self.name if self.description is not None: diff --git a/src/workos/groups/models/create_group.py b/src/workos/groups/models/create_group.py index da1cf2fa..9e24760b 100644 --- a/src/workos/groups/models/create_group.py +++ b/src/workos/groups/models/create_group.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,11 +14,11 @@ class CreateGroup: name: str """The name of the Group.""" - description: Optional[str] = None + description: str | None = None """An optional description of the Group.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateGroup": + def from_dict(cls, data: dict[str, Any]) -> CreateGroup: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateGroup": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateGroup", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name if self.description is not None: result["description"] = self.description diff --git a/src/workos/groups/models/create_group_membership.py b/src/workos/groups/models/create_group_membership.py index 0b3cf0d3..85877052 100644 --- a/src/workos/groups/models/create_group_membership.py +++ b/src/workos/groups/models/create_group_membership.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class CreateGroupMembership: """The ID of the Organization Membership to add to the group.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateGroupMembership": + def from_dict(cls, data: dict[str, Any]) -> CreateGroupMembership: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateGroupMembership": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateGroupMembership", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_membership_id"] = self.organization_membership_id return result diff --git a/src/workos/groups/models/update_group.py b/src/workos/groups/models/update_group.py index fb0cd719..9c8588cb 100644 --- a/src/workos/groups/models/update_group.py +++ b/src/workos/groups/models/update_group.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from workos.authorization.models.update_authorization_permission import ( UpdateAuthorizationPermission, ) diff --git a/src/workos/multi_factor_auth/models/authentication_factors_create_request.py b/src/workos/multi_factor_auth/models/authentication_factors_create_request.py index f5a3c1de..48dbb213 100644 --- a/src/workos/multi_factor_auth/models/authentication_factors_create_request.py +++ b/src/workos/multi_factor_auth/models/authentication_factors_create_request.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.authentication_factors_create_request_type import ( AuthenticationFactorsCreateRequestType, @@ -15,19 +16,19 @@ class AuthenticationFactorsCreateRequest: """Authentication Factors Create Request model.""" - type: "AuthenticationFactorsCreateRequestType" + type: AuthenticationFactorsCreateRequestType """The type of factor to enroll.""" - phone_number: Optional[str] = None + phone_number: str | None = None """Required when type is 'sms'.""" - totp_issuer: Optional[str] = None + totp_issuer: str | None = None """Required when type is 'totp'.""" - totp_user: Optional[str] = None + totp_user: str | None = None """Required when type is 'totp'.""" - user_id: Optional[str] = None + user_id: str | None = None """The ID of the user to associate the factor with.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorsCreateRequest": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactorsCreateRequest: """Deserialize from a dictionary.""" try: return cls( @@ -40,9 +41,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorsCreateRequest" except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactorsCreateRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type.value if isinstance(self.type, Enum) else self.type if self.phone_number is not None: result["phone_number"] = self.phone_number diff --git a/src/workos/organization_domains/models/create_organization_domain.py b/src/workos/organization_domains/models/create_organization_domain.py index b0b3c625..bbed24a5 100644 --- a/src/workos/organization_domains/models/create_organization_domain.py +++ b/src/workos/organization_domains/models/create_organization_domain.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class CreateOrganizationDomain: """The ID of the organization to add the domain to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationDomain": + def from_dict(cls, data: dict[str, Any]) -> CreateOrganizationDomain: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateOrganizationDomain": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateOrganizationDomain", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["domain"] = self.domain result["organization_id"] = self.organization_id return result diff --git a/src/workos/organizations/models/update_audit_logs_retention.py b/src/workos/organizations/models/update_audit_logs_retention.py index 0aed5b30..5ed3719c 100644 --- a/src/workos/organizations/models/update_audit_logs_retention.py +++ b/src/workos/organizations/models/update_audit_logs_retention.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class UpdateAuditLogsRetention: """The number of days Audit Log events will be retained. Valid values are `30` and `365`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuditLogsRetention": + def from_dict(cls, data: dict[str, Any]) -> UpdateAuditLogsRetention: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateAuditLogsRetention": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateAuditLogsRetention", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["retention_period_in_days"] = self.retention_period_in_days return result diff --git a/src/workos/organizations/models/update_organization.py b/src/workos/organizations/models/update_organization.py index e3d73e6e..a4bf87c0 100644 --- a/src/workos/organizations/models/update_organization.py +++ b/src/workos/organizations/models/update_organization.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .organization_domain_data import OrganizationDomainData @@ -14,25 +14,25 @@ class UpdateOrganization: """Update Organization model.""" - name: Optional[str] = None + name: str | None = None """The name of the organization.""" - allow_profiles_outside_organization: Optional[bool] = None + allow_profiles_outside_organization: bool | None = None """Whether the organization allows profiles from outside the organization to sign in.""" - domains: Optional[List[str]] = None + domains: list[str] | None = None """The domains associated with the organization. Deprecated in favor of `domain_data`. .. deprecated:: This field is deprecated.""" - domain_data: Optional[List["OrganizationDomainData"]] = None + domain_data: list[OrganizationDomainData] | None = None """The domains associated with the organization, including verification state.""" - stripe_customer_id: Optional[str] = None + stripe_customer_id: str | None = None """The Stripe customer ID associated with the organization.""" - metadata: Optional[Dict[str, str]] = None + metadata: dict[str, str] | None = None """Object containing [metadata](https://workos.com/docs/authkit/metadata) key/value pairs associated with the Organization.""" - external_id: Optional[str] = None + external_id: str | None = None """An external identifier for the Organization.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateOrganization": + def from_dict(cls, data: dict[str, Any]) -> UpdateOrganization: """Deserialize from a dictionary.""" try: return cls( @@ -42,7 +42,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateOrganization": ), domains=data.get("domains"), domain_data=[ - OrganizationDomainData.from_dict(cast(Dict[str, Any], item)) + OrganizationDomainData.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_domain_data) ] if (_v_domain_data := data.get("domain_data")) is not None @@ -54,9 +54,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateOrganization": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateOrganization", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.name is not None: result["name"] = self.name if self.allow_profiles_outside_organization is not None: diff --git a/src/workos/pipes/models/create_data_integration.py b/src/workos/pipes/models/create_data_integration.py index 5ab67ac0..873d4df6 100644 --- a/src/workos/pipes/models/create_data_integration.py +++ b/src/workos/pipes/models/create_data_integration.py @@ -29,7 +29,7 @@ class CreateDataIntegration: scopes: list[str] | None = None """The OAuth scopes to request for the Data Integration. Defaults to the provider's configured scopes when omitted.""" auth_methods: list[CreateDataIntegrationAuthMethods] | None = None - """How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request).""" + """How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request). Use `["client_credentials"]` to declare a client-credentials integration; `credentials` is likewise not required and client credentials are supplied per-tenant.""" config: dict[str, str] | None = None """Provider-specific config values (e.g. a Snowflake `account_identifier`), keyed by the config field. Only fields the built-in provider declares are accepted.""" credentials: DataIntegrationCredentialsInput | None = None diff --git a/src/workos/radar/models/radar_standalone_update_radar_attempt_request.py b/src/workos/radar/models/radar_standalone_update_radar_attempt_request.py index 942fe483..9a403312 100644 --- a/src/workos/radar/models/radar_standalone_update_radar_attempt_request.py +++ b/src/workos/radar/models/radar_standalone_update_radar_attempt_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -11,15 +12,15 @@ class RadarStandaloneUpdateRadarAttemptRequest: """Radar Standalone Update Radar Attempt Request model.""" - challenge_status: Optional[Literal["success"]] = None + challenge_status: Literal["success"] | None = None """Set to `"success"` to mark the challenge as completed.""" - attempt_status: Optional[Literal["success"]] = None + attempt_status: Literal["success"] | None = None """Set to `"success"` to mark the authentication attempt as successful.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "RadarStandaloneUpdateRadarAttemptRequest": + cls, data: dict[str, Any] + ) -> RadarStandaloneUpdateRadarAttemptRequest: """Deserialize from a dictionary.""" try: return cls( @@ -29,9 +30,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("RadarStandaloneUpdateRadarAttemptRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.challenge_status is not None: result["challenge_status"] = self.challenge_status if self.attempt_status is not None: diff --git a/src/workos/radar/models/radar_standalone_update_radar_list_request.py b/src/workos/radar/models/radar_standalone_update_radar_list_request.py index 4719bbb8..58b3e282 100644 --- a/src/workos/radar/models/radar_standalone_update_radar_list_request.py +++ b/src/workos/radar/models/radar_standalone_update_radar_list_request.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .radar_standalone_delete_radar_list_entry_request import ( RadarStandaloneDeleteRadarListEntryRequest, ) diff --git a/src/workos/vault/models/create_data_key_request.py b/src/workos/vault/models/create_data_key_request.py index 0a078f29..7f14c4f3 100644 --- a/src/workos/vault/models/create_data_key_request.py +++ b/src/workos/vault/models/create_data_key_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class CreateDataKeyRequest: """Create Data Key Request model.""" - context: Dict[str, str] + context: dict[str, str] """Map of values used to determine the encryption key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateDataKeyRequest": + def from_dict(cls, data: dict[str, Any]) -> CreateDataKeyRequest: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateDataKeyRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateDataKeyRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["context"] = self.context return result diff --git a/src/workos/vault/models/create_data_key_response.py b/src/workos/vault/models/create_data_key_response.py index 8039a077..219327a9 100644 --- a/src/workos/vault/models/create_data_key_response.py +++ b/src/workos/vault/models/create_data_key_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,7 +12,7 @@ class CreateDataKeyResponse: """Create Data Key Response model.""" - context: Dict[str, str] + context: dict[str, str] """Map of values used to determine the encryption key.""" data_key: str """Base64-encoded data encryption key.""" @@ -21,7 +22,7 @@ class CreateDataKeyResponse: """Unique identifier for the generated data key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateDataKeyResponse": + def from_dict(cls, data: dict[str, Any]) -> CreateDataKeyResponse: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateDataKeyResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateDataKeyResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["context"] = self.context result["data_key"] = self.data_key result["encrypted_keys"] = self.encrypted_keys diff --git a/src/workos/vault/models/create_object_request.py b/src/workos/vault/models/create_object_request.py index 8af0a4ce..310aac2d 100644 --- a/src/workos/vault/models/create_object_request.py +++ b/src/workos/vault/models/create_object_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,7 +12,7 @@ class CreateObjectRequest: """Create Object Request model.""" - key_context: Dict[str, str] + key_context: dict[str, str] """Map of values used to determine the encryption key.""" name: str """Unique name for the object.""" @@ -19,7 +20,7 @@ class CreateObjectRequest: """Plaintext data to encrypt and store.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateObjectRequest": + def from_dict(cls, data: dict[str, Any]) -> CreateObjectRequest: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateObjectRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateObjectRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["key_context"] = self.key_context result["name"] = self.name result["value"] = self.value diff --git a/src/workos/vault/models/update_object_request.py b/src/workos/vault/models/update_object_request.py index c20b02c7..07e657cd 100644 --- a/src/workos/vault/models/update_object_request.py +++ b/src/workos/vault/models/update_object_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,11 +14,11 @@ class UpdateObjectRequest: value: str """New plaintext value.""" - version_check: Optional[str] = None + version_check: str | None = None """ID of the expected current version for optimistic locking.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateObjectRequest": + def from_dict(cls, data: dict[str, Any]) -> UpdateObjectRequest: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateObjectRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateObjectRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["value"] = self.value if self.version_check is not None: result["version_check"] = self.version_check diff --git a/src/workos/webhooks/models/create_webhook_endpoint.py b/src/workos/webhooks/models/create_webhook_endpoint.py index 8f498e27..818284ca 100644 --- a/src/workos/webhooks/models/create_webhook_endpoint.py +++ b/src/workos/webhooks/models/create_webhook_endpoint.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, List +from typing import Any, cast + from workos._types import _raise_deserialize_error from workos.common.models.create_webhook_endpoint_events import ( CreateWebhookEndpointEvents, @@ -18,11 +18,11 @@ class CreateWebhookEndpoint: endpoint_url: str """The HTTPS URL where webhooks will be sent.""" - events: List["CreateWebhookEndpointEvents"] + events: list[CreateWebhookEndpointEvents] """The events that the Webhook Endpoint is subscribed to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CreateWebhookEndpoint": + def from_dict(cls, data: dict[str, Any]) -> CreateWebhookEndpoint: """Deserialize from a dictionary.""" try: return cls( @@ -35,9 +35,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CreateWebhookEndpoint": except (KeyError, ValueError) as e: _raise_deserialize_error("CreateWebhookEndpoint", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["endpoint_url"] = self.endpoint_url result["events"] = [ item.value if isinstance(item, Enum) else item for item in self.events diff --git a/src/workos/webhooks/models/update_webhook_endpoint.py b/src/workos/webhooks/models/update_webhook_endpoint.py index 90046bc2..278cb068 100644 --- a/src/workos/webhooks/models/update_webhook_endpoint.py +++ b/src/workos/webhooks/models/update_webhook_endpoint.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from workos.common.models.update_webhook_endpoint_events import ( UpdateWebhookEndpointEvents, @@ -19,15 +19,15 @@ class UpdateWebhookEndpoint: """Update Webhook Endpoint model.""" - endpoint_url: Optional[str] = None + endpoint_url: str | None = None """The HTTPS URL where webhooks will be sent.""" - status: Optional["UpdateWebhookEndpointStatus"] = None + status: UpdateWebhookEndpointStatus | None = None """Whether the Webhook Endpoint is enabled or disabled.""" - events: Optional[List["UpdateWebhookEndpointEvents"]] = None + events: list[UpdateWebhookEndpointEvents] | None = None """The events that the Webhook Endpoint is subscribed to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UpdateWebhookEndpoint": + def from_dict(cls, data: dict[str, Any]) -> UpdateWebhookEndpoint: """Deserialize from a dictionary.""" try: return cls( @@ -45,9 +45,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UpdateWebhookEndpoint": except (KeyError, ValueError) as e: _raise_deserialize_error("UpdateWebhookEndpoint", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.endpoint_url is not None: result["endpoint_url"] = self.endpoint_url if self.status is not None: diff --git a/tests/fixtures/waitlist_user_created.json b/tests/fixtures/waitlist_user_created.json index ab5b52cf..1ba69bdd 100644 --- a/tests/fixtures/waitlist_user_created.json +++ b/tests/fixtures/waitlist_user_created.json @@ -8,6 +8,7 @@ "email": "marcelina.davis@example.com", "state": "pending", "approved_at": null, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }, From cca3d23a6cfd800a51258cd1d27de2844c5db8ac Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:27 +0000 Subject: [PATCH 6/7] chore(generated): regenerate shared files for all services --- .last-synced-sha | 2 +- .oagen-manifest.json | 12 + src/workos/admin_portal/_resource.py | 33 +- .../admin_portal/models/generate_link.py | 17 +- .../models/portal_link_response.py | 9 +- src/workos/agents/_resource.py | 45 +- ..._claim_attempt_to_external_user_request.py | 18 +- ...m_attempt_to_external_user_request_user.py | 11 +- ...agent_admin_validate_credential_request.py | 13 +- .../models/agent_credential_validation.py | 16 +- .../agents/models/agent_registration.py | 29 +- .../agent_registration_agent_identity.py | 14 +- .../agents/models/agent_registration_claim.py | 17 +- ...ent_registration_claim_claim_completion.py | 12 +- .../agents/models/claim_view_response.py | 18 +- src/workos/api_keys/_resource.py | 73 +- src/workos/api_keys/models/api_key.py | 27 +- .../models/api_key_validation_response.py | 16 +- src/workos/api_keys/models/expire_api_key.py | 14 +- .../api_keys/models/organization_api_key.py | 23 +- .../models/organization_api_key_with_value.py | 23 +- .../api_keys/models/validate_api_key.py | 9 +- src/workos/audit_logs/_resource.py | 129 ++-- .../audit_logs/models/audit_log_event.py | 29 +- .../models/audit_log_event_actor.py | 13 +- .../models/audit_log_event_context.py | 11 +- .../audit_logs/models/audit_log_export.py | 16 +- .../models/audit_log_export_creation.py | 22 +- .../audit_logs/models/audit_log_schema.py | 23 +- .../models/audit_log_schema_actor.py | 11 +- .../models/audit_log_schema_input.py | 20 +- .../models/audit_log_schema_target.py | 11 +- src/workos/authorization/_resource.py | 666 +++++++++--------- .../authorization/models/assign_role.py | 15 +- .../models/authorization_assignment.py | 3 +- .../models/authorization_check.py | 9 +- .../models/authorization_resource.py | 16 +- .../models/check_authorization.py | 15 +- .../models/group_role_assignment.py | 23 +- .../models/group_role_assignment_list.py | 20 +- .../models/group_role_assignment_resource.py | 9 +- .../models/replace_group_role_assignments.py | 14 +- src/workos/authorization/models/role.py | 18 +- src/workos/authorization/models/role_list.py | 14 +- .../models/set_role_permissions.py | 11 +- .../models/user_role_assignment.py | 25 +- .../models/user_role_assignment_source.py | 13 +- src/workos/client_api/_resource.py | 14 +- .../client_api/models/client_api_token.py | 9 +- .../models/client_api_token_response.py | 9 +- src/workos/common/__init__.py | 5 +- src/workos/common/models/__init__.py | 80 +-- ...istration_credential_issued_data_detail.py | 13 +- .../models/action_authentication_denied.py | 21 +- .../action_authentication_denied_data.py | 15 +- .../models/action_user_registration_denied.py | 21 +- .../action_user_registration_denied_data.py | 15 +- src/workos/common/models/actor.py | 9 +- .../common/models/add_role_permission.py | 9 +- ..._admin_validate_credential_request_type.py | 5 +- .../agent_registration_claim_completed.py | 21 +- ...agent_registration_claim_completed_data.py | 14 +- ...tration_claim_completed_data_claimed_by.py | 13 +- .../agent_registration_credential_issued.py | 21 +- ...ent_registration_credential_issued_data.py | 22 +- ...istration_credential_issued_data_detail.py | 11 +- .../models/agent_registration_deleted.py | 21 +- .../models/agent_registration_deleted_data.py | 9 +- .../models/agent_registration_expired.py | 21 +- ...gent_registration_organization_switched.py | 21 +- ...registration_organization_switched_data.py | 11 +- .../models/agent_registration_refreshed.py | 59 ++ .../agent_registration_refreshed_data.py | 7 + .../models/agent_registration_revoked.py | 21 +- src/workos/common/models/api_key_revoked.py | 21 +- .../common/models/audit_log_export_state.py | 3 +- .../common/models/authentication_challenge.py | 16 +- ...uthentication_email_verification_failed.py | 21 +- ...tication_email_verification_failed_data.py | 24 +- ...on_email_verification_failed_data_error.py | 11 +- ...entication_email_verification_succeeded.py | 23 +- ...ation_email_verification_succeeded_data.py | 15 +- .../common/models/authentication_factor.py | 25 +- .../models/authentication_factor_enrolled.py | 25 +- .../authentication_factor_enrolled_sms.py | 9 +- .../authentication_factor_enrolled_totp.py | 9 +- .../authentication_factor_enrolled_type.py | 3 +- .../models/authentication_factor_totp.py | 9 +- .../authentication_magic_auth_failed.py | 21 +- .../authentication_magic_auth_failed_data.py | 22 +- ...entication_magic_auth_failed_data_error.py | 1 + .../authentication_magic_auth_succeeded.py | 21 +- ...uthentication_magic_auth_succeeded_data.py | 13 +- .../models/authentication_mfa_failed.py | 21 +- .../models/authentication_mfa_failed_data.py | 22 +- .../authentication_mfa_failed_data_error.py | 1 + .../models/authentication_mfa_succeeded.py | 21 +- .../authentication_mfa_succeeded_data.py | 13 +- .../models/authentication_oauth_failed.py | 21 +- .../authentication_oauth_failed_data.py | 22 +- .../authentication_oauth_failed_data_error.py | 1 + .../models/authentication_oauth_succeeded.py | 21 +- .../authentication_oauth_succeeded_data.py | 15 +- .../models/authentication_passkey_failed.py | 21 +- .../authentication_passkey_failed_data.py | 22 +- ...uthentication_passkey_failed_data_error.py | 1 + .../authentication_passkey_succeeded.py | 21 +- .../authentication_passkey_succeeded_data.py | 13 +- .../models/authentication_password_failed.py | 21 +- .../authentication_password_failed_data.py | 22 +- ...thentication_password_failed_data_error.py | 1 + .../authentication_password_succeeded.py | 21 +- .../authentication_password_succeeded_data.py | 13 +- .../authentication_radar_risk_detected.py | 21 +- ...authentication_radar_risk_detected_data.py | 20 +- ...ication_radar_risk_detected_data_action.py | 3 +- ...thentication_reauthentication_succeeded.py | 23 +- ...ication_reauthentication_succeeded_data.py | 15 +- .../common/models/authorization_permission.py | 14 +- src/workos/common/models/directory_group.py | 14 +- src/workos/common/models/directory_state.py | 3 +- src/workos/common/models/directory_type.py | 3 +- src/workos/common/models/directory_user.py | 45 +- .../common/models/directory_user_email.py | 15 +- .../common/models/directory_user_state.py | 3 +- src/workos/common/models/dsync_activated.py | 21 +- .../common/models/dsync_activated_data.py | 23 +- .../models/dsync_activated_data_domain.py | 9 +- .../models/dsync_activated_data_state.py | 3 +- .../models/dsync_activated_data_type.py | 3 +- src/workos/common/models/dsync_deleted.py | 21 +- .../common/models/dsync_deleted_data.py | 19 +- .../common/models/dsync_group_deleted.py | 21 +- .../common/models/dsync_group_user_added.py | 21 +- .../common/models/dsync_group_user_removed.py | 21 +- .../common/models/dsync_token_revoked.py | 21 +- .../common/models/dsync_user_deleted.py | 21 +- src/workos/common/models/error_response.py | 9 +- src/workos/common/models/event_context.py | 28 +- .../common/models/event_context_actor.py | 14 +- .../models/event_context_actor_source.py | 3 +- .../event_context_google_analytics_session.py | 13 +- src/workos/common/models/feature_flag.py | 21 +- .../common/models/feature_flag_owner.py | 13 +- src/workos/common/models/flag_deleted.py | 21 +- .../common/models/generate_link_intent.py | 3 +- src/workos/common/models/group.py | 14 +- src/workos/common/models/group_deleted.py | 21 +- .../common/models/group_member_added.py | 21 +- .../common/models/group_member_added_data.py | 9 +- .../common/models/group_member_removed.py | 21 +- .../common/models/invitation_accepted.py | 21 +- .../common/models/invitation_accepted_data.py | 27 +- .../models/invitation_accepted_data_state.py | 3 +- src/workos/common/models/invitation_resent.py | 21 +- .../common/models/invitation_revoked.py | 21 +- src/workos/common/models/list_metadata.py | 13 +- .../common/models/organization_deleted.py | 21 +- ...leted_data_domain_verification_strategy.py | 1 + .../common/models/organization_domain.py | 21 +- .../models/organization_domain_data_state.py | 3 +- .../models/organization_domain_deleted.py | 21 +- ...main_deleted_data_verification_strategy.py | 1 + ...organization_domain_verification_failed.py | 21 +- ...ization_domain_verification_failed_data.py | 18 +- ...ication_failed_data_organization_domain.py | 1 + ...n_failed_data_organization_domain_state.py | 1 + ...ganization_domain_verification_strategy.py | 1 + ..._domain_verification_failed_data_reason.py | 3 +- ...ganization_domain_verification_strategy.py | 1 + .../models/organization_domain_verified.py | 21 +- ...ain_verified_data_verification_strategy.py | 1 + .../models/organization_membership_deleted.py | 21 +- ...nization_membership_deleted_data_status.py | 1 + .../models/organization_membership_status.py | 1 + .../models/organization_role_deleted.py | 21 +- .../common/models/password_reset_succeeded.py | 21 +- .../common/models/permission_deleted.py | 21 +- .../radar_standalone_assess_request_action.py | 3 +- ...r_standalone_assess_request_auth_method.py | 5 +- .../radar_standalone_response_control.py | 3 +- .../radar_standalone_response_verdict.py | 3 +- src/workos/common/models/role_deleted.py | 21 +- src/workos/common/models/role_type.py | 3 +- src/workos/common/models/session_revoked.py | 21 +- src/workos/common/models/user_deleted.py | 21 +- ..._organization_membership_base_list_data.py | 25 +- ...zation_membership_base_list_data_status.py | 1 + .../user_organization_membership_status.py | 1 + .../user_role_assignment_source_type.py | 3 +- .../common/models/vault_byok_key_deleted.py | 21 +- .../models/vault_byok_key_deleted_data.py | 12 +- .../common/models/vault_byok_key_provider.py | 3 +- .../vault_byok_key_verification_completed.py | 21 +- ...lt_byok_key_verification_completed_data.py | 12 +- .../common/models/vault_data_deleted.py | 21 +- .../common/models/vault_data_deleted_data.py | 12 +- src/workos/common/models/vault_data_read.py | 21 +- .../common/models/vault_data_read_data.py | 12 +- .../common/models/vault_dek_decrypted.py | 21 +- .../common/models/vault_dek_decrypted_data.py | 12 +- src/workos/common/models/vault_dek_read.py | 21 +- .../common/models/vault_dek_read_data.py | 16 +- src/workos/common/models/vault_kek_deleted.py | 21 +- .../common/models/vault_metadata_read.py | 21 +- .../common/models/vault_names_listed.py | 21 +- .../common/models/vault_names_listed_data.py | 12 +- src/workos/common/models/waitlist_user.py | 24 +- .../common/models/waitlist_user_approved.py | 21 +- .../common/models/waitlist_user_denied.py | 21 +- .../common/models/waitlist_user_state.py | 3 +- .../models/widget_session_token_scopes.py | 3 +- src/workos/directory_sync/_resource.py | 123 ++-- src/workos/directory_sync/models/directory.py | 25 +- .../models/directory_metadata.py | 14 +- .../models/directory_metadata_user.py | 9 +- .../models/directory_user_with_groups.py | 51 +- src/workos/events/_resource.py | 47 +- .../events/models/event_list_list_metadata.py | 11 +- src/workos/events/models/event_schema.py | 17 +- src/workos/feature_flags/_resource.py | 89 +-- src/workos/groups/_resource.py | 99 +-- src/workos/multi_factor_auth/_resource.py | 113 +-- ...uthentication_challenge_verify_response.py | 15 +- ...uthentication_challenges_verify_request.py | 9 +- .../models/challenge_authentication_factor.py | 11 +- .../enroll_user_authentication_factor.py | 15 +- ...r_authentication_factor_enroll_response.py | 21 +- src/workos/organization_domains/_resource.py | 29 +- .../organization_membership/_resource.py | 119 ++-- .../models/organization_membership.py | 34 +- src/workos/organizations/_resource.py | 141 ++-- .../models/audit_logs_retention.py | 11 +- .../organizations/models/organization.py | 24 +- .../models/organization_domain_data.py | 11 +- .../models/organization_input.py | 22 +- src/workos/pipes/_resource.py | 120 +++- src/workos/pipes/models/__init__.py | 3 + .../models/custom_provider_definition.py | 18 +- src/workos/pipes/models/data_integration.py | 15 +- .../models/data_integration_credential.py | 2 +- ...tions_upsert_client_credentials_request.py | 54 ++ src/workos/radar/_resource.py | 85 +-- src/workos/radar/models/radar_list_action.py | 3 +- ...dar_list_entry_already_present_response.py | 9 +- src/workos/radar/models/radar_list_type.py | 3 +- .../models/radar_standalone_assess_request.py | 15 +- ...ndalone_delete_radar_list_entry_request.py | 11 +- .../radar/models/radar_standalone_response.py | 15 +- src/workos/vault/_resource.py | 160 ++--- src/workos/vault/models/decrypt_request.py | 9 +- src/workos/vault/models/decrypt_response.py | 9 +- .../vault/models/delete_object_response.py | 9 +- src/workos/vault/models/object_summary.py | 14 +- src/workos/vault/models/object_version.py | 12 +- .../vault/models/object_without_value.py | 14 +- src/workos/vault/models/rekey_request.py | 11 +- src/workos/vault/models/vault_object.py | 14 +- src/workos/vault/models/vault_order.py | 3 +- .../vault/models/version_list_response.py | 20 +- src/workos/webhooks/_resource.py | 96 +-- .../webhooks/models/webhook_endpoint.py | 16 +- src/workos/widgets/_resource.py | 29 +- .../widgets/models/widget_session_token.py | 16 +- .../agent_registration_refreshed.json | 29 + .../agent_registration_refreshed_data.json | 3 + .../data_integrations_list_response.json | 5 + .../data_integrations_list_response_data.json | 5 + ...ons_upsert_client_credentials_request.json | 9 + tests/fixtures/waitlist_user.json | 1 + tests/fixtures/waitlist_user_approved.json | 1 + tests/fixtures/waitlist_user_denied.json | 1 + tests/test_admin_portal.py | 6 +- tests/test_admin_portal_models_round_trip.py | 1 - tests/test_agents.py | 18 +- tests/test_agents_models_round_trip.py | 1 - tests/test_api_keys.py | 20 +- tests/test_api_keys_models_round_trip.py | 1 - tests/test_audit_logs.py | 22 +- tests/test_audit_logs_models_round_trip.py | 1 - tests/test_authorization.py | 36 +- tests/test_client_api.py | 6 +- tests/test_client_api_models_round_trip.py | 1 - tests/test_common_models_round_trip.py | 63 ++ tests/test_directory_sync.py | 10 +- .../test_directory_sync_models_round_trip.py | 1 - tests/test_events.py | 8 +- tests/test_events_models_round_trip.py | 1 - tests/test_feature_flags.py | 8 +- tests/test_feature_flags_models_round_trip.py | 1 - tests/test_groups.py | 16 +- tests/test_groups_models_round_trip.py | 1 - tests/test_multi_factor_auth.py | 22 +- ...est_multi_factor_auth_models_round_trip.py | 1 - tests/test_organization_domains.py | 6 +- ..._organization_domains_models_round_trip.py | 1 - tests/test_organization_membership.py | 16 +- ...ganization_membership_models_round_trip.py | 1 - tests/test_organizations.py | 18 +- tests/test_organizations_models_round_trip.py | 1 - tests/test_pipes.py | 43 ++ tests/test_pipes_models_round_trip.py | 56 +- tests/test_radar.py | 20 +- tests/test_radar_models_round_trip.py | 1 - tests/test_vault.py | 24 +- tests/test_vault_models_round_trip.py | 1 - tests/test_webhooks.py | 10 +- tests/test_webhooks_models_round_trip.py | 1 - tests/test_widgets.py | 6 +- tests/test_widgets_models_round_trip.py | 1 - 310 files changed, 3402 insertions(+), 3042 deletions(-) create mode 100644 src/workos/common/models/agent_registration_refreshed.py create mode 100644 src/workos/common/models/agent_registration_refreshed_data.py create mode 100644 src/workos/pipes/models/data_integrations_upsert_client_credentials_request.py create mode 100644 tests/fixtures/agent_registration_refreshed.json create mode 100644 tests/fixtures/agent_registration_refreshed_data.json create mode 100644 tests/fixtures/data_integrations_upsert_client_credentials_request.json diff --git a/.last-synced-sha b/.last-synced-sha index 93c9c21a..9932a840 100644 --- a/.last-synced-sha +++ b/.last-synced-sha @@ -1 +1 @@ -ae3ebbb08d9b4bf9b2391558e820b7eb6f511fb9 +4ac3f26093f019e2b5603b2c4746102e45d534b8 diff --git a/.oagen-manifest.json b/.oagen-manifest.json index 33626896..4787465a 100644 --- a/.oagen-manifest.json +++ b/.oagen-manifest.json @@ -119,6 +119,8 @@ "src/workos/common/models/agent_registration_kind.py", "src/workos/common/models/agent_registration_organization_switched.py", "src/workos/common/models/agent_registration_organization_switched_data.py", + "src/workos/common/models/agent_registration_refreshed.py", + "src/workos/common/models/agent_registration_refreshed_data.py", "src/workos/common/models/agent_registration_revoked.py", "src/workos/common/models/agent_registration_revoked_data.py", "src/workos/common/models/agent_registration_status.py", @@ -240,6 +242,7 @@ "src/workos/common/models/create_data_integration_auth_methods.py", "src/workos/common/models/create_user_invite_options_locale.py", "src/workos/common/models/create_user_password_hash_type.py", + "src/workos/common/models/create_user_password_salt_position.py", "src/workos/common/models/create_webhook_endpoint_events.py", "src/workos/common/models/custom_provider_definition_authenticate_via.py", "src/workos/common/models/data_integration_access_token_response_error.py", @@ -465,6 +468,7 @@ "src/workos/common/models/slim_role.py", "src/workos/common/models/update_custom_provider_definition_authenticate_via.py", "src/workos/common/models/update_user_password_hash_type.py", + "src/workos/common/models/update_user_password_salt_position.py", "src/workos/common/models/update_webhook_endpoint_events.py", "src/workos/common/models/update_webhook_endpoint_status.py", "src/workos/common/models/user.py", @@ -620,6 +624,7 @@ "src/workos/pipes/models/data_integrations_list_response_data.py", "src/workos/pipes/models/data_integrations_list_response_data_connected_account.py", "src/workos/pipes/models/data_integrations_upsert_api_key_request.py", + "src/workos/pipes/models/data_integrations_upsert_client_credentials_request.py", "src/workos/pipes/models/data_integrations_vend_credentials_request.py", "src/workos/pipes/models/update_custom_provider_definition.py", "src/workos/pipes/models/update_data_integration.py", @@ -801,6 +806,8 @@ "tests/fixtures/agent_registration_expired_data.json", "tests/fixtures/agent_registration_organization_switched.json", "tests/fixtures/agent_registration_organization_switched_data.json", + "tests/fixtures/agent_registration_refreshed.json", + "tests/fixtures/agent_registration_refreshed_data.json", "tests/fixtures/agent_registration_revoked.json", "tests/fixtures/agent_registration_revoked_data.json", "tests/fixtures/api_key.json", @@ -982,6 +989,7 @@ "tests/fixtures/data_integrations_list_response_data.json", "tests/fixtures/data_integrations_list_response_data_connected_account.json", "tests/fixtures/data_integrations_upsert_api_key_request.json", + "tests/fixtures/data_integrations_upsert_client_credentials_request.json", "tests/fixtures/data_integrations_vend_credentials_request.json", "tests/fixtures/decrypt_request.json", "tests/fixtures/decrypt_response.json", @@ -1666,6 +1674,10 @@ "sdkMethod": "authorize_data_integration", "service": "pipes" }, + "PUT /data-integrations/{slug}/client-credentials": { + "sdkMethod": "update_data_integration_client_credentials", + "service": "pipes" + }, "POST /data-integrations/{slug}/credentials": { "sdkMethod": "create_data_integration_credential", "service": "pipes" diff --git a/src/workos/admin_portal/_resource.py b/src/workos/admin_portal/_resource.py index 87ccb38a..9721a572 100644 --- a/src/workos/admin_portal/_resource.py +++ b/src/workos/admin_portal/_resource.py @@ -2,31 +2,32 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient +from workos.common.models.generate_link_intent import GenerateLinkIntent + from .._types import RequestOptions, enum_value from .models import PortalLinkResponse -from workos.common.models.generate_link_intent import GenerateLinkIntent class AdminPortal: """Admin Portal API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def generate_link( self, *, organization: str, - return_url: Optional[str] = None, - success_url: Optional[str] = None, - intent: Optional[Union[GenerateLinkIntent, str]] = None, - it_contact_emails: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + return_url: str | None = None, + success_url: str | None = None, + intent: GenerateLinkIntent | str | None = None, + it_contact_emails: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> PortalLinkResponse: """Generate a Portal Link @@ -59,7 +60,7 @@ def generate_link( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "return_url": return_url, @@ -82,18 +83,18 @@ def generate_link( class AsyncAdminPortal: """Admin Portal API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def generate_link( self, *, organization: str, - return_url: Optional[str] = None, - success_url: Optional[str] = None, - intent: Optional[Union[GenerateLinkIntent, str]] = None, - it_contact_emails: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + return_url: str | None = None, + success_url: str | None = None, + intent: GenerateLinkIntent | str | None = None, + it_contact_emails: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> PortalLinkResponse: """Generate a Portal Link @@ -126,7 +127,7 @@ async def generate_link( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "return_url": return_url, diff --git a/src/workos/admin_portal/models/generate_link.py b/src/workos/admin_portal/models/generate_link.py index cb84be6c..c3bd20f5 100644 --- a/src/workos/admin_portal/models/generate_link.py +++ b/src/workos/admin_portal/models/generate_link.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, List, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.generate_link_intent import GenerateLinkIntent @@ -15,11 +16,11 @@ class GenerateLink: organization: str """An [Organization](https://workos.com/docs/reference/organization) identifier.""" - return_url: Optional[str] = None + return_url: str | None = None """The URL to go to when an admin clicks on your logo in the Admin Portal. If not specified, the return URL configured on the [Redirects](https://dashboard.workos.com/redirects) page will be used.""" - success_url: Optional[str] = None + success_url: str | None = None """The URL to redirect the admin to when they finish setup. If not specified, the success URL configured on the [Redirects](https://dashboard.workos.com/redirects) page will be used.""" - intent: Optional["GenerateLinkIntent"] = None + intent: GenerateLinkIntent | None = None """ The intent of the Admin Portal. - `sso` - Launch Admin Portal for creating SSO connections @@ -29,11 +30,11 @@ class GenerateLink: - `domain_verification` - Launch Admin Portal for Domain Verification - `certificate_renewal` - Launch Admin Portal for renewing SAML Certificates - `bring_your_own_key` - Launch Admin Portal for configuring Bring Your Own Key""" - it_contact_emails: Optional[List[str]] = None + it_contact_emails: list[str] | None = None """The email addresses of the IT contacts to grant access to the Admin Portal for the given organization. Accepts up to 20 emails.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GenerateLink": + def from_dict(cls, data: dict[str, Any]) -> GenerateLink: """Deserialize from a dictionary.""" try: return cls( @@ -48,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "GenerateLink": except (KeyError, ValueError) as e: _raise_deserialize_error("GenerateLink", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization"] = self.organization if self.return_url is not None: result["return_url"] = self.return_url diff --git a/src/workos/admin_portal/models/portal_link_response.py b/src/workos/admin_portal/models/portal_link_response.py index 6785f1e1..b6a0600e 100644 --- a/src/workos/admin_portal/models/portal_link_response.py +++ b/src/workos/admin_portal/models/portal_link_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class PortalLinkResponse: """An ephemeral link to initiate the Admin Portal.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PortalLinkResponse": + def from_dict(cls, data: dict[str, Any]) -> PortalLinkResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "PortalLinkResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("PortalLinkResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["link"] = self.link return result diff --git a/src/workos/agents/_resource.py b/src/workos/agents/_resource.py index 39a61850..7b6217c7 100644 --- a/src/workos/agents/_resource.py +++ b/src/workos/agents/_resource.py @@ -2,11 +2,15 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient +from workos.common.models.agent_admin_validate_credential_request_type import ( + AgentAdminValidateCredentialRequestType, +) + from .._types import RequestOptions, enum_value from .models import ( AgentAdminLinkClaimAttemptToExternalUserRequestUser, @@ -14,15 +18,12 @@ AgentRegistration, ClaimViewResponse, ) -from workos.common.models.agent_admin_validate_credential_request_type import ( - AgentAdminValidateCredentialRequestType, -) class Agents: """Agents API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def update_attempts( @@ -31,8 +32,8 @@ def update_attempts( type: Literal["link_external_user"], claim_attempt_token: str, user: AgentAdminLinkClaimAttemptToExternalUserRequestUser, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> ClaimViewResponse: """Link a claim attempt to an external user @@ -56,7 +57,7 @@ def update_attempts( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": type, @@ -77,10 +78,10 @@ def update_attempts( def create_validate( self, *, - type: Union[AgentAdminValidateCredentialRequestType, str], + type: AgentAdminValidateCredentialRequestType | str, credential: str, - audience: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + audience: str | None = None, + request_options: RequestOptions | None = None, ) -> AgentCredentialValidation: """Validate an agent credential @@ -101,7 +102,7 @@ def create_validate( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": enum_value(type), @@ -122,7 +123,7 @@ def get_registration( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AgentRegistration: """Get an agent registration @@ -152,7 +153,7 @@ def get_registration( class AsyncAgents: """Agents API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def update_attempts( @@ -161,8 +162,8 @@ async def update_attempts( type: Literal["link_external_user"], claim_attempt_token: str, user: AgentAdminLinkClaimAttemptToExternalUserRequestUser, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> ClaimViewResponse: """Link a claim attempt to an external user @@ -186,7 +187,7 @@ async def update_attempts( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": type, @@ -207,10 +208,10 @@ async def update_attempts( async def create_validate( self, *, - type: Union[AgentAdminValidateCredentialRequestType, str], + type: AgentAdminValidateCredentialRequestType | str, credential: str, - audience: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + audience: str | None = None, + request_options: RequestOptions | None = None, ) -> AgentCredentialValidation: """Validate an agent credential @@ -231,7 +232,7 @@ async def create_validate( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": enum_value(type), @@ -252,7 +253,7 @@ async def get_registration( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AgentRegistration: """Get an agent registration diff --git a/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py b/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py index f5d7d7ae..1b80fec9 100644 --- a/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py +++ b/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .agent_admin_link_claim_attempt_to_external_user_request_user import ( @@ -20,22 +20,22 @@ class AgentAdminLinkClaimAttemptToExternalUserRequest: """The operation to perform on the claim attempt. Currently only `link_external_user` is supported.""" claim_attempt_token: str """The token identifying the claim attempt.""" - user: "AgentAdminLinkClaimAttemptToExternalUserRequestUser" + user: AgentAdminLinkClaimAttemptToExternalUserRequestUser """The user to attach to the claim attempt, identified by email and external ID.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The organization to place the agent in. Required when the user belongs to more than one organization.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentAdminLinkClaimAttemptToExternalUserRequest": + cls, data: dict[str, Any] + ) -> AgentAdminLinkClaimAttemptToExternalUserRequest: """Deserialize from a dictionary.""" try: return cls( type=data.get("type", "link_external_user"), claim_attempt_token=data["claim_attempt_token"], user=AgentAdminLinkClaimAttemptToExternalUserRequestUser.from_dict( - cast(Dict[str, Any], data["user"]) + cast(dict[str, Any], data["user"]) ), organization_id=data.get("organization_id"), ) @@ -44,9 +44,9 @@ def from_dict( "AgentAdminLinkClaimAttemptToExternalUserRequest", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["claim_attempt_token"] = self.claim_attempt_token result["user"] = self.user.to_dict() diff --git a/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request_user.py b/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request_user.py index 04aecc57..6db9c38a 100644 --- a/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request_user.py +++ b/src/workos/agents/models/agent_admin_link_claim_attempt_to_external_user_request_user.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -18,8 +19,8 @@ class AgentAdminLinkClaimAttemptToExternalUserRequestUser: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentAdminLinkClaimAttemptToExternalUserRequestUser": + cls, data: dict[str, Any] + ) -> AgentAdminLinkClaimAttemptToExternalUserRequestUser: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +32,9 @@ def from_dict( "AgentAdminLinkClaimAttemptToExternalUserRequestUser", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["email"] = self.email result["external_id"] = self.external_id return result diff --git a/src/workos/agents/models/agent_admin_validate_credential_request.py b/src/workos/agents/models/agent_admin_validate_credential_request.py index 99ddde64..95a26370 100644 --- a/src/workos/agents/models/agent_admin_validate_credential_request.py +++ b/src/workos/agents/models/agent_admin_validate_credential_request.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.agent_admin_validate_credential_request_type import ( AgentAdminValidateCredentialRequestType, @@ -15,15 +16,15 @@ class AgentAdminValidateCredentialRequest: """Agent Admin Validate Credential Request model.""" - type: "AgentAdminValidateCredentialRequestType" + type: AgentAdminValidateCredentialRequestType """The kind of credential being validated — an agent API key or an agent access token.""" credential: str """The credential value to validate: the API key value for `api_key`, or the access token (JWT) for `access_token`.""" - audience: Optional[str] = None + audience: str | None = None """When provided, the access token's `aud` claim is verified against this value. Tokens issued for a different resource are rejected.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentAdminValidateCredentialRequest": + def from_dict(cls, data: dict[str, Any]) -> AgentAdminValidateCredentialRequest: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +35,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentAdminValidateCredentialRequest except (KeyError, ValueError) as e: _raise_deserialize_error("AgentAdminValidateCredentialRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type.value if isinstance(self.type, Enum) else self.type result["credential"] = self.credential if self.audience is not None: diff --git a/src/workos/agents/models/agent_credential_validation.py b/src/workos/agents/models/agent_credential_validation.py index 224debbe..1fd2cb8f 100644 --- a/src/workos/agents/models/agent_credential_validation.py +++ b/src/workos/agents/models/agent_credential_validation.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -15,13 +15,13 @@ class AgentCredentialValidation: valid: bool """Whether the presented credential is valid.""" - registration_id: Optional[str] + registration_id: str | None """Identifier of the agent registration the credential belongs to, or `null` when the credential is invalid.""" - expires_at: Optional[datetime] + expires_at: datetime | None """The timestamp when the credential expires, or `null` when the credential is invalid.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentCredentialValidation": + def from_dict(cls, data: dict[str, Any]) -> AgentCredentialValidation: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentCredentialValidation": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentCredentialValidation", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["valid"] = self.valid if self.registration_id is not None: result["registration_id"] = self.registration_id diff --git a/src/workos/agents/models/agent_registration.py b/src/workos/agents/models/agent_registration.py index f0d6da4a..d7a1d1ad 100644 --- a/src/workos/agents/models/agent_registration.py +++ b/src/workos/agents/models/agent_registration.py @@ -5,16 +5,15 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, cast -from .agent_registration_agent_identity import AgentRegistrationAgentIdentity -from .agent_registration_claim import AgentRegistrationClaim +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.agent_registration_kind import AgentRegistrationKind from workos.common.models.agent_registration_status import AgentRegistrationStatus +from .agent_registration_agent_identity import AgentRegistrationAgentIdentity +from .agent_registration_claim import AgentRegistrationClaim + @dataclass(slots=True) class AgentRegistration: @@ -22,15 +21,15 @@ class AgentRegistration: id: str """Unique identifier of the agent registration.""" - agent_identity: "AgentRegistrationAgentIdentity" + agent_identity: AgentRegistrationAgentIdentity """The agent identity associated with this registration.""" organization_id: str """Identifier of the organization the agent is registered to.""" - status: "AgentRegistrationStatus" + status: AgentRegistrationStatus """The current verification status of the registration.""" - kind: "AgentRegistrationKind" + kind: AgentRegistrationKind """The kind of agent registration.""" - claim: Optional["AgentRegistrationClaim"] + claim: AgentRegistrationClaim | None """The claim associated with this registration, or `null` if the registration has no claim.""" created_at: datetime """The timestamp when the registration was created.""" @@ -38,18 +37,18 @@ class AgentRegistration: """The timestamp when the registration was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistration": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistration: """Deserialize from a dictionary.""" try: return cls( id=data["id"], agent_identity=AgentRegistrationAgentIdentity.from_dict( - cast(Dict[str, Any], data["agent_identity"]) + cast(dict[str, Any], data["agent_identity"]) ), organization_id=data["organization_id"], status=AgentRegistrationStatus(data["status"]), kind=AgentRegistrationKind(data["kind"]), - claim=AgentRegistrationClaim.from_dict(cast(Dict[str, Any], _v_claim)) + claim=AgentRegistrationClaim.from_dict(cast(dict[str, Any], _v_claim)) if (_v_claim := data["claim"]) is not None else None, created_at=_parse_datetime(data["created_at"]), @@ -58,9 +57,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistration": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistration", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["agent_identity"] = self.agent_identity.to_dict() result["organization_id"] = self.organization_id diff --git a/src/workos/agents/models/agent_registration_agent_identity.py b/src/workos/agents/models/agent_registration_agent_identity.py index b9170c05..3fb8ea40 100644 --- a/src/workos/agents/models/agent_registration_agent_identity.py +++ b/src/workos/agents/models/agent_registration_agent_identity.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -15,7 +15,7 @@ class AgentRegistrationAgentIdentity: id: str """Unique identifier of the agent identity.""" - userland_user_id: Optional[str] + userland_user_id: str | None """Identifier of the AuthKit user the agent identity is bound to, or `null` when the agent is not associated with a user.""" created_at: datetime """The timestamp when the agent identity was created.""" @@ -23,7 +23,7 @@ class AgentRegistrationAgentIdentity: """The timestamp when the agent identity was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationAgentIdentity": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationAgentIdentity: """Deserialize from a dictionary.""" try: return cls( @@ -35,9 +35,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationAgentIdentity": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationAgentIdentity", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id if self.userland_user_id is not None: result["userland_user_id"] = self.userland_user_id diff --git a/src/workos/agents/models/agent_registration_claim.py b/src/workos/agents/models/agent_registration_claim.py index 7b25babb..1c45c005 100644 --- a/src/workos/agents/models/agent_registration_claim.py +++ b/src/workos/agents/models/agent_registration_claim.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_claim_claim_completion import ( AgentRegistrationClaimClaimCompletion, @@ -20,7 +19,7 @@ class AgentRegistrationClaim: id: str """Unique identifier of the claim.""" - claim_completion: Optional["AgentRegistrationClaimClaimCompletion"] + claim_completion: AgentRegistrationClaimClaimCompletion | None """The completion record for the claim, or `null` if the claim has not been completed.""" created_at: datetime """The timestamp when the claim was created.""" @@ -30,13 +29,13 @@ class AgentRegistrationClaim: """The timestamp when the claim expires.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaim": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationClaim: """Deserialize from a dictionary.""" try: return cls( id=data["id"], claim_completion=AgentRegistrationClaimClaimCompletion.from_dict( - cast(Dict[str, Any], _v_claim_completion) + cast(dict[str, Any], _v_claim_completion) ) if (_v_claim_completion := data["claim_completion"]) is not None else None, @@ -47,9 +46,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaim": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaim", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id if self.claim_completion is not None: result["claim_completion"] = self.claim_completion.to_dict() diff --git a/src/workos/agents/models/agent_registration_claim_claim_completion.py b/src/workos/agents/models/agent_registration_claim_claim_completion.py index 25117f57..a1e74eed 100644 --- a/src/workos/agents/models/agent_registration_claim_claim_completion.py +++ b/src/workos/agents/models/agent_registration_claim_claim_completion.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -25,7 +25,7 @@ class AgentRegistrationClaimClaimCompletion: """The timestamp when the claim was completed.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimClaimCompletion": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationClaimClaimCompletion: """Deserialize from a dictionary.""" try: return cls( @@ -38,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimClaimCompleti except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimClaimCompletion", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["created_at"] = _format_datetime(self.created_at) result["updated_at"] = _format_datetime(self.updated_at) diff --git a/src/workos/agents/models/claim_view_response.py b/src/workos/agents/models/claim_view_response.py index df434d8c..46ea908f 100644 --- a/src/workos/agents/models/claim_view_response.py +++ b/src/workos/agents/models/claim_view_response.py @@ -4,12 +4,12 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, List +from typing import Any, cast + from workos._types import _raise_deserialize_error +from workos.common.models.claim_view_response_status import ClaimViewResponseStatus from .claim_view_response_organization import ClaimViewResponseOrganization -from workos.common.models.claim_view_response_status import ClaimViewResponseStatus @dataclass(slots=True) @@ -18,15 +18,15 @@ class ClaimViewResponse: id: str """The agent registration ID.""" - status: "ClaimViewResponseStatus" + status: ClaimViewResponseStatus """Current status of the agent registration.""" user_code: str """The user code the agent needs to complete the claim.""" - organizations: List["ClaimViewResponseOrganization"] + organizations: list[ClaimViewResponseOrganization] """Organizations the user belongs to, offered as placement choices.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ClaimViewResponse": + def from_dict(cls, data: dict[str, Any]) -> ClaimViewResponse: """Deserialize from a dictionary.""" try: return cls( @@ -34,16 +34,16 @@ def from_dict(cls, data: Dict[str, Any]) -> "ClaimViewResponse": status=ClaimViewResponseStatus(data["status"]), user_code=data["user_code"], organizations=[ - ClaimViewResponseOrganization.from_dict(cast(Dict[str, Any], item)) + ClaimViewResponseOrganization.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["organizations"]) ], ) except (KeyError, ValueError) as e: _raise_deserialize_error("ClaimViewResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["status"] = ( self.status.value if isinstance(self.status, Enum) else self.status diff --git a/src/workos/api_keys/_resource.py b/src/workos/api_keys/_resource.py index d5e9b46a..e1ae957f 100644 --- a/src/workos/api_keys/_resource.py +++ b/src/workos/api_keys/_resource.py @@ -2,37 +2,38 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven +from workos.common.models.pagination_order import PaginationOrder + +from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value from .models import ( ApiKey, ApiKeyValidationResponse, OrganizationApiKey, OrganizationApiKeyWithValue, ) -from workos.common.models.pagination_order import PaginationOrder -from .._pagination import AsyncPage, SyncPage class ApiKeys: """Api Keys API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_organization_api_keys( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[OrganizationApiKey]: """List API keys for an organization @@ -78,9 +79,9 @@ def create_organization_api_key( organization_id: str, *, name: str, - permissions: Optional[List[str]] = None, - expires_at: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + permissions: list[str] | None = None, + expires_at: str | None = None, + request_options: RequestOptions | None = None, ) -> OrganizationApiKeyWithValue: """Create an API key for an organization @@ -103,7 +104,7 @@ def create_organization_api_key( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -124,7 +125,7 @@ def create_validation( self, *, value: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ApiKeyValidationResponse: """Validate API key @@ -143,7 +144,7 @@ def create_validation( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "value": value, } return self._client.request( @@ -158,7 +159,7 @@ def delete_api_key( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an API key @@ -184,8 +185,8 @@ def create_api_key_expire( self, id: str, *, - expires_at: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + expires_at: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ApiKey: """Expire an API key @@ -207,7 +208,7 @@ def create_api_key_expire( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} if not isinstance(expires_at, NotGiven): body["expires_at"] = expires_at return self._client.request( @@ -222,18 +223,18 @@ def create_api_key_expire( class AsyncApiKeys: """Api Keys API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_organization_api_keys( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[OrganizationApiKey]: """List API keys for an organization @@ -279,9 +280,9 @@ async def create_organization_api_key( organization_id: str, *, name: str, - permissions: Optional[List[str]] = None, - expires_at: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + permissions: list[str] | None = None, + expires_at: str | None = None, + request_options: RequestOptions | None = None, ) -> OrganizationApiKeyWithValue: """Create an API key for an organization @@ -304,7 +305,7 @@ async def create_organization_api_key( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -325,7 +326,7 @@ async def create_validation( self, *, value: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ApiKeyValidationResponse: """Validate API key @@ -344,7 +345,7 @@ async def create_validation( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "value": value, } return await self._client.request( @@ -359,7 +360,7 @@ async def delete_api_key( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an API key @@ -385,8 +386,8 @@ async def create_api_key_expire( self, id: str, *, - expires_at: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + expires_at: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ApiKey: """Expire an API key @@ -408,7 +409,7 @@ async def create_api_key_expire( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} if not isinstance(expires_at, NotGiven): body["expires_at"] = expires_at return await self._client.request( diff --git a/src/workos/api_keys/models/api_key.py b/src/workos/api_keys/models/api_key.py index 16789239..05228dbb 100644 --- a/src/workos/api_keys/models/api_key.py +++ b/src/workos/api_keys/models/api_key.py @@ -4,14 +4,13 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional, Union -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast -from .api_key_owner import ApiKeyOwner +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.user_management.models.user_api_key_owner import UserApiKeyOwner +from .api_key_owner import ApiKeyOwner + @dataclass(slots=True) class ApiKey: @@ -21,17 +20,17 @@ class ApiKey: """Distinguishes the API Key object.""" id: str """Unique identifier of the API Key.""" - owner: Union["ApiKeyOwner", "UserApiKeyOwner"] + owner: ApiKeyOwner | UserApiKeyOwner """The entity that owns the API Key.""" name: str """A descriptive name for the API Key.""" obfuscated_value: str """An obfuscated representation of the API Key value.""" - last_used_at: Optional[datetime] + last_used_at: datetime | None """Timestamp of when the API Key was last used.""" - expires_at: Optional[datetime] + expires_at: datetime | None """Timestamp when the API Key expires. Null means the key does not expire.""" - permissions: List[str] + permissions: list[str] """The permission slugs assigned to the API Key.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -39,13 +38,13 @@ class ApiKey: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKey": + def from_dict(cls, data: dict[str, Any]) -> ApiKey: """Deserialize from a dictionary.""" try: _owner_raw = data["owner"] - _owner_data = cast(Dict[str, Any], _owner_raw) + _owner_data = cast(dict[str, Any], _owner_raw) _owner_disc = cast(str, _owner_data.get("type")) - _owner_disc_map: Dict[str, Any] = { + _owner_disc_map: dict[str, Any] = { "organization": ApiKeyOwner, "user": UserApiKeyOwner, } @@ -74,9 +73,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKey": except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKey", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["owner"] = self.owner.to_dict() diff --git a/src/workos/api_keys/models/api_key_validation_response.py b/src/workos/api_keys/models/api_key_validation_response.py index a09843b1..22417f36 100644 --- a/src/workos/api_keys/models/api_key_validation_response.py +++ b/src/workos/api_keys/models/api_key_validation_response.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .api_key import ApiKey @@ -14,16 +14,16 @@ class ApiKeyValidationResponse: """Api Key Validation Response model.""" - api_key: Optional["ApiKey"] - agent_registration_id: Optional[str] = None + api_key: ApiKey | None + agent_registration_id: str | None = None """The ID of the agent registration this API Key was issued for. Present only when the API Key is assigned to an agent registration.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyValidationResponse": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyValidationResponse: """Deserialize from a dictionary.""" try: return cls( - api_key=ApiKey.from_dict(cast(Dict[str, Any], _v_api_key)) + api_key=ApiKey.from_dict(cast(dict[str, Any], _v_api_key)) if (_v_api_key := data["api_key"]) is not None else None, agent_registration_id=data.get("agent_registration_id"), @@ -31,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyValidationResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyValidationResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.api_key is not None: result["api_key"] = self.api_key.to_dict() else: diff --git a/src/workos/api_keys/models/expire_api_key.py b/src/workos/api_keys/models/expire_api_key.py index 9ecfb12d..5780b5e6 100644 --- a/src/workos/api_keys/models/expire_api_key.py +++ b/src/workos/api_keys/models/expire_api_key.py @@ -4,20 +4,20 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) class ExpireApiKey: """Expire Api Key model.""" - expires_at: Optional[datetime] = None + expires_at: datetime | None = None """When the API key should expire. If omitted or in the past, the key expires immediately. Use null to clear a scheduled future expiration.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ExpireApiKey": + def from_dict(cls, data: dict[str, Any]) -> ExpireApiKey: """Deserialize from a dictionary.""" try: return cls( @@ -28,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ExpireApiKey": except (KeyError, ValueError) as e: _raise_deserialize_error("ExpireApiKey", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.expires_at is not None: result["expires_at"] = _format_datetime(self.expires_at) else: diff --git a/src/workos/api_keys/models/organization_api_key.py b/src/workos/api_keys/models/organization_api_key.py index 2a3f3cc3..46f265e1 100644 --- a/src/workos/api_keys/models/organization_api_key.py +++ b/src/workos/api_keys/models/organization_api_key.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .organization_api_key_owner import OrganizationApiKeyOwner @@ -20,17 +19,17 @@ class OrganizationApiKey: """Distinguishes the API Key object.""" id: str """Unique identifier of the API Key.""" - owner: "OrganizationApiKeyOwner" + owner: OrganizationApiKeyOwner """The entity that owns the API Key.""" name: str """A descriptive name for the API Key.""" obfuscated_value: str """An obfuscated representation of the API Key value.""" - last_used_at: Optional[datetime] + last_used_at: datetime | None """Timestamp of when the API Key was last used.""" - expires_at: Optional[datetime] + expires_at: datetime | None """Timestamp when the API Key expires. Null means the key does not expire.""" - permissions: List[str] + permissions: list[str] """The permission slugs assigned to the API Key.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -38,14 +37,14 @@ class OrganizationApiKey: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationApiKey": + def from_dict(cls, data: dict[str, Any]) -> OrganizationApiKey: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "api_key"), id=data["id"], owner=OrganizationApiKeyOwner.from_dict( - cast(Dict[str, Any], data["owner"]) + cast(dict[str, Any], data["owner"]) ), name=data["name"], obfuscated_value=data["obfuscated_value"], @@ -62,9 +61,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationApiKey": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationApiKey", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["owner"] = self.owner.to_dict() diff --git a/src/workos/api_keys/models/organization_api_key_with_value.py b/src/workos/api_keys/models/organization_api_key_with_value.py index ad021809..c040dd8e 100644 --- a/src/workos/api_keys/models/organization_api_key_with_value.py +++ b/src/workos/api_keys/models/organization_api_key_with_value.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .organization_api_key_with_value_owner import OrganizationApiKeyWithValueOwner @@ -20,17 +19,17 @@ class OrganizationApiKeyWithValue: """Distinguishes the API Key object.""" id: str """Unique identifier of the API Key.""" - owner: "OrganizationApiKeyWithValueOwner" + owner: OrganizationApiKeyWithValueOwner """The entity that owns the API Key.""" name: str """A descriptive name for the API Key.""" obfuscated_value: str """An obfuscated representation of the API Key value.""" - last_used_at: Optional[datetime] + last_used_at: datetime | None """Timestamp of when the API Key was last used.""" - expires_at: Optional[datetime] + expires_at: datetime | None """Timestamp when the API Key expires. Null means the key does not expire.""" - permissions: List[str] + permissions: list[str] """The permission slugs assigned to the API Key.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -40,14 +39,14 @@ class OrganizationApiKeyWithValue: """The full API Key value. Only returned once at creation time.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationApiKeyWithValue": + def from_dict(cls, data: dict[str, Any]) -> OrganizationApiKeyWithValue: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "api_key"), id=data["id"], owner=OrganizationApiKeyWithValueOwner.from_dict( - cast(Dict[str, Any], data["owner"]) + cast(dict[str, Any], data["owner"]) ), name=data["name"], obfuscated_value=data["obfuscated_value"], @@ -65,9 +64,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationApiKeyWithValue": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationApiKeyWithValue", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["owner"] = self.owner.to_dict() diff --git a/src/workos/api_keys/models/validate_api_key.py b/src/workos/api_keys/models/validate_api_key.py index 513b31ed..276ccaee 100644 --- a/src/workos/api_keys/models/validate_api_key.py +++ b/src/workos/api_keys/models/validate_api_key.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class ValidateApiKey: """The value for an API key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ValidateApiKey": + def from_dict(cls, data: dict[str, Any]) -> ValidateApiKey: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "ValidateApiKey": except (KeyError, ValueError) as e: _raise_deserialize_error("ValidateApiKey", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["value"] = self.value return result diff --git a/src/workos/audit_logs/_resource.py b/src/workos/audit_logs/_resource.py index bd5a8caf..f7388c78 100644 --- a/src/workos/audit_logs/_resource.py +++ b/src/workos/audit_logs/_resource.py @@ -2,11 +2,15 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient +from workos.common.models.pagination_order import PaginationOrder +from workos.organizations.models.audit_logs_retention import AuditLogsRetention + +from .._pagination import AsyncPage, SyncPage from .._types import RequestOptions, enum_value from .models import ( AuditLogAction, @@ -17,22 +21,19 @@ AuditLogSchemaActorInput, AuditLogSchemaTargetInput, ) -from workos.organizations.models.audit_logs_retention import AuditLogsRetention -from workos.common.models.pagination_order import PaginationOrder -from .._pagination import AsyncPage, SyncPage class AuditLogs: """Audit Logs API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def get_organization_audit_logs_retention( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogsRetention: """Get Retention @@ -63,7 +64,7 @@ def update_organization_audit_logs_retention( id: str, *, retention_period_in_days: int, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogsRetention: """Set Retention @@ -84,7 +85,7 @@ def update_organization_audit_logs_retention( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "retention_period_in_days": retention_period_in_days, } return self._client.request( @@ -98,11 +99,11 @@ def update_organization_audit_logs_retention( def list_actions( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuditLogAction]: """List Actions @@ -147,11 +148,11 @@ def list_action_schemas( self, action_name: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuditLogSchema]: """List Schemas @@ -197,10 +198,10 @@ def create_schema( self, action_name: str, *, - targets: List[AuditLogSchemaTargetInput], - actor: Optional[AuditLogSchemaActorInput] = None, - metadata: Optional[Dict[str, Any]] = None, - request_options: Optional[RequestOptions] = None, + targets: list[AuditLogSchemaTargetInput], + actor: AuditLogSchemaActorInput | None = None, + metadata: dict[str, Any] | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogSchema: """Create Schema @@ -222,7 +223,7 @@ def create_schema( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "actor": actor.to_dict() if actor is not None else None, @@ -244,8 +245,8 @@ def create_event( *, organization_id: str, event: AuditLogEvent, - idempotency_key: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + idempotency_key: str | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogEventCreateResponse: """Create Event @@ -274,7 +275,7 @@ def create_event( AuthenticationError: If the API key is invalid (401). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_id": organization_id, "event": event.to_dict(), } @@ -293,12 +294,12 @@ def create_export( organization_id: str, range_start: str, range_end: str, - actions: Optional[List[str]] = None, - actors: Optional[List[str]] = None, - actor_names: Optional[List[str]] = None, - actor_ids: Optional[List[str]] = None, - targets: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + actions: list[str] | None = None, + actors: list[str] | None = None, + actor_names: list[str] | None = None, + actor_ids: list[str] | None = None, + targets: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogExport: """Create Export @@ -324,7 +325,7 @@ def create_export( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "organization_id": organization_id, @@ -350,7 +351,7 @@ def get_export( self, audit_log_export_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogExport: """Get Export @@ -380,14 +381,14 @@ def get_export( class AsyncAuditLogs: """Audit Logs API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def get_organization_audit_logs_retention( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogsRetention: """Get Retention @@ -418,7 +419,7 @@ async def update_organization_audit_logs_retention( id: str, *, retention_period_in_days: int, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogsRetention: """Set Retention @@ -439,7 +440,7 @@ async def update_organization_audit_logs_retention( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "retention_period_in_days": retention_period_in_days, } return await self._client.request( @@ -453,11 +454,11 @@ async def update_organization_audit_logs_retention( async def list_actions( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuditLogAction]: """List Actions @@ -502,11 +503,11 @@ async def list_action_schemas( self, action_name: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuditLogSchema]: """List Schemas @@ -552,10 +553,10 @@ async def create_schema( self, action_name: str, *, - targets: List[AuditLogSchemaTargetInput], - actor: Optional[AuditLogSchemaActorInput] = None, - metadata: Optional[Dict[str, Any]] = None, - request_options: Optional[RequestOptions] = None, + targets: list[AuditLogSchemaTargetInput], + actor: AuditLogSchemaActorInput | None = None, + metadata: dict[str, Any] | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogSchema: """Create Schema @@ -577,7 +578,7 @@ async def create_schema( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "actor": actor.to_dict() if actor is not None else None, @@ -599,8 +600,8 @@ async def create_event( *, organization_id: str, event: AuditLogEvent, - idempotency_key: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + idempotency_key: str | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogEventCreateResponse: """Create Event @@ -629,7 +630,7 @@ async def create_event( AuthenticationError: If the API key is invalid (401). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_id": organization_id, "event": event.to_dict(), } @@ -648,12 +649,12 @@ async def create_export( organization_id: str, range_start: str, range_end: str, - actions: Optional[List[str]] = None, - actors: Optional[List[str]] = None, - actor_names: Optional[List[str]] = None, - actor_ids: Optional[List[str]] = None, - targets: Optional[List[str]] = None, - request_options: Optional[RequestOptions] = None, + actions: list[str] | None = None, + actors: list[str] | None = None, + actor_names: list[str] | None = None, + actor_ids: list[str] | None = None, + targets: list[str] | None = None, + request_options: RequestOptions | None = None, ) -> AuditLogExport: """Create Export @@ -679,7 +680,7 @@ async def create_export( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "organization_id": organization_id, @@ -705,7 +706,7 @@ async def get_export( self, audit_log_export_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogExport: """Get Export diff --git a/src/workos/audit_logs/models/audit_log_event.py b/src/workos/audit_logs/models/audit_log_event.py index 9826e6c7..fe6a20f1 100644 --- a/src/workos/audit_logs/models/audit_log_event.py +++ b/src/workos/audit_logs/models/audit_log_event.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Optional, Union -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .audit_log_event_actor import AuditLogEventActor from .audit_log_event_context import AuditLogEventContext @@ -22,31 +21,31 @@ class AuditLogEvent: """Identifier of what happened.""" occurred_at: datetime """ISO-8601 value of when the action occurred.""" - actor: "AuditLogEventActor" + actor: AuditLogEventActor """The entity that performed the action.""" - targets: List["AuditLogEventTarget"] + targets: list[AuditLogEventTarget] """The resources affected by the action.""" - context: "AuditLogEventContext" + context: AuditLogEventContext """Additional context about where and how the action occurred.""" - metadata: Optional[Dict[str, Union[str, float, bool]]] = None + metadata: dict[str, str | float | bool] | None = None """Additional data associated with the event or entity.""" - version: Optional[int] = None + version: int | None = None """What schema version the event is associated with.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEvent": + def from_dict(cls, data: dict[str, Any]) -> AuditLogEvent: """Deserialize from a dictionary.""" try: return cls( action=data["action"], occurred_at=_parse_datetime(data["occurred_at"]), - actor=AuditLogEventActor.from_dict(cast(Dict[str, Any], data["actor"])), + actor=AuditLogEventActor.from_dict(cast(dict[str, Any], data["actor"])), targets=[ - AuditLogEventTarget.from_dict(cast(Dict[str, Any], item)) + AuditLogEventTarget.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["targets"]) ], context=AuditLogEventContext.from_dict( - cast(Dict[str, Any], data["context"]) + cast(dict[str, Any], data["context"]) ), metadata=data.get("metadata"), version=data.get("version"), @@ -54,9 +53,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEvent": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogEvent", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["action"] = self.action result["occurred_at"] = _format_datetime(self.occurred_at) result["actor"] = self.actor.to_dict() diff --git a/src/workos/audit_logs/models/audit_log_event_actor.py b/src/workos/audit_logs/models/audit_log_event_actor.py index bf2cd249..c2065414 100644 --- a/src/workos/audit_logs/models/audit_log_event_actor.py +++ b/src/workos/audit_logs/models/audit_log_event_actor.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional, Union +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,13 +16,13 @@ class AuditLogEventActor: """Actor identifier.""" type: str """Actor type.""" - name: Optional[str] = None + name: str | None = None """Optional actor name.""" - metadata: Optional[Dict[str, Union[str, float, bool]]] = None + metadata: dict[str, str | float | bool] | None = None """Additional data associated with the event or entity.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventActor": + def from_dict(cls, data: dict[str, Any]) -> AuditLogEventActor: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventActor": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogEventActor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["type"] = self.type if self.name is not None: diff --git a/src/workos/audit_logs/models/audit_log_event_context.py b/src/workos/audit_logs/models/audit_log_event_context.py index 5a54bd7c..09f75ec5 100644 --- a/src/workos/audit_logs/models/audit_log_event_context.py +++ b/src/workos/audit_logs/models/audit_log_event_context.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,11 +14,11 @@ class AuditLogEventContext: location: str """IP Address or some other geolocation identifier.""" - user_agent: Optional[str] = None + user_agent: str | None = None """User agent string.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventContext": + def from_dict(cls, data: dict[str, Any]) -> AuditLogEventContext: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogEventContext": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogEventContext", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["location"] = self.location if self.user_agent is not None: result["user_agent"] = self.user_agent diff --git a/src/workos/audit_logs/models/audit_log_export.py b/src/workos/audit_logs/models/audit_log_export.py index bda554f4..8d1cfa4c 100644 --- a/src/workos/audit_logs/models/audit_log_export.py +++ b/src/workos/audit_logs/models/audit_log_export.py @@ -5,9 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.audit_log_export_state import AuditLogExportState @@ -19,17 +19,17 @@ class AuditLogExport: """Distinguishes the Audit Log Export object.""" id: str """The unique ID of the Audit Log Export.""" - state: "AuditLogExportState" + state: AuditLogExportState """The state of the export. Possible values: pending, ready, error, expired.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - url: Optional[str] = None + url: str | None = None """A URL to the CSV file. Only defined when the Audit Log Export is ready.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogExport": + def from_dict(cls, data: dict[str, Any]) -> AuditLogExport: """Deserialize from a dictionary.""" try: return cls( @@ -43,9 +43,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogExport": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogExport", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["state"] = ( diff --git a/src/workos/audit_logs/models/audit_log_export_creation.py b/src/workos/audit_logs/models/audit_log_export_creation.py index b202de61..ce381f4a 100644 --- a/src/workos/audit_logs/models/audit_log_export_creation.py +++ b/src/workos/audit_logs/models/audit_log_export_creation.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, List, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -19,21 +19,21 @@ class AuditLogExportCreation: """ISO-8601 value for start of the export range.""" range_end: datetime """ISO-8601 value for end of the export range.""" - actions: Optional[List[str]] = None + actions: list[str] | None = None """List of actions to filter against.""" - actors: Optional[List[str]] = None + actors: list[str] | None = None """Deprecated. Use `actor_names` instead. .. deprecated:: This field is deprecated.""" - actor_names: Optional[List[str]] = None + actor_names: list[str] | None = None """List of actor names to filter against.""" - actor_ids: Optional[List[str]] = None + actor_ids: list[str] | None = None """List of actor IDs to filter against.""" - targets: Optional[List[str]] = None + targets: list[str] | None = None """List of target types to filter against.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogExportCreation": + def from_dict(cls, data: dict[str, Any]) -> AuditLogExportCreation: """Deserialize from a dictionary.""" try: return cls( @@ -49,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogExportCreation": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogExportCreation", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_id"] = self.organization_id result["range_start"] = _format_datetime(self.range_start) result["range_end"] = _format_datetime(self.range_end) diff --git a/src/workos/audit_logs/models/audit_log_schema.py b/src/workos/audit_logs/models/audit_log_schema.py index e0f0d74c..c2214cf3 100644 --- a/src/workos/audit_logs/models/audit_log_schema.py +++ b/src/workos/audit_logs/models/audit_log_schema.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .audit_log_schema_actor import AuditLogSchemaActor from .audit_log_schema_target import AuditLogSchemaTarget @@ -21,28 +20,28 @@ class AuditLogSchema: """Distinguishes the Audit Log Schema object.""" version: int """The version of the schema.""" - targets: List["AuditLogSchemaTarget"] + targets: list[AuditLogSchemaTarget] """The list of targets for the schema.""" created_at: datetime """The timestamp when the Audit Log Schema was created.""" - actor: Optional["AuditLogSchemaActor"] = None + actor: AuditLogSchemaActor | None = None """The metadata schema for the actor.""" - metadata: Optional[Dict[str, Any]] = None + metadata: dict[str, Any] | None = None """Additional data associated with the event or entity.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchema": + def from_dict(cls, data: dict[str, Any]) -> AuditLogSchema: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "audit_log_schema"), version=data["version"], targets=[ - AuditLogSchemaTarget.from_dict(cast(Dict[str, Any], item)) + AuditLogSchemaTarget.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["targets"]) ], created_at=_parse_datetime(data["created_at"]), - actor=AuditLogSchemaActor.from_dict(cast(Dict[str, Any], _v_actor)) + actor=AuditLogSchemaActor.from_dict(cast(dict[str, Any], _v_actor)) if (_v_actor := data.get("actor")) is not None else None, metadata=data.get("metadata"), @@ -50,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchema": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogSchema", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["version"] = self.version result["targets"] = [item.to_dict() for item in self.targets] diff --git a/src/workos/audit_logs/models/audit_log_schema_actor.py b/src/workos/audit_logs/models/audit_log_schema_actor.py index b744ebb6..37b846e6 100644 --- a/src/workos/audit_logs/models/audit_log_schema_actor.py +++ b/src/workos/audit_logs/models/audit_log_schema_actor.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class AuditLogSchemaActor: """The metadata schema for the actor.""" - metadata: Dict[str, Any] + metadata: dict[str, Any] """The JSON Schema definition for actor metadata.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaActor": + def from_dict(cls, data: dict[str, Any]) -> AuditLogSchemaActor: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaActor": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogSchemaActor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["metadata"] = self.metadata return result diff --git a/src/workos/audit_logs/models/audit_log_schema_input.py b/src/workos/audit_logs/models/audit_log_schema_input.py index 2036a51d..b487c71c 100644 --- a/src/workos/audit_logs/models/audit_log_schema_input.py +++ b/src/workos/audit_logs/models/audit_log_schema_input.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .audit_log_schema_actor_input import AuditLogSchemaActorInput @@ -15,23 +15,23 @@ class AuditLogSchemaInput: """Audit Log Schema Input model.""" - targets: List["AuditLogSchemaTargetInput"] + targets: list[AuditLogSchemaTargetInput] """The list of targets for the schema.""" - actor: Optional["AuditLogSchemaActorInput"] = None + actor: AuditLogSchemaActorInput | None = None """The metadata schema for the actor.""" - metadata: Optional[Dict[str, Any]] = None + metadata: dict[str, Any] | None = None """Optional JSON schema for event metadata.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaInput": + def from_dict(cls, data: dict[str, Any]) -> AuditLogSchemaInput: """Deserialize from a dictionary.""" try: return cls( targets=[ - AuditLogSchemaTargetInput.from_dict(cast(Dict[str, Any], item)) + AuditLogSchemaTargetInput.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["targets"]) ], - actor=AuditLogSchemaActorInput.from_dict(cast(Dict[str, Any], _v_actor)) + actor=AuditLogSchemaActorInput.from_dict(cast(dict[str, Any], _v_actor)) if (_v_actor := data.get("actor")) is not None else None, metadata=data.get("metadata"), @@ -39,9 +39,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaInput": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogSchemaInput", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["targets"] = [item.to_dict() for item in self.targets] if self.actor is not None: result["actor"] = self.actor.to_dict() diff --git a/src/workos/audit_logs/models/audit_log_schema_target.py b/src/workos/audit_logs/models/audit_log_schema_target.py index 3c7b813e..809725b4 100644 --- a/src/workos/audit_logs/models/audit_log_schema_target.py +++ b/src/workos/audit_logs/models/audit_log_schema_target.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,11 +14,11 @@ class AuditLogSchemaTarget: type: str """The type of the target resource.""" - metadata: Optional[Dict[str, Any]] = None + metadata: dict[str, Any] | None = None """Additional data associated with the event or entity.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaTarget": + def from_dict(cls, data: dict[str, Any]) -> AuditLogSchemaTarget: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogSchemaTarget": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogSchemaTarget", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type if self.metadata is not None: result["metadata"] = self.metadata diff --git a/src/workos/authorization/_resource.py b/src/workos/authorization/_resource.py index 2ccf0073..d5aa7666 100644 --- a/src/workos/authorization/_resource.py +++ b/src/workos/authorization/_resource.py @@ -2,13 +2,23 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven +from dataclasses import dataclass + +from workos.common.models.authorization_permission import AuthorizationPermission +from workos.common.models.pagination_order import PaginationOrder +from workos.common.models.user_organization_membership_base_list_data import ( + UserOrganizationMembershipBaseListData, +) + +from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value from .models import ( + AuthorizationAssignment, AuthorizationCheck, AuthorizationResource, GroupRoleAssignment, @@ -19,14 +29,6 @@ RoleList, UserRoleAssignment, ) -from workos.common.models.authorization_permission import AuthorizationPermission -from workos.common.models.user_organization_membership_base_list_data import ( - UserOrganizationMembershipBaseListData, -) -from .models import AuthorizationAssignment -from workos.common.models.pagination_order import PaginationOrder -from .._pagination import AsyncPage, SyncPage -from dataclasses import dataclass @dataclass @@ -77,18 +79,18 @@ class ParentByExternalId: class Authorization: """Authorization API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_group_role_assignments( self, group_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[GroupRoleAssignment]: """List role assignments for a group @@ -135,10 +137,10 @@ def create_group_role_assignment( group_id: str, *, role_slug: str, - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> GroupRoleAssignment: """Assign a role to a group @@ -164,7 +166,7 @@ def create_group_role_assignment( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "role_slug": role_slug, @@ -186,8 +188,8 @@ def update_group_role_assignments( self, group_id: str, *, - role_assignments: List[ReplaceGroupRoleAssignmentEntry], - request_options: Optional[RequestOptions] = None, + role_assignments: list[ReplaceGroupRoleAssignmentEntry], + request_options: RequestOptions | None = None, ) -> GroupRoleAssignmentList: """Replace all role assignments for a group @@ -209,7 +211,7 @@ def update_group_role_assignments( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_assignments": [item.to_dict() for item in role_assignments], } return self._client.request( @@ -225,10 +227,10 @@ def delete_group_role_assignments( group_id: str, *, role_slug: str, - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> None: """Remove group role assignments by criteria @@ -250,7 +252,7 @@ def delete_group_role_assignments( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "role_slug": role_slug, @@ -272,7 +274,7 @@ def get_group_role_assignment( group_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> GroupRoleAssignment: """Get a group role assignment @@ -311,7 +313,7 @@ def delete_group_role_assignment( group_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a group role assignment @@ -346,8 +348,8 @@ def check( organization_membership_id: str, *, permission_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> AuthorizationCheck: """Check authorization @@ -370,7 +372,7 @@ def check( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permission_slug": permission_slug, } if isinstance(resource_target, ResourceTargetById): @@ -395,13 +397,13 @@ def list_resources_for_membership( self, organization_membership_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - parent_resource: Union[ParentResourceById, ParentResourceByExternalId], - request_options: Optional[RequestOptions] = None, + parent_resource: ParentResourceById | ParentResourceByExternalId, + request_options: RequestOptions | None = None, ) -> SyncPage[AuthorizationResource]: """List resources for organization membership @@ -469,11 +471,11 @@ def list_effective_permissions( organization_membership_id: str, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuthorizationPermission]: """List effective permissions for an organization membership on a resource @@ -530,11 +532,11 @@ def list_effective_permissions_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuthorizationPermission]: """List effective permissions for an organization membership on a resource by external ID @@ -591,14 +593,14 @@ def list_role_assignments( self, organization_membership_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserRoleAssignment]: """List role assignments @@ -656,8 +658,8 @@ def assign_role( organization_membership_id: str, *, role_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> UserRoleAssignment: """Assign a role @@ -680,7 +682,7 @@ def assign_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_slug": role_slug, } if isinstance(resource_target, ResourceTargetById): @@ -706,8 +708,8 @@ def remove_role( organization_membership_id: str, *, role_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> None: """Remove a role assignment @@ -727,7 +729,7 @@ def remove_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_slug": role_slug, } if isinstance(resource_target, ResourceTargetById): @@ -752,7 +754,7 @@ def remove_role_assignment( organization_membership_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a role assignment by ID @@ -786,7 +788,7 @@ def list_organization_roles( self, organization_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RoleList: """List custom roles @@ -818,10 +820,10 @@ def create_organization_role( organization_id: str, *, name: str, - slug: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + slug: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Role: """Create a custom role @@ -848,7 +850,7 @@ def create_organization_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -872,7 +874,7 @@ def get_organization_role( organization_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Get a custom role @@ -911,9 +913,9 @@ def update_organization_role( organization_id: str, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Role: """Update a custom role @@ -938,7 +940,7 @@ def update_organization_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -966,7 +968,7 @@ def delete_organization_role( organization_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a custom role @@ -1004,7 +1006,7 @@ def add_organization_role_permission( slug: str, *, body_slug: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Add a permission to a custom role @@ -1028,7 +1030,7 @@ def add_organization_role_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "slug": body_slug, } return self._client.request( @@ -1051,8 +1053,8 @@ def set_organization_role_permissions( organization_id: str, slug: str, *, - permissions: List[str], - request_options: Optional[RequestOptions] = None, + permissions: list[str], + request_options: RequestOptions | None = None, ) -> Role: """Set permissions for a custom role @@ -1075,7 +1077,7 @@ def set_organization_role_permissions( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permissions": permissions, } return self._client.request( @@ -1099,7 +1101,7 @@ def remove_organization_role_permission( slug: str, permission_slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a permission from a custom role @@ -1138,7 +1140,7 @@ def get_resource_by_external_id( resource_type_slug: str, external_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Get a resource by external ID @@ -1180,12 +1182,10 @@ def update_resource_by_external_id( resource_type_slug: str, external_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Update a resource by external ID @@ -1213,7 +1213,7 @@ def update_resource_by_external_id( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -1253,8 +1253,8 @@ def delete_resource_by_external_id( resource_type_slug: str, external_id: str, *, - cascade_delete: Optional[bool] = None, - request_options: Optional[RequestOptions] = None, + cascade_delete: bool | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an authorization resource by external ID @@ -1276,7 +1276,7 @@ def delete_resource_by_external_id( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "cascade_delete": cascade_delete, @@ -1303,13 +1303,13 @@ def list_memberships_for_resource_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - assignment: Optional[Union[AuthorizationAssignment, str]] = None, - request_options: Optional[RequestOptions] = None, + assignment: AuthorizationAssignment | str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserOrganizationMembershipBaseListData]: """List memberships for a resource by external ID @@ -1375,12 +1375,12 @@ def list_role_assignments_for_resource_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - role_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + role_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserRoleAssignment]: """List role assignments for a resource by external ID @@ -1437,15 +1437,15 @@ def list_role_assignments_for_resource_by_external_id( def list_resources( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - resource_external_id: Optional[str] = None, - parent: Optional[Union[ParentById, ParentByExternalId]] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + resource_type_slug: str | None = None, + resource_external_id: str | None = None, + parent: ParentById | ParentByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[AuthorizationResource]: """List resources @@ -1507,11 +1507,9 @@ def create_resource( name: str, resource_type_slug: str, organization_id: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Create an authorization resource @@ -1539,7 +1537,7 @@ def create_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "external_id": external_id, "name": name, "resource_type_slug": resource_type_slug, @@ -1569,7 +1567,7 @@ def get_resource( self, resource_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Get a resource @@ -1601,12 +1599,10 @@ def update_resource( self, resource_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Update a resource @@ -1632,7 +1628,7 @@ def update_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -1663,8 +1659,8 @@ def delete_resource( self, resource_id: str, *, - cascade_delete: Optional[bool] = None, - request_options: Optional[RequestOptions] = None, + cascade_delete: bool | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an authorization resource @@ -1684,7 +1680,7 @@ def delete_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "cascade_delete": cascade_delete, @@ -1702,13 +1698,13 @@ def list_memberships_for_resource( self, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - assignment: Optional[Union[AuthorizationAssignment, str]] = None, - request_options: Optional[RequestOptions] = None, + assignment: AuthorizationAssignment | str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserOrganizationMembershipBaseListData]: """List organization memberships for resource @@ -1767,12 +1763,12 @@ def list_role_assignments_for_resource( self, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - role_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + role_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserRoleAssignment]: """List role assignments for a resource @@ -1819,7 +1815,7 @@ def list_role_assignments_for_resource( def list_environment_roles( self, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RoleList: """List environment roles @@ -1846,9 +1842,9 @@ def create_environment_role( *, slug: str, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Role: """Create an environment role @@ -1874,7 +1870,7 @@ def create_environment_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -1897,7 +1893,7 @@ def get_environment_role( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Get an environment role @@ -1928,9 +1924,9 @@ def update_environment_role( self, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Role: """Update an environment role @@ -1954,7 +1950,7 @@ def update_environment_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -1976,7 +1972,7 @@ def add_environment_role_permission( slug: str, *, body_slug: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Add a permission to an environment role @@ -1999,7 +1995,7 @@ def add_environment_role_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "slug": body_slug, } return self._client.request( @@ -2014,8 +2010,8 @@ def set_environment_role_permissions( self, slug: str, *, - permissions: List[str], - request_options: Optional[RequestOptions] = None, + permissions: list[str], + request_options: RequestOptions | None = None, ) -> Role: """Set permissions for an environment role @@ -2038,7 +2034,7 @@ def set_environment_role_permissions( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permissions": permissions, } return self._client.request( @@ -2052,11 +2048,11 @@ def set_environment_role_permissions( def list_permissions( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuthorizationPermission]: """List permissions @@ -2101,9 +2097,9 @@ def create_permission( *, slug: str, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Permission: """Create a permission @@ -2128,7 +2124,7 @@ def create_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -2151,7 +2147,7 @@ def get_permission( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationPermission: """Get a permission @@ -2181,9 +2177,9 @@ def update_permission( self, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> AuthorizationPermission: """Update a permission @@ -2206,7 +2202,7 @@ def update_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -2227,7 +2223,7 @@ def delete_permission( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a permission @@ -2254,18 +2250,18 @@ def delete_permission( class AsyncAuthorization: """Authorization API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_group_role_assignments( self, group_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[GroupRoleAssignment]: """List role assignments for a group @@ -2312,10 +2308,10 @@ async def create_group_role_assignment( group_id: str, *, role_slug: str, - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> GroupRoleAssignment: """Assign a role to a group @@ -2341,7 +2337,7 @@ async def create_group_role_assignment( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "role_slug": role_slug, @@ -2363,8 +2359,8 @@ async def update_group_role_assignments( self, group_id: str, *, - role_assignments: List[ReplaceGroupRoleAssignmentEntry], - request_options: Optional[RequestOptions] = None, + role_assignments: list[ReplaceGroupRoleAssignmentEntry], + request_options: RequestOptions | None = None, ) -> GroupRoleAssignmentList: """Replace all role assignments for a group @@ -2386,7 +2382,7 @@ async def update_group_role_assignments( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_assignments": [item.to_dict() for item in role_assignments], } return await self._client.request( @@ -2402,10 +2398,10 @@ async def delete_group_role_assignments( group_id: str, *, role_slug: str, - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> None: """Remove group role assignments by criteria @@ -2427,7 +2423,7 @@ async def delete_group_role_assignments( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "role_slug": role_slug, @@ -2449,7 +2445,7 @@ async def get_group_role_assignment( group_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> GroupRoleAssignment: """Get a group role assignment @@ -2488,7 +2484,7 @@ async def delete_group_role_assignment( group_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a group role assignment @@ -2523,8 +2519,8 @@ async def check( organization_membership_id: str, *, permission_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> AuthorizationCheck: """Check authorization @@ -2547,7 +2543,7 @@ async def check( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permission_slug": permission_slug, } if isinstance(resource_target, ResourceTargetById): @@ -2572,13 +2568,13 @@ async def list_resources_for_membership( self, organization_membership_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - parent_resource: Union[ParentResourceById, ParentResourceByExternalId], - request_options: Optional[RequestOptions] = None, + parent_resource: ParentResourceById | ParentResourceByExternalId, + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthorizationResource]: """List resources for organization membership @@ -2646,11 +2642,11 @@ async def list_effective_permissions( organization_membership_id: str, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthorizationPermission]: """List effective permissions for an organization membership on a resource @@ -2707,11 +2703,11 @@ async def list_effective_permissions_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthorizationPermission]: """List effective permissions for an organization membership on a resource by external ID @@ -2768,14 +2764,14 @@ async def list_role_assignments( self, organization_membership_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - resource_id: Optional[str] = None, - resource_external_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + resource_id: str | None = None, + resource_external_id: str | None = None, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserRoleAssignment]: """List role assignments @@ -2833,8 +2829,8 @@ async def assign_role( organization_membership_id: str, *, role_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> UserRoleAssignment: """Assign a role @@ -2857,7 +2853,7 @@ async def assign_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_slug": role_slug, } if isinstance(resource_target, ResourceTargetById): @@ -2883,8 +2879,8 @@ async def remove_role( organization_membership_id: str, *, role_slug: str, - resource_target: Union[ResourceTargetById, ResourceTargetByExternalId], - request_options: Optional[RequestOptions] = None, + resource_target: ResourceTargetById | ResourceTargetByExternalId, + request_options: RequestOptions | None = None, ) -> None: """Remove a role assignment @@ -2904,7 +2900,7 @@ async def remove_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "role_slug": role_slug, } if isinstance(resource_target, ResourceTargetById): @@ -2929,7 +2925,7 @@ async def remove_role_assignment( organization_membership_id: str, role_assignment_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a role assignment by ID @@ -2963,7 +2959,7 @@ async def list_organization_roles( self, organization_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RoleList: """List custom roles @@ -2995,10 +2991,10 @@ async def create_organization_role( organization_id: str, *, name: str, - slug: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + slug: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Role: """Create a custom role @@ -3025,7 +3021,7 @@ async def create_organization_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -3049,7 +3045,7 @@ async def get_organization_role( organization_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Get a custom role @@ -3088,9 +3084,9 @@ async def update_organization_role( organization_id: str, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Role: """Update a custom role @@ -3115,7 +3111,7 @@ async def update_organization_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -3143,7 +3139,7 @@ async def delete_organization_role( organization_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a custom role @@ -3181,7 +3177,7 @@ async def add_organization_role_permission( slug: str, *, body_slug: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Add a permission to a custom role @@ -3205,7 +3201,7 @@ async def add_organization_role_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "slug": body_slug, } return await self._client.request( @@ -3228,8 +3224,8 @@ async def set_organization_role_permissions( organization_id: str, slug: str, *, - permissions: List[str], - request_options: Optional[RequestOptions] = None, + permissions: list[str], + request_options: RequestOptions | None = None, ) -> Role: """Set permissions for a custom role @@ -3252,7 +3248,7 @@ async def set_organization_role_permissions( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permissions": permissions, } return await self._client.request( @@ -3276,7 +3272,7 @@ async def remove_organization_role_permission( slug: str, permission_slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a permission from a custom role @@ -3315,7 +3311,7 @@ async def get_resource_by_external_id( resource_type_slug: str, external_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Get a resource by external ID @@ -3357,12 +3353,10 @@ async def update_resource_by_external_id( resource_type_slug: str, external_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Update a resource by external ID @@ -3390,7 +3384,7 @@ async def update_resource_by_external_id( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -3430,8 +3424,8 @@ async def delete_resource_by_external_id( resource_type_slug: str, external_id: str, *, - cascade_delete: Optional[bool] = None, - request_options: Optional[RequestOptions] = None, + cascade_delete: bool | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an authorization resource by external ID @@ -3453,7 +3447,7 @@ async def delete_resource_by_external_id( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "cascade_delete": cascade_delete, @@ -3480,13 +3474,13 @@ async def list_memberships_for_resource_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - assignment: Optional[Union[AuthorizationAssignment, str]] = None, - request_options: Optional[RequestOptions] = None, + assignment: AuthorizationAssignment | str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserOrganizationMembershipBaseListData]: """List memberships for a resource by external ID @@ -3552,12 +3546,12 @@ async def list_role_assignments_for_resource_by_external_id( resource_type_slug: str, external_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - role_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + role_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserRoleAssignment]: """List role assignments for a resource by external ID @@ -3614,15 +3608,15 @@ async def list_role_assignments_for_resource_by_external_id( async def list_resources( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - resource_type_slug: Optional[str] = None, - resource_external_id: Optional[str] = None, - parent: Optional[Union[ParentById, ParentByExternalId]] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + resource_type_slug: str | None = None, + resource_external_id: str | None = None, + parent: ParentById | ParentByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthorizationResource]: """List resources @@ -3684,11 +3678,9 @@ async def create_resource( name: str, resource_type_slug: str, organization_id: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Create an authorization resource @@ -3716,7 +3708,7 @@ async def create_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "external_id": external_id, "name": name, "resource_type_slug": resource_type_slug, @@ -3746,7 +3738,7 @@ async def get_resource( self, resource_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Get a resource @@ -3778,12 +3770,10 @@ async def update_resource( self, resource_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - parent_resource: Optional[ - Union[ParentResourceById, ParentResourceByExternalId] - ] = None, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + parent_resource: ParentResourceById | ParentResourceByExternalId | None = None, + request_options: RequestOptions | None = None, ) -> AuthorizationResource: """Update a resource @@ -3809,7 +3799,7 @@ async def update_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -3840,8 +3830,8 @@ async def delete_resource( self, resource_id: str, *, - cascade_delete: Optional[bool] = None, - request_options: Optional[RequestOptions] = None, + cascade_delete: bool | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an authorization resource @@ -3861,7 +3851,7 @@ async def delete_resource( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "cascade_delete": cascade_delete, @@ -3879,13 +3869,13 @@ async def list_memberships_for_resource( self, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", permission_slug: str, - assignment: Optional[Union[AuthorizationAssignment, str]] = None, - request_options: Optional[RequestOptions] = None, + assignment: AuthorizationAssignment | str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserOrganizationMembershipBaseListData]: """List organization memberships for resource @@ -3944,12 +3934,12 @@ async def list_role_assignments_for_resource( self, resource_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - role_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + role_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserRoleAssignment]: """List role assignments for a resource @@ -3996,7 +3986,7 @@ async def list_role_assignments_for_resource( async def list_environment_roles( self, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RoleList: """List environment roles @@ -4023,9 +4013,9 @@ async def create_environment_role( *, slug: str, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Role: """Create an environment role @@ -4051,7 +4041,7 @@ async def create_environment_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -4074,7 +4064,7 @@ async def get_environment_role( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Get an environment role @@ -4105,9 +4095,9 @@ async def update_environment_role( self, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Role: """Update an environment role @@ -4131,7 +4121,7 @@ async def update_environment_role( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -4153,7 +4143,7 @@ async def add_environment_role_permission( slug: str, *, body_slug: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Role: """Add a permission to an environment role @@ -4176,7 +4166,7 @@ async def add_environment_role_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "slug": body_slug, } return await self._client.request( @@ -4191,8 +4181,8 @@ async def set_environment_role_permissions( self, slug: str, *, - permissions: List[str], - request_options: Optional[RequestOptions] = None, + permissions: list[str], + request_options: RequestOptions | None = None, ) -> Role: """Set permissions for an environment role @@ -4215,7 +4205,7 @@ async def set_environment_role_permissions( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "permissions": permissions, } return await self._client.request( @@ -4229,11 +4219,11 @@ async def set_environment_role_permissions( async def list_permissions( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthorizationPermission]: """List permissions @@ -4278,9 +4268,9 @@ async def create_permission( *, slug: str, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - resource_type_slug: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + resource_type_slug: str | None = None, + request_options: RequestOptions | None = None, ) -> Permission: """Create a permission @@ -4305,7 +4295,7 @@ async def create_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "slug": slug, @@ -4328,7 +4318,7 @@ async def get_permission( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthorizationPermission: """Get a permission @@ -4358,9 +4348,9 @@ async def update_permission( self, slug: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> AuthorizationPermission: """Update a permission @@ -4383,7 +4373,7 @@ async def update_permission( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -4404,7 +4394,7 @@ async def delete_permission( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a permission diff --git a/src/workos/authorization/models/assign_role.py b/src/workos/authorization/models/assign_role.py index 15701aad..14e797eb 100644 --- a/src/workos/authorization/models/assign_role.py +++ b/src/workos/authorization/models/assign_role.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,15 +14,15 @@ class AssignRole: role_slug: str """The slug of the role to assign.""" - resource_id: Optional[str] = None + resource_id: str | None = None """The ID of the resource. Mutually exclusive with `resource_external_id` and `resource_type_slug`.""" - resource_external_id: Optional[str] = None + resource_external_id: str | None = None """The external ID of the resource. Required with `resource_type_slug`. Mutually exclusive with `resource_id`.""" - resource_type_slug: Optional[str] = None + resource_type_slug: str | None = None """The resource type slug. Required with `resource_external_id`. Mutually exclusive with `resource_id`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AssignRole": + def from_dict(cls, data: dict[str, Any]) -> AssignRole: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AssignRole": except (KeyError, ValueError) as e: _raise_deserialize_error("AssignRole", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["role_slug"] = self.role_slug if self.resource_id is not None: result["resource_id"] = self.resource_id diff --git a/src/workos/authorization/models/authorization_assignment.py b/src/workos/authorization/models/authorization_assignment.py index b24c8bd3..fea946e3 100644 --- a/src/workos/authorization/models/authorization_assignment.py +++ b/src/workos/authorization/models/authorization_assignment.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class AuthorizationAssignment(str, Enum): INDIRECT = "indirect" @classmethod - def _missing_(cls, value: object) -> Optional["AuthorizationAssignment"]: + def _missing_(cls, value: object) -> AuthorizationAssignment | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/authorization/models/authorization_check.py b/src/workos/authorization/models/authorization_check.py index 20159339..91cdb370 100644 --- a/src/workos/authorization/models/authorization_check.py +++ b/src/workos/authorization/models/authorization_check.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AuthorizationCheck: """Whether the organization membership has the specified permission on the resource.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationCheck": + def from_dict(cls, data: dict[str, Any]) -> AuthorizationCheck: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationCheck": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthorizationCheck", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["authorized"] = self.authorized return result diff --git a/src/workos/authorization/models/authorization_resource.py b/src/workos/authorization/models/authorization_resource.py index 02a950e6..5c294f4b 100644 --- a/src/workos/authorization/models/authorization_resource.py +++ b/src/workos/authorization/models/authorization_resource.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -17,11 +17,11 @@ class AuthorizationResource: """Distinguishes the Resource object.""" name: str """A human-readable name for the Resource.""" - description: Optional[str] + description: str | None """An optional description of the Resource.""" organization_id: str """The ID of the organization that owns the resource.""" - parent_resource_id: Optional[str] + parent_resource_id: str | None """The ID of the parent resource, if this resource is nested.""" id: str """The unique ID of the Resource.""" @@ -35,7 +35,7 @@ class AuthorizationResource: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationResource": + def from_dict(cls, data: dict[str, Any]) -> AuthorizationResource: """Deserialize from a dictionary.""" try: return cls( @@ -53,9 +53,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationResource": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthorizationResource", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["name"] = self.name if self.description is not None: diff --git a/src/workos/authorization/models/check_authorization.py b/src/workos/authorization/models/check_authorization.py index 7ca3ac69..36587cb0 100644 --- a/src/workos/authorization/models/check_authorization.py +++ b/src/workos/authorization/models/check_authorization.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,15 +14,15 @@ class CheckAuthorization: permission_slug: str """The slug of the permission to check.""" - resource_id: Optional[str] = None + resource_id: str | None = None """The ID of the resource. Mutually exclusive with `resource_external_id` and `resource_type_slug`.""" - resource_external_id: Optional[str] = None + resource_external_id: str | None = None """The external ID of the resource. Required with `resource_type_slug`. Mutually exclusive with `resource_id`.""" - resource_type_slug: Optional[str] = None + resource_type_slug: str | None = None """The slug of the resource type. Required with `resource_external_id`. Mutually exclusive with `resource_id`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "CheckAuthorization": + def from_dict(cls, data: dict[str, Any]) -> CheckAuthorization: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "CheckAuthorization": except (KeyError, ValueError) as e: _raise_deserialize_error("CheckAuthorization", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["permission_slug"] = self.permission_slug if self.resource_id is not None: result["resource_id"] = self.resource_id diff --git a/src/workos/authorization/models/group_role_assignment.py b/src/workos/authorization/models/group_role_assignment.py index 0c634e33..38cbcb93 100644 --- a/src/workos/authorization/models/group_role_assignment.py +++ b/src/workos/authorization/models/group_role_assignment.py @@ -4,14 +4,13 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast -from .group_role_assignment_resource import GroupRoleAssignmentResource +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.slim_role import SlimRole +from .group_role_assignment_resource import GroupRoleAssignmentResource + @dataclass(slots=True) class GroupRoleAssignment: @@ -23,9 +22,9 @@ class GroupRoleAssignment: """Unique identifier of the group role assignment.""" group_id: str """The ID of the group the role is assigned to.""" - role: "SlimRole" + role: SlimRole """The role included in the assignment.""" - resource: "GroupRoleAssignmentResource" + resource: GroupRoleAssignmentResource """The resource the role is assigned on.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -33,16 +32,16 @@ class GroupRoleAssignment: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupRoleAssignment": + def from_dict(cls, data: dict[str, Any]) -> GroupRoleAssignment: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "group_role_assignment"), id=data["id"], group_id=data["group_id"], - role=SlimRole.from_dict(cast(Dict[str, Any], data["role"])), + role=SlimRole.from_dict(cast(dict[str, Any], data["role"])), resource=GroupRoleAssignmentResource.from_dict( - cast(Dict[str, Any], data["resource"]) + cast(dict[str, Any], data["resource"]) ), created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), @@ -50,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "GroupRoleAssignment": except (KeyError, ValueError) as e: _raise_deserialize_error("GroupRoleAssignment", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["group_id"] = self.group_id diff --git a/src/workos/authorization/models/group_role_assignment_list.py b/src/workos/authorization/models/group_role_assignment_list.py index 9878ac30..bdb439bc 100644 --- a/src/workos/authorization/models/group_role_assignment_list.py +++ b/src/workos/authorization/models/group_role_assignment_list.py @@ -3,12 +3,12 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Literal +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error +from workos.common.models.list_metadata import ListMetadata from .group_role_assignment import GroupRoleAssignment -from workos.common.models.list_metadata import ListMetadata @dataclass(slots=True) @@ -17,30 +17,30 @@ class GroupRoleAssignmentList: object: Literal["list"] """Indicates this is a list response.""" - data: List["GroupRoleAssignment"] + data: list[GroupRoleAssignment] """The list of records for the current page.""" - list_metadata: "ListMetadata" + list_metadata: ListMetadata @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupRoleAssignmentList": + def from_dict(cls, data: dict[str, Any]) -> GroupRoleAssignmentList: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "list"), data=[ - GroupRoleAssignment.from_dict(cast(Dict[str, Any], item)) + GroupRoleAssignment.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["data"]) ], list_metadata=ListMetadata.from_dict( - cast(Dict[str, Any], data["list_metadata"]) + cast(dict[str, Any], data["list_metadata"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupRoleAssignmentList", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["data"] = [item.to_dict() for item in self.data] result["list_metadata"] = self.list_metadata.to_dict() diff --git a/src/workos/authorization/models/group_role_assignment_resource.py b/src/workos/authorization/models/group_role_assignment_resource.py index 14e56cb6..114cd033 100644 --- a/src/workos/authorization/models/group_role_assignment_resource.py +++ b/src/workos/authorization/models/group_role_assignment_resource.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -19,7 +20,7 @@ class GroupRoleAssignmentResource: """The slug of the resource type this resource belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupRoleAssignmentResource": + def from_dict(cls, data: dict[str, Any]) -> GroupRoleAssignmentResource: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "GroupRoleAssignmentResource": except (KeyError, ValueError) as e: _raise_deserialize_error("GroupRoleAssignmentResource", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["external_id"] = self.external_id result["resource_type_slug"] = self.resource_type_slug diff --git a/src/workos/authorization/models/replace_group_role_assignments.py b/src/workos/authorization/models/replace_group_role_assignments.py index 7f0c8cdc..367453e2 100644 --- a/src/workos/authorization/models/replace_group_role_assignments.py +++ b/src/workos/authorization/models/replace_group_role_assignments.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List +from typing import Any, cast + from workos._types import _raise_deserialize_error from .replace_group_role_assignment_entry import ReplaceGroupRoleAssignmentEntry @@ -14,17 +14,17 @@ class ReplaceGroupRoleAssignments: """Replace Group Role Assignments model.""" - role_assignments: List["ReplaceGroupRoleAssignmentEntry"] + role_assignments: list[ReplaceGroupRoleAssignmentEntry] """The list of role assignments that should exist for the group. All existing assignments will be replaced.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ReplaceGroupRoleAssignments": + def from_dict(cls, data: dict[str, Any]) -> ReplaceGroupRoleAssignments: """Deserialize from a dictionary.""" try: return cls( role_assignments=[ ReplaceGroupRoleAssignmentEntry.from_dict( - cast(Dict[str, Any], item) + cast(dict[str, Any], item) ) for item in cast(list[Any], data["role_assignments"]) ], @@ -32,8 +32,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "ReplaceGroupRoleAssignments": except (KeyError, ValueError) as e: _raise_deserialize_error("ReplaceGroupRoleAssignments", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["role_assignments"] = [item.to_dict() for item in self.role_assignments] return result diff --git a/src/workos/authorization/models/role.py b/src/workos/authorization/models/role.py index 771d0878..f2ec0548 100644 --- a/src/workos/authorization/models/role.py +++ b/src/workos/authorization/models/role.py @@ -5,9 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.role_type import RoleType @@ -23,13 +23,13 @@ class Role: """Unique identifier of the role.""" name: str """A descriptive name for the role.""" - description: Optional[str] + description: str | None """An optional description of the role.""" - type: "RoleType" + type: RoleType """Whether the role is scoped to the environment or an organization (custom role).""" resource_type_slug: str """The slug of the resource type the role is scoped to.""" - permissions: List[str] + permissions: list[str] """The permission slugs assigned to the role.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -37,7 +37,7 @@ class Role: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "Role": + def from_dict(cls, data: dict[str, Any]) -> Role: """Deserialize from a dictionary.""" try: return cls( @@ -55,9 +55,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "Role": except (KeyError, ValueError) as e: _raise_deserialize_error("Role", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["slug"] = self.slug result["object"] = self.object result["id"] = self.id diff --git a/src/workos/authorization/models/role_list.py b/src/workos/authorization/models/role_list.py index bd447f8b..900f36bf 100644 --- a/src/workos/authorization/models/role_list.py +++ b/src/workos/authorization/models/role_list.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Literal +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .role import Role @@ -15,26 +15,26 @@ class RoleList: """Role List model.""" object: Literal["list"] - data: List["Role"] + data: list[Role] """The list of records for the current page.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RoleList": + def from_dict(cls, data: dict[str, Any]) -> RoleList: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "list"), data=[ - Role.from_dict(cast(Dict[str, Any], item)) + Role.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["data"]) ], ) except (KeyError, ValueError) as e: _raise_deserialize_error("RoleList", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["data"] = [item.to_dict() for item in self.data] return result diff --git a/src/workos/authorization/models/set_role_permissions.py b/src/workos/authorization/models/set_role_permissions.py index 453971ab..fb8387d1 100644 --- a/src/workos/authorization/models/set_role_permissions.py +++ b/src/workos/authorization/models/set_role_permissions.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, List +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class SetRolePermissions: """Set Role Permissions model.""" - permissions: List[str] + permissions: list[str] """The permission slugs to assign to the role.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "SetRolePermissions": + def from_dict(cls, data: dict[str, Any]) -> SetRolePermissions: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "SetRolePermissions": except (KeyError, ValueError) as e: _raise_deserialize_error("SetRolePermissions", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["permissions"] = self.permissions return result diff --git a/src/workos/authorization/models/user_role_assignment.py b/src/workos/authorization/models/user_role_assignment.py index 8d9a8e1b..597811df 100644 --- a/src/workos/authorization/models/user_role_assignment.py +++ b/src/workos/authorization/models/user_role_assignment.py @@ -4,12 +4,11 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.slim_role import SlimRole + from .user_role_assignment_resource import UserRoleAssignmentResource from .user_role_assignment_source import UserRoleAssignmentSource @@ -24,11 +23,11 @@ class UserRoleAssignment: """Unique identifier of the role assignment.""" organization_membership_id: str """The ID of the organization membership the role is assigned to.""" - role: "SlimRole" + role: SlimRole """The role included in the assignment.""" - resource: "UserRoleAssignmentResource" + resource: UserRoleAssignmentResource """The resource the role is assigned on.""" - source: "UserRoleAssignmentSource" + source: UserRoleAssignmentSource """The origin of the role assignment.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -36,19 +35,19 @@ class UserRoleAssignment: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserRoleAssignment": + def from_dict(cls, data: dict[str, Any]) -> UserRoleAssignment: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "role_assignment"), id=data["id"], organization_membership_id=data["organization_membership_id"], - role=SlimRole.from_dict(cast(Dict[str, Any], data["role"])), + role=SlimRole.from_dict(cast(dict[str, Any], data["role"])), resource=UserRoleAssignmentResource.from_dict( - cast(Dict[str, Any], data["resource"]) + cast(dict[str, Any], data["resource"]) ), source=UserRoleAssignmentSource.from_dict( - cast(Dict[str, Any], data["source"]) + cast(dict[str, Any], data["source"]) ), created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), @@ -56,9 +55,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserRoleAssignment": except (KeyError, ValueError) as e: _raise_deserialize_error("UserRoleAssignment", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["organization_membership_id"] = self.organization_membership_id diff --git a/src/workos/authorization/models/user_role_assignment_source.py b/src/workos/authorization/models/user_role_assignment_source.py index c239ad5e..0b4dfd07 100644 --- a/src/workos/authorization/models/user_role_assignment_source.py +++ b/src/workos/authorization/models/user_role_assignment_source.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.user_role_assignment_source_type import ( UserRoleAssignmentSourceType, @@ -15,13 +16,13 @@ class UserRoleAssignmentSource: """The origin of the role assignment.""" - type: "UserRoleAssignmentSourceType" + type: UserRoleAssignmentSourceType """Whether the role was assigned directly or derived from a group.""" - group_role_assignment_id: Optional[str] + group_role_assignment_id: str | None """The ID of the group role assignment the role was derived from, or null if direct.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserRoleAssignmentSource": + def from_dict(cls, data: dict[str, Any]) -> UserRoleAssignmentSource: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +32,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "UserRoleAssignmentSource": except (KeyError, ValueError) as e: _raise_deserialize_error("UserRoleAssignmentSource", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type.value if isinstance(self.type, Enum) else self.type if self.group_role_assignment_id is not None: result["group_role_assignment_id"] = self.group_role_assignment_id diff --git a/src/workos/client_api/_resource.py b/src/workos/client_api/_resource.py index 0611f44f..ccce09ce 100644 --- a/src/workos/client_api/_resource.py +++ b/src/workos/client_api/_resource.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Optional +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient @@ -14,7 +14,7 @@ class ClientApi: """Client Api API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def create_token( @@ -22,7 +22,7 @@ def create_token( *, organization_id: str, user_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ClientApiTokenResponse: """Generate a Client API token @@ -44,7 +44,7 @@ def create_token( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_id": organization_id, "user_id": user_id, } @@ -60,7 +60,7 @@ def create_token( class AsyncClientApi: """Client Api API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def create_token( @@ -68,7 +68,7 @@ async def create_token( *, organization_id: str, user_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ClientApiTokenResponse: """Generate a Client API token @@ -90,7 +90,7 @@ async def create_token( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_id": organization_id, "user_id": user_id, } diff --git a/src/workos/client_api/models/client_api_token.py b/src/workos/client_api/models/client_api_token.py index 66bd560d..cb8906cb 100644 --- a/src/workos/client_api/models/client_api_token.py +++ b/src/workos/client_api/models/client_api_token.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class ClientApiToken: """The ID of the user to issue the Client API token for.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ClientApiToken": + def from_dict(cls, data: dict[str, Any]) -> ClientApiToken: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ClientApiToken": except (KeyError, ValueError) as e: _raise_deserialize_error("ClientApiToken", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_id"] = self.organization_id result["user_id"] = self.user_id return result diff --git a/src/workos/client_api/models/client_api_token_response.py b/src/workos/client_api/models/client_api_token_response.py index a721eb82..6cc9c9d2 100644 --- a/src/workos/client_api/models/client_api_token_response.py +++ b/src/workos/client_api/models/client_api_token_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class ClientApiTokenResponse: """The Client API token.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ClientApiTokenResponse": + def from_dict(cls, data: dict[str, Any]) -> ClientApiTokenResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "ClientApiTokenResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("ClientApiTokenResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["token"] = self.token return result diff --git a/src/workos/common/__init__.py b/src/workos/common/__init__.py index 8fc6065d..3f942006 100644 --- a/src/workos/common/__init__.py +++ b/src/workos/common/__init__.py @@ -1,6 +1,5 @@ # This file is auto-generated by oagen. Do not edit. -from .models import * from .models import ( AccessTokenAgentRegistrationCredentialIssuedDataDetail as AccessTokenAgentRegistrationCredentialIssuedDataDetail, ) @@ -51,6 +50,8 @@ from .models import ( AgentRegistrationOrganizationSwitchedData as AgentRegistrationOrganizationSwitchedData, ) +from .models import AgentRegistrationRefreshed as AgentRegistrationRefreshed +from .models import AgentRegistrationRefreshedData as AgentRegistrationRefreshedData from .models import AgentRegistrationRevoked as AgentRegistrationRevoked from .models import AgentRegistrationRevokedData as AgentRegistrationRevokedData from .models import AgentRegistrationStatus as AgentRegistrationStatus @@ -225,6 +226,7 @@ from .models import CreateDataIntegrationAuthMethods as CreateDataIntegrationAuthMethods from .models import CreateUserInviteOptionsLocale as CreateUserInviteOptionsLocale from .models import CreateUserPasswordHashType as CreateUserPasswordHashType +from .models import CreateUserPasswordSaltPosition as CreateUserPasswordSaltPosition from .models import CreateWebhookEndpointEvents as CreateWebhookEndpointEvents from .models import ( CustomProviderDefinitionAuthenticateVia as CustomProviderDefinitionAuthenticateVia, @@ -482,6 +484,7 @@ UpdateCustomProviderDefinitionAuthenticateVia as UpdateCustomProviderDefinitionAuthenticateVia, ) from .models import UpdateUserPasswordHashType as UpdateUserPasswordHashType +from .models import UpdateUserPasswordSaltPosition as UpdateUserPasswordSaltPosition from .models import UpdateWebhookEndpointEvents as UpdateWebhookEndpointEvents from .models import UpdateWebhookEndpointStatus as UpdateWebhookEndpointStatus from .models import User as User diff --git a/src/workos/common/models/__init__.py b/src/workos/common/models/__init__.py index c822920e..05b52f7a 100644 --- a/src/workos/common/models/__init__.py +++ b/src/workos/common/models/__init__.py @@ -44,9 +44,6 @@ from .agent_registration_created_data_agent_identity import ( AgentRegistrationCreatedDataAgentIdentity as AgentRegistrationCreatedDataAgentIdentity, ) -from .agent_registration_created_data_kind import * -from .agent_registration_created_data_method import * -from .agent_registration_created_data_status import * from .agent_registration_credential_issued import ( AgentRegistrationCredentialIssued as AgentRegistrationCredentialIssued, ) @@ -75,6 +72,12 @@ from .agent_registration_organization_switched_data import ( AgentRegistrationOrganizationSwitchedData as AgentRegistrationOrganizationSwitchedData, ) +from .agent_registration_refreshed import ( + AgentRegistrationRefreshed as AgentRegistrationRefreshed, +) +from .agent_registration_refreshed_data import ( + AgentRegistrationRefreshedData as AgentRegistrationRefreshedData, +) from .agent_registration_revoked import ( AgentRegistrationRevoked as AgentRegistrationRevoked, ) @@ -237,7 +240,6 @@ from .authentication_radar_risk_detected_data import ( AuthenticationRadarRiskDetectedData as AuthenticationRadarRiskDetectedData, ) -from .authentication_radar_risk_detected_data_action import * from .authentication_reauthentication_succeeded import ( AuthenticationReauthenticationSucceeded as AuthenticationReauthenticationSucceeded, ) @@ -312,26 +314,18 @@ from .connection_activated_data import ( ConnectionActivatedData as ConnectionActivatedData, ) -from .connection_activated_data_connection_type import * from .connection_activated_data_domain import ( ConnectionActivatedDataDomain as ConnectionActivatedDataDomain, ) -from .connection_activated_data_state import * -from .connection_activated_data_status import * from .connection_deactivated import ConnectionDeactivated as ConnectionDeactivated from .connection_deactivated_data import ( ConnectionDeactivatedData as ConnectionDeactivatedData, ) -from .connection_deactivated_data_connection_type import * from .connection_deactivated_data_domain import ( ConnectionDeactivatedDataDomain as ConnectionDeactivatedDataDomain, ) -from .connection_deactivated_data_state import * -from .connection_deactivated_data_status import * from .connection_deleted import ConnectionDeleted as ConnectionDeleted from .connection_deleted_data import ConnectionDeletedData as ConnectionDeletedData -from .connection_deleted_data_connection_type import * -from .connection_deleted_data_state import * from .connection_saml_certificate_renewal_required import ( ConnectionSAMLCertificateRenewalRequired as ConnectionSAMLCertificateRenewalRequired, ) @@ -341,7 +335,6 @@ from .connection_saml_certificate_renewal_required_data_certificate import ( ConnectionSAMLCertificateRenewalRequiredDataCertificate as ConnectionSAMLCertificateRenewalRequiredDataCertificate, ) -from .connection_saml_certificate_renewal_required_data_certificate_certificate_type import * from .connection_saml_certificate_renewal_required_data_connection import ( ConnectionSAMLCertificateRenewalRequiredDataConnection as ConnectionSAMLCertificateRenewalRequiredDataConnection, ) @@ -354,7 +347,6 @@ from .connection_saml_certificate_renewed_data_certificate import ( ConnectionSAMLCertificateRenewedDataCertificate as ConnectionSAMLCertificateRenewedDataCertificate, ) -from .connection_saml_certificate_renewed_data_certificate_certificate_type import * from .connection_saml_certificate_renewed_data_connection import ( ConnectionSAMLCertificateRenewedDataConnection as ConnectionSAMLCertificateRenewedDataConnection, ) @@ -370,6 +362,9 @@ from .create_user_password_hash_type import ( CreateUserPasswordHashType as CreateUserPasswordHashType, ) +from .create_user_password_salt_position import ( + CreateUserPasswordSaltPosition as CreateUserPasswordSaltPosition, +) from .create_webhook_endpoint_events import ( CreateWebhookEndpointEvents as CreateWebhookEndpointEvents, ) @@ -415,7 +410,6 @@ from .directory_type import DirectoryType as DirectoryType from .directory_user import DirectoryUser as DirectoryUser from .directory_user_email import DirectoryUserEmail as DirectoryUserEmail -from .directory_user_state import * from .directory_user_with_groups_state import ( DirectoryUserWithGroupsState as DirectoryUserWithGroupsState, ) @@ -424,12 +418,8 @@ from .dsync_activated_data_domain import ( DsyncActivatedDataDomain as DsyncActivatedDataDomain, ) -from .dsync_activated_data_state import * -from .dsync_activated_data_type import * from .dsync_deleted import DsyncDeleted as DsyncDeleted from .dsync_deleted_data import DsyncDeletedData as DsyncDeletedData -from .dsync_deleted_data_state import * -from .dsync_deleted_data_type import * from .dsync_group_created import DsyncGroupCreated as DsyncGroupCreated from .dsync_group_deleted import DsyncGroupDeleted as DsyncGroupDeleted from .dsync_group_updated import DsyncGroupUpdated as DsyncGroupUpdated @@ -453,7 +443,6 @@ from .dsync_user_updated_data_email import ( DsyncUserUpdatedDataEmail as DsyncUserUpdatedDataEmail, ) -from .dsync_user_updated_data_state import * from .email_verification_created import ( EmailVerificationCreated as EmailVerificationCreated, ) @@ -463,7 +452,6 @@ from .error_response import ErrorResponse as ErrorResponse from .event_context import EventContext as EventContext from .event_context_actor import EventContextActor as EventContextActor -from .event_context_actor_source import * from .event_context_google_analytics_session import ( EventContextGoogleAnalyticsSession as EventContextGoogleAnalyticsSession, ) @@ -475,7 +463,6 @@ from .flag_created_context_actor import ( FlagCreatedContextActor as FlagCreatedContextActor, ) -from .flag_created_context_actor_source import * from .flag_created_data import FlagCreatedData as FlagCreatedData from .flag_created_data_owner import FlagCreatedDataOwner as FlagCreatedDataOwner from .flag_deleted import FlagDeleted as FlagDeleted @@ -483,17 +470,14 @@ from .flag_deleted_context_actor import ( FlagDeletedContextActor as FlagDeletedContextActor, ) -from .flag_deleted_context_actor_source import * from .flag_deleted_data import FlagDeletedData as FlagDeletedData from .flag_deleted_data_owner import FlagDeletedDataOwner as FlagDeletedDataOwner from .flag_owner import FlagOwner as FlagOwner from .flag_rule_updated import FlagRuleUpdated as FlagRuleUpdated from .flag_rule_updated_context import FlagRuleUpdatedContext as FlagRuleUpdatedContext -from .flag_rule_updated_context_access_type import * from .flag_rule_updated_context_actor import ( FlagRuleUpdatedContextActor as FlagRuleUpdatedContextActor, ) -from .flag_rule_updated_context_actor_source import * from .flag_rule_updated_context_configured_target import ( FlagRuleUpdatedContextConfiguredTarget as FlagRuleUpdatedContextConfiguredTarget, ) @@ -509,7 +493,6 @@ from .flag_rule_updated_context_previous_attribute_context import ( FlagRuleUpdatedContextPreviousAttributeContext as FlagRuleUpdatedContextPreviousAttributeContext, ) -from .flag_rule_updated_context_previous_attribute_context_access_type import * from .flag_rule_updated_context_previous_attribute_context_configured_target import ( FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget as FlagRuleUpdatedContextPreviousAttributeContextConfiguredTarget, ) @@ -531,7 +514,6 @@ from .flag_updated_context_actor import ( FlagUpdatedContextActor as FlagUpdatedContextActor, ) -from .flag_updated_context_actor_source import * from .flag_updated_context_previous_attribute import ( FlagUpdatedContextPreviousAttribute as FlagUpdatedContextPreviousAttribute, ) @@ -551,16 +533,12 @@ from .group_updated import GroupUpdated as GroupUpdated from .invitation_accepted import InvitationAccepted as InvitationAccepted from .invitation_accepted_data import InvitationAcceptedData as InvitationAcceptedData -from .invitation_accepted_data_state import * from .invitation_created import InvitationCreated as InvitationCreated from .invitation_created_data import InvitationCreatedData as InvitationCreatedData -from .invitation_created_data_state import * from .invitation_resent import InvitationResent as InvitationResent from .invitation_resent_data import InvitationResentData as InvitationResentData -from .invitation_resent_data_state import * from .invitation_revoked import InvitationRevoked as InvitationRevoked from .invitation_revoked_data import InvitationRevokedData as InvitationRevokedData -from .invitation_revoked_data_state import * from .invitation_state import InvitationState as InvitationState from .list_metadata import ListMetadata as ListMetadata from .magic_auth_created import MagicAuthCreated as MagicAuthCreated @@ -572,8 +550,6 @@ from .organization_created_data_domain import ( OrganizationCreatedDataDomain as OrganizationCreatedDataDomain, ) -from .organization_created_data_domain_state import * -from .organization_created_data_domain_verification_strategy import * from .organization_deleted import OrganizationDeleted as OrganizationDeleted from .organization_deleted_data import ( OrganizationDeletedData as OrganizationDeletedData, @@ -581,8 +557,6 @@ from .organization_deleted_data_domain import ( OrganizationDeletedDataDomain as OrganizationDeletedDataDomain, ) -from .organization_deleted_data_domain_state import * -from .organization_deleted_data_domain_verification_strategy import * from .organization_domain import OrganizationDomain as OrganizationDomain from .organization_domain_created import ( OrganizationDomainCreated as OrganizationDomainCreated, @@ -590,8 +564,6 @@ from .organization_domain_created_data import ( OrganizationDomainCreatedData as OrganizationDomainCreatedData, ) -from .organization_domain_created_data_state import * -from .organization_domain_created_data_verification_strategy import * from .organization_domain_data_state import ( OrganizationDomainDataState as OrganizationDomainDataState, ) @@ -601,8 +573,6 @@ from .organization_domain_deleted_data import ( OrganizationDomainDeletedData as OrganizationDomainDeletedData, ) -from .organization_domain_deleted_data_state import * -from .organization_domain_deleted_data_verification_strategy import * from .organization_domain_state import ( OrganizationDomainState as OrganizationDomainState, ) @@ -612,8 +582,6 @@ from .organization_domain_updated_data import ( OrganizationDomainUpdatedData as OrganizationDomainUpdatedData, ) -from .organization_domain_updated_data_state import * -from .organization_domain_updated_data_verification_strategy import * from .organization_domain_verification_failed import ( OrganizationDomainVerificationFailed as OrganizationDomainVerificationFailed, ) @@ -623,9 +591,6 @@ from .organization_domain_verification_failed_data_organization_domain import ( OrganizationDomainVerificationFailedDataOrganizationDomain as OrganizationDomainVerificationFailedDataOrganizationDomain, ) -from .organization_domain_verification_failed_data_organization_domain_state import * -from .organization_domain_verification_failed_data_organization_domain_verification_strategy import * -from .organization_domain_verification_failed_data_reason import * from .organization_domain_verification_strategy import ( OrganizationDomainVerificationStrategy as OrganizationDomainVerificationStrategy, ) @@ -635,22 +600,18 @@ from .organization_domain_verified_data import ( OrganizationDomainVerifiedData as OrganizationDomainVerifiedData, ) -from .organization_domain_verified_data_state import * -from .organization_domain_verified_data_verification_strategy import * from .organization_membership_created import ( OrganizationMembershipCreated as OrganizationMembershipCreated, ) from .organization_membership_created_data import ( OrganizationMembershipCreatedData as OrganizationMembershipCreatedData, ) -from .organization_membership_created_data_status import * from .organization_membership_deleted import ( OrganizationMembershipDeleted as OrganizationMembershipDeleted, ) from .organization_membership_deleted_data import ( OrganizationMembershipDeletedData as OrganizationMembershipDeletedData, ) -from .organization_membership_deleted_data_status import * from .organization_membership_status import ( OrganizationMembershipStatus as OrganizationMembershipStatus, ) @@ -660,7 +621,6 @@ from .organization_membership_updated_data import ( OrganizationMembershipUpdatedData as OrganizationMembershipUpdatedData, ) -from .organization_membership_updated_data_status import * from .organization_role_created import ( OrganizationRoleCreated as OrganizationRoleCreated, ) @@ -686,8 +646,6 @@ from .organization_updated_data_domain import ( OrganizationUpdatedDataDomain as OrganizationUpdatedDataDomain, ) -from .organization_updated_data_domain_state import * -from .organization_updated_data_domain_verification_strategy import * from .pagination_order import PaginationOrder as PaginationOrder from .password_reset_created import PasswordResetCreated as PasswordResetCreated from .password_reset_created_data import ( @@ -704,7 +662,6 @@ from .permission_updated import PermissionUpdated as PermissionUpdated from .permission_updated_data import PermissionUpdatedData as PermissionUpdatedData from .pipe_connected_account import PipeConnectedAccount as PipeConnectedAccount -from .pipe_connected_account_state import * from .pipes_connected_account_connected import ( PipesConnectedAccountConnected as PipesConnectedAccountConnected, ) @@ -752,18 +709,14 @@ from .role_updated_data import RoleUpdatedData as RoleUpdatedData from .session_created import SessionCreated as SessionCreated from .session_created_data import SessionCreatedData as SessionCreatedData -from .session_created_data_auth_method import * from .session_created_data_impersonator import ( SessionCreatedDataImpersonator as SessionCreatedDataImpersonator, ) -from .session_created_data_status import * from .session_revoked import SessionRevoked as SessionRevoked from .session_revoked_data import SessionRevokedData as SessionRevokedData -from .session_revoked_data_auth_method import * from .session_revoked_data_impersonator import ( SessionRevokedDataImpersonator as SessionRevokedDataImpersonator, ) -from .session_revoked_data_status import * from .slim_role import SlimRole as SlimRole from .update_custom_provider_definition_authenticate_via import ( UpdateCustomProviderDefinitionAuthenticateVia as UpdateCustomProviderDefinitionAuthenticateVia, @@ -771,6 +724,9 @@ from .update_user_password_hash_type import ( UpdateUserPasswordHashType as UpdateUserPasswordHashType, ) +from .update_user_password_salt_position import ( + UpdateUserPasswordSaltPosition as UpdateUserPasswordSaltPosition, +) from .update_webhook_endpoint_events import ( UpdateWebhookEndpointEvents as UpdateWebhookEndpointEvents, ) @@ -816,7 +772,6 @@ from .vault_byok_key_deleted_data import ( VaultByokKeyDeletedData as VaultByokKeyDeletedData, ) -from .vault_byok_key_provider import * from .vault_byok_key_verification_completed import ( VaultByokKeyVerificationCompleted as VaultByokKeyVerificationCompleted, ) @@ -825,39 +780,28 @@ ) from .vault_data_created import VaultDataCreated as VaultDataCreated from .vault_data_created_data import VaultDataCreatedData as VaultDataCreatedData -from .vault_data_created_data_actor_source import * from .vault_data_deleted import VaultDataDeleted as VaultDataDeleted from .vault_data_deleted_data import VaultDataDeletedData as VaultDataDeletedData -from .vault_data_deleted_data_actor_source import * from .vault_data_read import VaultDataRead as VaultDataRead from .vault_data_read_data import VaultDataReadData as VaultDataReadData -from .vault_data_read_data_actor_source import * from .vault_data_updated import VaultDataUpdated as VaultDataUpdated from .vault_data_updated_data import VaultDataUpdatedData as VaultDataUpdatedData -from .vault_data_updated_data_actor_source import * from .vault_dek_decrypted import VaultDekDecrypted as VaultDekDecrypted from .vault_dek_decrypted_data import VaultDekDecryptedData as VaultDekDecryptedData -from .vault_dek_decrypted_data_actor_source import * from .vault_dek_read import VaultDekRead as VaultDekRead from .vault_dek_read_data import VaultDekReadData as VaultDekReadData -from .vault_dek_read_data_actor_source import * from .vault_kek_created import VaultKekCreated as VaultKekCreated from .vault_kek_created_data import VaultKekCreatedData as VaultKekCreatedData -from .vault_kek_created_data_actor_source import * from .vault_kek_deleted import VaultKekDeleted as VaultKekDeleted from .vault_kek_deleted_data import VaultKekDeletedData as VaultKekDeletedData -from .vault_kek_deleted_data_actor_source import * from .vault_metadata_read import VaultMetadataRead as VaultMetadataRead from .vault_metadata_read_data import VaultMetadataReadData as VaultMetadataReadData -from .vault_metadata_read_data_actor_source import * from .vault_names_listed import VaultNamesListed as VaultNamesListed from .vault_names_listed_data import VaultNamesListedData as VaultNamesListedData -from .vault_names_listed_data_actor_source import * from .waitlist_user import WaitlistUser as WaitlistUser from .waitlist_user_approved import WaitlistUserApproved as WaitlistUserApproved from .waitlist_user_created import WaitlistUserCreated as WaitlistUserCreated from .waitlist_user_denied import WaitlistUserDenied as WaitlistUserDenied -from .waitlist_user_state import * from .webhook_endpoint_status import WebhookEndpointStatus as WebhookEndpointStatus from .widget_session_token_scopes import ( WidgetSessionTokenScopes as WidgetSessionTokenScopes, diff --git a/src/workos/common/models/access_token_agent_registration_credential_issued_data_detail.py b/src/workos/common/models/access_token_agent_registration_credential_issued_data_detail.py index 80463f26..1d76a444 100644 --- a/src/workos/common/models/access_token_agent_registration_credential_issued_data_detail.py +++ b/src/workos/common/models/access_token_agent_registration_credential_issued_data_detail.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional, Union +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -15,13 +16,13 @@ class AccessTokenAgentRegistrationCredentialIssuedDataDetail: """The kind of credential issued.""" jti: str """The JWT ID of the issued access token.""" - expires_at: Union[str, Optional[Literal["null"]]] + expires_at: str | Literal["null"] | None """The timestamp when the access token expires.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AccessTokenAgentRegistrationCredentialIssuedDataDetail": + cls, data: dict[str, Any] + ) -> AccessTokenAgentRegistrationCredentialIssuedDataDetail: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +35,9 @@ def from_dict( "AccessTokenAgentRegistrationCredentialIssuedDataDetail", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["kind"] = self.kind result["jti"] = self.jti result["expires_at"] = self.expires_at diff --git a/src/workos/common/models/action_authentication_denied.py b/src/workos/common/models/action_authentication_denied.py index 163a3314..9e5a2bd5 100644 --- a/src/workos/common/models/action_authentication_denied.py +++ b/src/workos/common/models/action_authentication_denied.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .action_authentication_denied_data import ActionAuthenticationDeniedData from .event_context import EventContext @@ -22,14 +21,14 @@ class ActionAuthenticationDenied: id: str """Unique identifier for the event.""" event: Literal["action.authentication.denied"] - data: "ActionAuthenticationDeniedData" + data: ActionAuthenticationDeniedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ActionAuthenticationDenied": + def from_dict(cls, data: dict[str, Any]) -> ActionAuthenticationDenied: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ActionAuthenticationDenied": id=data["id"], event=data.get("event", "action.authentication.denied"), data=ActionAuthenticationDeniedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ActionAuthenticationDenied", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/action_authentication_denied_data.py b/src/workos/common/models/action_authentication_denied_data.py index 1f6e0451..2f7f2060 100644 --- a/src/workos/common/models/action_authentication_denied_data.py +++ b/src/workos/common/models/action_authentication_denied_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -21,17 +22,17 @@ class ActionAuthenticationDeniedData: """The verdict of the action.""" user_id: str """The ID of the user.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the organization.""" email: str """The email address of the user.""" - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ActionAuthenticationDeniedData": + def from_dict(cls, data: dict[str, Any]) -> ActionAuthenticationDeniedData: """Deserialize from a dictionary.""" try: return cls( @@ -48,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ActionAuthenticationDeniedData": except (KeyError, ValueError) as e: _raise_deserialize_error("ActionAuthenticationDeniedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["action_endpoint_id"] = self.action_endpoint_id result["action_execution_id"] = self.action_execution_id result["type"] = self.type diff --git a/src/workos/common/models/action_user_registration_denied.py b/src/workos/common/models/action_user_registration_denied.py index 38b5318a..66ef90f6 100644 --- a/src/workos/common/models/action_user_registration_denied.py +++ b/src/workos/common/models/action_user_registration_denied.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .action_user_registration_denied_data import ActionUserRegistrationDeniedData from .event_context import EventContext @@ -22,14 +21,14 @@ class ActionUserRegistrationDenied: id: str """Unique identifier for the event.""" event: Literal["action.user_registration.denied"] - data: "ActionUserRegistrationDeniedData" + data: ActionUserRegistrationDeniedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ActionUserRegistrationDenied": + def from_dict(cls, data: dict[str, Any]) -> ActionUserRegistrationDenied: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "ActionUserRegistrationDenied": id=data["id"], event=data.get("event", "action.user_registration.denied"), data=ActionUserRegistrationDeniedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ActionUserRegistrationDenied", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/action_user_registration_denied_data.py b/src/workos/common/models/action_user_registration_denied_data.py index fec7b353..2d43661e 100644 --- a/src/workos/common/models/action_user_registration_denied_data.py +++ b/src/workos/common/models/action_user_registration_denied_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -19,17 +20,17 @@ class ActionUserRegistrationDeniedData: """The type of action that was denied.""" verdict: Literal["Deny"] """The verdict of the action.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the organization.""" email: str """The email address of the user.""" - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ActionUserRegistrationDeniedData": + def from_dict(cls, data: dict[str, Any]) -> ActionUserRegistrationDeniedData: """Deserialize from a dictionary.""" try: return cls( @@ -45,9 +46,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ActionUserRegistrationDeniedData": except (KeyError, ValueError) as e: _raise_deserialize_error("ActionUserRegistrationDeniedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["action_endpoint_id"] = self.action_endpoint_id result["action_execution_id"] = self.action_execution_id result["type"] = self.type diff --git a/src/workos/common/models/actor.py b/src/workos/common/models/actor.py index 0edd4bed..f940c393 100644 --- a/src/workos/common/models/actor.py +++ b/src/workos/common/models/actor.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class Actor: """Display name of the actor.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "Actor": + def from_dict(cls, data: dict[str, Any]) -> Actor: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "Actor": except (KeyError, ValueError) as e: _raise_deserialize_error("Actor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["name"] = self.name return result diff --git a/src/workos/common/models/add_role_permission.py b/src/workos/common/models/add_role_permission.py index 76bbf030..9648c4d3 100644 --- a/src/workos/common/models/add_role_permission.py +++ b/src/workos/common/models/add_role_permission.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AddRolePermission: """The slug of the permission to add to the role.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AddRolePermission": + def from_dict(cls, data: dict[str, Any]) -> AddRolePermission: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AddRolePermission": except (KeyError, ValueError) as e: _raise_deserialize_error("AddRolePermission", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["slug"] = self.slug return result diff --git a/src/workos/common/models/agent_admin_validate_credential_request_type.py b/src/workos/common/models/agent_admin_validate_credential_request_type.py index 09e0a046..819b5c59 100644 --- a/src/workos/common/models/agent_admin_validate_credential_request_type.py +++ b/src/workos/common/models/agent_admin_validate_credential_request_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,9 +15,7 @@ class AgentAdminValidateCredentialRequestType(str, Enum): ACCESS_TOKEN = "access_token" @classmethod - def _missing_( - cls, value: object - ) -> Optional["AgentAdminValidateCredentialRequestType"]: + def _missing_(cls, value: object) -> AgentAdminValidateCredentialRequestType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/agent_registration_claim_completed.py b/src/workos/common/models/agent_registration_claim_completed.py index 14242075..38a65dcc 100644 --- a/src/workos/common/models/agent_registration_claim_completed.py +++ b/src/workos/common/models/agent_registration_claim_completed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_claim_completed_data import AgentRegistrationClaimCompletedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AgentRegistrationClaimCompleted: id: str """Unique identifier for the event.""" event: Literal["agent.registration.claim.completed"] - data: "AgentRegistrationClaimCompletedData" + data: AgentRegistrationClaimCompletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimCompleted": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationClaimCompleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimCompleted": id=data["id"], event=data.get("event", "agent.registration.claim.completed"), data=AgentRegistrationClaimCompletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimCompleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_claim_completed_data.py b/src/workos/common/models/agent_registration_claim_completed_data.py index aee5d615..2d45c730 100644 --- a/src/workos/common/models/agent_registration_claim_completed_data.py +++ b/src/workos/common/models/agent_registration_claim_completed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .agent_registration_claim_completed_data_claimed_by import ( @@ -24,7 +24,7 @@ class AgentRegistrationClaimCompletedData: """The ID of the agent registration.""" completed_by_attempt_id: str """The ID of the claim attempt that completed the claim.""" - claimed_by: "AgentRegistrationClaimCompletedDataClaimedBy" + claimed_by: AgentRegistrationClaimCompletedDataClaimedBy """The user who completed the claim.""" completed_at: str """The timestamp when the claim was completed.""" @@ -34,7 +34,7 @@ class AgentRegistrationClaimCompletedData: """The timestamp when the claim was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimCompletedData": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationClaimCompletedData: """Deserialize from a dictionary.""" try: return cls( @@ -43,7 +43,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimCompletedData agent_registration_id=data["agent_registration_id"], completed_by_attempt_id=data["completed_by_attempt_id"], claimed_by=AgentRegistrationClaimCompletedDataClaimedBy.from_dict( - cast(Dict[str, Any], data["claimed_by"]) + cast(dict[str, Any], data["claimed_by"]) ), completed_at=data["completed_at"], created_at=data["created_at"], @@ -52,9 +52,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationClaimCompletedData except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimCompletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["agent_registration_id"] = self.agent_registration_id diff --git a/src/workos/common/models/agent_registration_claim_completed_data_claimed_by.py b/src/workos/common/models/agent_registration_claim_completed_data_claimed_by.py index dc41efac..818c741d 100644 --- a/src/workos/common/models/agent_registration_claim_completed_data_claimed_by.py +++ b/src/workos/common/models/agent_registration_claim_completed_data_claimed_by.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional, Union +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,13 +14,13 @@ class AgentRegistrationClaimCompletedDataClaimedBy: user_id: str """The ID of the user who completed the claim.""" - organization_id: Union[str, Optional[Literal["null"]]] + organization_id: str | Literal["null"] | None """The ID of the organization the claiming user belongs to.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentRegistrationClaimCompletedDataClaimedBy": + cls, data: dict[str, Any] + ) -> AgentRegistrationClaimCompletedDataClaimedBy: """Deserialize from a dictionary.""" try: return cls( @@ -29,9 +30,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationClaimCompletedDataClaimedBy", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["user_id"] = self.user_id result["organization_id"] = self.organization_id return result diff --git a/src/workos/common/models/agent_registration_credential_issued.py b/src/workos/common/models/agent_registration_credential_issued.py index 12cede1e..9f32490d 100644 --- a/src/workos/common/models/agent_registration_credential_issued.py +++ b/src/workos/common/models/agent_registration_credential_issued.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_credential_issued_data import ( AgentRegistrationCredentialIssuedData, @@ -24,14 +23,14 @@ class AgentRegistrationCredentialIssued: id: str """Unique identifier for the event.""" event: Literal["agent.registration.credential.issued"] - data: "AgentRegistrationCredentialIssuedData" + data: AgentRegistrationCredentialIssuedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCredentialIssued": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationCredentialIssued: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCredentialIssued": id=data["id"], event=data.get("event", "agent.registration.credential.issued"), data=AgentRegistrationCredentialIssuedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCredentialIssued", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_credential_issued_data.py b/src/workos/common/models/agent_registration_credential_issued_data.py index 136cadbc..c6e225f3 100644 --- a/src/workos/common/models/agent_registration_credential_issued_data.py +++ b/src/workos/common/models/agent_registration_credential_issued_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Union +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .access_token_agent_registration_credential_issued_data_detail import ( @@ -25,10 +25,10 @@ class AgentRegistrationCredentialIssuedData: """Unique identifier of the agent registration credential.""" agent_registration_id: str """The ID of the agent registration.""" - detail: Union[ - "AgentRegistrationCredentialIssuedDataDetail", - "AccessTokenAgentRegistrationCredentialIssuedDataDetail", - ] + detail: ( + AgentRegistrationCredentialIssuedDataDetail + | AccessTokenAgentRegistrationCredentialIssuedDataDetail + ) """Details of the issued credential.""" created_at: str """The timestamp when the credential was issued.""" @@ -36,13 +36,13 @@ class AgentRegistrationCredentialIssuedData: """The timestamp when the credential was last updated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCredentialIssuedData": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationCredentialIssuedData: """Deserialize from a dictionary.""" try: _detail_raw = data["detail"] - _detail_data = cast(Dict[str, Any], _detail_raw) + _detail_data = cast(dict[str, Any], _detail_raw) _detail_disc = cast(str, _detail_data.get("kind")) - _detail_disc_map: Dict[str, Any] = { + _detail_disc_map: dict[str, Any] = { "api_key": AgentRegistrationCredentialIssuedDataDetail, "access_token": AccessTokenAgentRegistrationCredentialIssuedDataDetail, } @@ -63,9 +63,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationCredentialIssuedDa except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCredentialIssuedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["agent_registration_id"] = self.agent_registration_id diff --git a/src/workos/common/models/agent_registration_credential_issued_data_detail.py b/src/workos/common/models/agent_registration_credential_issued_data_detail.py index a4e02872..ec343296 100644 --- a/src/workos/common/models/agent_registration_credential_issued_data_detail.py +++ b/src/workos/common/models/agent_registration_credential_issued_data_detail.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -18,8 +19,8 @@ class AgentRegistrationCredentialIssuedDataDetail: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentRegistrationCredentialIssuedDataDetail": + cls, data: dict[str, Any] + ) -> AgentRegistrationCredentialIssuedDataDetail: """Deserialize from a dictionary.""" try: return cls( @@ -29,9 +30,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationCredentialIssuedDataDetail", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["kind"] = self.kind result["api_key_id"] = self.api_key_id return result diff --git a/src/workos/common/models/agent_registration_deleted.py b/src/workos/common/models/agent_registration_deleted.py index f6f18958..310d8adb 100644 --- a/src/workos/common/models/agent_registration_deleted.py +++ b/src/workos/common/models/agent_registration_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_deleted_data import AgentRegistrationDeletedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AgentRegistrationDeleted: id: str """Unique identifier for the event.""" event: Literal["agent.registration.deleted"] - data: "AgentRegistrationDeletedData" + data: AgentRegistrationDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationDeleted": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationDeleted": id=data["id"], event=data.get("event", "agent.registration.deleted"), data=AgentRegistrationDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_deleted_data.py b/src/workos/common/models/agent_registration_deleted_data.py index 37cc2aed..7e0bbaae 100644 --- a/src/workos/common/models/agent_registration_deleted_data.py +++ b/src/workos/common/models/agent_registration_deleted_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AgentRegistrationDeletedData: """The agent registration that was deleted.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationDeletedData": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationDeletedData: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationDeletedData": except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationDeletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["agent_registration_id"] = self.agent_registration_id return result diff --git a/src/workos/common/models/agent_registration_expired.py b/src/workos/common/models/agent_registration_expired.py index 1f94fcff..e3b8622c 100644 --- a/src/workos/common/models/agent_registration_expired.py +++ b/src/workos/common/models/agent_registration_expired.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_expired_data import AgentRegistrationExpiredData from .event_context import EventContext @@ -22,14 +21,14 @@ class AgentRegistrationExpired: id: str """Unique identifier for the event.""" event: Literal["agent.registration.expired"] - data: "AgentRegistrationExpiredData" + data: AgentRegistrationExpiredData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationExpired": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationExpired: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationExpired": id=data["id"], event=data.get("event", "agent.registration.expired"), data=AgentRegistrationExpiredData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationExpired", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_organization_switched.py b/src/workos/common/models/agent_registration_organization_switched.py index 54ab8178..145b85b9 100644 --- a/src/workos/common/models/agent_registration_organization_switched.py +++ b/src/workos/common/models/agent_registration_organization_switched.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_organization_switched_data import ( AgentRegistrationOrganizationSwitchedData, @@ -24,14 +23,14 @@ class AgentRegistrationOrganizationSwitched: id: str """Unique identifier for the event.""" event: Literal["agent.registration.organization.switched"] - data: "AgentRegistrationOrganizationSwitchedData" + data: AgentRegistrationOrganizationSwitchedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationOrganizationSwitched": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationOrganizationSwitched: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationOrganizationSwitch id=data["id"], event=data.get("event", "agent.registration.organization.switched"), data=AgentRegistrationOrganizationSwitchedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationOrganizationSwitched", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/agent_registration_organization_switched_data.py b/src/workos/common/models/agent_registration_organization_switched_data.py index b4caf4cc..c8566c38 100644 --- a/src/workos/common/models/agent_registration_organization_switched_data.py +++ b/src/workos/common/models/agent_registration_organization_switched_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -20,8 +21,8 @@ class AgentRegistrationOrganizationSwitchedData: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AgentRegistrationOrganizationSwitchedData": + cls, data: dict[str, Any] + ) -> AgentRegistrationOrganizationSwitchedData: """Deserialize from a dictionary.""" try: return cls( @@ -32,9 +33,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationOrganizationSwitchedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["agent_registration_id"] = self.agent_registration_id result["from_organization_id"] = self.from_organization_id result["to_organization_id"] = self.to_organization_id diff --git a/src/workos/common/models/agent_registration_refreshed.py b/src/workos/common/models/agent_registration_refreshed.py new file mode 100644 index 00000000..b8e9a47a --- /dev/null +++ b/src/workos/common/models/agent_registration_refreshed.py @@ -0,0 +1,59 @@ +# This file is auto-generated by oagen. Do not edit. + +from __future__ import annotations + +from dataclasses import dataclass +from datetime import datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + +from .agent_registration_refreshed_data import AgentRegistrationRefreshedData +from .event_context import EventContext + + +@dataclass(slots=True) +class AgentRegistrationRefreshed: + """Agent Registration Refreshed model.""" + + object: Literal["event"] + """Distinguishes the Event object.""" + id: str + """Unique identifier for the event.""" + event: Literal["agent.registration.refreshed"] + data: AgentRegistrationRefreshedData + """The event payload.""" + created_at: datetime + """An ISO 8601 timestamp.""" + context: EventContext | None = None + + @classmethod + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationRefreshed: + """Deserialize from a dictionary.""" + try: + return cls( + object=data.get("object", "event"), + id=data["id"], + event=data.get("event", "agent.registration.refreshed"), + data=AgentRegistrationRefreshedData.from_dict( + cast(dict[str, Any], data["data"]) + ), + created_at=_parse_datetime(data["created_at"]), + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) + if (_v_context := data.get("context")) is not None + else None, + ) + except (KeyError, ValueError) as e: + _raise_deserialize_error("AgentRegistrationRefreshed", e) + + def to_dict(self) -> dict[str, Any]: + """Serialize to a dictionary.""" + result: dict[str, Any] = {} + result["object"] = self.object + result["id"] = self.id + result["event"] = self.event + result["data"] = self.data.to_dict() + result["created_at"] = _format_datetime(self.created_at) + if self.context is not None: + result["context"] = self.context.to_dict() + return result diff --git a/src/workos/common/models/agent_registration_refreshed_data.py b/src/workos/common/models/agent_registration_refreshed_data.py new file mode 100644 index 00000000..25077a9c --- /dev/null +++ b/src/workos/common/models/agent_registration_refreshed_data.py @@ -0,0 +1,7 @@ +# This file is auto-generated by oagen. Do not edit. + +from typing import TypeAlias + +from .agent_registration_deleted_data import AgentRegistrationDeletedData + +AgentRegistrationRefreshedData: TypeAlias = AgentRegistrationDeletedData diff --git a/src/workos/common/models/agent_registration_revoked.py b/src/workos/common/models/agent_registration_revoked.py index a0e3cd42..edf3288c 100644 --- a/src/workos/common/models/agent_registration_revoked.py +++ b/src/workos/common/models/agent_registration_revoked.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .agent_registration_revoked_data import AgentRegistrationRevokedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AgentRegistrationRevoked: id: str """Unique identifier for the event.""" event: Literal["agent.registration.revoked"] - data: "AgentRegistrationRevokedData" + data: AgentRegistrationRevokedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationRevoked": + def from_dict(cls, data: dict[str, Any]) -> AgentRegistrationRevoked: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AgentRegistrationRevoked": id=data["id"], event=data.get("event", "agent.registration.revoked"), data=AgentRegistrationRevokedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AgentRegistrationRevoked", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/api_key_revoked.py b/src/workos/common/models/api_key_revoked.py index 6bc18439..6522e97c 100644 --- a/src/workos/common/models/api_key_revoked.py +++ b/src/workos/common/models/api_key_revoked.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .api_key_revoked_data import ApiKeyRevokedData from .event_context import EventContext @@ -22,32 +21,32 @@ class ApiKeyRevoked: id: str """Unique identifier for the event.""" event: Literal["api_key.revoked"] - data: "ApiKeyRevokedData" + data: ApiKeyRevokedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ApiKeyRevoked": + def from_dict(cls, data: dict[str, Any]) -> ApiKeyRevoked: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "api_key.revoked"), - data=ApiKeyRevokedData.from_dict(cast(Dict[str, Any], data["data"])), + data=ApiKeyRevokedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("ApiKeyRevoked", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/audit_log_export_state.py b/src/workos/common/models/audit_log_export_state.py index 45b5dc3f..e41bc945 100644 --- a/src/workos/common/models/audit_log_export_state.py +++ b/src/workos/common/models/audit_log_export_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class AuditLogExportState(str, Enum): EXPIRED = "expired" @classmethod - def _missing_(cls, value: object) -> Optional["AuditLogExportState"]: + def _missing_(cls, value: object) -> AuditLogExportState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/authentication_challenge.py b/src/workos/common/models/authentication_challenge.py index 14f81fe4..13952f75 100644 --- a/src/workos/common/models/authentication_challenge.py +++ b/src/workos/common/models/authentication_challenge.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -23,13 +23,13 @@ class AuthenticationChallenge: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - expires_at: Optional[datetime] = None + expires_at: datetime | None = None """The timestamp when the challenge will expire. Does not apply to TOTP factors.""" - code: Optional[str] = None + code: str | None = None """The one-time code for the challenge.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationChallenge": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationChallenge: """Deserialize from a dictionary.""" try: return cls( @@ -46,9 +46,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationChallenge": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationChallenge", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["authentication_factor_id"] = self.authentication_factor_id diff --git a/src/workos/common/models/authentication_email_verification_failed.py b/src/workos/common/models/authentication_email_verification_failed.py index 42c87e15..6eadafb0 100644 --- a/src/workos/common/models/authentication_email_verification_failed.py +++ b/src/workos/common/models/authentication_email_verification_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_email_verification_failed_data import ( AuthenticationEmailVerificationFailedData, @@ -24,14 +23,14 @@ class AuthenticationEmailVerificationFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.email_verification_failed"] - data: "AuthenticationEmailVerificationFailedData" + data: AuthenticationEmailVerificationFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationEmailVerificationFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationEmailVerificationFailed: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationEmailVerificationFail id=data["id"], event=data.get("event", "authentication.email_verification_failed"), data=AuthenticationEmailVerificationFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationEmailVerificationFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_email_verification_failed_data.py b/src/workos/common/models/authentication_email_verification_failed_data.py index 2fb53d36..8b463635 100644 --- a/src/workos/common/models/authentication_email_verification_failed_data.py +++ b/src/workos/common/models/authentication_email_verification_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_email_verification_failed_data_error import ( @@ -18,21 +18,21 @@ class AuthenticationEmailVerificationFailedData: type: Literal["email_verification"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationEmailVerificationFailedDataError" + error: AuthenticationEmailVerificationFailedDataError """Details about the authentication error.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationEmailVerificationFailedData": + cls, data: dict[str, Any] + ) -> AuthenticationEmailVerificationFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -43,15 +43,15 @@ def from_dict( user_id=data["user_id"], email=data["email"], error=AuthenticationEmailVerificationFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationEmailVerificationFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_email_verification_failed_data_error.py b/src/workos/common/models/authentication_email_verification_failed_data_error.py index aeeaed5e..8c7e7f8f 100644 --- a/src/workos/common/models/authentication_email_verification_failed_data_error.py +++ b/src/workos/common/models/authentication_email_verification_failed_data_error.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -18,8 +19,8 @@ class AuthenticationEmailVerificationFailedDataError: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationEmailVerificationFailedDataError": + cls, data: dict[str, Any] + ) -> AuthenticationEmailVerificationFailedDataError: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +32,9 @@ def from_dict( "AuthenticationEmailVerificationFailedDataError", e ) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["code"] = self.code result["message"] = self.message return result diff --git a/src/workos/common/models/authentication_email_verification_succeeded.py b/src/workos/common/models/authentication_email_verification_succeeded.py index 78e55325..4e3db795 100644 --- a/src/workos/common/models/authentication_email_verification_succeeded.py +++ b/src/workos/common/models/authentication_email_verification_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_email_verification_succeeded_data import ( AuthenticationEmailVerificationSucceededData, @@ -24,16 +23,16 @@ class AuthenticationEmailVerificationSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.email_verification_succeeded"] - data: "AuthenticationEmailVerificationSucceededData" + data: AuthenticationEmailVerificationSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationEmailVerificationSucceeded": + cls, data: dict[str, Any] + ) -> AuthenticationEmailVerificationSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -41,19 +40,19 @@ def from_dict( id=data["id"], event=data.get("event", "authentication.email_verification_succeeded"), data=AuthenticationEmailVerificationSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationEmailVerificationSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_email_verification_succeeded_data.py b/src/workos/common/models/authentication_email_verification_succeeded_data.py index 6df45d90..a108565e 100644 --- a/src/workos/common/models/authentication_email_verification_succeeded_data.py +++ b/src/workos/common/models/authentication_email_verification_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationEmailVerificationSucceededData: type: Literal["email_verification"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -24,8 +25,8 @@ class AuthenticationEmailVerificationSucceededData: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationEmailVerificationSucceededData": + cls, data: dict[str, Any] + ) -> AuthenticationEmailVerificationSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -39,9 +40,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationEmailVerificationSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_factor.py b/src/workos/common/models/authentication_factor.py index 55d5a852..0d813ac9 100644 --- a/src/workos/common/models/authentication_factor.py +++ b/src/workos/common/models/authentication_factor.py @@ -5,10 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_factor_sms import AuthenticationFactorSms from .authentication_factor_totp import AuthenticationFactorTotp @@ -23,21 +22,21 @@ class AuthenticationFactor: """Distinguishes the authentication factor object.""" id: str """The unique ID of the factor.""" - type: "AuthenticationFactorType" + type: AuthenticationFactorType """The type of the factor to enroll.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - user_id: Optional[str] = None + user_id: str | None = None """The ID of the [user](https://workos.com/docs/reference/authkit/user).""" - sms: Optional["AuthenticationFactorSms"] = None + sms: AuthenticationFactorSms | None = None """SMS-based authentication factor details.""" - totp: Optional["AuthenticationFactorTotp"] = None + totp: AuthenticationFactorTotp | None = None """TOTP-based authentication factor details.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactor": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactor: """Deserialize from a dictionary.""" try: return cls( @@ -47,19 +46,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactor": created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), user_id=data.get("user_id"), - sms=AuthenticationFactorSms.from_dict(cast(Dict[str, Any], _v_sms)) + sms=AuthenticationFactorSms.from_dict(cast(dict[str, Any], _v_sms)) if (_v_sms := data.get("sms")) is not None else None, - totp=AuthenticationFactorTotp.from_dict(cast(Dict[str, Any], _v_totp)) + totp=AuthenticationFactorTotp.from_dict(cast(dict[str, Any], _v_totp)) if (_v_totp := data.get("totp")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["type"] = self.type.value if isinstance(self.type, Enum) else self.type diff --git a/src/workos/common/models/authentication_factor_enrolled.py b/src/workos/common/models/authentication_factor_enrolled.py index 96ab3e0e..84afceae 100644 --- a/src/workos/common/models/authentication_factor_enrolled.py +++ b/src/workos/common/models/authentication_factor_enrolled.py @@ -5,10 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_factor_enrolled_sms import AuthenticationFactorEnrolledSms from .authentication_factor_enrolled_totp import AuthenticationFactorEnrolledTotp @@ -23,21 +22,21 @@ class AuthenticationFactorEnrolled: """Distinguishes the authentication factor object.""" id: str """The unique ID of the factor.""" - type: "AuthenticationFactorEnrolledType" + type: AuthenticationFactorEnrolledType """The type of the factor to enroll.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - user_id: Optional[str] = None + user_id: str | None = None """The ID of the [user](https://workos.com/docs/reference/authkit/user).""" - sms: Optional["AuthenticationFactorEnrolledSms"] = None + sms: AuthenticationFactorEnrolledSms | None = None """SMS-based authentication factor details.""" - totp: Optional["AuthenticationFactorEnrolledTotp"] = None + totp: AuthenticationFactorEnrolledTotp | None = None """TOTP-based authentication factor details. Includes enrollment secrets only available at creation time.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolled": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactorEnrolled: """Deserialize from a dictionary.""" try: return cls( @@ -48,12 +47,12 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolled": updated_at=_parse_datetime(data["updated_at"]), user_id=data.get("user_id"), sms=AuthenticationFactorEnrolledSms.from_dict( - cast(Dict[str, Any], _v_sms) + cast(dict[str, Any], _v_sms) ) if (_v_sms := data.get("sms")) is not None else None, totp=AuthenticationFactorEnrolledTotp.from_dict( - cast(Dict[str, Any], _v_totp) + cast(dict[str, Any], _v_totp) ) if (_v_totp := data.get("totp")) is not None else None, @@ -61,9 +60,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolled": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactorEnrolled", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["type"] = self.type.value if isinstance(self.type, Enum) else self.type diff --git a/src/workos/common/models/authentication_factor_enrolled_sms.py b/src/workos/common/models/authentication_factor_enrolled_sms.py index af088285..275b90f0 100644 --- a/src/workos/common/models/authentication_factor_enrolled_sms.py +++ b/src/workos/common/models/authentication_factor_enrolled_sms.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AuthenticationFactorEnrolledSms: """The user's phone number for SMS-based authentication.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolledSms": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactorEnrolledSms: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolledSms": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactorEnrolledSms", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["phone_number"] = self.phone_number return result diff --git a/src/workos/common/models/authentication_factor_enrolled_totp.py b/src/workos/common/models/authentication_factor_enrolled_totp.py index fbe322d9..6cca61ca 100644 --- a/src/workos/common/models/authentication_factor_enrolled_totp.py +++ b/src/workos/common/models/authentication_factor_enrolled_totp.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -23,7 +24,7 @@ class AuthenticationFactorEnrolledTotp: """The `otpauth` URI that is encoded by the provided `qr_code`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolledTotp": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactorEnrolledTotp: """Deserialize from a dictionary.""" try: return cls( @@ -36,9 +37,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorEnrolledTotp": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactorEnrolledTotp", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["issuer"] = self.issuer result["user"] = self.user result["secret"] = self.secret diff --git a/src/workos/common/models/authentication_factor_enrolled_type.py b/src/workos/common/models/authentication_factor_enrolled_type.py index cf0a75b8..8b699055 100644 --- a/src/workos/common/models/authentication_factor_enrolled_type.py +++ b/src/workos/common/models/authentication_factor_enrolled_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class AuthenticationFactorEnrolledType(str, Enum): WEBAUTHN = "webauthn" @classmethod - def _missing_(cls, value: object) -> Optional["AuthenticationFactorEnrolledType"]: + def _missing_(cls, value: object) -> AuthenticationFactorEnrolledType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/authentication_factor_totp.py b/src/workos/common/models/authentication_factor_totp.py index aafcd4d5..a84bf48e 100644 --- a/src/workos/common/models/authentication_factor_totp.py +++ b/src/workos/common/models/authentication_factor_totp.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class AuthenticationFactorTotp: """The user's account name displayed in their authenticator app. Defaults to the user's email.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorTotp": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationFactorTotp: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationFactorTotp": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationFactorTotp", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["issuer"] = self.issuer result["user"] = self.user return result diff --git a/src/workos/common/models/authentication_magic_auth_failed.py b/src/workos/common/models/authentication_magic_auth_failed.py index 66729888..b43b3d95 100644 --- a/src/workos/common/models/authentication_magic_auth_failed.py +++ b/src/workos/common/models/authentication_magic_auth_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_magic_auth_failed_data import AuthenticationMagicAuthFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationMagicAuthFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.magic_auth_failed"] - data: "AuthenticationMagicAuthFailedData" + data: AuthenticationMagicAuthFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMagicAuthFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthFailed": id=data["id"], event=data.get("event", "authentication.magic_auth_failed"), data=AuthenticationMagicAuthFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMagicAuthFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_magic_auth_failed_data.py b/src/workos/common/models/authentication_magic_auth_failed_data.py index 8b6b4e61..7a08e220 100644 --- a/src/workos/common/models/authentication_magic_auth_failed_data.py +++ b/src/workos/common/models/authentication_magic_auth_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_magic_auth_failed_data_error import ( @@ -18,19 +18,19 @@ class AuthenticationMagicAuthFailedData: type: Literal["magic_auth"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationMagicAuthFailedDataError" + error: AuthenticationMagicAuthFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMagicAuthFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,15 +41,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthFailedData": user_id=data["user_id"], email=data["email"], error=AuthenticationMagicAuthFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMagicAuthFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_magic_auth_failed_data_error.py b/src/workos/common/models/authentication_magic_auth_failed_data_error.py index a0eb0649..141c95ae 100644 --- a/src/workos/common/models/authentication_magic_auth_failed_data_error.py +++ b/src/workos/common/models/authentication_magic_auth_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_magic_auth_succeeded.py b/src/workos/common/models/authentication_magic_auth_succeeded.py index e83f872d..65a3fbd1 100644 --- a/src/workos/common/models/authentication_magic_auth_succeeded.py +++ b/src/workos/common/models/authentication_magic_auth_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_magic_auth_succeeded_data import ( AuthenticationMagicAuthSucceededData, @@ -24,14 +23,14 @@ class AuthenticationMagicAuthSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.magic_auth_succeeded"] - data: "AuthenticationMagicAuthSucceededData" + data: AuthenticationMagicAuthSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthSucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMagicAuthSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthSucceeded": id=data["id"], event=data.get("event", "authentication.magic_auth_succeeded"), data=AuthenticationMagicAuthSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMagicAuthSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_magic_auth_succeeded_data.py b/src/workos/common/models/authentication_magic_auth_succeeded_data.py index 03b9875a..64f7c1c3 100644 --- a/src/workos/common/models/authentication_magic_auth_succeeded_data.py +++ b/src/workos/common/models/authentication_magic_auth_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationMagicAuthSucceededData: type: Literal["magic_auth"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -23,7 +24,7 @@ class AuthenticationMagicAuthSucceededData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthSucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMagicAuthSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMagicAuthSucceededDat except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMagicAuthSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_mfa_failed.py b/src/workos/common/models/authentication_mfa_failed.py index 6f2a991d..0d782c4a 100644 --- a/src/workos/common/models/authentication_mfa_failed.py +++ b/src/workos/common/models/authentication_mfa_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_mfa_failed_data import AuthenticationMFAFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationMFAFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.mfa_failed"] - data: "AuthenticationMFAFailedData" + data: AuthenticationMFAFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFAFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMFAFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFAFailed": id=data["id"], event=data.get("event", "authentication.mfa_failed"), data=AuthenticationMFAFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMFAFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_mfa_failed_data.py b/src/workos/common/models/authentication_mfa_failed_data.py index f521213e..6f6a1795 100644 --- a/src/workos/common/models/authentication_mfa_failed_data.py +++ b/src/workos/common/models/authentication_mfa_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_mfa_failed_data_error import AuthenticationMFAFailedDataError @@ -16,19 +16,19 @@ class AuthenticationMFAFailedData: type: Literal["mfa"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationMFAFailedDataError" + error: AuthenticationMFAFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFAFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMFAFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -39,15 +39,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFAFailedData": user_id=data["user_id"], email=data["email"], error=AuthenticationMFAFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMFAFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_mfa_failed_data_error.py b/src/workos/common/models/authentication_mfa_failed_data_error.py index 27838fd6..b62c6deb 100644 --- a/src/workos/common/models/authentication_mfa_failed_data_error.py +++ b/src/workos/common/models/authentication_mfa_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_mfa_succeeded.py b/src/workos/common/models/authentication_mfa_succeeded.py index 633735c3..099e2907 100644 --- a/src/workos/common/models/authentication_mfa_succeeded.py +++ b/src/workos/common/models/authentication_mfa_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_mfa_succeeded_data import AuthenticationMFASucceededData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationMFASucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.mfa_succeeded"] - data: "AuthenticationMFASucceededData" + data: AuthenticationMFASucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFASucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMFASucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFASucceeded": id=data["id"], event=data.get("event", "authentication.mfa_succeeded"), data=AuthenticationMFASucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMFASucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_mfa_succeeded_data.py b/src/workos/common/models/authentication_mfa_succeeded_data.py index d9d6d358..b5c7fe9f 100644 --- a/src/workos/common/models/authentication_mfa_succeeded_data.py +++ b/src/workos/common/models/authentication_mfa_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationMFASucceededData: type: Literal["mfa"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -23,7 +24,7 @@ class AuthenticationMFASucceededData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFASucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationMFASucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationMFASucceededData": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationMFASucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_oauth_failed.py b/src/workos/common/models/authentication_oauth_failed.py index a70b3b21..a90b9f57 100644 --- a/src/workos/common/models/authentication_oauth_failed.py +++ b/src/workos/common/models/authentication_oauth_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_oauth_failed_data import AuthenticationOAuthFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationOAuthFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.oauth_failed"] - data: "AuthenticationOAuthFailedData" + data: AuthenticationOAuthFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationOAuthFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthFailed": id=data["id"], event=data.get("event", "authentication.oauth_failed"), data=AuthenticationOAuthFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationOAuthFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_oauth_failed_data.py b/src/workos/common/models/authentication_oauth_failed_data.py index c99334ff..68023b49 100644 --- a/src/workos/common/models/authentication_oauth_failed_data.py +++ b/src/workos/common/models/authentication_oauth_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_oauth_failed_data_error import AuthenticationOAuthFailedDataError @@ -16,19 +16,19 @@ class AuthenticationOAuthFailedData: type: Literal["oauth"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationOAuthFailedDataError" + error: AuthenticationOAuthFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationOAuthFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -39,15 +39,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthFailedData": user_id=data["user_id"], email=data["email"], error=AuthenticationOAuthFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationOAuthFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_oauth_failed_data_error.py b/src/workos/common/models/authentication_oauth_failed_data_error.py index f5e4931d..007ead76 100644 --- a/src/workos/common/models/authentication_oauth_failed_data_error.py +++ b/src/workos/common/models/authentication_oauth_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_oauth_succeeded.py b/src/workos/common/models/authentication_oauth_succeeded.py index b0b82f3a..bf1e77b9 100644 --- a/src/workos/common/models/authentication_oauth_succeeded.py +++ b/src/workos/common/models/authentication_oauth_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_oauth_succeeded_data import AuthenticationOAuthSucceededData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationOAuthSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.oauth_succeeded"] - data: "AuthenticationOAuthSucceededData" + data: AuthenticationOAuthSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthSucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationOAuthSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthSucceeded": id=data["id"], event=data.get("event", "authentication.oauth_succeeded"), data=AuthenticationOAuthSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationOAuthSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_oauth_succeeded_data.py b/src/workos/common/models/authentication_oauth_succeeded_data.py index b3ace1cc..9aa48dfd 100644 --- a/src/workos/common/models/authentication_oauth_succeeded_data.py +++ b/src/workos/common/models/authentication_oauth_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,17 +14,17 @@ class AuthenticationOAuthSucceededData: type: Literal["oauth"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" email: str """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthSucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationOAuthSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationOAuthSucceededData": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationOAuthSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_passkey_failed.py b/src/workos/common/models/authentication_passkey_failed.py index f5e23818..1e8bb601 100644 --- a/src/workos/common/models/authentication_passkey_failed.py +++ b/src/workos/common/models/authentication_passkey_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_passkey_failed_data import AuthenticationPasskeyFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationPasskeyFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.passkey_failed"] - data: "AuthenticationPasskeyFailedData" + data: AuthenticationPasskeyFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeyFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasskeyFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeyFailed": id=data["id"], event=data.get("event", "authentication.passkey_failed"), data=AuthenticationPasskeyFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasskeyFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_passkey_failed_data.py b/src/workos/common/models/authentication_passkey_failed_data.py index a965dbec..e2bc1173 100644 --- a/src/workos/common/models/authentication_passkey_failed_data.py +++ b/src/workos/common/models/authentication_passkey_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_passkey_failed_data_error import ( @@ -18,19 +18,19 @@ class AuthenticationPasskeyFailedData: type: Literal["passkey"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationPasskeyFailedDataError" + error: AuthenticationPasskeyFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeyFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasskeyFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,15 +41,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeyFailedData": user_id=data["user_id"], email=data["email"], error=AuthenticationPasskeyFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasskeyFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_passkey_failed_data_error.py b/src/workos/common/models/authentication_passkey_failed_data_error.py index f366c8a7..fa6a3f8a 100644 --- a/src/workos/common/models/authentication_passkey_failed_data_error.py +++ b/src/workos/common/models/authentication_passkey_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_passkey_succeeded.py b/src/workos/common/models/authentication_passkey_succeeded.py index b6e677ef..496f03ad 100644 --- a/src/workos/common/models/authentication_passkey_succeeded.py +++ b/src/workos/common/models/authentication_passkey_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_passkey_succeeded_data import AuthenticationPasskeySucceededData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationPasskeySucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.passkey_succeeded"] - data: "AuthenticationPasskeySucceededData" + data: AuthenticationPasskeySucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeySucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasskeySucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeySucceeded": id=data["id"], event=data.get("event", "authentication.passkey_succeeded"), data=AuthenticationPasskeySucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasskeySucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_passkey_succeeded_data.py b/src/workos/common/models/authentication_passkey_succeeded_data.py index 58de613a..2953b3ac 100644 --- a/src/workos/common/models/authentication_passkey_succeeded_data.py +++ b/src/workos/common/models/authentication_passkey_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationPasskeySucceededData: type: Literal["passkey"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -23,7 +24,7 @@ class AuthenticationPasskeySucceededData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeySucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasskeySucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasskeySucceededData" except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasskeySucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_password_failed.py b/src/workos/common/models/authentication_password_failed.py index 3b9d57c4..7b3cc397 100644 --- a/src/workos/common/models/authentication_password_failed.py +++ b/src/workos/common/models/authentication_password_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_password_failed_data import AuthenticationPasswordFailedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationPasswordFailed: id: str """Unique identifier for the event.""" event: Literal["authentication.password_failed"] - data: "AuthenticationPasswordFailedData" + data: AuthenticationPasswordFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordFailed": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasswordFailed: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordFailed": id=data["id"], event=data.get("event", "authentication.password_failed"), data=AuthenticationPasswordFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasswordFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_password_failed_data.py b/src/workos/common/models/authentication_password_failed_data.py index e68178b4..87f06a18 100644 --- a/src/workos/common/models/authentication_password_failed_data.py +++ b/src/workos/common/models/authentication_password_failed_data.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal, cast + from workos._types import _raise_deserialize_error from .authentication_password_failed_data_error import ( @@ -18,19 +18,19 @@ class AuthenticationPasswordFailedData: type: Literal["password"] status: Literal["failed"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" - user_id: Optional[str] + user_id: str | None """The ID of the user.""" - email: Optional[str] + email: str | None """The email address of the user.""" - error: "AuthenticationPasswordFailedDataError" + error: AuthenticationPasswordFailedDataError """Details about the authentication error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordFailedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasswordFailedData: """Deserialize from a dictionary.""" try: return cls( @@ -41,15 +41,15 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordFailedData": user_id=data["user_id"], email=data["email"], error=AuthenticationPasswordFailedDataError.from_dict( - cast(Dict[str, Any], data["error"]) + cast(dict[str, Any], data["error"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasswordFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_password_failed_data_error.py b/src/workos/common/models/authentication_password_failed_data_error.py index 3c88bef9..b022d328 100644 --- a/src/workos/common/models/authentication_password_failed_data_error.py +++ b/src/workos/common/models/authentication_password_failed_data_error.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .authentication_email_verification_failed_data_error import ( AuthenticationEmailVerificationFailedDataError, ) diff --git a/src/workos/common/models/authentication_password_succeeded.py b/src/workos/common/models/authentication_password_succeeded.py index f7e4a42e..f7aaf319 100644 --- a/src/workos/common/models/authentication_password_succeeded.py +++ b/src/workos/common/models/authentication_password_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_password_succeeded_data import AuthenticationPasswordSucceededData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationPasswordSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.password_succeeded"] - data: "AuthenticationPasswordSucceededData" + data: AuthenticationPasswordSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordSucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasswordSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordSucceeded": id=data["id"], event=data.get("event", "authentication.password_succeeded"), data=AuthenticationPasswordSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasswordSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_password_succeeded_data.py b/src/workos/common/models/authentication_password_succeeded_data.py index 158f36a5..ae571604 100644 --- a/src/workos/common/models/authentication_password_succeeded_data.py +++ b/src/workos/common/models/authentication_password_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationPasswordSucceededData: type: Literal["password"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -23,7 +24,7 @@ class AuthenticationPasswordSucceededData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordSucceededData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationPasswordSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationPasswordSucceededData except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationPasswordSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authentication_radar_risk_detected.py b/src/workos/common/models/authentication_radar_risk_detected.py index 91de4531..07f2b1e2 100644 --- a/src/workos/common/models/authentication_radar_risk_detected.py +++ b/src/workos/common/models/authentication_radar_risk_detected.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_radar_risk_detected_data import AuthenticationRadarRiskDetectedData from .event_context import EventContext @@ -22,14 +21,14 @@ class AuthenticationRadarRiskDetected: id: str """Unique identifier for the event.""" event: Literal["authentication.radar_risk_detected"] - data: "AuthenticationRadarRiskDetectedData" + data: AuthenticationRadarRiskDetectedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationRadarRiskDetected": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationRadarRiskDetected: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationRadarRiskDetected": id=data["id"], event=data.get("event", "authentication.radar_risk_detected"), data=AuthenticationRadarRiskDetectedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationRadarRiskDetected", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_radar_risk_detected_data.py b/src/workos/common/models/authentication_radar_risk_detected_data.py index 50fb8877..a8eaf151 100644 --- a/src/workos/common/models/authentication_radar_risk_detected_data.py +++ b/src/workos/common/models/authentication_radar_risk_detected_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error + from .authentication_radar_risk_detected_data_action import ( AuthenticationRadarRiskDetectedDataAction, ) @@ -17,14 +19,14 @@ class AuthenticationRadarRiskDetectedData: auth_method: str """The authentication method used.""" - action: "AuthenticationRadarRiskDetectedDataAction" - control: Optional[str] + action: AuthenticationRadarRiskDetectedDataAction + control: str | None """The control action taken for the detected risk.""" - blocklist_type: Optional[str] + blocklist_type: str | None """The type of blocklist that triggered the risk detection.""" - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -32,7 +34,7 @@ class AuthenticationRadarRiskDetectedData: """The email address of the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationRadarRiskDetectedData": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationRadarRiskDetectedData: """Deserialize from a dictionary.""" try: return cls( @@ -48,9 +50,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationRadarRiskDetectedData except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationRadarRiskDetectedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["auth_method"] = self.auth_method result["action"] = ( self.action.value if isinstance(self.action, Enum) else self.action diff --git a/src/workos/common/models/authentication_radar_risk_detected_data_action.py b/src/workos/common/models/authentication_radar_risk_detected_data_action.py index ea413746..f0f7ac9c 100644 --- a/src/workos/common/models/authentication_radar_risk_detected_data_action.py +++ b/src/workos/common/models/authentication_radar_risk_detected_data_action.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class AuthenticationRadarRiskDetectedDataAction(str, Enum): @classmethod def _missing_( cls, value: object - ) -> Optional["AuthenticationRadarRiskDetectedDataAction"]: + ) -> AuthenticationRadarRiskDetectedDataAction | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/authentication_reauthentication_succeeded.py b/src/workos/common/models/authentication_reauthentication_succeeded.py index 6c165996..07b590cf 100644 --- a/src/workos/common/models/authentication_reauthentication_succeeded.py +++ b/src/workos/common/models/authentication_reauthentication_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .authentication_reauthentication_succeeded_data import ( AuthenticationReauthenticationSucceededData, @@ -24,16 +23,14 @@ class AuthenticationReauthenticationSucceeded: id: str """Unique identifier for the event.""" event: Literal["authentication.reauthentication_succeeded"] - data: "AuthenticationReauthenticationSucceededData" + data: AuthenticationReauthenticationSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationReauthenticationSucceeded": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationReauthenticationSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -41,19 +38,19 @@ def from_dict( id=data["id"], event=data.get("event", "authentication.reauthentication_succeeded"), data=AuthenticationReauthenticationSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationReauthenticationSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/authentication_reauthentication_succeeded_data.py b/src/workos/common/models/authentication_reauthentication_succeeded_data.py index bc7438bb..4d7c708c 100644 --- a/src/workos/common/models/authentication_reauthentication_succeeded_data.py +++ b/src/workos/common/models/authentication_reauthentication_succeeded_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,9 +14,9 @@ class AuthenticationReauthenticationSucceededData: type: Literal["reauthentication"] status: Literal["succeeded"] - ip_address: Optional[str] + ip_address: str | None """The IP address of the request.""" - user_agent: Optional[str] + user_agent: str | None """The user agent of the request.""" user_id: str """The ID of the user.""" @@ -24,8 +25,8 @@ class AuthenticationReauthenticationSucceededData: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "AuthenticationReauthenticationSucceededData": + cls, data: dict[str, Any] + ) -> AuthenticationReauthenticationSucceededData: """Deserialize from a dictionary.""" try: return cls( @@ -39,9 +40,9 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationReauthenticationSucceededData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type result["status"] = self.status if self.ip_address is not None: diff --git a/src/workos/common/models/authorization_permission.py b/src/workos/common/models/authorization_permission.py index d79d0903..988f23f1 100644 --- a/src/workos/common/models/authorization_permission.py +++ b/src/workos/common/models/authorization_permission.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -21,7 +21,7 @@ class AuthorizationPermission: """A unique key to reference the permission. Must be lowercase and contain only letters, numbers, hyphens, underscores, colons, periods, and asterisks.""" name: str """A descriptive name for the Permission.""" - description: Optional[str] + description: str | None """An optional description of the Permission.""" system: bool """Whether the permission is a system permission. System permissions are managed by WorkOS and cannot be deleted.""" @@ -33,7 +33,7 @@ class AuthorizationPermission: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationPermission": + def from_dict(cls, data: dict[str, Any]) -> AuthorizationPermission: """Deserialize from a dictionary.""" try: return cls( @@ -50,9 +50,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthorizationPermission": except (KeyError, ValueError) as e: _raise_deserialize_error("AuthorizationPermission", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["slug"] = self.slug diff --git a/src/workos/common/models/directory_group.py b/src/workos/common/models/directory_group.py index 9737d54f..83688b9b 100644 --- a/src/workos/common/models/directory_group.py +++ b/src/workos/common/models/directory_group.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -29,11 +29,11 @@ class DirectoryGroup: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - raw_attributes: Optional[Dict[str, Any]] = None + raw_attributes: dict[str, Any] | None = None """The raw attributes received from the directory provider.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryGroup": + def from_dict(cls, data: dict[str, Any]) -> DirectoryGroup: """Deserialize from a dictionary.""" try: return cls( @@ -50,9 +50,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryGroup": except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryGroup", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["idp_id"] = self.idp_id diff --git a/src/workos/common/models/directory_state.py b/src/workos/common/models/directory_state.py index 848c71fe..abd25e4e 100644 --- a/src/workos/common/models/directory_state.py +++ b/src/workos/common/models/directory_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,7 +18,7 @@ class DirectoryState(str, Enum): DELETING = "deleting" @classmethod - def _missing_(cls, value: object) -> Optional["DirectoryState"]: + def _missing_(cls, value: object) -> DirectoryState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/directory_type.py b/src/workos/common/models/directory_type.py index 83d42a09..8c7ea9b6 100644 --- a/src/workos/common/models/directory_type.py +++ b/src/workos/common/models/directory_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -35,7 +34,7 @@ class DirectoryType(str, Enum): WORKDAY = "workday" @classmethod - def _missing_(cls, value: object) -> Optional["DirectoryType"]: + def _missing_(cls, value: object) -> DirectoryType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/directory_user.py b/src/workos/common/models/directory_user.py index fdbdb527..7e4bd39b 100644 --- a/src/workos/common/models/directory_user.py +++ b/src/workos/common/models/directory_user.py @@ -5,14 +5,13 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .directory_user_email import DirectoryUserEmail -from .slim_role import SlimRole from .directory_user_state import DirectoryUserState +from .slim_role import SlimRole @dataclass(slots=True) @@ -29,44 +28,44 @@ class DirectoryUser: """The identifier for the Organization in which the Directory resides.""" idp_id: str """Unique identifier for the user, assigned by the Directory Provider. Different Directory Providers use different ID formats.""" - email: Optional[str] + email: str | None """The email address of the user.""" - state: "DirectoryUserState" + state: DirectoryUserState """The state of the user.""" - custom_attributes: Dict[str, Any] + custom_attributes: dict[str, Any] """An object containing the custom attribute mapping for the Directory Provider.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - first_name: Optional[str] = None + first_name: str | None = None """The first name of the user.""" - last_name: Optional[str] = None + last_name: str | None = None """The last name of the user.""" - name: Optional[str] = None + name: str | None = None """The full name of the user.""" - emails: Optional[List["DirectoryUserEmail"]] = None + emails: list[DirectoryUserEmail] | None = None """A list of email addresses for the user. .. deprecated:: This field is deprecated.""" - job_title: Optional[str] = None + job_title: str | None = None """The job title of the user. .. deprecated:: This field is deprecated.""" - username: Optional[str] = None + username: str | None = None """The username of the user. .. deprecated:: This field is deprecated.""" - raw_attributes: Optional[Dict[str, Any]] = None + raw_attributes: dict[str, Any] | None = None """The raw attributes received from the directory provider. .. deprecated:: This field is deprecated.""" - role: Optional["SlimRole"] = None - roles: Optional[List["SlimRole"]] = None + role: SlimRole | None = None + roles: list[SlimRole] | None = None """All roles assigned to the user.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUser": + def from_dict(cls, data: dict[str, Any]) -> DirectoryUser: """Deserialize from a dictionary.""" try: return cls( @@ -84,7 +83,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUser": last_name=data.get("last_name"), name=data.get("name"), emails=[ - DirectoryUserEmail.from_dict(cast(Dict[str, Any], item)) + DirectoryUserEmail.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_emails) ] if (_v_emails := data.get("emails")) is not None @@ -92,11 +91,11 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUser": job_title=data.get("job_title"), username=data.get("username"), raw_attributes=data.get("raw_attributes"), - role=SlimRole.from_dict(cast(Dict[str, Any], _v_role)) + role=SlimRole.from_dict(cast(dict[str, Any], _v_role)) if (_v_role := data.get("role")) is not None else None, roles=[ - SlimRole.from_dict(cast(Dict[str, Any], item)) + SlimRole.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_roles) ] if (_v_roles := data.get("roles")) is not None @@ -105,9 +104,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUser": except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryUser", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["directory_id"] = self.directory_id diff --git a/src/workos/common/models/directory_user_email.py b/src/workos/common/models/directory_user_email.py index 63308bbe..a049002d 100644 --- a/src/workos/common/models/directory_user_email.py +++ b/src/workos/common/models/directory_user_email.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,15 +12,15 @@ class DirectoryUserEmail: """Directory User Email model.""" - primary: Optional[bool] = None + primary: bool | None = None """Whether this is the primary email address.""" - type: Optional[str] = None + type: str | None = None """The type of email address.""" - value: Optional[str] = None + value: str | None = None """The email address value.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserEmail": + def from_dict(cls, data: dict[str, Any]) -> DirectoryUserEmail: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserEmail": except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryUserEmail", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.primary is not None: result["primary"] = self.primary if self.type is not None: diff --git a/src/workos/common/models/directory_user_state.py b/src/workos/common/models/directory_user_state.py index 7e6f8f0e..25cff280 100644 --- a/src/workos/common/models/directory_user_state.py +++ b/src/workos/common/models/directory_user_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class DirectoryUserState(str, Enum): INACTIVE = "inactive" @classmethod - def _missing_(cls, value: object) -> Optional["DirectoryUserState"]: + def _missing_(cls, value: object) -> DirectoryUserState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/dsync_activated.py b/src/workos/common/models/dsync_activated.py index 86abc79e..a9360487 100644 --- a/src/workos/common/models/dsync_activated.py +++ b/src/workos/common/models/dsync_activated.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_activated_data import DsyncActivatedData from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncActivated: id: str """Unique identifier for the event.""" event: Literal["dsync.activated"] - data: "DsyncActivatedData" + data: DsyncActivatedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivated": + def from_dict(cls, data: dict[str, Any]) -> DsyncActivated: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.activated"), - data=DsyncActivatedData.from_dict(cast(Dict[str, Any], data["data"])), + data=DsyncActivatedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncActivated", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_activated_data.py b/src/workos/common/models/dsync_activated_data.py index c3629151..87a0e83b 100644 --- a/src/workos/common/models/dsync_activated_data.py +++ b/src/workos/common/models/dsync_activated_data.py @@ -5,10 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_activated_data_domain import DsyncActivatedDataDomain from .dsync_activated_data_state import DsyncActivatedDataState @@ -23,9 +22,9 @@ class DsyncActivatedData: """Distinguishes the directory object.""" id: str """Unique identifier of the directory.""" - type: "DsyncActivatedDataType" + type: DsyncActivatedDataType """The type of the directory.""" - state: "DsyncActivatedDataState" + state: DsyncActivatedDataState """The current state of the directory.""" name: str """The name of the directory.""" @@ -35,13 +34,13 @@ class DsyncActivatedData: """An ISO 8601 timestamp.""" external_key: str """The external key of the directory.""" - domains: List["DsyncActivatedDataDomain"] + domains: list[DsyncActivatedDataDomain] """The domains associated with the directory.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the directory belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivatedData": + def from_dict(cls, data: dict[str, Any]) -> DsyncActivatedData: """Deserialize from a dictionary.""" try: return cls( @@ -54,7 +53,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivatedData": updated_at=_parse_datetime(data["updated_at"]), external_key=data["external_key"], domains=[ - DsyncActivatedDataDomain.from_dict(cast(Dict[str, Any], item)) + DsyncActivatedDataDomain.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["domains"]) ], organization_id=data.get("organization_id"), @@ -62,9 +61,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivatedData": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncActivatedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["type"] = self.type.value if isinstance(self.type, Enum) else self.type diff --git a/src/workos/common/models/dsync_activated_data_domain.py b/src/workos/common/models/dsync_activated_data_domain.py index 50ee3fb7..6d4390c4 100644 --- a/src/workos/common/models/dsync_activated_data_domain.py +++ b/src/workos/common/models/dsync_activated_data_domain.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -19,7 +20,7 @@ class DsyncActivatedDataDomain: """The domain value.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivatedDataDomain": + def from_dict(cls, data: dict[str, Any]) -> DsyncActivatedDataDomain: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncActivatedDataDomain": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncActivatedDataDomain", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["domain"] = self.domain diff --git a/src/workos/common/models/dsync_activated_data_state.py b/src/workos/common/models/dsync_activated_data_state.py index 3608f8f4..a3eec5f1 100644 --- a/src/workos/common/models/dsync_activated_data_state.py +++ b/src/workos/common/models/dsync_activated_data_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -19,7 +18,7 @@ class DsyncActivatedDataState(str, Enum): DELETING = "deleting" @classmethod - def _missing_(cls, value: object) -> Optional["DsyncActivatedDataState"]: + def _missing_(cls, value: object) -> DsyncActivatedDataState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/dsync_activated_data_type.py b/src/workos/common/models/dsync_activated_data_type.py index 8e38c7f8..2814731d 100644 --- a/src/workos/common/models/dsync_activated_data_type.py +++ b/src/workos/common/models/dsync_activated_data_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -37,7 +36,7 @@ class DsyncActivatedDataType(str, Enum): WORKDAY = "workday" @classmethod - def _missing_(cls, value: object) -> Optional["DsyncActivatedDataType"]: + def _missing_(cls, value: object) -> DsyncActivatedDataType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/dsync_deleted.py b/src/workos/common/models/dsync_deleted.py index b4a093b5..b6a9819d 100644 --- a/src/workos/common/models/dsync_deleted.py +++ b/src/workos/common/models/dsync_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_deleted_data import DsyncDeletedData from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncDeleted: id: str """Unique identifier for the event.""" event: Literal["dsync.deleted"] - data: "DsyncDeletedData" + data: DsyncDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncDeleted": + def from_dict(cls, data: dict[str, Any]) -> DsyncDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.deleted"), - data=DsyncDeletedData.from_dict(cast(Dict[str, Any], data["data"])), + data=DsyncDeletedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_deleted_data.py b/src/workos/common/models/dsync_deleted_data.py index dfc8388a..f7927274 100644 --- a/src/workos/common/models/dsync_deleted_data.py +++ b/src/workos/common/models/dsync_deleted_data.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .dsync_deleted_data_state import DsyncDeletedDataState from .dsync_deleted_data_type import DsyncDeletedDataType @@ -20,9 +21,9 @@ class DsyncDeletedData: """Distinguishes the directory object.""" id: str """Unique identifier of the directory.""" - type: "DsyncDeletedDataType" + type: DsyncDeletedDataType """The type of the directory.""" - state: "DsyncDeletedDataState" + state: DsyncDeletedDataState """The current state of the directory.""" name: str """The name of the directory.""" @@ -30,11 +31,11 @@ class DsyncDeletedData: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization the directory belongs to.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncDeletedData": + def from_dict(cls, data: dict[str, Any]) -> DsyncDeletedData: """Deserialize from a dictionary.""" try: return cls( @@ -50,9 +51,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncDeletedData": except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncDeletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["type"] = self.type.value if isinstance(self.type, Enum) else self.type diff --git a/src/workos/common/models/dsync_group_deleted.py b/src/workos/common/models/dsync_group_deleted.py index 69b6ffe2..c7bb5832 100644 --- a/src/workos/common/models/dsync_group_deleted.py +++ b/src/workos/common/models/dsync_group_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .directory_group import DirectoryGroup from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncGroupDeleted: id: str """Unique identifier for the event.""" event: Literal["dsync.group.deleted"] - data: "DirectoryGroup" + data: DirectoryGroup """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupDeleted": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.group.deleted"), - data=DirectoryGroup.from_dict(cast(Dict[str, Any], data["data"])), + data=DirectoryGroup.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_group_user_added.py b/src/workos/common/models/dsync_group_user_added.py index 061acd81..c4f22dc3 100644 --- a/src/workos/common/models/dsync_group_user_added.py +++ b/src/workos/common/models/dsync_group_user_added.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_group_user_added_data import DsyncGroupUserAddedData from .event_context import EventContext @@ -22,14 +21,14 @@ class DsyncGroupUserAdded: id: str """Unique identifier for the event.""" event: Literal["dsync.group.user_added"] - data: "DsyncGroupUserAddedData" + data: DsyncGroupUserAddedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUserAdded": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupUserAdded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUserAdded": id=data["id"], event=data.get("event", "dsync.group.user_added"), data=DsyncGroupUserAddedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupUserAdded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_group_user_removed.py b/src/workos/common/models/dsync_group_user_removed.py index 93f8c225..d0448f21 100644 --- a/src/workos/common/models/dsync_group_user_removed.py +++ b/src/workos/common/models/dsync_group_user_removed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_group_user_removed_data import DsyncGroupUserRemovedData from .event_context import EventContext @@ -22,14 +21,14 @@ class DsyncGroupUserRemoved: id: str """Unique identifier for the event.""" event: Literal["dsync.group.user_removed"] - data: "DsyncGroupUserRemovedData" + data: DsyncGroupUserRemovedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUserRemoved": + def from_dict(cls, data: dict[str, Any]) -> DsyncGroupUserRemoved: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncGroupUserRemoved": id=data["id"], event=data.get("event", "dsync.group.user_removed"), data=DsyncGroupUserRemovedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncGroupUserRemoved", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_token_revoked.py b/src/workos/common/models/dsync_token_revoked.py index 14d15302..6d57a001 100644 --- a/src/workos/common/models/dsync_token_revoked.py +++ b/src/workos/common/models/dsync_token_revoked.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .dsync_token_revoked_data import DsyncTokenRevokedData from .event_context import EventContext @@ -22,14 +21,14 @@ class DsyncTokenRevoked: id: str """Unique identifier for the event.""" event: Literal["dsync.token.revoked"] - data: "DsyncTokenRevokedData" + data: DsyncTokenRevokedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenRevoked": + def from_dict(cls, data: dict[str, Any]) -> DsyncTokenRevoked: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "DsyncTokenRevoked": id=data["id"], event=data.get("event", "dsync.token.revoked"), data=DsyncTokenRevokedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncTokenRevoked", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/dsync_user_deleted.py b/src/workos/common/models/dsync_user_deleted.py index be2c1139..495a66dd 100644 --- a/src/workos/common/models/dsync_user_deleted.py +++ b/src/workos/common/models/dsync_user_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .directory_user import DirectoryUser from .event_context import EventContext @@ -22,32 +21,32 @@ class DsyncUserDeleted: id: str """Unique identifier for the event.""" event: Literal["dsync.user.deleted"] - data: "DirectoryUser" + data: DirectoryUser """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DsyncUserDeleted": + def from_dict(cls, data: dict[str, Any]) -> DsyncUserDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "dsync.user.deleted"), - data=DirectoryUser.from_dict(cast(Dict[str, Any], data["data"])), + data=DirectoryUser.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("DsyncUserDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/error_response.py b/src/workos/common/models/error_response.py index 514556dd..f4198233 100644 --- a/src/workos/common/models/error_response.py +++ b/src/workos/common/models/error_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class ErrorResponse: """A human-readable description of the error.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ErrorResponse": + def from_dict(cls, data: dict[str, Any]) -> ErrorResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "ErrorResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("ErrorResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["error"] = self.error return result diff --git a/src/workos/common/models/event_context.py b/src/workos/common/models/event_context.py index d2f785be..f24a2927 100644 --- a/src/workos/common/models/event_context.py +++ b/src/workos/common/models/event_context.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .event_context_actor import EventContextActor @@ -15,29 +15,27 @@ class EventContext: """Additional context about the event.""" - google_analytics_client_id: Optional[str] = None + google_analytics_client_id: str | None = None """The Google Analytics client ID.""" - google_analytics_sessions: Optional[List["EventContextGoogleAnalyticsSession"]] = ( - None - ) + google_analytics_sessions: list[EventContextGoogleAnalyticsSession] | None = None """The Google Analytics sessions associated with the event.""" - ajs_anonymous_id: Optional[str] = None + ajs_anonymous_id: str | None = None """The anonymous ID from analytics.""" - client_id: Optional[str] = None + client_id: str | None = None """The client ID associated with the event.""" - actor: Optional["EventContextActor"] = None - previous_attributes: Optional[Dict[str, Any]] = None + actor: EventContextActor | None = None + previous_attributes: dict[str, Any] | None = None """Attributes that changed from their previous values.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventContext": + def from_dict(cls, data: dict[str, Any]) -> EventContext: """Deserialize from a dictionary.""" try: return cls( google_analytics_client_id=data.get("google_analytics_client_id"), google_analytics_sessions=[ EventContextGoogleAnalyticsSession.from_dict( - cast(Dict[str, Any], item) + cast(dict[str, Any], item) ) for item in cast(list[Any], _v_google_analytics_sessions) ] @@ -50,7 +48,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "EventContext": else None, ajs_anonymous_id=data.get("ajs_anonymous_id"), client_id=data.get("client_id"), - actor=EventContextActor.from_dict(cast(Dict[str, Any], _v_actor)) + actor=EventContextActor.from_dict(cast(dict[str, Any], _v_actor)) if (_v_actor := data.get("actor")) is not None else None, previous_attributes=data.get("previous_attributes"), @@ -58,9 +56,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EventContext": except (KeyError, ValueError) as e: _raise_deserialize_error("EventContext", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.google_analytics_client_id is not None: result["google_analytics_client_id"] = self.google_analytics_client_id if self.google_analytics_sessions is not None: diff --git a/src/workos/common/models/event_context_actor.py b/src/workos/common/models/event_context_actor.py index e9a4945e..7f36c303 100644 --- a/src/workos/common/models/event_context_actor.py +++ b/src/workos/common/models/event_context_actor.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error + from .event_context_actor_source import EventContextActorSource @@ -15,13 +17,13 @@ class EventContextActor: id: str """Unique identifier of the actor.""" - source: "EventContextActorSource" + source: EventContextActorSource """The source of the actor that performed the action.""" - name: Optional[str] + name: str | None """The name of the actor.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventContextActor": + def from_dict(cls, data: dict[str, Any]) -> EventContextActor: """Deserialize from a dictionary.""" try: return cls( @@ -32,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EventContextActor": except (KeyError, ValueError) as e: _raise_deserialize_error("EventContextActor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["source"] = ( self.source.value if isinstance(self.source, Enum) else self.source diff --git a/src/workos/common/models/event_context_actor_source.py b/src/workos/common/models/event_context_actor_source.py index a70e58e7..672301d5 100644 --- a/src/workos/common/models/event_context_actor_source.py +++ b/src/workos/common/models/event_context_actor_source.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class EventContextActorSource(str, Enum): SYSTEM = "system" @classmethod - def _missing_(cls, value: object) -> Optional["EventContextActorSource"]: + def _missing_(cls, value: object) -> EventContextActorSource | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/event_context_google_analytics_session.py b/src/workos/common/models/event_context_google_analytics_session.py index ab04069b..5f9495c6 100644 --- a/src/workos/common/models/event_context_google_analytics_session.py +++ b/src/workos/common/models/event_context_google_analytics_session.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,13 +14,13 @@ class EventContextGoogleAnalyticsSession: container_id: str """The Google Analytics container ID.""" - session_id: Optional[str] = None + session_id: str | None = None """The Google Analytics session ID.""" - session_number: Optional[str] = None + session_number: str | None = None """The Google Analytics session number.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventContextGoogleAnalyticsSession": + def from_dict(cls, data: dict[str, Any]) -> EventContextGoogleAnalyticsSession: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EventContextGoogleAnalyticsSession" except (KeyError, ValueError) as e: _raise_deserialize_error("EventContextGoogleAnalyticsSession", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["containerId"] = self.container_id if self.session_id is not None: result["sessionId"] = self.session_id diff --git a/src/workos/common/models/feature_flag.py b/src/workos/common/models/feature_flag.py index 2273dab4..74e7dee3 100644 --- a/src/workos/common/models/feature_flag.py +++ b/src/workos/common/models/feature_flag.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .feature_flag_owner import FeatureFlagOwner @@ -24,11 +23,11 @@ class FeatureFlag: """A unique key to reference the Feature Flag.""" name: str """A descriptive name for the Feature Flag. This field does not need to be unique.""" - description: Optional[str] + description: str | None """A description for the Feature Flag.""" - owner: Optional["FeatureFlagOwner"] + owner: FeatureFlagOwner | None """The owner of the Feature Flag.""" - tags: List[str] + tags: list[str] """Labels assigned to the Feature Flag for categorizing and filtering.""" enabled: bool """Specifies whether the Feature Flag is active for the current environment.""" @@ -40,7 +39,7 @@ class FeatureFlag: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FeatureFlag": + def from_dict(cls, data: dict[str, Any]) -> FeatureFlag: """Deserialize from a dictionary.""" try: return cls( @@ -49,7 +48,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "FeatureFlag": slug=data["slug"], name=data["name"], description=data["description"], - owner=FeatureFlagOwner.from_dict(cast(Dict[str, Any], _v_owner)) + owner=FeatureFlagOwner.from_dict(cast(dict[str, Any], _v_owner)) if (_v_owner := data["owner"]) is not None else None, tags=data["tags"], @@ -61,9 +60,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "FeatureFlag": except (KeyError, ValueError) as e: _raise_deserialize_error("FeatureFlag", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["slug"] = self.slug diff --git a/src/workos/common/models/feature_flag_owner.py b/src/workos/common/models/feature_flag_owner.py index 05dc41d0..bc967983 100644 --- a/src/workos/common/models/feature_flag_owner.py +++ b/src/workos/common/models/feature_flag_owner.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -13,13 +14,13 @@ class FeatureFlagOwner: email: str """The email address of the flag owner.""" - first_name: Optional[str] + first_name: str | None """The first name of the flag owner.""" - last_name: Optional[str] + last_name: str | None """The last name of the flag owner.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FeatureFlagOwner": + def from_dict(cls, data: dict[str, Any]) -> FeatureFlagOwner: """Deserialize from a dictionary.""" try: return cls( @@ -30,9 +31,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "FeatureFlagOwner": except (KeyError, ValueError) as e: _raise_deserialize_error("FeatureFlagOwner", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["email"] = self.email if self.first_name is not None: result["first_name"] = self.first_name diff --git a/src/workos/common/models/flag_deleted.py b/src/workos/common/models/flag_deleted.py index 0594d67f..bb107d8a 100644 --- a/src/workos/common/models/flag_deleted.py +++ b/src/workos/common/models/flag_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .flag_deleted_context import FlagDeletedContext from .flag_deleted_data import FlagDeletedData @@ -22,33 +21,33 @@ class FlagDeleted: id: str """Unique identifier for the event.""" event: Literal["flag.deleted"] - data: "FlagDeletedData" + data: FlagDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: "FlagDeletedContext" + context: FlagDeletedContext """Additional context about the event.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "FlagDeleted": + def from_dict(cls, data: dict[str, Any]) -> FlagDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "flag.deleted"), - data=FlagDeletedData.from_dict(cast(Dict[str, Any], data["data"])), + data=FlagDeletedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), context=FlagDeletedContext.from_dict( - cast(Dict[str, Any], data["context"]) + cast(dict[str, Any], data["context"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("FlagDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/generate_link_intent.py b/src/workos/common/models/generate_link_intent.py index fac8bea4..fe2f3656 100644 --- a/src/workos/common/models/generate_link_intent.py +++ b/src/workos/common/models/generate_link_intent.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -21,7 +20,7 @@ class GenerateLinkIntent(str, Enum): BRING_YOUR_OWN_KEY = "bring_your_own_key" @classmethod - def _missing_(cls, value: object) -> Optional["GenerateLinkIntent"]: + def _missing_(cls, value: object) -> GenerateLinkIntent | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/group.py b/src/workos/common/models/group.py index efe933ea..e9d21037 100644 --- a/src/workos/common/models/group.py +++ b/src/workos/common/models/group.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -21,7 +21,7 @@ class Group: """The ID of the Organization the Group belongs to.""" name: str """The name of the Group.""" - description: Optional[str] + description: str | None """An optional description of the Group.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -29,7 +29,7 @@ class Group: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "Group": + def from_dict(cls, data: dict[str, Any]) -> Group: """Deserialize from a dictionary.""" try: return cls( @@ -44,9 +44,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "Group": except (KeyError, ValueError) as e: _raise_deserialize_error("Group", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["organization_id"] = self.organization_id diff --git a/src/workos/common/models/group_deleted.py b/src/workos/common/models/group_deleted.py index 1ffe31db..2c4230ae 100644 --- a/src/workos/common/models/group_deleted.py +++ b/src/workos/common/models/group_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .group import Group @@ -22,32 +21,32 @@ class GroupDeleted: id: str """Unique identifier for the event.""" event: Literal["group.deleted"] - data: "Group" + data: Group """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupDeleted": + def from_dict(cls, data: dict[str, Any]) -> GroupDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "group.deleted"), - data=Group.from_dict(cast(Dict[str, Any], data["data"])), + data=Group.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/group_member_added.py b/src/workos/common/models/group_member_added.py index 431d3369..e6ec6fa4 100644 --- a/src/workos/common/models/group_member_added.py +++ b/src/workos/common/models/group_member_added.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .group_member_added_data import GroupMemberAddedData @@ -22,32 +21,32 @@ class GroupMemberAdded: id: str """Unique identifier for the event.""" event: Literal["group.member_added"] - data: "GroupMemberAddedData" + data: GroupMemberAddedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupMemberAdded": + def from_dict(cls, data: dict[str, Any]) -> GroupMemberAdded: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "group.member_added"), - data=GroupMemberAddedData.from_dict(cast(Dict[str, Any], data["data"])), + data=GroupMemberAddedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupMemberAdded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/group_member_added_data.py b/src/workos/common/models/group_member_added_data.py index 9027b704..07a757a5 100644 --- a/src/workos/common/models/group_member_added_data.py +++ b/src/workos/common/models/group_member_added_data.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class GroupMemberAddedData: """The ID of the OrganizationMembership.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupMemberAddedData": + def from_dict(cls, data: dict[str, Any]) -> GroupMemberAddedData: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "GroupMemberAddedData": except (KeyError, ValueError) as e: _raise_deserialize_error("GroupMemberAddedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["group_id"] = self.group_id result["organization_membership_id"] = self.organization_membership_id return result diff --git a/src/workos/common/models/group_member_removed.py b/src/workos/common/models/group_member_removed.py index 8cbbb7d3..9c9c9ed0 100644 --- a/src/workos/common/models/group_member_removed.py +++ b/src/workos/common/models/group_member_removed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .group_member_removed_data import GroupMemberRemovedData @@ -22,14 +21,14 @@ class GroupMemberRemoved: id: str """Unique identifier for the event.""" event: Literal["group.member_removed"] - data: "GroupMemberRemovedData" + data: GroupMemberRemovedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "GroupMemberRemoved": + def from_dict(cls, data: dict[str, Any]) -> GroupMemberRemoved: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "GroupMemberRemoved": id=data["id"], event=data.get("event", "group.member_removed"), data=GroupMemberRemovedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("GroupMemberRemoved", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/invitation_accepted.py b/src/workos/common/models/invitation_accepted.py index 5463dfce..b656e59d 100644 --- a/src/workos/common/models/invitation_accepted.py +++ b/src/workos/common/models/invitation_accepted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .invitation_accepted_data import InvitationAcceptedData @@ -22,14 +21,14 @@ class InvitationAccepted: id: str """Unique identifier for the event.""" event: Literal["invitation.accepted"] - data: "InvitationAcceptedData" + data: InvitationAcceptedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "InvitationAccepted": + def from_dict(cls, data: dict[str, Any]) -> InvitationAccepted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "InvitationAccepted": id=data["id"], event=data.get("event", "invitation.accepted"), data=InvitationAcceptedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("InvitationAccepted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/invitation_accepted_data.py b/src/workos/common/models/invitation_accepted_data.py index c6df3653..2f2b223e 100644 --- a/src/workos/common/models/invitation_accepted_data.py +++ b/src/workos/common/models/invitation_accepted_data.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .invitation_accepted_data_state import InvitationAcceptedDataState @@ -21,21 +22,21 @@ class InvitationAcceptedData: """The unique ID of the invitation.""" email: str """The email address of the recipient.""" - state: "InvitationAcceptedDataState" + state: InvitationAcceptedDataState """The state of the invitation.""" - accepted_at: Optional[datetime] + accepted_at: datetime | None """The timestamp when the invitation was accepted, or null if not yet accepted.""" - revoked_at: Optional[datetime] + revoked_at: datetime | None """The timestamp when the invitation was revoked, or null if not revoked.""" expires_at: datetime """The timestamp when the invitation expires.""" - organization_id: Optional[str] + organization_id: str | None """The ID of the [organization](https://workos.com/docs/reference/organization) that the recipient will join.""" - inviter_user_id: Optional[str] + inviter_user_id: str | None """The ID of the user who invited the recipient, if provided.""" - accepted_user_id: Optional[str] + accepted_user_id: str | None """The ID of the user who accepted the invitation, once accepted.""" - role_slug: Optional[str] + role_slug: str | None """Slug of the role the invitee will be assigned on acceptance. Reflects the current role on the invitee's organization membership. null when the invitation has no associated organization.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -43,7 +44,7 @@ class InvitationAcceptedData: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "InvitationAcceptedData": + def from_dict(cls, data: dict[str, Any]) -> InvitationAcceptedData: """Deserialize from a dictionary.""" try: return cls( @@ -68,9 +69,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "InvitationAcceptedData": except (KeyError, ValueError) as e: _raise_deserialize_error("InvitationAcceptedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["email"] = self.email diff --git a/src/workos/common/models/invitation_accepted_data_state.py b/src/workos/common/models/invitation_accepted_data_state.py index cc9cd3be..56ce5aa0 100644 --- a/src/workos/common/models/invitation_accepted_data_state.py +++ b/src/workos/common/models/invitation_accepted_data_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class InvitationAcceptedDataState(str, Enum): REVOKED = "revoked" @classmethod - def _missing_(cls, value: object) -> Optional["InvitationAcceptedDataState"]: + def _missing_(cls, value: object) -> InvitationAcceptedDataState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/invitation_resent.py b/src/workos/common/models/invitation_resent.py index 85f072e8..8a54988b 100644 --- a/src/workos/common/models/invitation_resent.py +++ b/src/workos/common/models/invitation_resent.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .invitation_resent_data import InvitationResentData @@ -22,32 +21,32 @@ class InvitationResent: id: str """Unique identifier for the event.""" event: Literal["invitation.resent"] - data: "InvitationResentData" + data: InvitationResentData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "InvitationResent": + def from_dict(cls, data: dict[str, Any]) -> InvitationResent: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "invitation.resent"), - data=InvitationResentData.from_dict(cast(Dict[str, Any], data["data"])), + data=InvitationResentData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("InvitationResent", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/invitation_revoked.py b/src/workos/common/models/invitation_revoked.py index b67f791d..8a0e16dd 100644 --- a/src/workos/common/models/invitation_revoked.py +++ b/src/workos/common/models/invitation_revoked.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .invitation_revoked_data import InvitationRevokedData @@ -22,14 +21,14 @@ class InvitationRevoked: id: str """Unique identifier for the event.""" event: Literal["invitation.revoked"] - data: "InvitationRevokedData" + data: InvitationRevokedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "InvitationRevoked": + def from_dict(cls, data: dict[str, Any]) -> InvitationRevoked: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "InvitationRevoked": id=data["id"], event=data.get("event", "invitation.revoked"), data=InvitationRevokedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("InvitationRevoked", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/list_metadata.py b/src/workos/common/models/list_metadata.py index d3ec885e..adb0945c 100644 --- a/src/workos/common/models/list_metadata.py +++ b/src/workos/common/models/list_metadata.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,13 +12,13 @@ class ListMetadata: """Cursor-based pagination metadata.""" - after: Optional[str] = None + after: str | None = None """Cursor for the next page of results.""" - before: Optional[str] = None + before: str | None = None """Cursor for the previous page of results.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ListMetadata": + def from_dict(cls, data: dict[str, Any]) -> ListMetadata: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ListMetadata": except (KeyError, ValueError) as e: _raise_deserialize_error("ListMetadata", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.after is not None: result["after"] = self.after else: diff --git a/src/workos/common/models/organization_deleted.py b/src/workos/common/models/organization_deleted.py index 14519fad..702ce4f7 100644 --- a/src/workos/common/models/organization_deleted.py +++ b/src/workos/common/models/organization_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_deleted_data import OrganizationDeletedData @@ -22,14 +21,14 @@ class OrganizationDeleted: id: str """Unique identifier for the event.""" event: Literal["organization.deleted"] - data: "OrganizationDeletedData" + data: OrganizationDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDeleted": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDeleted": id=data["id"], event=data.get("event", "organization.deleted"), data=OrganizationDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_deleted_data_domain_verification_strategy.py b/src/workos/common/models/organization_deleted_data_domain_verification_strategy.py index 90807929..aa5f3eab 100644 --- a/src/workos/common/models/organization_deleted_data_domain_verification_strategy.py +++ b/src/workos/common/models/organization_deleted_data_domain_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_domain.py b/src/workos/common/models/organization_domain.py index 58dcb5f7..5c2f7644 100644 --- a/src/workos/common/models/organization_domain.py +++ b/src/workos/common/models/organization_domain.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .organization_domain_state import OrganizationDomainState from .organization_domain_verification_strategy import ( OrganizationDomainVerificationStrategy, @@ -30,17 +31,17 @@ class OrganizationDomain: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - state: Optional["OrganizationDomainState"] = None + state: OrganizationDomainState | None = None """Verification state of the domain.""" - verification_prefix: Optional[str] = None + verification_prefix: str | None = None """The prefix used in DNS verification.""" - verification_token: Optional[str] = None + verification_token: str | None = None """Validation token to be used in DNS TXT record.""" - verification_strategy: Optional["OrganizationDomainVerificationStrategy"] = None + verification_strategy: OrganizationDomainVerificationStrategy | None = None """Strategy used to verify the domain.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomain": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomain: """Deserialize from a dictionary.""" try: return cls( @@ -65,9 +66,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomain": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomain", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["organization_id"] = self.organization_id diff --git a/src/workos/common/models/organization_domain_data_state.py b/src/workos/common/models/organization_domain_data_state.py index b2a2df0c..3d5f4358 100644 --- a/src/workos/common/models/organization_domain_data_state.py +++ b/src/workos/common/models/organization_domain_data_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class OrganizationDomainDataState(str, Enum): VERIFIED = "verified" @classmethod - def _missing_(cls, value: object) -> Optional["OrganizationDomainDataState"]: + def _missing_(cls, value: object) -> OrganizationDomainDataState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/organization_domain_deleted.py b/src/workos/common/models/organization_domain_deleted.py index 71226caf..794cf8d8 100644 --- a/src/workos/common/models/organization_domain_deleted.py +++ b/src/workos/common/models/organization_domain_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_domain_deleted_data import OrganizationDomainDeletedData @@ -22,14 +21,14 @@ class OrganizationDomainDeleted: id: str """Unique identifier for the event.""" event: Literal["organization_domain.deleted"] - data: "OrganizationDomainDeletedData" + data: OrganizationDomainDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainDeleted": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainDeleted": id=data["id"], event=data.get("event", "organization_domain.deleted"), data=OrganizationDomainDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_domain_deleted_data_verification_strategy.py b/src/workos/common/models/organization_domain_deleted_data_verification_strategy.py index 507cb57a..d3fdebea 100644 --- a/src/workos/common/models/organization_domain_deleted_data_verification_strategy.py +++ b/src/workos/common/models/organization_domain_deleted_data_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_domain_verification_failed.py b/src/workos/common/models/organization_domain_verification_failed.py index b52bfdfc..ca0d2430 100644 --- a/src/workos/common/models/organization_domain_verification_failed.py +++ b/src/workos/common/models/organization_domain_verification_failed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_domain_verification_failed_data import ( @@ -24,14 +23,14 @@ class OrganizationDomainVerificationFailed: id: str """Unique identifier for the event.""" event: Literal["organization_domain.verification_failed"] - data: "OrganizationDomainVerificationFailedData" + data: OrganizationDomainVerificationFailedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainVerificationFailed": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainVerificationFailed: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainVerificationFaile id=data["id"], event=data.get("event", "organization_domain.verification_failed"), data=OrganizationDomainVerificationFailedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainVerificationFailed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_domain_verification_failed_data.py b/src/workos/common/models/organization_domain_verification_failed_data.py index f62a4f63..6744d3f6 100644 --- a/src/workos/common/models/organization_domain_verification_failed_data.py +++ b/src/workos/common/models/organization_domain_verification_failed_data.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .organization_domain_verification_failed_data_organization_domain import ( @@ -20,29 +20,29 @@ class OrganizationDomainVerificationFailedData: """The event payload.""" - reason: "OrganizationDomainVerificationFailedDataReason" + reason: OrganizationDomainVerificationFailedDataReason """The reason the domain verification failed.""" - organization_domain: "OrganizationDomainVerificationFailedDataOrganizationDomain" + organization_domain: OrganizationDomainVerificationFailedDataOrganizationDomain """The organization domain that failed verification.""" @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "OrganizationDomainVerificationFailedData": + cls, data: dict[str, Any] + ) -> OrganizationDomainVerificationFailedData: """Deserialize from a dictionary.""" try: return cls( reason=OrganizationDomainVerificationFailedDataReason(data["reason"]), organization_domain=OrganizationDomainVerificationFailedDataOrganizationDomain.from_dict( - cast(Dict[str, Any], data["organization_domain"]) + cast(dict[str, Any], data["organization_domain"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainVerificationFailedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["reason"] = ( self.reason.value if isinstance(self.reason, Enum) else self.reason ) diff --git a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain.py b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain.py index 8435c17b..515518c7 100644 --- a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain.py +++ b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_domain import OrganizationDomain OrganizationDomainVerificationFailedDataOrganizationDomain: TypeAlias = ( diff --git a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_state.py b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_state.py index a603bcce..78bc12f2 100644 --- a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_state.py +++ b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_state.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_state import OrganizationCreatedDataDomainState OrganizationDomainVerificationFailedDataOrganizationDomainState: TypeAlias = ( diff --git a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_verification_strategy.py b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_verification_strategy.py index 63b4cc64..9c733c55 100644 --- a/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_verification_strategy.py +++ b/src/workos/common/models/organization_domain_verification_failed_data_organization_domain_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_domain_verification_failed_data_reason.py b/src/workos/common/models/organization_domain_verification_failed_data_reason.py index a36af374..3ccab201 100644 --- a/src/workos/common/models/organization_domain_verification_failed_data_reason.py +++ b/src/workos/common/models/organization_domain_verification_failed_data_reason.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -18,7 +17,7 @@ class OrganizationDomainVerificationFailedDataReason(str, Enum): @classmethod def _missing_( cls, value: object - ) -> Optional["OrganizationDomainVerificationFailedDataReason"]: + ) -> OrganizationDomainVerificationFailedDataReason | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/organization_domain_verification_strategy.py b/src/workos/common/models/organization_domain_verification_strategy.py index 440bcd6b..075b115d 100644 --- a/src/workos/common/models/organization_domain_verification_strategy.py +++ b/src/workos/common/models/organization_domain_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_domain_verified.py b/src/workos/common/models/organization_domain_verified.py index a8890f36..e5946320 100644 --- a/src/workos/common/models/organization_domain_verified.py +++ b/src/workos/common/models/organization_domain_verified.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_domain_verified_data import OrganizationDomainVerifiedData @@ -22,14 +21,14 @@ class OrganizationDomainVerified: id: str """Unique identifier for the event.""" event: Literal["organization_domain.verified"] - data: "OrganizationDomainVerifiedData" + data: OrganizationDomainVerifiedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainVerified": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainVerified: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainVerified": id=data["id"], event=data.get("event", "organization_domain.verified"), data=OrganizationDomainVerifiedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainVerified", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_domain_verified_data_verification_strategy.py b/src/workos/common/models/organization_domain_verified_data_verification_strategy.py index 4d141125..ca5347bc 100644 --- a/src/workos/common/models/organization_domain_verified_data_verification_strategy.py +++ b/src/workos/common/models/organization_domain_verified_data_verification_strategy.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_created_data_domain_verification_strategy import ( OrganizationCreatedDataDomainVerificationStrategy, ) diff --git a/src/workos/common/models/organization_membership_deleted.py b/src/workos/common/models/organization_membership_deleted.py index 7c20c542..d830f17a 100644 --- a/src/workos/common/models/organization_membership_deleted.py +++ b/src/workos/common/models/organization_membership_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_membership_deleted_data import OrganizationMembershipDeletedData @@ -22,14 +21,14 @@ class OrganizationMembershipDeleted: id: str """Unique identifier for the event.""" event: Literal["organization_membership.deleted"] - data: "OrganizationMembershipDeletedData" + data: OrganizationMembershipDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipDeleted": + def from_dict(cls, data: dict[str, Any]) -> OrganizationMembershipDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembershipDeleted": id=data["id"], event=data.get("event", "organization_membership.deleted"), data=OrganizationMembershipDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationMembershipDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/organization_membership_deleted_data_status.py b/src/workos/common/models/organization_membership_deleted_data_status.py index d035e7e2..da87adf9 100644 --- a/src/workos/common/models/organization_membership_deleted_data_status.py +++ b/src/workos/common/models/organization_membership_deleted_data_status.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) diff --git a/src/workos/common/models/organization_membership_status.py b/src/workos/common/models/organization_membership_status.py index af08a099..326468f4 100644 --- a/src/workos/common/models/organization_membership_status.py +++ b/src/workos/common/models/organization_membership_status.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) diff --git a/src/workos/common/models/organization_role_deleted.py b/src/workos/common/models/organization_role_deleted.py index 943bee1c..9aeeb0be 100644 --- a/src/workos/common/models/organization_role_deleted.py +++ b/src/workos/common/models/organization_role_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .organization_role_deleted_data import OrganizationRoleDeletedData @@ -22,14 +21,14 @@ class OrganizationRoleDeleted: id: str """Unique identifier for the event.""" event: Literal["organization_role.deleted"] - data: "OrganizationRoleDeletedData" + data: OrganizationRoleDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleDeleted": + def from_dict(cls, data: dict[str, Any]) -> OrganizationRoleDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationRoleDeleted": id=data["id"], event=data.get("event", "organization_role.deleted"), data=OrganizationRoleDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationRoleDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/password_reset_succeeded.py b/src/workos/common/models/password_reset_succeeded.py index d6074f23..d417f13f 100644 --- a/src/workos/common/models/password_reset_succeeded.py +++ b/src/workos/common/models/password_reset_succeeded.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .password_reset_succeeded_data import PasswordResetSucceededData @@ -22,14 +21,14 @@ class PasswordResetSucceeded: id: str """Unique identifier for the event.""" event: Literal["password_reset.succeeded"] - data: "PasswordResetSucceededData" + data: PasswordResetSucceededData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetSucceeded": + def from_dict(cls, data: dict[str, Any]) -> PasswordResetSucceeded: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PasswordResetSucceeded": id=data["id"], event=data.get("event", "password_reset.succeeded"), data=PasswordResetSucceededData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PasswordResetSucceeded", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/permission_deleted.py b/src/workos/common/models/permission_deleted.py index b1b73f43..34f27eb9 100644 --- a/src/workos/common/models/permission_deleted.py +++ b/src/workos/common/models/permission_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .permission_deleted_data import PermissionDeletedData @@ -22,14 +21,14 @@ class PermissionDeleted: id: str """Unique identifier for the event.""" event: Literal["permission.deleted"] - data: "PermissionDeletedData" + data: PermissionDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "PermissionDeleted": + def from_dict(cls, data: dict[str, Any]) -> PermissionDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "PermissionDeleted": id=data["id"], event=data.get("event", "permission.deleted"), data=PermissionDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("PermissionDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/radar_standalone_assess_request_action.py b/src/workos/common/models/radar_standalone_assess_request_action.py index 1f59209e..452920d8 100644 --- a/src/workos/common/models/radar_standalone_assess_request_action.py +++ b/src/workos/common/models/radar_standalone_assess_request_action.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class RadarStandaloneAssessRequestAction(str, Enum): SIGN_IN = "sign-in" @classmethod - def _missing_(cls, value: object) -> Optional["RadarStandaloneAssessRequestAction"]: + def _missing_(cls, value: object) -> RadarStandaloneAssessRequestAction | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/radar_standalone_assess_request_auth_method.py b/src/workos/common/models/radar_standalone_assess_request_auth_method.py index 324a899e..d0a8b646 100644 --- a/src/workos/common/models/radar_standalone_assess_request_auth_method.py +++ b/src/workos/common/models/radar_standalone_assess_request_auth_method.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -22,9 +21,7 @@ class RadarStandaloneAssessRequestAuthMethod(str, Enum): OTHER = "Other" @classmethod - def _missing_( - cls, value: object - ) -> Optional["RadarStandaloneAssessRequestAuthMethod"]: + def _missing_(cls, value: object) -> RadarStandaloneAssessRequestAuthMethod | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/radar_standalone_response_control.py b/src/workos/common/models/radar_standalone_response_control.py index 54da518a..f934c56d 100644 --- a/src/workos/common/models/radar_standalone_response_control.py +++ b/src/workos/common/models/radar_standalone_response_control.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -21,7 +20,7 @@ class RadarStandaloneResponseControl(str, Enum): RESTRICTION = "restriction" @classmethod - def _missing_(cls, value: object) -> Optional["RadarStandaloneResponseControl"]: + def _missing_(cls, value: object) -> RadarStandaloneResponseControl | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/radar_standalone_response_verdict.py b/src/workos/common/models/radar_standalone_response_verdict.py index 75a911f5..9620b122 100644 --- a/src/workos/common/models/radar_standalone_response_verdict.py +++ b/src/workos/common/models/radar_standalone_response_verdict.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class RadarStandaloneResponseVerdict(str, Enum): CHALLENGE = "challenge" @classmethod - def _missing_(cls, value: object) -> Optional["RadarStandaloneResponseVerdict"]: + def _missing_(cls, value: object) -> RadarStandaloneResponseVerdict | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/role_deleted.py b/src/workos/common/models/role_deleted.py index 14576121..06a89eea 100644 --- a/src/workos/common/models/role_deleted.py +++ b/src/workos/common/models/role_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .role_deleted_data import RoleDeletedData @@ -22,32 +21,32 @@ class RoleDeleted: id: str """Unique identifier for the event.""" event: Literal["role.deleted"] - data: "RoleDeletedData" + data: RoleDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RoleDeleted": + def from_dict(cls, data: dict[str, Any]) -> RoleDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "role.deleted"), - data=RoleDeletedData.from_dict(cast(Dict[str, Any], data["data"])), + data=RoleDeletedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("RoleDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/role_type.py b/src/workos/common/models/role_type.py index a9f7b0e1..87915136 100644 --- a/src/workos/common/models/role_type.py +++ b/src/workos/common/models/role_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class RoleType(str, Enum): ORGANIZATION_ROLE = "OrganizationRole" @classmethod - def _missing_(cls, value: object) -> Optional["RoleType"]: + def _missing_(cls, value: object) -> RoleType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/session_revoked.py b/src/workos/common/models/session_revoked.py index 0e0c3a5f..3b0c2d0f 100644 --- a/src/workos/common/models/session_revoked.py +++ b/src/workos/common/models/session_revoked.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .session_revoked_data import SessionRevokedData @@ -22,32 +21,32 @@ class SessionRevoked: id: str """Unique identifier for the event.""" event: Literal["session.revoked"] - data: "SessionRevokedData" + data: SessionRevokedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "SessionRevoked": + def from_dict(cls, data: dict[str, Any]) -> SessionRevoked: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "session.revoked"), - data=SessionRevokedData.from_dict(cast(Dict[str, Any], data["data"])), + data=SessionRevokedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("SessionRevoked", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/user_deleted.py b/src/workos/common/models/user_deleted.py index 97bf84ec..cd62abb0 100644 --- a/src/workos/common/models/user_deleted.py +++ b/src/workos/common/models/user_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .user import User @@ -22,32 +21,32 @@ class UserDeleted: id: str """Unique identifier for the event.""" event: Literal["user.deleted"] - data: "User" + data: User """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "UserDeleted": + def from_dict(cls, data: dict[str, Any]) -> UserDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "user.deleted"), - data=User.from_dict(cast(Dict[str, Any], data["data"])), + data=User.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/user_organization_membership_base_list_data.py b/src/workos/common/models/user_organization_membership_base_list_data.py index 6de974f2..5e4c66e5 100644 --- a/src/workos/common/models/user_organization_membership_base_list_data.py +++ b/src/workos/common/models/user_organization_membership_base_list_data.py @@ -5,10 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .user import User from .user_organization_membership_base_list_data_status import ( @@ -28,7 +27,7 @@ class UserOrganizationMembershipBaseListData: """The ID of the user.""" organization_id: str """The ID of the organization which the user belongs to.""" - status: "UserOrganizationMembershipBaseListDataStatus" + status: UserOrganizationMembershipBaseListDataStatus """The status of the organization membership. One of `active`, `inactive`, or `pending`.""" directory_managed: bool """Whether this organization membership is managed by a directory sync connection.""" @@ -36,17 +35,15 @@ class UserOrganizationMembershipBaseListData: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - user: "User" + user: User """The user that belongs to the organization through this membership.""" - organization_name: Optional[str] = None + organization_name: str | None = None """The name of the organization which the user belongs to.""" - custom_attributes: Optional[Dict[str, Any]] = None + custom_attributes: dict[str, Any] | None = None """An object containing IdP-sourced attributes from the linked [Directory User](https://workos.com/docs/reference/directory-sync/directory-user) or [SSO Profile](https://workos.com/docs/reference/sso/profile). Directory User attributes take precedence when both are linked.""" @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "UserOrganizationMembershipBaseListData": + def from_dict(cls, data: dict[str, Any]) -> UserOrganizationMembershipBaseListData: """Deserialize from a dictionary.""" try: return cls( @@ -58,16 +55,16 @@ def from_dict( directory_managed=data["directory_managed"], created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), - user=User.from_dict(cast(Dict[str, Any], data["user"])), + user=User.from_dict(cast(dict[str, Any], data["user"])), organization_name=data.get("organization_name"), custom_attributes=data.get("custom_attributes"), ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserOrganizationMembershipBaseListData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/common/models/user_organization_membership_base_list_data_status.py b/src/workos/common/models/user_organization_membership_base_list_data_status.py index 9cc1d012..8e8f1d83 100644 --- a/src/workos/common/models/user_organization_membership_base_list_data_status.py +++ b/src/workos/common/models/user_organization_membership_base_list_data_status.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) diff --git a/src/workos/common/models/user_organization_membership_status.py b/src/workos/common/models/user_organization_membership_status.py index 3559cb49..7a5f2765 100644 --- a/src/workos/common/models/user_organization_membership_status.py +++ b/src/workos/common/models/user_organization_membership_status.py @@ -1,6 +1,7 @@ # This file is auto-generated by oagen. Do not edit. from typing import TypeAlias + from .organization_membership_created_data_status import ( OrganizationMembershipCreatedDataStatus, ) diff --git a/src/workos/common/models/user_role_assignment_source_type.py b/src/workos/common/models/user_role_assignment_source_type.py index 82e805bb..ae73b4c1 100644 --- a/src/workos/common/models/user_role_assignment_source_type.py +++ b/src/workos/common/models/user_role_assignment_source_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class UserRoleAssignmentSourceType(str, Enum): GROUP = "group" @classmethod - def _missing_(cls, value: object) -> Optional["UserRoleAssignmentSourceType"]: + def _missing_(cls, value: object) -> UserRoleAssignmentSourceType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/vault_byok_key_deleted.py b/src/workos/common/models/vault_byok_key_deleted.py index a1ddac72..9f504e82 100644 --- a/src/workos/common/models/vault_byok_key_deleted.py +++ b/src/workos/common/models/vault_byok_key_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_byok_key_deleted_data import VaultByokKeyDeletedData @@ -22,14 +21,14 @@ class VaultByokKeyDeleted: id: str """Unique identifier for the event.""" event: Literal["vault.byok_key.deleted"] - data: "VaultByokKeyDeletedData" + data: VaultByokKeyDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyDeleted": + def from_dict(cls, data: dict[str, Any]) -> VaultByokKeyDeleted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyDeleted": id=data["id"], event=data.get("event", "vault.byok_key.deleted"), data=VaultByokKeyDeletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultByokKeyDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_byok_key_deleted_data.py b/src/workos/common/models/vault_byok_key_deleted_data.py index 8a5f74a5..b34d7841 100644 --- a/src/workos/common/models/vault_byok_key_deleted_data.py +++ b/src/workos/common/models/vault_byok_key_deleted_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_byok_key_provider import VaultByokKeyProvider @@ -15,10 +17,10 @@ class VaultByokKeyDeletedData: organization_id: str """The unique identifier of the organization.""" - key_provider: "VaultByokKeyProvider" + key_provider: VaultByokKeyProvider @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyDeletedData": + def from_dict(cls, data: dict[str, Any]) -> VaultByokKeyDeletedData: """Deserialize from a dictionary.""" try: return cls( @@ -28,9 +30,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyDeletedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultByokKeyDeletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_id"] = self.organization_id result["key_provider"] = ( self.key_provider.value diff --git a/src/workos/common/models/vault_byok_key_provider.py b/src/workos/common/models/vault_byok_key_provider.py index 968f9b85..ab0068e3 100644 --- a/src/workos/common/models/vault_byok_key_provider.py +++ b/src/workos/common/models/vault_byok_key_provider.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class VaultByokKeyProvider(str, Enum): AZURE_KEY_VAULT = "AZURE_KEY_VAULT" @classmethod - def _missing_(cls, value: object) -> Optional["VaultByokKeyProvider"]: + def _missing_(cls, value: object) -> VaultByokKeyProvider | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/vault_byok_key_verification_completed.py b/src/workos/common/models/vault_byok_key_verification_completed.py index a8f735bf..b781ad3e 100644 --- a/src/workos/common/models/vault_byok_key_verification_completed.py +++ b/src/workos/common/models/vault_byok_key_verification_completed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_byok_key_verification_completed_data import ( @@ -24,14 +23,14 @@ class VaultByokKeyVerificationCompleted: id: str """Unique identifier for the event.""" event: Literal["vault.byok_key.verification_completed"] - data: "VaultByokKeyVerificationCompletedData" + data: VaultByokKeyVerificationCompletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyVerificationCompleted": + def from_dict(cls, data: dict[str, Any]) -> VaultByokKeyVerificationCompleted: """Deserialize from a dictionary.""" try: return cls( @@ -39,19 +38,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyVerificationCompleted": id=data["id"], event=data.get("event", "vault.byok_key.verification_completed"), data=VaultByokKeyVerificationCompletedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultByokKeyVerificationCompleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_byok_key_verification_completed_data.py b/src/workos/common/models/vault_byok_key_verification_completed_data.py index 1268509b..bd1bd2d3 100644 --- a/src/workos/common/models/vault_byok_key_verification_completed_data.py +++ b/src/workos/common/models/vault_byok_key_verification_completed_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_byok_key_provider import VaultByokKeyProvider @@ -15,12 +17,12 @@ class VaultByokKeyVerificationCompletedData: organization_id: str """The unique identifier of the organization.""" - key_provider: "VaultByokKeyProvider" + key_provider: VaultByokKeyProvider verified: bool """Whether the BYOK key verification completed successfully.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyVerificationCompletedData": + def from_dict(cls, data: dict[str, Any]) -> VaultByokKeyVerificationCompletedData: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +33,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultByokKeyVerificationCompletedDa except (KeyError, ValueError) as e: _raise_deserialize_error("VaultByokKeyVerificationCompletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["organization_id"] = self.organization_id result["key_provider"] = ( self.key_provider.value diff --git a/src/workos/common/models/vault_data_deleted.py b/src/workos/common/models/vault_data_deleted.py index 1a273802..d73fc8a9 100644 --- a/src/workos/common/models/vault_data_deleted.py +++ b/src/workos/common/models/vault_data_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_data_deleted_data import VaultDataDeletedData @@ -22,32 +21,32 @@ class VaultDataDeleted: id: str """Unique identifier for the event.""" event: Literal["vault.data.deleted"] - data: "VaultDataDeletedData" + data: VaultDataDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataDeleted": + def from_dict(cls, data: dict[str, Any]) -> VaultDataDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.data.deleted"), - data=VaultDataDeletedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultDataDeletedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_data_deleted_data.py b/src/workos/common/models/vault_data_deleted_data.py index e3aa3ac1..4d45bd74 100644 --- a/src/workos/common/models/vault_data_deleted_data.py +++ b/src/workos/common/models/vault_data_deleted_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_data_deleted_data_actor_source import VaultDataDeletedDataActorSource @@ -15,14 +17,14 @@ class VaultDataDeletedData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultDataDeletedDataActorSource" + actor_source: VaultDataDeletedDataActorSource actor_name: str """The name of the actor.""" kv_name: str """The name of the key-value store.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataDeletedData": + def from_dict(cls, data: dict[str, Any]) -> VaultDataDeletedData: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +36,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDataDeletedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataDeletedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/vault_data_read.py b/src/workos/common/models/vault_data_read.py index 1fed88f6..d8212571 100644 --- a/src/workos/common/models/vault_data_read.py +++ b/src/workos/common/models/vault_data_read.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_data_read_data import VaultDataReadData @@ -22,32 +21,32 @@ class VaultDataRead: id: str """Unique identifier for the event.""" event: Literal["vault.data.read"] - data: "VaultDataReadData" + data: VaultDataReadData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataRead": + def from_dict(cls, data: dict[str, Any]) -> VaultDataRead: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.data.read"), - data=VaultDataReadData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultDataReadData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataRead", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_data_read_data.py b/src/workos/common/models/vault_data_read_data.py index 2efffdaa..61a57b4e 100644 --- a/src/workos/common/models/vault_data_read_data.py +++ b/src/workos/common/models/vault_data_read_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_data_read_data_actor_source import VaultDataReadDataActorSource @@ -15,7 +17,7 @@ class VaultDataReadData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultDataReadDataActorSource" + actor_source: VaultDataReadDataActorSource actor_name: str """The name of the actor.""" kv_name: str @@ -24,7 +26,7 @@ class VaultDataReadData: """The unique identifier of the encryption key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDataReadData": + def from_dict(cls, data: dict[str, Any]) -> VaultDataReadData: """Deserialize from a dictionary.""" try: return cls( @@ -37,9 +39,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDataReadData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDataReadData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/vault_dek_decrypted.py b/src/workos/common/models/vault_dek_decrypted.py index ed7d7fb3..217594a0 100644 --- a/src/workos/common/models/vault_dek_decrypted.py +++ b/src/workos/common/models/vault_dek_decrypted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_dek_decrypted_data import VaultDekDecryptedData @@ -22,14 +21,14 @@ class VaultDekDecrypted: id: str """Unique identifier for the event.""" event: Literal["vault.dek.decrypted"] - data: "VaultDekDecryptedData" + data: VaultDekDecryptedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDekDecrypted": + def from_dict(cls, data: dict[str, Any]) -> VaultDekDecrypted: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDekDecrypted": id=data["id"], event=data.get("event", "vault.dek.decrypted"), data=VaultDekDecryptedData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDekDecrypted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_dek_decrypted_data.py b/src/workos/common/models/vault_dek_decrypted_data.py index 88465979..30e898f4 100644 --- a/src/workos/common/models/vault_dek_decrypted_data.py +++ b/src/workos/common/models/vault_dek_decrypted_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_dek_decrypted_data_actor_source import VaultDekDecryptedDataActorSource @@ -15,14 +17,14 @@ class VaultDekDecryptedData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultDekDecryptedDataActorSource" + actor_source: VaultDekDecryptedDataActorSource actor_name: str """The name of the actor.""" key_id: str """The unique identifier of the data encryption key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDekDecryptedData": + def from_dict(cls, data: dict[str, Any]) -> VaultDekDecryptedData: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +36,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDekDecryptedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDekDecryptedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/vault_dek_read.py b/src/workos/common/models/vault_dek_read.py index 382af324..b93f9635 100644 --- a/src/workos/common/models/vault_dek_read.py +++ b/src/workos/common/models/vault_dek_read.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_dek_read_data import VaultDekReadData @@ -22,32 +21,32 @@ class VaultDekRead: id: str """Unique identifier for the event.""" event: Literal["vault.dek.read"] - data: "VaultDekReadData" + data: VaultDekReadData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDekRead": + def from_dict(cls, data: dict[str, Any]) -> VaultDekRead: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.dek.read"), - data=VaultDekReadData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultDekReadData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDekRead", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_dek_read_data.py b/src/workos/common/models/vault_dek_read_data.py index 10740165..4c156280 100644 --- a/src/workos/common/models/vault_dek_read_data.py +++ b/src/workos/common/models/vault_dek_read_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, List +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_dek_read_data_actor_source import VaultDekReadDataActorSource @@ -15,15 +17,15 @@ class VaultDekReadData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultDekReadDataActorSource" + actor_source: VaultDekReadDataActorSource actor_name: str """The name of the actor.""" - key_ids: List[str] + key_ids: list[str] """The unique identifiers of the data encryption keys.""" - key_context: Dict[str, str] + key_context: dict[str, str] @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultDekReadData": + def from_dict(cls, data: dict[str, Any]) -> VaultDekReadData: """Deserialize from a dictionary.""" try: return cls( @@ -36,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultDekReadData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultDekReadData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/vault_kek_deleted.py b/src/workos/common/models/vault_kek_deleted.py index 0f1c36de..8ce274bd 100644 --- a/src/workos/common/models/vault_kek_deleted.py +++ b/src/workos/common/models/vault_kek_deleted.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_kek_deleted_data import VaultKekDeletedData @@ -22,32 +21,32 @@ class VaultKekDeleted: id: str """Unique identifier for the event.""" event: Literal["vault.kek.deleted"] - data: "VaultKekDeletedData" + data: VaultKekDeletedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultKekDeleted": + def from_dict(cls, data: dict[str, Any]) -> VaultKekDeleted: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.kek.deleted"), - data=VaultKekDeletedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultKekDeletedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultKekDeleted", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_metadata_read.py b/src/workos/common/models/vault_metadata_read.py index 23dede63..65a5029d 100644 --- a/src/workos/common/models/vault_metadata_read.py +++ b/src/workos/common/models/vault_metadata_read.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_metadata_read_data import VaultMetadataReadData @@ -22,14 +21,14 @@ class VaultMetadataRead: id: str """Unique identifier for the event.""" event: Literal["vault.metadata.read"] - data: "VaultMetadataReadData" + data: VaultMetadataReadData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultMetadataRead": + def from_dict(cls, data: dict[str, Any]) -> VaultMetadataRead: """Deserialize from a dictionary.""" try: return cls( @@ -37,19 +36,19 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultMetadataRead": id=data["id"], event=data.get("event", "vault.metadata.read"), data=VaultMetadataReadData.from_dict( - cast(Dict[str, Any], data["data"]) + cast(dict[str, Any], data["data"]) ), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultMetadataRead", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_names_listed.py b/src/workos/common/models/vault_names_listed.py index 86fe0aa0..f84abf9b 100644 --- a/src/workos/common/models/vault_names_listed.py +++ b/src/workos/common/models/vault_names_listed.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .vault_names_listed_data import VaultNamesListedData @@ -22,32 +21,32 @@ class VaultNamesListed: id: str """Unique identifier for the event.""" event: Literal["vault.names.listed"] - data: "VaultNamesListedData" + data: VaultNamesListedData """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultNamesListed": + def from_dict(cls, data: dict[str, Any]) -> VaultNamesListed: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "vault.names.listed"), - data=VaultNamesListedData.from_dict(cast(Dict[str, Any], data["data"])), + data=VaultNamesListedData.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("VaultNamesListed", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/vault_names_listed_data.py b/src/workos/common/models/vault_names_listed_data.py index 99048d21..b2f24c92 100644 --- a/src/workos/common/models/vault_names_listed_data.py +++ b/src/workos/common/models/vault_names_listed_data.py @@ -4,8 +4,10 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error + from .vault_names_listed_data_actor_source import VaultNamesListedDataActorSource @@ -15,12 +17,12 @@ class VaultNamesListedData: actor_id: str """The unique identifier of the actor.""" - actor_source: "VaultNamesListedDataActorSource" + actor_source: VaultNamesListedDataActorSource actor_name: str """The name of the actor.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultNamesListedData": + def from_dict(cls, data: dict[str, Any]) -> VaultNamesListedData: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +33,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultNamesListedData": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultNamesListedData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["actor_id"] = self.actor_id result["actor_source"] = ( self.actor_source.value diff --git a/src/workos/common/models/waitlist_user.py b/src/workos/common/models/waitlist_user.py index 62fa1330..2135eafe 100644 --- a/src/workos/common/models/waitlist_user.py +++ b/src/workos/common/models/waitlist_user.py @@ -5,9 +5,10 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error + from .waitlist_user_state import WaitlistUserState @@ -21,17 +22,19 @@ class WaitlistUser: """The unique ID of the Waitlist User.""" email: str """The email address of the Waitlist User.""" - state: "WaitlistUserState" + state: WaitlistUserState """The state of the Waitlist User.""" - approved_at: Optional[datetime] + approved_at: datetime | None """The timestamp when the Waitlist User was approved, or null if not yet approved.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" + waitlist_id: str | None = None + """The unique ID of the Waitlist that the Waitlist User joined.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WaitlistUser": + def from_dict(cls, data: dict[str, Any]) -> WaitlistUser: """Deserialize from a dictionary.""" try: return cls( @@ -44,13 +47,14 @@ def from_dict(cls, data: Dict[str, Any]) -> "WaitlistUser": else None, created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), + waitlist_id=data.get("waitlist_id"), ) except (KeyError, ValueError) as e: _raise_deserialize_error("WaitlistUser", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["email"] = self.email @@ -63,4 +67,8 @@ def to_dict(self) -> Dict[str, Any]: result["approved_at"] = None result["created_at"] = _format_datetime(self.created_at) result["updated_at"] = _format_datetime(self.updated_at) + if self.waitlist_id is not None: + result["waitlist_id"] = self.waitlist_id + else: + result["waitlist_id"] = None return result diff --git a/src/workos/common/models/waitlist_user_approved.py b/src/workos/common/models/waitlist_user_approved.py index 08e0802c..dd430101 100644 --- a/src/workos/common/models/waitlist_user_approved.py +++ b/src/workos/common/models/waitlist_user_approved.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .waitlist_user import WaitlistUser @@ -22,32 +21,32 @@ class WaitlistUserApproved: id: str """Unique identifier for the event.""" event: Literal["waitlist_user.approved"] - data: "WaitlistUser" + data: WaitlistUser """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WaitlistUserApproved": + def from_dict(cls, data: dict[str, Any]) -> WaitlistUserApproved: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "waitlist_user.approved"), - data=WaitlistUser.from_dict(cast(Dict[str, Any], data["data"])), + data=WaitlistUser.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("WaitlistUserApproved", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/waitlist_user_denied.py b/src/workos/common/models/waitlist_user_denied.py index deb30ed5..c74a3754 100644 --- a/src/workos/common/models/waitlist_user_denied.py +++ b/src/workos/common/models/waitlist_user_denied.py @@ -4,10 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from .event_context import EventContext from .waitlist_user import WaitlistUser @@ -22,32 +21,32 @@ class WaitlistUserDenied: id: str """Unique identifier for the event.""" event: Literal["waitlist_user.denied"] - data: "WaitlistUser" + data: WaitlistUser """The event payload.""" created_at: datetime """An ISO 8601 timestamp.""" - context: Optional["EventContext"] = None + context: EventContext | None = None @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WaitlistUserDenied": + def from_dict(cls, data: dict[str, Any]) -> WaitlistUserDenied: """Deserialize from a dictionary.""" try: return cls( object=data.get("object", "event"), id=data["id"], event=data.get("event", "waitlist_user.denied"), - data=WaitlistUser.from_dict(cast(Dict[str, Any], data["data"])), + data=WaitlistUser.from_dict(cast(dict[str, Any], data["data"])), created_at=_parse_datetime(data["created_at"]), - context=EventContext.from_dict(cast(Dict[str, Any], _v_context)) + context=EventContext.from_dict(cast(dict[str, Any], _v_context)) if (_v_context := data.get("context")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("WaitlistUserDenied", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["event"] = self.event diff --git a/src/workos/common/models/waitlist_user_state.py b/src/workos/common/models/waitlist_user_state.py index 18fa2e15..04feeeee 100644 --- a/src/workos/common/models/waitlist_user_state.py +++ b/src/workos/common/models/waitlist_user_state.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -17,7 +16,7 @@ class WaitlistUserState(str, Enum): DENIED = "denied" @classmethod - def _missing_(cls, value: object) -> Optional["WaitlistUserState"]: + def _missing_(cls, value: object) -> WaitlistUserState | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/common/models/widget_session_token_scopes.py b/src/workos/common/models/widget_session_token_scopes.py index d03c58e5..57b5da2e 100644 --- a/src/workos/common/models/widget_session_token_scopes.py +++ b/src/workos/common/models/widget_session_token_scopes.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -21,7 +20,7 @@ class WidgetSessionTokenScopes(str, Enum): WIDGETS_PIPES_MANAGE = "widgets:pipes:manage" @classmethod - def _missing_(cls, value: object) -> Optional["WidgetSessionTokenScopes"]: + def _missing_(cls, value: object) -> WidgetSessionTokenScopes | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/directory_sync/_resource.py b/src/workos/directory_sync/_resource.py index c994f751..48531284 100644 --- a/src/workos/directory_sync/_resource.py +++ b/src/workos/directory_sync/_resource.py @@ -2,35 +2,36 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import Directory, DirectoryUserWithGroups from workos.common.models.directory_group import DirectoryGroup from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage +from .._types import RequestOptions, enum_value +from .models import Directory, DirectoryUserWithGroups class DirectorySync: """Directory Sync API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_directories( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - search: Optional[str] = None, - domain: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + search: str | None = None, + domain: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[Directory]: """List Directories @@ -81,7 +82,7 @@ def get_directory( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Directory: """Get a Directory @@ -112,7 +113,7 @@ def delete_directory( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Directory @@ -137,13 +138,13 @@ def delete_directory( def list_groups( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - directory: Optional[str] = None, - user: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + directory: str | None = None, + user: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[DirectoryGroup]: """List Directory Groups @@ -193,7 +194,7 @@ def get_group( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DirectoryGroup: """Get a Directory Group @@ -223,15 +224,15 @@ def get_group( def list_users( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - directory: Optional[str] = None, - group: Optional[str] = None, - idp_id: Optional[str] = None, - email: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + directory: str | None = None, + group: str | None = None, + idp_id: str | None = None, + email: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[DirectoryUserWithGroups]: """List Directory Users @@ -285,7 +286,7 @@ def get_user( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DirectoryUserWithGroups: """Get a Directory User @@ -316,20 +317,20 @@ def get_user( class AsyncDirectorySync: """Directory Sync API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_directories( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - search: Optional[str] = None, - domain: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + search: str | None = None, + domain: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[Directory]: """List Directories @@ -380,7 +381,7 @@ async def get_directory( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Directory: """Get a Directory @@ -411,7 +412,7 @@ async def delete_directory( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Directory @@ -436,13 +437,13 @@ async def delete_directory( async def list_groups( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - directory: Optional[str] = None, - user: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + directory: str | None = None, + user: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[DirectoryGroup]: """List Directory Groups @@ -492,7 +493,7 @@ async def get_group( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DirectoryGroup: """Get a Directory Group @@ -522,15 +523,15 @@ async def get_group( async def list_users( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - directory: Optional[str] = None, - group: Optional[str] = None, - idp_id: Optional[str] = None, - email: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + directory: str | None = None, + group: str | None = None, + idp_id: str | None = None, + email: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[DirectoryUserWithGroups]: """List Directory Users @@ -584,7 +585,7 @@ async def get_user( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DirectoryUserWithGroups: """Get a Directory User diff --git a/src/workos/directory_sync/models/directory.py b/src/workos/directory_sync/models/directory.py index b37d78a9..403b9751 100644 --- a/src/workos/directory_sync/models/directory.py +++ b/src/workos/directory_sync/models/directory.py @@ -5,15 +5,14 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast -from .directory_metadata import DirectoryMetadata +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.directory_state import DirectoryState from workos.common.models.directory_type import DirectoryType +from .directory_metadata import DirectoryMetadata + @dataclass(slots=True) class Directory: @@ -27,9 +26,9 @@ class Directory: """The unique identifier for the Organization in which the directory resides.""" external_key: str """External Key for the Directory.""" - type: "DirectoryType" + type: DirectoryType """The type of external Directory Provider integrated with.""" - state: "DirectoryState" + state: DirectoryState """Describes whether the Directory has been successfully connected to an external provider.""" name: str """The name of the directory.""" @@ -37,13 +36,13 @@ class Directory: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - domain: Optional[str] = None + domain: str | None = None """The URL associated with an Enterprise Client.""" - metadata: Optional["DirectoryMetadata"] = None + metadata: DirectoryMetadata | None = None """Aggregate counts of directory users and groups synced from the provider.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "Directory": + def from_dict(cls, data: dict[str, Any]) -> Directory: """Deserialize from a dictionary.""" try: return cls( @@ -57,16 +56,16 @@ def from_dict(cls, data: Dict[str, Any]) -> "Directory": created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), domain=data.get("domain"), - metadata=DirectoryMetadata.from_dict(cast(Dict[str, Any], _v_metadata)) + metadata=DirectoryMetadata.from_dict(cast(dict[str, Any], _v_metadata)) if (_v_metadata := data.get("metadata")) is not None else None, ) except (KeyError, ValueError) as e: _raise_deserialize_error("Directory", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["organization_id"] = self.organization_id diff --git a/src/workos/directory_sync/models/directory_metadata.py b/src/workos/directory_sync/models/directory_metadata.py index da591989..97a4ba17 100644 --- a/src/workos/directory_sync/models/directory_metadata.py +++ b/src/workos/directory_sync/models/directory_metadata.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .directory_metadata_user import DirectoryMetadataUser @@ -14,27 +14,27 @@ class DirectoryMetadata: """Aggregate counts of directory users and groups synced from the provider.""" - users: "DirectoryMetadataUser" + users: DirectoryMetadataUser """Counts of active and inactive directory users.""" groups: int """Count of directory groups.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryMetadata": + def from_dict(cls, data: dict[str, Any]) -> DirectoryMetadata: """Deserialize from a dictionary.""" try: return cls( users=DirectoryMetadataUser.from_dict( - cast(Dict[str, Any], data["users"]) + cast(dict[str, Any], data["users"]) ), groups=data["groups"], ) except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryMetadata", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["users"] = self.users.to_dict() result["groups"] = self.groups return result diff --git a/src/workos/directory_sync/models/directory_metadata_user.py b/src/workos/directory_sync/models/directory_metadata_user.py index f0fbc884..3fd8f594 100644 --- a/src/workos/directory_sync/models/directory_metadata_user.py +++ b/src/workos/directory_sync/models/directory_metadata_user.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class DirectoryMetadataUser: """Count of inactive directory users.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryMetadataUser": + def from_dict(cls, data: dict[str, Any]) -> DirectoryMetadataUser: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryMetadataUser": except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryMetadataUser", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["active"] = self.active result["inactive"] = self.inactive return result diff --git a/src/workos/directory_sync/models/directory_user_with_groups.py b/src/workos/directory_sync/models/directory_user_with_groups.py index 348a73eb..69fd5624 100644 --- a/src/workos/directory_sync/models/directory_user_with_groups.py +++ b/src/workos/directory_sync/models/directory_user_with_groups.py @@ -5,17 +5,16 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.directory_group import DirectoryGroup -from .directory_user_with_groups_email import DirectoryUserWithGroupsEmail -from workos.common.models.slim_role import SlimRole from workos.common.models.directory_user_with_groups_state import ( DirectoryUserWithGroupsState, ) +from workos.common.models.slim_role import SlimRole + +from .directory_user_with_groups_email import DirectoryUserWithGroupsEmail @dataclass(slots=True) @@ -32,48 +31,48 @@ class DirectoryUserWithGroups: """The identifier for the Organization in which the Directory resides.""" idp_id: str """Unique identifier for the user, assigned by the Directory Provider. Different Directory Providers use different ID formats.""" - email: Optional[str] + email: str | None """The email address of the user.""" - state: "DirectoryUserWithGroupsState" + state: DirectoryUserWithGroupsState """The state of the user.""" - custom_attributes: Dict[str, Any] + custom_attributes: dict[str, Any] """An object containing the custom attribute mapping for the Directory Provider.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - first_name: Optional[str] = None + first_name: str | None = None """The first name of the user.""" - last_name: Optional[str] = None + last_name: str | None = None """The last name of the user.""" - name: Optional[str] = None + name: str | None = None """The full name of the user.""" - emails: Optional[List["DirectoryUserWithGroupsEmail"]] = None + emails: list[DirectoryUserWithGroupsEmail] | None = None """A list of email addresses for the user. .. deprecated:: This field is deprecated.""" - job_title: Optional[str] = None + job_title: str | None = None """The job title of the user. .. deprecated:: This field is deprecated.""" - username: Optional[str] = None + username: str | None = None """The username of the user. .. deprecated:: This field is deprecated.""" - raw_attributes: Optional[Dict[str, Any]] = None + raw_attributes: dict[str, Any] | None = None """The raw attributes received from the directory provider. .. deprecated:: This field is deprecated.""" - role: Optional["SlimRole"] = None - roles: Optional[List["SlimRole"]] = None + role: SlimRole | None = None + roles: list[SlimRole] | None = None """All roles assigned to the user.""" - groups: Optional[List["DirectoryGroup"]] = None + groups: list[DirectoryGroup] | None = None """The directory groups the user belongs to. Deprecated: starting May 1, 2026, this field returns an empty array by default for newly created teams. Existing teams currently depending on this field should migrate to the new access pattern for better throughput performance — the field is unbounded by user, so users with many group memberships produce large, slow response payloads. Use the List Directory Groups endpoint with a `user` filter to fetch a user's group memberships. .. deprecated:: This field is deprecated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserWithGroups": + def from_dict(cls, data: dict[str, Any]) -> DirectoryUserWithGroups: """Deserialize from a dictionary.""" try: return cls( @@ -91,7 +90,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserWithGroups": last_name=data.get("last_name"), name=data.get("name"), emails=[ - DirectoryUserWithGroupsEmail.from_dict(cast(Dict[str, Any], item)) + DirectoryUserWithGroupsEmail.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_emails) ] if (_v_emails := data.get("emails")) is not None @@ -99,17 +98,17 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserWithGroups": job_title=data.get("job_title"), username=data.get("username"), raw_attributes=data.get("raw_attributes"), - role=SlimRole.from_dict(cast(Dict[str, Any], _v_role)) + role=SlimRole.from_dict(cast(dict[str, Any], _v_role)) if (_v_role := data.get("role")) is not None else None, roles=[ - SlimRole.from_dict(cast(Dict[str, Any], item)) + SlimRole.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_roles) ] if (_v_roles := data.get("roles")) is not None else None, groups=[ - DirectoryGroup.from_dict(cast(Dict[str, Any], item)) + DirectoryGroup.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_groups) ] if (_v_groups := data.get("groups")) is not None @@ -118,9 +117,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DirectoryUserWithGroups": except (KeyError, ValueError) as e: _raise_deserialize_error("DirectoryUserWithGroups", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["directory_id"] = self.directory_id diff --git a/src/workos/events/_resource.py b/src/workos/events/_resource.py index 54633c27..55b4bbb7 100644 --- a/src/workos/events/_resource.py +++ b/src/workos/events/_resource.py @@ -2,35 +2,36 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Optional, Union, cast +from typing import TYPE_CHECKING, cast if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import EventSchema, EventSchemaVariant from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage +from .._types import RequestOptions, enum_value +from .models import EventSchema, EventSchemaVariant class Events: """Events API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_events( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - events: Optional[List[str]] = None, - range_start: Optional[str] = None, - range_end: Optional[str] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + events: list[str] | None = None, + range_start: str | None = None, + range_end: str | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[EventSchemaVariant]: """List events @@ -88,21 +89,21 @@ def list_events( class AsyncEvents: """Events API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_events( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - events: Optional[List[str]] = None, - range_start: Optional[str] = None, - range_end: Optional[str] = None, - organization_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + events: list[str] | None = None, + range_start: str | None = None, + range_end: str | None = None, + organization_id: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[EventSchemaVariant]: """List events diff --git a/src/workos/events/models/event_list_list_metadata.py b/src/workos/events/models/event_list_list_metadata.py index e4a97a0d..5f9dbc40 100644 --- a/src/workos/events/models/event_list_list_metadata.py +++ b/src/workos/events/models/event_list_list_metadata.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class EventListListMetadata: """Pagination cursor for navigating to the next page of results.""" - after: Optional[str] + after: str | None """An object ID that defines your place in the list. When the ID is not present, you are at the end of the list.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventListListMetadata": + def from_dict(cls, data: dict[str, Any]) -> EventListListMetadata: """Deserialize from a dictionary.""" try: return cls( @@ -24,9 +25,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EventListListMetadata": except (KeyError, ValueError) as e: _raise_deserialize_error("EventListListMetadata", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.after is not None: result["after"] = self.after else: diff --git a/src/workos/events/models/event_schema.py b/src/workos/events/models/event_schema.py index 736902f0..17326f47 100644 --- a/src/workos/events/models/event_schema.py +++ b/src/workos/events/models/event_schema.py @@ -3,9 +3,9 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, ClassVar, Dict, Union, cast -from workos._types import _raise_deserialize_error +from typing import Any, ClassVar, Union, cast +from workos._types import _raise_deserialize_error from workos.common.models.action_authentication_denied import ActionAuthenticationDenied from workos.common.models.action_user_registration_denied import ( ActionUserRegistrationDenied, @@ -25,6 +25,7 @@ from workos.common.models.agent_registration_organization_switched import ( AgentRegistrationOrganizationSwitched, ) +from workos.common.models.agent_registration_refreshed import AgentRegistrationRefreshed from workos.common.models.agent_registration_revoked import AgentRegistrationRevoked from workos.common.models.api_key_created import ApiKeyCreated from workos.common.models.api_key_revoked import ApiKeyRevoked @@ -176,15 +177,15 @@ class EventSchemaUnknown: """Unknown variant of EventSchema not yet recognized by this SDK version.""" - raw_data: Dict[str, Any] + raw_data: dict[str, Any] """The raw payload, preserved so callers can still inspect the data.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventSchemaUnknown": + def from_dict(cls, data: dict[str, Any]) -> EventSchemaUnknown: """Wrap raw data in an unknown variant.""" return cls(raw_data=data) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Return the original raw data.""" return dict(self.raw_data) @@ -199,6 +200,7 @@ def to_dict(self) -> Dict[str, Any]: AgentRegistrationDeleted, AgentRegistrationExpired, AgentRegistrationOrganizationSwitched, + AgentRegistrationRefreshed, AgentRegistrationRevoked, ApiKeyCreated, ApiKeyRevoked, @@ -307,7 +309,7 @@ def to_dict(self) -> Dict[str, Any]: class EventSchema: """An event emitted by WorkOS.""" - _DISPATCH: ClassVar[Dict[str, type]] = { + _DISPATCH: ClassVar[dict[str, type]] = { "action.authentication.denied": ActionAuthenticationDenied, "action.user_registration.denied": ActionUserRegistrationDenied, "agent.registration.claim.attempt.created": AgentRegistrationClaimAttemptCreated, @@ -317,6 +319,7 @@ class EventSchema: "agent.registration.deleted": AgentRegistrationDeleted, "agent.registration.expired": AgentRegistrationExpired, "agent.registration.organization.switched": AgentRegistrationOrganizationSwitched, + "agent.registration.refreshed": AgentRegistrationRefreshed, "agent.registration.revoked": AgentRegistrationRevoked, "api_key.created": ApiKeyCreated, "api_key.revoked": ApiKeyRevoked, @@ -421,7 +424,7 @@ class EventSchema: } @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EventSchemaVariant": + def from_dict(cls, data: dict[str, Any]) -> EventSchemaVariant: """Deserialize from a dictionary, dispatching to the correct variant.""" if "event" not in data: _raise_deserialize_error( diff --git a/src/workos/feature_flags/_resource.py b/src/workos/feature_flags/_resource.py index 3d232b73..e5c12aae 100644 --- a/src/workos/feature_flags/_resource.py +++ b/src/workos/feature_flags/_resource.py @@ -2,32 +2,33 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Optional, Union +from typing import TYPE_CHECKING if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value from workos.common.models.feature_flag import FeatureFlag from workos.common.models.flag import Flag from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage +from .._types import RequestOptions, enum_value class FeatureFlags: """Feature Flags API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_feature_flags( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[Flag]: """List feature flags @@ -73,7 +74,7 @@ def get_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Flag: """Get a feature flag @@ -103,7 +104,7 @@ def disable_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> FeatureFlag: """Disable a feature flag @@ -133,7 +134,7 @@ def enable_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> FeatureFlag: """Enable a feature flag @@ -164,7 +165,7 @@ def add_flag_target( resource_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Add a feature flag target @@ -194,7 +195,7 @@ def remove_flag_target( resource_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a feature flag target @@ -223,11 +224,11 @@ def list_organization_feature_flags( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[Flag]: """List enabled feature flags for an organization @@ -272,11 +273,11 @@ def list_user_feature_flags( self, user_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[Flag]: """List enabled feature flags for a user @@ -321,17 +322,17 @@ def list_user_feature_flags( class AsyncFeatureFlags: """Feature Flags API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_feature_flags( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[Flag]: """List feature flags @@ -377,7 +378,7 @@ async def get_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Flag: """Get a feature flag @@ -407,7 +408,7 @@ async def disable_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> FeatureFlag: """Disable a feature flag @@ -437,7 +438,7 @@ async def enable_feature_flag( self, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> FeatureFlag: """Enable a feature flag @@ -468,7 +469,7 @@ async def add_flag_target( resource_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Add a feature flag target @@ -498,7 +499,7 @@ async def remove_flag_target( resource_id: str, slug: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a feature flag target @@ -527,11 +528,11 @@ async def list_organization_feature_flags( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[Flag]: """List enabled feature flags for an organization @@ -576,11 +577,11 @@ async def list_user_feature_flags( self, user_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[Flag]: """List enabled feature flags for a user diff --git a/src/workos/groups/_resource.py b/src/workos/groups/_resource.py index 4cda1eab..75a0113b 100644 --- a/src/workos/groups/_resource.py +++ b/src/workos/groups/_resource.py @@ -2,35 +2,36 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven from workos.common.models.group import Group +from workos.common.models.pagination_order import PaginationOrder from workos.common.models.user_organization_membership_base_list_data import ( UserOrganizationMembershipBaseListData, ) -from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value class Groups: """Groups API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_organization_groups( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[Group]: """List groups @@ -77,8 +78,8 @@ def create_organization_group( organization_id: str, *, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Group: """Create a group @@ -102,7 +103,7 @@ def create_organization_group( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "name": name, } if not isinstance(description, NotGiven): @@ -120,7 +121,7 @@ def get_organization_group( organization_id: str, group_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Group: """Get a group @@ -153,9 +154,9 @@ def update_organization_group( organization_id: str, group_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Group: """Update a group @@ -180,7 +181,7 @@ def update_organization_group( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -202,7 +203,7 @@ def delete_organization_group( organization_id: str, group_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a group @@ -231,11 +232,11 @@ def list_group_organization_memberships( organization_id: str, group_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[UserOrganizationMembershipBaseListData]: """List Group members @@ -290,7 +291,7 @@ def create_group_organization_membership( group_id: str, *, organization_membership_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Group: """Add a member to a Group @@ -314,7 +315,7 @@ def create_group_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_membership_id": organization_membership_id, } return self._client.request( @@ -337,7 +338,7 @@ def delete_group_organization_membership( group_id: str, om_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a member from a Group @@ -373,18 +374,18 @@ def delete_group_organization_membership( class AsyncGroups: """Groups API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_organization_groups( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[Group]: """List groups @@ -431,8 +432,8 @@ async def create_organization_group( organization_id: str, *, name: str, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Group: """Create a group @@ -456,7 +457,7 @@ async def create_organization_group( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "name": name, } if not isinstance(description, NotGiven): @@ -474,7 +475,7 @@ async def get_organization_group( organization_id: str, group_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Group: """Get a group @@ -507,9 +508,9 @@ async def update_organization_group( organization_id: str, group_id: str, *, - name: Optional[str] = None, - description: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + description: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Group: """Update a group @@ -534,7 +535,7 @@ async def update_organization_group( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -556,7 +557,7 @@ async def delete_organization_group( organization_id: str, group_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a group @@ -585,11 +586,11 @@ async def list_group_organization_memberships( organization_id: str, group_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[UserOrganizationMembershipBaseListData]: """List Group members @@ -644,7 +645,7 @@ async def create_group_organization_membership( group_id: str, *, organization_membership_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Group: """Add a member to a Group @@ -668,7 +669,7 @@ async def create_group_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "organization_membership_id": organization_membership_id, } return await self._client.request( @@ -691,7 +692,7 @@ async def delete_group_organization_membership( group_id: str, om_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove a member from a Group diff --git a/src/workos/multi_factor_auth/_resource.py b/src/workos/multi_factor_auth/_resource.py index d3f21002..62610cf2 100644 --- a/src/workos/multi_factor_auth/_resource.py +++ b/src/workos/multi_factor_auth/_resource.py @@ -2,16 +2,11 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import ( - AuthenticationChallengeVerifyResponse, - UserAuthenticationFactorEnrollResponse, -) from workos.common.models.authentication_challenge import AuthenticationChallenge from workos.common.models.authentication_factor import AuthenticationFactor from workos.common.models.authentication_factor_enrolled import ( @@ -21,13 +16,19 @@ AuthenticationFactorsCreateRequestType, ) from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage +from .._types import RequestOptions, enum_value +from .models import ( + AuthenticationChallengeVerifyResponse, + UserAuthenticationFactorEnrollResponse, +) class MultiFactorAuth: """Multi Factor Auth API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def verify_challenge( @@ -35,7 +36,7 @@ def verify_challenge( id: str, *, code: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthenticationChallengeVerifyResponse: """Verify Challenge @@ -57,7 +58,7 @@ def verify_challenge( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "code": code, } return self._client.request( @@ -71,12 +72,12 @@ def verify_challenge( def enroll_factor( self, *, - type: Union[AuthenticationFactorsCreateRequestType, str], - phone_number: Optional[str] = None, - totp_issuer: Optional[str] = None, - totp_user: Optional[str] = None, - user_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + type: AuthenticationFactorsCreateRequestType | str, + phone_number: str | None = None, + totp_issuer: str | None = None, + totp_user: str | None = None, + user_id: str | None = None, + request_options: RequestOptions | None = None, ) -> AuthenticationFactorEnrolled: """Enroll Factor @@ -99,7 +100,7 @@ def enroll_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": enum_value(type), @@ -122,7 +123,7 @@ def get_factor( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthenticationFactor: """Get Factor @@ -152,7 +153,7 @@ def delete_factor( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete Factor @@ -178,8 +179,8 @@ def challenge_factor( self, id: str, *, - sms_template: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + sms_template: str | None = None, + request_options: RequestOptions | None = None, ) -> AuthenticationChallenge: """Challenge Factor @@ -200,7 +201,7 @@ def challenge_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "sms_template": sms_template, @@ -219,11 +220,11 @@ def list_user_auth_factors( self, userland_user_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[AuthenticationFactor]: """List authentication factors @@ -269,10 +270,10 @@ def create_user_auth_factor( userland_user_id: str, *, type: Literal["totp"], - totp_issuer: Optional[str] = None, - totp_user: Optional[str] = None, - totp_secret: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + totp_issuer: str | None = None, + totp_user: str | None = None, + totp_secret: str | None = None, + request_options: RequestOptions | None = None, ) -> UserAuthenticationFactorEnrollResponse: """Enroll an authentication factor @@ -295,7 +296,7 @@ def create_user_auth_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": type, @@ -317,7 +318,7 @@ def create_user_auth_factor( class AsyncMultiFactorAuth: """Multi Factor Auth API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def verify_challenge( @@ -325,7 +326,7 @@ async def verify_challenge( id: str, *, code: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthenticationChallengeVerifyResponse: """Verify Challenge @@ -347,7 +348,7 @@ async def verify_challenge( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "code": code, } return await self._client.request( @@ -361,12 +362,12 @@ async def verify_challenge( async def enroll_factor( self, *, - type: Union[AuthenticationFactorsCreateRequestType, str], - phone_number: Optional[str] = None, - totp_issuer: Optional[str] = None, - totp_user: Optional[str] = None, - user_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + type: AuthenticationFactorsCreateRequestType | str, + phone_number: str | None = None, + totp_issuer: str | None = None, + totp_user: str | None = None, + user_id: str | None = None, + request_options: RequestOptions | None = None, ) -> AuthenticationFactorEnrolled: """Enroll Factor @@ -389,7 +390,7 @@ async def enroll_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": enum_value(type), @@ -412,7 +413,7 @@ async def get_factor( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuthenticationFactor: """Get Factor @@ -442,7 +443,7 @@ async def delete_factor( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete Factor @@ -468,8 +469,8 @@ async def challenge_factor( self, id: str, *, - sms_template: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + sms_template: str | None = None, + request_options: RequestOptions | None = None, ) -> AuthenticationChallenge: """Challenge Factor @@ -490,7 +491,7 @@ async def challenge_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "sms_template": sms_template, @@ -509,11 +510,11 @@ async def list_user_auth_factors( self, userland_user_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[AuthenticationFactor]: """List authentication factors @@ -559,10 +560,10 @@ async def create_user_auth_factor( userland_user_id: str, *, type: Literal["totp"], - totp_issuer: Optional[str] = None, - totp_user: Optional[str] = None, - totp_secret: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + totp_issuer: str | None = None, + totp_user: str | None = None, + totp_secret: str | None = None, + request_options: RequestOptions | None = None, ) -> UserAuthenticationFactorEnrollResponse: """Enroll an authentication factor @@ -585,7 +586,7 @@ async def create_user_auth_factor( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "type": type, diff --git a/src/workos/multi_factor_auth/models/authentication_challenge_verify_response.py b/src/workos/multi_factor_auth/models/authentication_challenge_verify_response.py index da48dfa4..b656ada2 100644 --- a/src/workos/multi_factor_auth/models/authentication_challenge_verify_response.py +++ b/src/workos/multi_factor_auth/models/authentication_challenge_verify_response.py @@ -3,10 +3,9 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict -from workos._types import _raise_deserialize_error +from typing import Any, cast +from workos._types import _raise_deserialize_error from workos.common.models.authentication_challenge import AuthenticationChallenge @@ -14,27 +13,27 @@ class AuthenticationChallengeVerifyResponse: """Authentication Challenge Verify Response model.""" - challenge: "AuthenticationChallenge" + challenge: AuthenticationChallenge """The authentication challenge object.""" valid: bool """Whether the code was valid.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationChallengeVerifyResponse": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationChallengeVerifyResponse: """Deserialize from a dictionary.""" try: return cls( challenge=AuthenticationChallenge.from_dict( - cast(Dict[str, Any], data["challenge"]) + cast(dict[str, Any], data["challenge"]) ), valid=data["valid"], ) except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationChallengeVerifyResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["challenge"] = self.challenge.to_dict() result["valid"] = self.valid return result diff --git a/src/workos/multi_factor_auth/models/authentication_challenges_verify_request.py b/src/workos/multi_factor_auth/models/authentication_challenges_verify_request.py index 06904a6d..83396e65 100644 --- a/src/workos/multi_factor_auth/models/authentication_challenges_verify_request.py +++ b/src/workos/multi_factor_auth/models/authentication_challenges_verify_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class AuthenticationChallengesVerifyRequest: """The one-time code to verify.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationChallengesVerifyRequest": + def from_dict(cls, data: dict[str, Any]) -> AuthenticationChallengesVerifyRequest: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuthenticationChallengesVerifyReque except (KeyError, ValueError) as e: _raise_deserialize_error("AuthenticationChallengesVerifyRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["code"] = self.code return result diff --git a/src/workos/multi_factor_auth/models/challenge_authentication_factor.py b/src/workos/multi_factor_auth/models/challenge_authentication_factor.py index d18f886d..2ae35115 100644 --- a/src/workos/multi_factor_auth/models/challenge_authentication_factor.py +++ b/src/workos/multi_factor_auth/models/challenge_authentication_factor.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class ChallengeAuthenticationFactor: """Challenge Authentication Factor model.""" - sms_template: Optional[str] = None + sms_template: str | None = None """A custom template for the SMS message. Use the {{code}} placeholder to include the verification code.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ChallengeAuthenticationFactor": + def from_dict(cls, data: dict[str, Any]) -> ChallengeAuthenticationFactor: """Deserialize from a dictionary.""" try: return cls( @@ -24,9 +25,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ChallengeAuthenticationFactor": except (KeyError, ValueError) as e: _raise_deserialize_error("ChallengeAuthenticationFactor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.sms_template is not None: result["sms_template"] = self.sms_template return result diff --git a/src/workos/multi_factor_auth/models/enroll_user_authentication_factor.py b/src/workos/multi_factor_auth/models/enroll_user_authentication_factor.py index 1d39fb6f..a4787885 100644 --- a/src/workos/multi_factor_auth/models/enroll_user_authentication_factor.py +++ b/src/workos/multi_factor_auth/models/enroll_user_authentication_factor.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Literal, Optional +from typing import Any, Literal + from workos._types import _raise_deserialize_error @@ -13,15 +14,15 @@ class EnrollUserAuthenticationFactor: type: Literal["totp"] """The type of the factor to enroll.""" - totp_issuer: Optional[str] = None + totp_issuer: str | None = None """Your application or company name displayed in the user's authenticator app.""" - totp_user: Optional[str] = None + totp_user: str | None = None """The user's account name displayed in their authenticator app.""" - totp_secret: Optional[str] = None + totp_secret: str | None = None """The Base32-encoded shared secret for TOTP factors. This can be provided when creating the auth factor, otherwise it will be generated. The algorithm used to derive TOTP codes is SHA-1, the code length is 6 digits, and the timestep is 30 seconds – the secret must be compatible with these parameters.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "EnrollUserAuthenticationFactor": + def from_dict(cls, data: dict[str, Any]) -> EnrollUserAuthenticationFactor: """Deserialize from a dictionary.""" try: return cls( @@ -33,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "EnrollUserAuthenticationFactor": except (KeyError, ValueError) as e: _raise_deserialize_error("EnrollUserAuthenticationFactor", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["type"] = self.type if self.totp_issuer is not None: result["totp_issuer"] = self.totp_issuer diff --git a/src/workos/multi_factor_auth/models/user_authentication_factor_enroll_response.py b/src/workos/multi_factor_auth/models/user_authentication_factor_enroll_response.py index 5c76cc81..8f62ea65 100644 --- a/src/workos/multi_factor_auth/models/user_authentication_factor_enroll_response.py +++ b/src/workos/multi_factor_auth/models/user_authentication_factor_enroll_response.py @@ -3,10 +3,9 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict -from workos._types import _raise_deserialize_error +from typing import Any, cast +from workos._types import _raise_deserialize_error from workos.common.models.authentication_challenge import AuthenticationChallenge from workos.common.models.authentication_factor_enrolled import ( AuthenticationFactorEnrolled, @@ -17,31 +16,29 @@ class UserAuthenticationFactorEnrollResponse: """User Authentication Factor Enroll Response model.""" - authentication_factor: "AuthenticationFactorEnrolled" + authentication_factor: AuthenticationFactorEnrolled """The [authentication factor](https://workos.com/docs/reference/authkit/mfa/authentication-factor) object that represents the additional authentication method used on top of the existing authentication strategy.""" - authentication_challenge: "AuthenticationChallenge" + authentication_challenge: AuthenticationChallenge """The [authentication challenge](https://workos.com/docs/reference/authkit/mfa/authentication-challenge) object that is used to complete the authentication process.""" @classmethod - def from_dict( - cls, data: Dict[str, Any] - ) -> "UserAuthenticationFactorEnrollResponse": + def from_dict(cls, data: dict[str, Any]) -> UserAuthenticationFactorEnrollResponse: """Deserialize from a dictionary.""" try: return cls( authentication_factor=AuthenticationFactorEnrolled.from_dict( - cast(Dict[str, Any], data["authentication_factor"]) + cast(dict[str, Any], data["authentication_factor"]) ), authentication_challenge=AuthenticationChallenge.from_dict( - cast(Dict[str, Any], data["authentication_challenge"]) + cast(dict[str, Any], data["authentication_challenge"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("UserAuthenticationFactorEnrollResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["authentication_factor"] = self.authentication_factor.to_dict() result["authentication_challenge"] = self.authentication_challenge.to_dict() return result diff --git a/src/workos/organization_domains/_resource.py b/src/workos/organization_domains/_resource.py index 7639d8df..ffb61945 100644 --- a/src/workos/organization_domains/_resource.py +++ b/src/workos/organization_domains/_resource.py @@ -2,19 +2,20 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Optional +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions from workos.common.models.organization_domain import OrganizationDomain +from .._types import RequestOptions + class OrganizationDomains: """Organization Domains API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def create_organization_domain( @@ -22,7 +23,7 @@ def create_organization_domain( *, domain: str, organization_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Create an Organization Domain @@ -42,7 +43,7 @@ def create_organization_domain( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "domain": domain, "organization_id": organization_id, } @@ -58,7 +59,7 @@ def get_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Get an Organization Domain @@ -88,7 +89,7 @@ def delete_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an Organization Domain @@ -114,7 +115,7 @@ def verify_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Verify an Organization Domain @@ -144,7 +145,7 @@ def verify_organization_domain( class AsyncOrganizationDomains: """Organization Domains API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def create_organization_domain( @@ -152,7 +153,7 @@ async def create_organization_domain( *, domain: str, organization_id: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Create an Organization Domain @@ -172,7 +173,7 @@ async def create_organization_domain( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "domain": domain, "organization_id": organization_id, } @@ -188,7 +189,7 @@ async def get_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Get an Organization Domain @@ -218,7 +219,7 @@ async def delete_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an Organization Domain @@ -244,7 +245,7 @@ async def verify_organization_domain( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationDomain: """Verify an Organization Domain diff --git a/src/workos/organization_membership/_resource.py b/src/workos/organization_membership/_resource.py index 55bf3c96..1c020c59 100644 --- a/src/workos/organization_membership/_resource.py +++ b/src/workos/organization_membership/_resource.py @@ -2,18 +2,23 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import OrganizationMembership, UserOrganizationMembership +from dataclasses import dataclass + from workos.common.models.group import Group -from .models import UserManagementOrganizationMembershipStatuses from workos.common.models.pagination_order import PaginationOrder + from .._pagination import AsyncPage, SyncPage -from dataclasses import dataclass +from .._types import RequestOptions, enum_value +from .models import ( + OrganizationMembership, + UserManagementOrganizationMembershipStatuses, + UserOrganizationMembership, +) @dataclass @@ -27,28 +32,27 @@ class RoleSingle: class RoleMultiple: """Identify role multiple.""" - role_slugs: List[str] + role_slugs: list[str] class OrganizationMembershipService: """Organization Membership Service API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_organization_memberships( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - statuses: Optional[ - List[Union[UserManagementOrganizationMembershipStatuses, str]] - ] = None, - user_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + statuses: list[UserManagementOrganizationMembershipStatuses | str] + | None = None, + user_id: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[UserOrganizationMembership]: """List organization memberships @@ -103,8 +107,8 @@ def create_organization_membership( *, user_id: str, organization_id: str, - role: Optional[Union[RoleSingle, RoleMultiple]] = None, - request_options: Optional[RequestOptions] = None, + role: RoleSingle | RoleMultiple | None = None, + request_options: RequestOptions | None = None, ) -> OrganizationMembership: """Create an organization membership @@ -129,7 +133,7 @@ def create_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "user_id": user_id, "organization_id": organization_id, } @@ -150,7 +154,7 @@ def get_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Get an organization membership @@ -180,8 +184,8 @@ def update_organization_membership( self, id: str, *, - role: Optional[Union[RoleSingle, RoleMultiple]] = None, - request_options: Optional[RequestOptions] = None, + role: RoleSingle | RoleMultiple | None = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Update an organization membership @@ -202,7 +206,7 @@ def update_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} if role is not None: if isinstance(role, RoleSingle): body["role_slug"] = role.role_slug @@ -220,7 +224,7 @@ def delete_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an organization membership @@ -246,7 +250,7 @@ def deactivate_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationMembership: """Deactivate an organization membership @@ -283,7 +287,7 @@ def reactivate_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Reactivate an organization membership @@ -320,11 +324,11 @@ def list_organization_membership_groups( self, om_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[Group]: """List groups @@ -369,22 +373,21 @@ def list_organization_membership_groups( class AsyncOrganizationMembershipService: """Organization Membership Service API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_organization_memberships( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - organization_id: Optional[str] = None, - statuses: Optional[ - List[Union[UserManagementOrganizationMembershipStatuses, str]] - ] = None, - user_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + organization_id: str | None = None, + statuses: list[UserManagementOrganizationMembershipStatuses | str] + | None = None, + user_id: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[UserOrganizationMembership]: """List organization memberships @@ -439,8 +442,8 @@ async def create_organization_membership( *, user_id: str, organization_id: str, - role: Optional[Union[RoleSingle, RoleMultiple]] = None, - request_options: Optional[RequestOptions] = None, + role: RoleSingle | RoleMultiple | None = None, + request_options: RequestOptions | None = None, ) -> OrganizationMembership: """Create an organization membership @@ -465,7 +468,7 @@ async def create_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "user_id": user_id, "organization_id": organization_id, } @@ -486,7 +489,7 @@ async def get_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Get an organization membership @@ -516,8 +519,8 @@ async def update_organization_membership( self, id: str, *, - role: Optional[Union[RoleSingle, RoleMultiple]] = None, - request_options: Optional[RequestOptions] = None, + role: RoleSingle | RoleMultiple | None = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Update an organization membership @@ -538,7 +541,7 @@ async def update_organization_membership( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = {} + body: dict[str, Any] = {} if role is not None: if isinstance(role, RoleSingle): body["role_slug"] = role.role_slug @@ -556,7 +559,7 @@ async def delete_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an organization membership @@ -582,7 +585,7 @@ async def deactivate_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> OrganizationMembership: """Deactivate an organization membership @@ -619,7 +622,7 @@ async def reactivate_organization_membership( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> UserOrganizationMembership: """Reactivate an organization membership @@ -656,11 +659,11 @@ async def list_organization_membership_groups( self, om_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[Group]: """List groups diff --git a/src/workos/organization_membership/models/organization_membership.py b/src/workos/organization_membership/models/organization_membership.py index f95f478c..9f0ccb3b 100644 --- a/src/workos/organization_membership/models/organization_membership.py +++ b/src/workos/organization_membership/models/organization_membership.py @@ -5,16 +5,14 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast -from workos.common.models.slim_role import SlimRole -from workos.common.models.user import User +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.organization_membership_status import ( OrganizationMembershipStatus, ) +from workos.common.models.slim_role import SlimRole +from workos.common.models.user import User @dataclass(slots=True) @@ -29,7 +27,7 @@ class OrganizationMembership: """The ID of the user.""" organization_id: str """The ID of the organization which the user belongs to.""" - status: "OrganizationMembershipStatus" + status: OrganizationMembershipStatus """The status of the organization membership. One of `active`, `inactive`, or `pending`.""" directory_managed: bool """Whether this organization membership is managed by a directory sync connection.""" @@ -37,19 +35,19 @@ class OrganizationMembership: """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - role: "SlimRole" + role: SlimRole """The primary role assigned to the user within the organization.""" - roles: List["SlimRole"] + roles: list[SlimRole] """The list of roles assigned to the user within the organization.""" - user: "User" + user: User """The user that belongs to the organization through this membership.""" - organization_name: Optional[str] = None + organization_name: str | None = None """The name of the organization which the user belongs to.""" - custom_attributes: Optional[Dict[str, Any]] = None + custom_attributes: dict[str, Any] | None = None """An object containing IdP-sourced attributes from the linked [Directory User](https://workos.com/docs/reference/directory-sync/directory-user) or [SSO Profile](https://workos.com/docs/reference/sso/profile). Directory User attributes take precedence when both are linked.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembership": + def from_dict(cls, data: dict[str, Any]) -> OrganizationMembership: """Deserialize from a dictionary.""" try: return cls( @@ -61,21 +59,21 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationMembership": directory_managed=data["directory_managed"], created_at=_parse_datetime(data["created_at"]), updated_at=_parse_datetime(data["updated_at"]), - role=SlimRole.from_dict(cast(Dict[str, Any], data["role"])), + role=SlimRole.from_dict(cast(dict[str, Any], data["role"])), roles=[ - SlimRole.from_dict(cast(Dict[str, Any], item)) + SlimRole.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["roles"]) ], - user=User.from_dict(cast(Dict[str, Any], data["user"])), + user=User.from_dict(cast(dict[str, Any], data["user"])), organization_name=data.get("organization_name"), custom_attributes=data.get("custom_attributes"), ) except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationMembership", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["user_id"] = self.user_id diff --git a/src/workos/organizations/_resource.py b/src/workos/organizations/_resource.py index 90e22331..e3b25a78 100644 --- a/src/workos/organizations/_resource.py +++ b/src/workos/organizations/_resource.py @@ -2,38 +2,39 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven +from workos.common.models.pagination_order import PaginationOrder + +from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value from .models import ( AuditLogConfiguration, Organization, OrganizationAuthorizedConnectApplicationListData, OrganizationDomainData, ) -from workos.common.models.pagination_order import PaginationOrder -from .._pagination import AsyncPage, SyncPage class Organizations: """Organizations API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_organizations( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - domains: Optional[List[str]] = None, - search: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + domains: list[str] | None = None, + search: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[Organization]: """List Organizations @@ -83,12 +84,12 @@ def create_organization( self, *, name: str, - allow_profiles_outside_organization: Optional[bool] = None, - domains: Optional[List[str]] = None, - domain_data: Optional[List[OrganizationDomainData]] = None, - metadata: Union[Dict[str, str], None, NotGiven] = NOT_GIVEN, - external_id: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + allow_profiles_outside_organization: bool | None = None, + domains: list[str] | None = None, + domain_data: list[OrganizationDomainData] | None = None, + metadata: dict[str, str] | None | NotGiven = NOT_GIVEN, + external_id: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Organization: """Create an Organization @@ -114,7 +115,7 @@ def create_organization( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -142,7 +143,7 @@ def get_organization_by_external_id( self, external_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Organization: """Get an Organization by External ID @@ -172,7 +173,7 @@ def get_organization( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Organization: """Get an Organization @@ -202,14 +203,14 @@ def update_organization( self, id: str, *, - name: Optional[str] = None, - allow_profiles_outside_organization: Optional[bool] = None, - domains: Optional[List[str]] = None, - domain_data: Optional[List[OrganizationDomainData]] = None, - stripe_customer_id: Optional[str] = None, - metadata: Union[Dict[str, str], None, NotGiven] = NOT_GIVEN, - external_id: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + allow_profiles_outside_organization: bool | None = None, + domains: list[str] | None = None, + domain_data: list[OrganizationDomainData] | None = None, + stripe_customer_id: str | None = None, + metadata: dict[str, str] | None | NotGiven = NOT_GIVEN, + external_id: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Organization: """Update an Organization @@ -239,7 +240,7 @@ def update_organization( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -268,7 +269,7 @@ def delete_organization( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an Organization @@ -294,7 +295,7 @@ def get_audit_log_configuration( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogConfiguration: """Get Audit Log Configuration @@ -324,11 +325,11 @@ def list_authorized_applications( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[OrganizationAuthorizedConnectApplicationListData]: """List authorized applications @@ -374,19 +375,19 @@ def list_authorized_applications( class AsyncOrganizations: """Organizations API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_organizations( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - domains: Optional[List[str]] = None, - search: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + domains: list[str] | None = None, + search: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[Organization]: """List Organizations @@ -436,12 +437,12 @@ async def create_organization( self, *, name: str, - allow_profiles_outside_organization: Optional[bool] = None, - domains: Optional[List[str]] = None, - domain_data: Optional[List[OrganizationDomainData]] = None, - metadata: Union[Dict[str, str], None, NotGiven] = NOT_GIVEN, - external_id: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + allow_profiles_outside_organization: bool | None = None, + domains: list[str] | None = None, + domain_data: list[OrganizationDomainData] | None = None, + metadata: dict[str, str] | None | NotGiven = NOT_GIVEN, + external_id: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Organization: """Create an Organization @@ -467,7 +468,7 @@ async def create_organization( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -495,7 +496,7 @@ async def get_organization_by_external_id( self, external_id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Organization: """Get an Organization by External ID @@ -525,7 +526,7 @@ async def get_organization( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> Organization: """Get an Organization @@ -555,14 +556,14 @@ async def update_organization( self, id: str, *, - name: Optional[str] = None, - allow_profiles_outside_organization: Optional[bool] = None, - domains: Optional[List[str]] = None, - domain_data: Optional[List[OrganizationDomainData]] = None, - stripe_customer_id: Optional[str] = None, - metadata: Union[Dict[str, str], None, NotGiven] = NOT_GIVEN, - external_id: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + name: str | None = None, + allow_profiles_outside_organization: bool | None = None, + domains: list[str] | None = None, + domain_data: list[OrganizationDomainData] | None = None, + stripe_customer_id: str | None = None, + metadata: dict[str, str] | None | NotGiven = NOT_GIVEN, + external_id: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> Organization: """Update an Organization @@ -592,7 +593,7 @@ async def update_organization( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "name": name, @@ -621,7 +622,7 @@ async def delete_organization( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an Organization @@ -647,7 +648,7 @@ async def get_audit_log_configuration( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> AuditLogConfiguration: """Get Audit Log Configuration @@ -677,11 +678,11 @@ async def list_authorized_applications( self, organization_id: str, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[OrganizationAuthorizedConnectApplicationListData]: """List authorized applications diff --git a/src/workos/organizations/models/audit_logs_retention.py b/src/workos/organizations/models/audit_logs_retention.py index a08db5cd..6a557706 100644 --- a/src/workos/organizations/models/audit_logs_retention.py +++ b/src/workos/organizations/models/audit_logs_retention.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,11 +12,11 @@ class AuditLogsRetention: """Audit Logs Retention model.""" - retention_period_in_days: Optional[int] + retention_period_in_days: int | None """The number of days Audit Log events will be retained before being permanently deleted. Valid values are 30 and 365.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "AuditLogsRetention": + def from_dict(cls, data: dict[str, Any]) -> AuditLogsRetention: """Deserialize from a dictionary.""" try: return cls( @@ -24,9 +25,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "AuditLogsRetention": except (KeyError, ValueError) as e: _raise_deserialize_error("AuditLogsRetention", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.retention_period_in_days is not None: result["retention_period_in_days"] = self.retention_period_in_days else: diff --git a/src/workos/organizations/models/organization.py b/src/workos/organizations/models/organization.py index 991ca031..a5b00840 100644 --- a/src/workos/organizations/models/organization.py +++ b/src/workos/organizations/models/organization.py @@ -4,11 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import cast -from typing import Any, Dict, List, Literal, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal, cast +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.organization_domain import OrganizationDomain @@ -22,25 +20,25 @@ class Organization: """Unique identifier of the Organization.""" name: str """A descriptive name for the Organization. This field does not need to be unique.""" - domains: List["OrganizationDomain"] + domains: list[OrganizationDomain] """List of Organization Domains.""" - metadata: Dict[str, str] + metadata: dict[str, str] """Object containing [metadata](https://workos.com/docs/authkit/metadata) key/value pairs associated with the Organization.""" - external_id: Optional[str] + external_id: str | None """The external ID of the Organization.""" created_at: datetime """An ISO 8601 timestamp.""" updated_at: datetime """An ISO 8601 timestamp.""" - stripe_customer_id: Optional[str] = None + stripe_customer_id: str | None = None """The Stripe customer ID of the Organization.""" - allow_profiles_outside_organization: Optional[bool] = None + allow_profiles_outside_organization: bool | None = None """Whether the Organization allows profiles outside of its managed domains. .. deprecated:: This field is deprecated.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "Organization": + def from_dict(cls, data: dict[str, Any]) -> Organization: """Deserialize from a dictionary.""" try: return cls( @@ -48,7 +46,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "Organization": id=data["id"], name=data["name"], domains=[ - OrganizationDomain.from_dict(cast(Dict[str, Any], item)) + OrganizationDomain.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["domains"]) ], metadata=data["metadata"], @@ -63,9 +61,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "Organization": except (KeyError, ValueError) as e: _raise_deserialize_error("Organization", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["name"] = self.name diff --git a/src/workos/organizations/models/organization_domain_data.py b/src/workos/organizations/models/organization_domain_data.py index 9ce37d84..0f8b63ef 100644 --- a/src/workos/organizations/models/organization_domain_data.py +++ b/src/workos/organizations/models/organization_domain_data.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.organization_domain_data_state import ( OrganizationDomainDataState, @@ -17,11 +18,11 @@ class OrganizationDomainData: domain: str """The domain value.""" - state: "OrganizationDomainDataState" + state: OrganizationDomainDataState """The verification state of the domain.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainData": + def from_dict(cls, data: dict[str, Any]) -> OrganizationDomainData: """Deserialize from a dictionary.""" try: return cls( @@ -31,9 +32,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationDomainData": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationDomainData", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["domain"] = self.domain result["state"] = ( self.state.value if isinstance(self.state, Enum) else self.state diff --git a/src/workos/organizations/models/organization_input.py b/src/workos/organizations/models/organization_input.py index ba419992..e87438f0 100644 --- a/src/workos/organizations/models/organization_input.py +++ b/src/workos/organizations/models/organization_input.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from .organization_domain_data import OrganizationDomainData @@ -16,19 +16,19 @@ class OrganizationInput: name: str """The name of the organization.""" - allow_profiles_outside_organization: Optional[bool] = None + allow_profiles_outside_organization: bool | None = None """Whether the organization allows profiles from outside the organization to sign in.""" - domains: Optional[List[str]] = None + domains: list[str] | None = None """The domains associated with the organization. Deprecated in favor of `domain_data`.""" - domain_data: Optional[List["OrganizationDomainData"]] = None + domain_data: list[OrganizationDomainData] | None = None """The domains associated with the organization, including verification state.""" - metadata: Optional[Dict[str, str]] = None + metadata: dict[str, str] | None = None """Object containing [metadata](https://workos.com/docs/authkit/metadata) key/value pairs associated with the Organization.""" - external_id: Optional[str] = None + external_id: str | None = None """An external identifier for the Organization.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "OrganizationInput": + def from_dict(cls, data: dict[str, Any]) -> OrganizationInput: """Deserialize from a dictionary.""" try: return cls( @@ -38,7 +38,7 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationInput": ), domains=data.get("domains"), domain_data=[ - OrganizationDomainData.from_dict(cast(Dict[str, Any], item)) + OrganizationDomainData.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], _v_domain_data) ] if (_v_domain_data := data.get("domain_data")) is not None @@ -49,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "OrganizationInput": except (KeyError, ValueError) as e: _raise_deserialize_error("OrganizationInput", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name if self.allow_profiles_outside_organization is not None: result["allow_profiles_outside_organization"] = ( diff --git a/src/workos/pipes/_resource.py b/src/workos/pipes/_resource.py index c5e69434..00d20906 100644 --- a/src/workos/pipes/_resource.py +++ b/src/workos/pipes/_resource.py @@ -99,14 +99,14 @@ def create_data_integration( ) -> DataIntegration: """Create a data integration - Creates a data integration for a provider. Set `credentials.type` to `custom` to use your own OAuth app credentials or `organization` to have each organization supply its own. Set `auth_methods` to `["api_key"]` to create an API key integration; you may optionally supply an `api_key` block to install a first tenant in the same call. For a built-in provider, pass its slug as `provider`. For a custom provider, pass a new slug plus a `custom_provider` definition. + Creates a data integration for a provider. Set `credentials.type` to `custom` to use your own OAuth app credentials or `organization` to have each organization supply its own. Set `auth_methods` to `["api_key"]` to create an API key integration; you may optionally supply an `api_key` block to install a first tenant in the same call. Set `auth_methods` to `["client_credentials"]` to create a client-credentials integration; client credentials are installed per-tenant afterwards. For a built-in provider, pass its slug as `provider`. For a custom provider, pass a new slug plus a `custom_provider` definition. Args: provider: The provider to create a Data Integration for. For a built-in provider use its slug (e.g. `github`, `slack`). For a custom provider, this is the new provider slug and `custom_provider` must be supplied. A custom provider slug cannot shadow an existing global provider slug. description: An optional description of the Data Integration. enabled: Whether the Data Integration is enabled. Defaults to `false`. scopes: The OAuth scopes to request for the Data Integration. Defaults to the provider's configured scopes when omitted. - auth_methods: How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request). + auth_methods: How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request). Use `["client_credentials"]` to declare a client-credentials integration; `credentials` is likewise not required and client credentials are supplied per-tenant. config: Provider-specific config values (e.g. a Snowflake `account_identifier`), keyed by the config field. Only fields the built-in provider declares are accepted. credentials: The OAuth credentials to configure for the Data Integration. Required for OAuth integrations; omit when `auth_methods` is `["api_key"]`. api_key: An optional API key to install for the first tenant on an `api_key` integration. Omit to declare a keyless integration; tenants can be added later via the per-installation API key path. @@ -375,6 +375,61 @@ def authorize_data_integration( request_options=request_options, ) + def update_data_integration_client_credentials( + self, + slug: str, + *, + user_id: str, + client_id: str, + client_secret: str, + organization_id: str | None = None, + config: dict[str, str] | None = None, + request_options: RequestOptions | None = None, + ) -> ConnectedAccount: + """Upsert client credentials for a connected account + + Creates or updates a client-credentials-based installation for the specified integration and user. If an installation already exists, the stored client credentials are rotated to the new values. + + Args: + slug: The identifier of the integration. + user_id: A [User](https://workos.com/docs/reference/authkit/user) identifier. + organization_id: An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter to scope the connection to a specific organization. + client_id: The OAuth client ID to store for this integration. + client_secret: The OAuth client secret to store for this integration. + config: Provider-specific configuration values collected for this installation, keyed by the provider's config field descriptors. + request_options: Per-request options. Supports extra_headers, timeout, max_retries, and base_url override. + + Returns: + ConnectedAccount + + Raises: + BadRequestError: If the request is malformed (400). + AuthenticationError: If the API key is invalid (401). + AuthorizationError: If the request is forbidden (403). + NotFoundError: If the resource is not found (404). + UnprocessableEntityError: If the request data is unprocessable (422). + RateLimitExceededError: If rate limited (429). + ServerError: If the server returns a 5xx error. + """ + body: dict[str, Any] = { + k: v + for k, v in { + "user_id": user_id, + "organization_id": organization_id, + "client_id": client_id, + "client_secret": client_secret, + "config": config, + }.items() + if v is not None + } + return self._client.request( + method="put", + path=("data-integrations", str(slug), "client-credentials"), + body=body, + model=ConnectedAccount, + request_options=request_options, + ) + def create_data_integration_credential( self, slug: str, @@ -400,6 +455,7 @@ def create_data_integration_credential( BadRequestError: If the request is malformed (400). AuthenticationError: If the API key is invalid (401). NotFoundError: If the resource is not found (404). + UnprocessableEntityError: If the request data is unprocessable (422). RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ @@ -804,14 +860,14 @@ async def create_data_integration( ) -> DataIntegration: """Create a data integration - Creates a data integration for a provider. Set `credentials.type` to `custom` to use your own OAuth app credentials or `organization` to have each organization supply its own. Set `auth_methods` to `["api_key"]` to create an API key integration; you may optionally supply an `api_key` block to install a first tenant in the same call. For a built-in provider, pass its slug as `provider`. For a custom provider, pass a new slug plus a `custom_provider` definition. + Creates a data integration for a provider. Set `credentials.type` to `custom` to use your own OAuth app credentials or `organization` to have each organization supply its own. Set `auth_methods` to `["api_key"]` to create an API key integration; you may optionally supply an `api_key` block to install a first tenant in the same call. Set `auth_methods` to `["client_credentials"]` to create a client-credentials integration; client credentials are installed per-tenant afterwards. For a built-in provider, pass its slug as `provider`. For a custom provider, pass a new slug plus a `custom_provider` definition. Args: provider: The provider to create a Data Integration for. For a built-in provider use its slug (e.g. `github`, `slack`). For a custom provider, this is the new provider slug and `custom_provider` must be supplied. A custom provider slug cannot shadow an existing global provider slug. description: An optional description of the Data Integration. enabled: Whether the Data Integration is enabled. Defaults to `false`. scopes: The OAuth scopes to request for the Data Integration. Defaults to the provider's configured scopes when omitted. - auth_methods: How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request). + auth_methods: How accounts authenticate with the provider. Defaults to `["oauth"]`. Use `["api_key"]` to declare an API key integration; `credentials` is then not required and keys are supplied per-tenant (optionally via `api_key` on this request). Use `["client_credentials"]` to declare a client-credentials integration; `credentials` is likewise not required and client credentials are supplied per-tenant. config: Provider-specific config values (e.g. a Snowflake `account_identifier`), keyed by the config field. Only fields the built-in provider declares are accepted. credentials: The OAuth credentials to configure for the Data Integration. Required for OAuth integrations; omit when `auth_methods` is `["api_key"]`. api_key: An optional API key to install for the first tenant on an `api_key` integration. Omit to declare a keyless integration; tenants can be added later via the per-installation API key path. @@ -1080,6 +1136,61 @@ async def authorize_data_integration( request_options=request_options, ) + async def update_data_integration_client_credentials( + self, + slug: str, + *, + user_id: str, + client_id: str, + client_secret: str, + organization_id: str | None = None, + config: dict[str, str] | None = None, + request_options: RequestOptions | None = None, + ) -> ConnectedAccount: + """Upsert client credentials for a connected account + + Creates or updates a client-credentials-based installation for the specified integration and user. If an installation already exists, the stored client credentials are rotated to the new values. + + Args: + slug: The identifier of the integration. + user_id: A [User](https://workos.com/docs/reference/authkit/user) identifier. + organization_id: An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter to scope the connection to a specific organization. + client_id: The OAuth client ID to store for this integration. + client_secret: The OAuth client secret to store for this integration. + config: Provider-specific configuration values collected for this installation, keyed by the provider's config field descriptors. + request_options: Per-request options. Supports extra_headers, timeout, max_retries, and base_url override. + + Returns: + ConnectedAccount + + Raises: + BadRequestError: If the request is malformed (400). + AuthenticationError: If the API key is invalid (401). + AuthorizationError: If the request is forbidden (403). + NotFoundError: If the resource is not found (404). + UnprocessableEntityError: If the request data is unprocessable (422). + RateLimitExceededError: If rate limited (429). + ServerError: If the server returns a 5xx error. + """ + body: dict[str, Any] = { + k: v + for k, v in { + "user_id": user_id, + "organization_id": organization_id, + "client_id": client_id, + "client_secret": client_secret, + "config": config, + }.items() + if v is not None + } + return await self._client.request( + method="put", + path=("data-integrations", str(slug), "client-credentials"), + body=body, + model=ConnectedAccount, + request_options=request_options, + ) + async def create_data_integration_credential( self, slug: str, @@ -1105,6 +1216,7 @@ async def create_data_integration_credential( BadRequestError: If the request is malformed (400). AuthenticationError: If the API key is invalid (401). NotFoundError: If the resource is not found (404). + UnprocessableEntityError: If the request data is unprocessable (422). RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ diff --git a/src/workos/pipes/models/__init__.py b/src/workos/pipes/models/__init__.py index 03383068..e1493c0f 100644 --- a/src/workos/pipes/models/__init__.py +++ b/src/workos/pipes/models/__init__.py @@ -54,6 +54,9 @@ from .data_integrations_upsert_api_key_request import ( DataIntegrationsUpsertApiKeyRequest as DataIntegrationsUpsertApiKeyRequest, ) +from .data_integrations_upsert_client_credentials_request import ( + DataIntegrationsUpsertClientCredentialsRequest as DataIntegrationsUpsertClientCredentialsRequest, +) from .data_integrations_vend_credentials_request import ( DataIntegrationsVendCredentialsRequest as DataIntegrationsVendCredentialsRequest, ) diff --git a/src/workos/pipes/models/custom_provider_definition.py b/src/workos/pipes/models/custom_provider_definition.py index 44b246e3..189f6f64 100644 --- a/src/workos/pipes/models/custom_provider_definition.py +++ b/src/workos/pipes/models/custom_provider_definition.py @@ -18,10 +18,10 @@ class CustomProviderDefinition: name: str """A descriptive name for the custom provider.""" - authorization_url: str - """The provider's OAuth authorization endpoint.""" - token_url: str - """The provider's OAuth token endpoint.""" + authorization_url: str | None = None + """The provider's OAuth authorization endpoint. Required for OAuth providers; omit for `api_key` providers.""" + token_url: str | None = None + """The provider's OAuth token endpoint. Required for OAuth providers; omit for `api_key` providers.""" refresh_token_url: str | None = None """The endpoint used to refresh tokens, if different from the token endpoint.""" pkce_enabled: bool | None = None @@ -45,8 +45,8 @@ def from_dict(cls, data: dict[str, Any]) -> CustomProviderDefinition: try: return cls( name=data["name"], - authorization_url=data["authorization_url"], - token_url=data["token_url"], + authorization_url=data.get("authorization_url"), + token_url=data.get("token_url"), refresh_token_url=data.get("refresh_token_url"), pkce_enabled=data.get("pkce_enabled"), request_scope_separator=data.get("request_scope_separator"), @@ -69,8 +69,10 @@ def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" result: dict[str, Any] = {} result["name"] = self.name - result["authorization_url"] = self.authorization_url - result["token_url"] = self.token_url + if self.authorization_url is not None: + result["authorization_url"] = self.authorization_url + if self.token_url is not None: + result["token_url"] = self.token_url if self.refresh_token_url is not None: result["refresh_token_url"] = self.refresh_token_url else: diff --git a/src/workos/pipes/models/data_integration.py b/src/workos/pipes/models/data_integration.py index 49e607de..9fd238ea 100644 --- a/src/workos/pipes/models/data_integration.py +++ b/src/workos/pipes/models/data_integration.py @@ -42,8 +42,8 @@ class DataIntegration: """The OAuth redirect URI to register with the provider when configuring the custom application.""" auth_methods: list[DataIntegrationAuthMethods] """How accounts authenticate with the provider for this Data Integration.""" - credentials: DataIntegrationCredential - """The credentials configured for the Data Integration.""" + credentials: DataIntegrationCredential | None + """The integration-level OAuth app credentials. `null` for `api_key` integrations, which hold no OAuth credentials (keys are installed per-tenant).""" installation: DataIntegrationInstallation | None """The tenant installation created when an API key was supplied at creation time; `null` otherwise. Not populated on list/get responses.""" config: dict[str, str] @@ -74,8 +74,10 @@ def from_dict(cls, data: dict[str, Any]) -> DataIntegration: for item in cast(list[Any], data["auth_methods"]) ], credentials=DataIntegrationCredential.from_dict( - cast(dict[str, Any], data["credentials"]) - ), + cast(dict[str, Any], _v_credentials) + ) + if (_v_credentials := data["credentials"]) is not None + else None, installation=DataIntegrationInstallation.from_dict( cast(dict[str, Any], _v_installation) ) @@ -116,7 +118,10 @@ def to_dict(self) -> dict[str, Any]: result["auth_methods"] = [ item.value if isinstance(item, Enum) else item for item in self.auth_methods ] - result["credentials"] = self.credentials.to_dict() + if self.credentials is not None: + result["credentials"] = self.credentials.to_dict() + else: + result["credentials"] = None if self.installation is not None: result["installation"] = self.installation.to_dict() else: diff --git a/src/workos/pipes/models/data_integration_credential.py b/src/workos/pipes/models/data_integration_credential.py index 7a2086a6..00f98b20 100644 --- a/src/workos/pipes/models/data_integration_credential.py +++ b/src/workos/pipes/models/data_integration_credential.py @@ -14,7 +14,7 @@ @dataclass(slots=True) class DataIntegrationCredential: - """The credentials configured for the Data Integration.""" + """Data Integration Credential model.""" type: DataIntegrationCredentialType """The credentials type. `custom` uses your own OAuth app credentials; `organization` has each organization supply its own credentials (so `client_id`/`redacted_client_secret` are null on the integration itself).""" diff --git a/src/workos/pipes/models/data_integrations_upsert_client_credentials_request.py b/src/workos/pipes/models/data_integrations_upsert_client_credentials_request.py new file mode 100644 index 00000000..ea1e0e76 --- /dev/null +++ b/src/workos/pipes/models/data_integrations_upsert_client_credentials_request.py @@ -0,0 +1,54 @@ +# This file is auto-generated by oagen. Do not edit. + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any + +from workos._types import _raise_deserialize_error + + +@dataclass(slots=True) +class DataIntegrationsUpsertClientCredentialsRequest: + """Data Integrations Upsert Client Credentials Request model.""" + + user_id: str + """A [User](https://workos.com/docs/reference/authkit/user) identifier.""" + client_id: str + """The OAuth client ID to store for this integration.""" + client_secret: str + """The OAuth client secret to store for this integration.""" + organization_id: str | None = None + """An [Organization](https://workos.com/docs/reference/organization) identifier. Optional parameter to scope the connection to a specific organization.""" + config: dict[str, str] | None = None + """Provider-specific configuration values collected for this installation, keyed by the provider's config field descriptors.""" + + @classmethod + def from_dict( + cls, data: dict[str, Any] + ) -> DataIntegrationsUpsertClientCredentialsRequest: + """Deserialize from a dictionary.""" + try: + return cls( + user_id=data["user_id"], + client_id=data["client_id"], + client_secret=data["client_secret"], + organization_id=data.get("organization_id"), + config=data.get("config"), + ) + except (KeyError, ValueError) as e: + _raise_deserialize_error( + "DataIntegrationsUpsertClientCredentialsRequest", e + ) + + def to_dict(self) -> dict[str, Any]: + """Serialize to a dictionary.""" + result: dict[str, Any] = {} + result["user_id"] = self.user_id + result["client_id"] = self.client_id + result["client_secret"] = self.client_secret + if self.organization_id is not None: + result["organization_id"] = self.organization_id + if self.config is not None: + result["config"] = self.config + return result diff --git a/src/workos/radar/_resource.py b/src/workos/radar/_resource.py index c0b4f427..e6227195 100644 --- a/src/workos/radar/_resource.py +++ b/src/workos/radar/_resource.py @@ -2,14 +2,11 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Literal, Optional, Union +from typing import TYPE_CHECKING, Any, Literal if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import RadarListEntryAlreadyPresentResponse, RadarStandaloneResponse -from .models import RadarListAction, RadarListType from workos.common.models.radar_standalone_assess_request_action import ( RadarStandaloneAssessRequestAction, ) @@ -17,11 +14,19 @@ RadarStandaloneAssessRequestAuthMethod, ) +from .._types import RequestOptions, enum_value +from .models import ( + RadarListAction, + RadarListEntryAlreadyPresentResponse, + RadarListType, + RadarStandaloneResponse, +) + class Radar: """Radar API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def create_attempt( @@ -30,10 +35,10 @@ def create_attempt( ip_address: str, user_agent: str, email: str, - auth_method: Union[RadarStandaloneAssessRequestAuthMethod, str], - action: Union[RadarStandaloneAssessRequestAction, str], - signals_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + auth_method: RadarStandaloneAssessRequestAuthMethod | str, + action: RadarStandaloneAssessRequestAction | str, + signals_id: str | None = None, + request_options: RequestOptions | None = None, ) -> RadarStandaloneResponse: """Create an attempt @@ -57,7 +62,7 @@ def create_attempt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "ip_address": ip_address, @@ -81,9 +86,9 @@ def update_attempt( self, id: str, *, - challenge_status: Optional[Literal["success"]] = None, - attempt_status: Optional[Literal["success"]] = None, - request_options: Optional[RequestOptions] = None, + challenge_status: Literal["success"] | None = None, + attempt_status: Literal["success"] | None = None, + request_options: RequestOptions | None = None, ) -> None: """Update a Radar attempt @@ -102,7 +107,7 @@ def update_attempt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "challenge_status": challenge_status, @@ -119,11 +124,11 @@ def update_attempt( def add_list_entry( self, - type: Union[RadarListType, str], - action: Union[RadarListAction, str], + type: RadarListType | str, + action: RadarListAction | str, *, entry: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RadarListEntryAlreadyPresentResponse: """Add an entry to a Radar list @@ -144,7 +149,7 @@ def add_list_entry( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "entry": entry, } return self._client.request( @@ -157,11 +162,11 @@ def add_list_entry( def remove_list_entry( self, - type: Union[RadarListType, str], - action: Union[RadarListAction, str], + type: RadarListType | str, + action: RadarListAction | str, *, entry: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove an entry from a Radar list @@ -180,7 +185,7 @@ def remove_list_entry( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "entry": entry, } self._client.request( @@ -194,7 +199,7 @@ def remove_list_entry( class AsyncRadar: """Radar API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def create_attempt( @@ -203,10 +208,10 @@ async def create_attempt( ip_address: str, user_agent: str, email: str, - auth_method: Union[RadarStandaloneAssessRequestAuthMethod, str], - action: Union[RadarStandaloneAssessRequestAction, str], - signals_id: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + auth_method: RadarStandaloneAssessRequestAuthMethod | str, + action: RadarStandaloneAssessRequestAction | str, + signals_id: str | None = None, + request_options: RequestOptions | None = None, ) -> RadarStandaloneResponse: """Create an attempt @@ -230,7 +235,7 @@ async def create_attempt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "ip_address": ip_address, @@ -254,9 +259,9 @@ async def update_attempt( self, id: str, *, - challenge_status: Optional[Literal["success"]] = None, - attempt_status: Optional[Literal["success"]] = None, - request_options: Optional[RequestOptions] = None, + challenge_status: Literal["success"] | None = None, + attempt_status: Literal["success"] | None = None, + request_options: RequestOptions | None = None, ) -> None: """Update a Radar attempt @@ -275,7 +280,7 @@ async def update_attempt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "challenge_status": challenge_status, @@ -292,11 +297,11 @@ async def update_attempt( async def add_list_entry( self, - type: Union[RadarListType, str], - action: Union[RadarListAction, str], + type: RadarListType | str, + action: RadarListAction | str, *, entry: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> RadarListEntryAlreadyPresentResponse: """Add an entry to a Radar list @@ -317,7 +322,7 @@ async def add_list_entry( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "entry": entry, } return await self._client.request( @@ -330,11 +335,11 @@ async def add_list_entry( async def remove_list_entry( self, - type: Union[RadarListType, str], - action: Union[RadarListAction, str], + type: RadarListType | str, + action: RadarListAction | str, *, entry: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Remove an entry from a Radar list @@ -353,7 +358,7 @@ async def remove_list_entry( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "entry": entry, } await self._client.request( diff --git a/src/workos/radar/models/radar_list_action.py b/src/workos/radar/models/radar_list_action.py index 52332c82..c4f1ec6c 100644 --- a/src/workos/radar/models/radar_list_action.py +++ b/src/workos/radar/models/radar_list_action.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class RadarListAction(str, Enum): ALLOW = "allow" @classmethod - def _missing_(cls, value: object) -> Optional["RadarListAction"]: + def _missing_(cls, value: object) -> RadarListAction | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/radar/models/radar_list_entry_already_present_response.py b/src/workos/radar/models/radar_list_entry_already_present_response.py index 25b80a2b..25416e50 100644 --- a/src/workos/radar/models/radar_list_entry_already_present_response.py +++ b/src/workos/radar/models/radar_list_entry_already_present_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class RadarListEntryAlreadyPresentResponse: """A message indicating the entry already exists.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RadarListEntryAlreadyPresentResponse": + def from_dict(cls, data: dict[str, Any]) -> RadarListEntryAlreadyPresentResponse: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "RadarListEntryAlreadyPresentRespons except (KeyError, ValueError) as e: _raise_deserialize_error("RadarListEntryAlreadyPresentResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["message"] = self.message return result diff --git a/src/workos/radar/models/radar_list_type.py b/src/workos/radar/models/radar_list_type.py index 65ec2d76..62ced2a7 100644 --- a/src/workos/radar/models/radar_list_type.py +++ b/src/workos/radar/models/radar_list_type.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -21,7 +20,7 @@ class RadarListType(str, Enum): COUNTRY = "country" @classmethod - def _missing_(cls, value: object) -> Optional["RadarListType"]: + def _missing_(cls, value: object) -> RadarListType | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/radar/models/radar_standalone_assess_request.py b/src/workos/radar/models/radar_standalone_assess_request.py index 71d4ba03..c6f4cd08 100644 --- a/src/workos/radar/models/radar_standalone_assess_request.py +++ b/src/workos/radar/models/radar_standalone_assess_request.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.radar_standalone_assess_request_action import ( RadarStandaloneAssessRequestAction, @@ -24,15 +25,15 @@ class RadarStandaloneAssessRequest: """The user agent string of the request to assess.""" email: str """The email address of the user making the request.""" - auth_method: "RadarStandaloneAssessRequestAuthMethod" + auth_method: RadarStandaloneAssessRequestAuthMethod """The authentication method being used.""" - action: "RadarStandaloneAssessRequestAction" + action: RadarStandaloneAssessRequestAction """The action being performed.""" - signals_id: Optional[str] = None + signals_id: str | None = None """An optional Radar signals ID for the request.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RadarStandaloneAssessRequest": + def from_dict(cls, data: dict[str, Any]) -> RadarStandaloneAssessRequest: """Deserialize from a dictionary.""" try: return cls( @@ -46,9 +47,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RadarStandaloneAssessRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("RadarStandaloneAssessRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["ip_address"] = self.ip_address result["user_agent"] = self.user_agent result["email"] = self.email diff --git a/src/workos/radar/models/radar_standalone_delete_radar_list_entry_request.py b/src/workos/radar/models/radar_standalone_delete_radar_list_entry_request.py index 4332d4c1..34d2b80d 100644 --- a/src/workos/radar/models/radar_standalone_delete_radar_list_entry_request.py +++ b/src/workos/radar/models/radar_standalone_delete_radar_list_entry_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -16,8 +17,8 @@ class RadarStandaloneDeleteRadarListEntryRequest: @classmethod def from_dict( - cls, data: Dict[str, Any] - ) -> "RadarStandaloneDeleteRadarListEntryRequest": + cls, data: dict[str, Any] + ) -> RadarStandaloneDeleteRadarListEntryRequest: """Deserialize from a dictionary.""" try: return cls( @@ -26,8 +27,8 @@ def from_dict( except (KeyError, ValueError) as e: _raise_deserialize_error("RadarStandaloneDeleteRadarListEntryRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["entry"] = self.entry return result diff --git a/src/workos/radar/models/radar_standalone_response.py b/src/workos/radar/models/radar_standalone_response.py index f1d7fc72..a1f645fc 100644 --- a/src/workos/radar/models/radar_standalone_response.py +++ b/src/workos/radar/models/radar_standalone_response.py @@ -4,7 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import Any, Dict, Optional +from typing import Any + from workos._types import _raise_deserialize_error from workos.common.models.radar_standalone_response_blocklist_type import ( RadarStandaloneResponseBlocklistType, @@ -21,19 +22,19 @@ class RadarStandaloneResponse: """Radar Standalone Response model.""" - verdict: "RadarStandaloneResponseVerdict" + verdict: RadarStandaloneResponseVerdict """The verdict of the risk assessment.""" reason: str """A human-readable reason for the verdict.""" attempt_id: str """Unique identifier of the authentication attempt.""" - control: Optional["RadarStandaloneResponseControl"] = None + control: RadarStandaloneResponseControl | None = None """The Radar control that triggered the verdict. Only present if the verdict is `block` or `challenge`.""" - blocklist_type: Optional["RadarStandaloneResponseBlocklistType"] = None + blocklist_type: RadarStandaloneResponseBlocklistType | None = None """The type of blocklist entry that triggered the verdict. Only present if the control is `restriction`.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RadarStandaloneResponse": + def from_dict(cls, data: dict[str, Any]) -> RadarStandaloneResponse: """Deserialize from a dictionary.""" try: return cls( @@ -50,9 +51,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RadarStandaloneResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("RadarStandaloneResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["verdict"] = ( self.verdict.value if isinstance(self.verdict, Enum) else self.verdict ) diff --git a/src/workos/vault/_resource.py b/src/workos/vault/_resource.py index 23f07fe4..b1b8a765 100644 --- a/src/workos/vault/_resource.py +++ b/src/workos/vault/_resource.py @@ -2,12 +2,21 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value, NOT_GIVEN, NotGiven +# @oagen-ignore-start — client-side AES-GCM imports (hand-maintained) +import base64 +import os +from dataclasses import dataclass + +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes + +from .._pagination import AsyncPage, SyncPage +from .._types import NOT_GIVEN, NotGiven, RequestOptions, enum_value from .models import ( CreateDataKeyResponse, DecryptResponse, @@ -15,19 +24,10 @@ ObjectSummary, ObjectWithoutValue, VaultObject, + VaultOrder, VersionListResponse, ) -from .models import VaultOrder -from .._pagination import AsyncPage, SyncPage - -# @oagen-ignore-start — client-side AES-GCM imports (hand-maintained) -import base64 -import os -from dataclasses import dataclass -from typing import Tuple -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.backends import default_backend # @oagen-ignore-end # @oagen-ignore-start — client-side AES-GCM helpers (hand-maintained) @@ -42,8 +42,8 @@ class DecodedKeys: def _aes_gcm_encrypt( - plaintext: bytes, key: bytes, iv: bytes, aad: Optional[bytes] -) -> Dict[str, bytes]: + plaintext: bytes, key: bytes, iv: bytes, aad: bytes | None +) -> dict[str, bytes]: encryptor = Cipher( algorithms.AES(key), modes.GCM(iv), backend=default_backend() ).encryptor() @@ -58,7 +58,7 @@ def _aes_gcm_decrypt( key: bytes, iv: bytes, tag: bytes, - aad: Optional[bytes] = None, + aad: bytes | None = None, ) -> bytes: decryptor = Cipher( algorithms.AES(key), modes.GCM(iv, tag), backend=default_backend() @@ -83,7 +83,7 @@ def _encode_u32_leb128(value: int) -> bytes: return bytes(encoded) -def _decode_u32_leb128(buf: bytes) -> Tuple[int, int]: +def _decode_u32_leb128(buf: bytes) -> tuple[int, int]: res = 0 bit = 0 for i, b in enumerate(buf): @@ -119,14 +119,14 @@ def _decode_encrypted_payload(encrypted_data_b64: str) -> DecodedKeys: class Vault: """Vault API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def create_data_key( self, *, - context: Dict[str, str], - request_options: Optional[RequestOptions] = None, + context: dict[str, str], + request_options: RequestOptions | None = None, ) -> CreateDataKeyResponse: """Create a data key @@ -146,7 +146,7 @@ def create_data_key( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "context": context, } return self._client.request( @@ -161,7 +161,7 @@ def create_decrypt( self, *, keys: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DecryptResponse: """Decrypt a data key @@ -180,7 +180,7 @@ def create_decrypt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "keys": keys, } return self._client.request( @@ -194,9 +194,9 @@ def create_decrypt( def create_rekey( self, *, - context: Dict[str, str], + context: dict[str, str], encrypted_keys: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> CreateDataKeyResponse: """Re-encrypt a data key @@ -217,7 +217,7 @@ def create_rekey( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "context": context, "encrypted_keys": encrypted_keys, } @@ -232,13 +232,13 @@ def create_rekey( def list_kv( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[VaultOrder, str]] = None, - search: Optional[str] = None, - updated_after: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: VaultOrder | str | None = None, + search: str | None = None, + updated_after: str | None = None, + request_options: RequestOptions | None = None, ) -> SyncPage[ObjectSummary]: """List objects @@ -285,10 +285,10 @@ def list_kv( def create_kv( self, *, - key_context: Dict[str, str], + key_context: dict[str, str], name: str, value: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ObjectMetadata: """Create an object @@ -311,7 +311,7 @@ def create_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "key_context": key_context, "name": name, "value": value, @@ -328,7 +328,7 @@ def get_name( self, name: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VaultObject: """Read an object by name @@ -359,7 +359,7 @@ def get_kv( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VaultObject: """Read an object by ID @@ -391,8 +391,8 @@ def update_kv( id: str, *, value: str, - version_check: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + version_check: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ObjectWithoutValue: """Update an object @@ -414,7 +414,7 @@ def update_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "value": value, } if not isinstance(version_check, NotGiven): @@ -431,8 +431,8 @@ def delete_kv( self, id: str, *, - version_check: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + version_check: str | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an object @@ -450,7 +450,7 @@ def delete_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "version_check": version_check, @@ -468,7 +468,7 @@ def list_kv_metadata( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ObjectWithoutValue: """Describe an object @@ -499,7 +499,7 @@ def list_kv_versions( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VersionListResponse: """List object versions @@ -532,8 +532,8 @@ def encrypt( self, *, data: str, - key_context: Dict[str, str], - associated_data: Optional[str] = None, + key_context: dict[str, str], + associated_data: str | None = None, ) -> str: """Encrypt data locally using AES-GCM with a data key derived from the context.""" key_pair = self.create_data_key(context=key_context) @@ -556,7 +556,7 @@ def encrypt( return base64.b64encode(combined).decode("utf-8") def decrypt( - self, *, encrypted_data: str, associated_data: Optional[str] = None + self, *, encrypted_data: str, associated_data: str | None = None ) -> str: """Decrypt data that was previously encrypted using the encrypt method.""" decoded = _decode_encrypted_payload(encrypted_data) @@ -580,14 +580,14 @@ def decrypt( class AsyncVault: """Vault API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def create_data_key( self, *, - context: Dict[str, str], - request_options: Optional[RequestOptions] = None, + context: dict[str, str], + request_options: RequestOptions | None = None, ) -> CreateDataKeyResponse: """Create a data key @@ -607,7 +607,7 @@ async def create_data_key( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "context": context, } return await self._client.request( @@ -622,7 +622,7 @@ async def create_decrypt( self, *, keys: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> DecryptResponse: """Decrypt a data key @@ -641,7 +641,7 @@ async def create_decrypt( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "keys": keys, } return await self._client.request( @@ -655,9 +655,9 @@ async def create_decrypt( async def create_rekey( self, *, - context: Dict[str, str], + context: dict[str, str], encrypted_keys: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> CreateDataKeyResponse: """Re-encrypt a data key @@ -678,7 +678,7 @@ async def create_rekey( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "context": context, "encrypted_keys": encrypted_keys, } @@ -693,13 +693,13 @@ async def create_rekey( async def list_kv( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[VaultOrder, str]] = None, - search: Optional[str] = None, - updated_after: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: VaultOrder | str | None = None, + search: str | None = None, + updated_after: str | None = None, + request_options: RequestOptions | None = None, ) -> AsyncPage[ObjectSummary]: """List objects @@ -746,10 +746,10 @@ async def list_kv( async def create_kv( self, *, - key_context: Dict[str, str], + key_context: dict[str, str], name: str, value: str, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ObjectMetadata: """Create an object @@ -772,7 +772,7 @@ async def create_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "key_context": key_context, "name": name, "value": value, @@ -789,7 +789,7 @@ async def get_name( self, name: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VaultObject: """Read an object by name @@ -820,7 +820,7 @@ async def get_kv( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VaultObject: """Read an object by ID @@ -852,8 +852,8 @@ async def update_kv( id: str, *, value: str, - version_check: Union[str, None, NotGiven] = NOT_GIVEN, - request_options: Optional[RequestOptions] = None, + version_check: str | None | NotGiven = NOT_GIVEN, + request_options: RequestOptions | None = None, ) -> ObjectWithoutValue: """Update an object @@ -875,7 +875,7 @@ async def update_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "value": value, } if not isinstance(version_check, NotGiven): @@ -892,8 +892,8 @@ async def delete_kv( self, id: str, *, - version_check: Optional[str] = None, - request_options: Optional[RequestOptions] = None, + version_check: str | None = None, + request_options: RequestOptions | None = None, ) -> None: """Delete an object @@ -911,7 +911,7 @@ async def delete_kv( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - params: Dict[str, Any] = { + params: dict[str, Any] = { k: v for k, v in { "version_check": version_check, @@ -929,7 +929,7 @@ async def list_kv_metadata( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> ObjectWithoutValue: """Describe an object @@ -960,7 +960,7 @@ async def list_kv_versions( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> VersionListResponse: """List object versions @@ -993,8 +993,8 @@ async def encrypt( self, *, data: str, - key_context: Dict[str, str], - associated_data: Optional[str] = None, + key_context: dict[str, str], + associated_data: str | None = None, ) -> str: """Encrypt data locally using AES-GCM with a data key derived from the context.""" key_pair = await self.create_data_key(context=key_context) @@ -1016,7 +1016,7 @@ async def encrypt( return base64.b64encode(combined).decode("utf-8") async def decrypt( - self, *, encrypted_data: str, associated_data: Optional[str] = None + self, *, encrypted_data: str, associated_data: str | None = None ) -> str: """Decrypt data that was previously encrypted using the encrypt method.""" decoded = _decode_encrypted_payload(encrypted_data) diff --git a/src/workos/vault/models/decrypt_request.py b/src/workos/vault/models/decrypt_request.py index 90e22b22..1c4a9507 100644 --- a/src/workos/vault/models/decrypt_request.py +++ b/src/workos/vault/models/decrypt_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -15,7 +16,7 @@ class DecryptRequest: """Base64-encoded encrypted data key to decrypt.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DecryptRequest": + def from_dict(cls, data: dict[str, Any]) -> DecryptRequest: """Deserialize from a dictionary.""" try: return cls( @@ -24,8 +25,8 @@ def from_dict(cls, data: Dict[str, Any]) -> "DecryptRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("DecryptRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["keys"] = self.keys return result diff --git a/src/workos/vault/models/decrypt_response.py b/src/workos/vault/models/decrypt_response.py index d6f15a43..2d3bdf38 100644 --- a/src/workos/vault/models/decrypt_response.py +++ b/src/workos/vault/models/decrypt_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class DecryptResponse: """Unique identifier of the decrypted data key.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DecryptResponse": + def from_dict(cls, data: dict[str, Any]) -> DecryptResponse: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DecryptResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("DecryptResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["data_key"] = self.data_key result["id"] = self.id return result diff --git a/src/workos/vault/models/delete_object_response.py b/src/workos/vault/models/delete_object_response.py index 62364458..0e7d4254 100644 --- a/src/workos/vault/models/delete_object_response.py +++ b/src/workos/vault/models/delete_object_response.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -17,7 +18,7 @@ class DeleteObjectResponse: """Whether the deletion succeeded.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "DeleteObjectResponse": + def from_dict(cls, data: dict[str, Any]) -> DeleteObjectResponse: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "DeleteObjectResponse": except (KeyError, ValueError) as e: _raise_deserialize_error("DeleteObjectResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["name"] = self.name result["success"] = self.success return result diff --git a/src/workos/vault/models/object_summary.py b/src/workos/vault/models/object_summary.py index 4ab8ba51..6a311cd9 100644 --- a/src/workos/vault/models/object_summary.py +++ b/src/workos/vault/models/object_summary.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict, Optional -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -17,11 +17,11 @@ class ObjectSummary: """Unique identifier of the object.""" name: str """Unique name of the object.""" - updated_at: Optional[datetime] = None + updated_at: datetime | None = None """Timestamp of the last update.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ObjectSummary": + def from_dict(cls, data: dict[str, Any]) -> ObjectSummary: """Deserialize from a dictionary.""" try: return cls( @@ -34,9 +34,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ObjectSummary": except (KeyError, ValueError) as e: _raise_deserialize_error("ObjectSummary", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["name"] = self.name if self.updated_at is not None: diff --git a/src/workos/vault/models/object_version.py b/src/workos/vault/models/object_version.py index ebb0576d..094ea793 100644 --- a/src/workos/vault/models/object_version.py +++ b/src/workos/vault/models/object_version.py @@ -4,9 +4,9 @@ from dataclasses import dataclass from datetime import datetime -from typing import Any, Dict -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error @dataclass(slots=True) @@ -25,7 +25,7 @@ class ObjectVersion: """Number of bytes of stored data.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ObjectVersion": + def from_dict(cls, data: dict[str, Any]) -> ObjectVersion: """Deserialize from a dictionary.""" try: return cls( @@ -38,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "ObjectVersion": except (KeyError, ValueError) as e: _raise_deserialize_error("ObjectVersion", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["created_at"] = _format_datetime(self.created_at) result["current_version"] = self.current_version result["etag"] = self.etag diff --git a/src/workos/vault/models/object_without_value.py b/src/workos/vault/models/object_without_value.py index 85787a9e..8da620e9 100644 --- a/src/workos/vault/models/object_without_value.py +++ b/src/workos/vault/models/object_without_value.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .object_metadata import ObjectMetadata @@ -16,27 +16,27 @@ class ObjectWithoutValue: id: str """Unique identifier of the object.""" - metadata: "ObjectMetadata" + metadata: ObjectMetadata name: str """Unique name of the object.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "ObjectWithoutValue": + def from_dict(cls, data: dict[str, Any]) -> ObjectWithoutValue: """Deserialize from a dictionary.""" try: return cls( id=data["id"], metadata=ObjectMetadata.from_dict( - cast(Dict[str, Any], data["metadata"]) + cast(dict[str, Any], data["metadata"]) ), name=data["name"], ) except (KeyError, ValueError) as e: _raise_deserialize_error("ObjectWithoutValue", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["metadata"] = self.metadata.to_dict() result["name"] = self.name diff --git a/src/workos/vault/models/rekey_request.py b/src/workos/vault/models/rekey_request.py index f10de48a..0993ba0d 100644 --- a/src/workos/vault/models/rekey_request.py +++ b/src/workos/vault/models/rekey_request.py @@ -3,7 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, Dict +from typing import Any + from workos._types import _raise_deserialize_error @@ -11,13 +12,13 @@ class RekeyRequest: """Rekey Request model.""" - context: Dict[str, str] + context: dict[str, str] """Map of values used to determine the new encryption key.""" encrypted_keys: str """Base64-encoded encrypted data key blob to re-encrypt.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "RekeyRequest": + def from_dict(cls, data: dict[str, Any]) -> RekeyRequest: """Deserialize from a dictionary.""" try: return cls( @@ -27,9 +28,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "RekeyRequest": except (KeyError, ValueError) as e: _raise_deserialize_error("RekeyRequest", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["context"] = self.context result["encrypted_keys"] = self.encrypted_keys return result diff --git a/src/workos/vault/models/vault_object.py b/src/workos/vault/models/vault_object.py index 5e80994f..d08b8c37 100644 --- a/src/workos/vault/models/vault_object.py +++ b/src/workos/vault/models/vault_object.py @@ -3,8 +3,8 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict +from typing import Any, cast + from workos._types import _raise_deserialize_error from .object_metadata import ObjectMetadata @@ -16,20 +16,20 @@ class VaultObject: id: str """Unique identifier of the object.""" - metadata: "ObjectMetadata" + metadata: ObjectMetadata name: str """Unique name of the object.""" value: str """Decrypted plaintext value.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VaultObject": + def from_dict(cls, data: dict[str, Any]) -> VaultObject: """Deserialize from a dictionary.""" try: return cls( id=data["id"], metadata=ObjectMetadata.from_dict( - cast(Dict[str, Any], data["metadata"]) + cast(dict[str, Any], data["metadata"]) ), name=data["name"], value=data["value"], @@ -37,9 +37,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "VaultObject": except (KeyError, ValueError) as e: _raise_deserialize_error("VaultObject", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["id"] = self.id result["metadata"] = self.metadata.to_dict() result["name"] = self.name diff --git a/src/workos/vault/models/vault_order.py b/src/workos/vault/models/vault_order.py index 2a023174..d534f526 100644 --- a/src/workos/vault/models/vault_order.py +++ b/src/workos/vault/models/vault_order.py @@ -5,7 +5,6 @@ from __future__ import annotations from enum import Enum -from typing import Optional from typing import Literal, TypeAlias @@ -16,7 +15,7 @@ class VaultOrder(str, Enum): DESC = "desc" @classmethod - def _missing_(cls, value: object) -> Optional["VaultOrder"]: + def _missing_(cls, value: object) -> VaultOrder | None: if not isinstance(value, str): return None unknown = str.__new__(cls, value) diff --git a/src/workos/vault/models/version_list_response.py b/src/workos/vault/models/version_list_response.py index 2562cc10..8c9ad929 100644 --- a/src/workos/vault/models/version_list_response.py +++ b/src/workos/vault/models/version_list_response.py @@ -3,11 +3,11 @@ from __future__ import annotations from dataclasses import dataclass -from typing import cast -from typing import Any, Dict, List -from workos._types import _raise_deserialize_error +from typing import Any, cast +from workos._types import _raise_deserialize_error from workos.common.models.list_metadata import ListMetadata + from .object_version import ObjectVersion @@ -15,29 +15,29 @@ class VersionListResponse: """Version List Response model.""" - data: List["ObjectVersion"] + data: list[ObjectVersion] """List of object versions.""" - list_metadata: "ListMetadata" + list_metadata: ListMetadata @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "VersionListResponse": + def from_dict(cls, data: dict[str, Any]) -> VersionListResponse: """Deserialize from a dictionary.""" try: return cls( data=[ - ObjectVersion.from_dict(cast(Dict[str, Any], item)) + ObjectVersion.from_dict(cast(dict[str, Any], item)) for item in cast(list[Any], data["data"]) ], list_metadata=ListMetadata.from_dict( - cast(Dict[str, Any], data["list_metadata"]) + cast(dict[str, Any], data["list_metadata"]) ), ) except (KeyError, ValueError) as e: _raise_deserialize_error("VersionListResponse", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["data"] = [item.to_dict() for item in self.data] result["list_metadata"] = self.list_metadata.to_dict() return result diff --git a/src/workos/webhooks/_resource.py b/src/workos/webhooks/_resource.py index 066dac92..9f31e50f 100644 --- a/src/workos/webhooks/_resource.py +++ b/src/workos/webhooks/_resource.py @@ -2,13 +2,16 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient -from .._types import RequestOptions, enum_value -from .models import WebhookEndpoint +import hashlib +import hmac +import json +import time + from workos.common.models.create_webhook_endpoint_events import ( CreateWebhookEndpointEvents, ) @@ -19,11 +22,10 @@ from workos.common.models.update_webhook_endpoint_status import ( UpdateWebhookEndpointStatus, ) + from .._pagination import AsyncPage, SyncPage -import hashlib -import hmac -import json -import time +from .._types import RequestOptions, enum_value +from .models import WebhookEndpoint # @oagen-ignore-start if TYPE_CHECKING: @@ -34,17 +36,17 @@ class Webhooks: """Webhooks API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def list_webhook_endpoints( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> SyncPage[WebhookEndpoint]: """List Webhook Endpoints @@ -87,8 +89,8 @@ def create_webhook_endpoint( self, *, endpoint_url: str, - events: List[Union[CreateWebhookEndpointEvents, str]], - request_options: Optional[RequestOptions] = None, + events: list[CreateWebhookEndpointEvents | str], + request_options: RequestOptions | None = None, ) -> WebhookEndpoint: """Create a Webhook Endpoint @@ -109,7 +111,7 @@ def create_webhook_endpoint( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "endpoint_url": endpoint_url, "events": events, } @@ -125,10 +127,10 @@ def update_webhook_endpoint( self, id: str, *, - endpoint_url: Optional[str] = None, - status: Optional[Union[UpdateWebhookEndpointStatus, str]] = None, - events: Optional[List[Union[UpdateWebhookEndpointEvents, str]]] = None, - request_options: Optional[RequestOptions] = None, + endpoint_url: str | None = None, + status: UpdateWebhookEndpointStatus | str | None = None, + events: list[UpdateWebhookEndpointEvents | str] | None = None, + request_options: RequestOptions | None = None, ) -> WebhookEndpoint: """Update a Webhook Endpoint @@ -152,7 +154,7 @@ def update_webhook_endpoint( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "endpoint_url": endpoint_url, @@ -173,7 +175,7 @@ def delete_webhook_endpoint( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Webhook Endpoint @@ -201,11 +203,11 @@ def delete_webhook_endpoint( def verify_event( self, *, - event_body: Union[bytes, str], + event_body: bytes | str, event_signature: str, secret: str, - tolerance: Optional[int] = None, - ) -> "EventSchemaVariant": + tolerance: int | None = None, + ) -> EventSchemaVariant: """Verify and deserialize the signature of a Webhook event. Args: @@ -234,10 +236,10 @@ def verify_event( def verify_header( self, *, - event_body: Union[bytes, str], + event_body: bytes | str, event_signature: str, secret: str, - tolerance: Optional[int] = None, + tolerance: int | None = None, ) -> None: """Verify the signature of a Webhook, raise ValueError if invalid. @@ -291,17 +293,17 @@ def verify_header( class AsyncWebhooks: """Webhooks API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def list_webhook_endpoints( self, *, - limit: Optional[int] = None, - before: Optional[str] = None, - after: Optional[str] = None, - order: Optional[Union[PaginationOrder, str]] = "desc", - request_options: Optional[RequestOptions] = None, + limit: int | None = None, + before: str | None = None, + after: str | None = None, + order: PaginationOrder | str | None = "desc", + request_options: RequestOptions | None = None, ) -> AsyncPage[WebhookEndpoint]: """List Webhook Endpoints @@ -344,8 +346,8 @@ async def create_webhook_endpoint( self, *, endpoint_url: str, - events: List[Union[CreateWebhookEndpointEvents, str]], - request_options: Optional[RequestOptions] = None, + events: list[CreateWebhookEndpointEvents | str], + request_options: RequestOptions | None = None, ) -> WebhookEndpoint: """Create a Webhook Endpoint @@ -366,7 +368,7 @@ async def create_webhook_endpoint( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { "endpoint_url": endpoint_url, "events": events, } @@ -382,10 +384,10 @@ async def update_webhook_endpoint( self, id: str, *, - endpoint_url: Optional[str] = None, - status: Optional[Union[UpdateWebhookEndpointStatus, str]] = None, - events: Optional[List[Union[UpdateWebhookEndpointEvents, str]]] = None, - request_options: Optional[RequestOptions] = None, + endpoint_url: str | None = None, + status: UpdateWebhookEndpointStatus | str | None = None, + events: list[UpdateWebhookEndpointEvents | str] | None = None, + request_options: RequestOptions | None = None, ) -> WebhookEndpoint: """Update a Webhook Endpoint @@ -409,7 +411,7 @@ async def update_webhook_endpoint( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "endpoint_url": endpoint_url, @@ -430,7 +432,7 @@ async def delete_webhook_endpoint( self, id: str, *, - request_options: Optional[RequestOptions] = None, + request_options: RequestOptions | None = None, ) -> None: """Delete a Webhook Endpoint @@ -458,11 +460,11 @@ async def delete_webhook_endpoint( def verify_event( self, *, - event_body: Union[bytes, str], + event_body: bytes | str, event_signature: str, secret: str, - tolerance: Optional[int] = None, - ) -> "EventSchemaVariant": + tolerance: int | None = None, + ) -> EventSchemaVariant: """Verify and deserialize the signature of a Webhook event. Args: @@ -491,10 +493,10 @@ def verify_event( def verify_header( self, *, - event_body: Union[bytes, str], + event_body: bytes | str, event_signature: str, secret: str, - tolerance: Optional[int] = None, + tolerance: int | None = None, ) -> None: """Verify the signature of a Webhook, raise ValueError if invalid. diff --git a/src/workos/webhooks/models/webhook_endpoint.py b/src/workos/webhooks/models/webhook_endpoint.py index a40c60ca..e4a8e490 100644 --- a/src/workos/webhooks/models/webhook_endpoint.py +++ b/src/workos/webhooks/models/webhook_endpoint.py @@ -5,9 +5,9 @@ from dataclasses import dataclass from datetime import datetime from enum import Enum -from typing import Any, Dict, List, Literal -from workos._types import _raise_deserialize_error -from workos._types import _format_datetime, _parse_datetime +from typing import Any, Literal + +from workos._types import _format_datetime, _parse_datetime, _raise_deserialize_error from workos.common.models.webhook_endpoint_status import WebhookEndpointStatus @@ -23,9 +23,9 @@ class WebhookEndpoint: """The URL to which webhooks are sent.""" secret: str """The secret used to sign webhook payloads.""" - status: "WebhookEndpointStatus" + status: WebhookEndpointStatus """Whether the Webhook Endpoint is enabled or disabled.""" - events: List[str] + events: list[str] """The events that the Webhook Endpoint is subscribed to.""" created_at: datetime """An ISO 8601 timestamp.""" @@ -33,7 +33,7 @@ class WebhookEndpoint: """An ISO 8601 timestamp.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WebhookEndpoint": + def from_dict(cls, data: dict[str, Any]) -> WebhookEndpoint: """Deserialize from a dictionary.""" try: return cls( @@ -49,9 +49,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "WebhookEndpoint": except (KeyError, ValueError) as e: _raise_deserialize_error("WebhookEndpoint", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} result["object"] = self.object result["id"] = self.id result["endpoint_url"] = self.endpoint_url diff --git a/src/workos/widgets/_resource.py b/src/workos/widgets/_resource.py index db0937a0..fc5e8f63 100644 --- a/src/workos/widgets/_resource.py +++ b/src/workos/widgets/_resource.py @@ -2,29 +2,30 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: from .._client import AsyncWorkOSClient, WorkOSClient +from workos.common.models.widget_session_token_scopes import WidgetSessionTokenScopes + from .._types import RequestOptions from .models import WidgetSessionTokenResponse -from workos.common.models.widget_session_token_scopes import WidgetSessionTokenScopes class Widgets: """Widgets API resources.""" - def __init__(self, client: "WorkOSClient") -> None: + def __init__(self, client: WorkOSClient) -> None: self._client = client def create_token( self, *, - organization_id: Optional[str] = None, - user_id: Optional[str] = None, - scopes: Optional[List[Union[WidgetSessionTokenScopes, str]]] = None, - request_options: Optional[RequestOptions] = None, + organization_id: str | None = None, + user_id: str | None = None, + scopes: list[WidgetSessionTokenScopes | str] | None = None, + request_options: RequestOptions | None = None, ) -> WidgetSessionTokenResponse: """Generate a widget token @@ -47,7 +48,7 @@ def create_token( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "organization_id": organization_id, @@ -68,16 +69,16 @@ def create_token( class AsyncWidgets: """Widgets API resources (async).""" - def __init__(self, client: "AsyncWorkOSClient") -> None: + def __init__(self, client: AsyncWorkOSClient) -> None: self._client = client async def create_token( self, *, - organization_id: Optional[str] = None, - user_id: Optional[str] = None, - scopes: Optional[List[Union[WidgetSessionTokenScopes, str]]] = None, - request_options: Optional[RequestOptions] = None, + organization_id: str | None = None, + user_id: str | None = None, + scopes: list[WidgetSessionTokenScopes | str] | None = None, + request_options: RequestOptions | None = None, ) -> WidgetSessionTokenResponse: """Generate a widget token @@ -100,7 +101,7 @@ async def create_token( RateLimitExceededError: If rate limited (429). ServerError: If the server returns a 5xx error. """ - body: Dict[str, Any] = { + body: dict[str, Any] = { k: v for k, v in { "organization_id": organization_id, diff --git a/src/workos/widgets/models/widget_session_token.py b/src/workos/widgets/models/widget_session_token.py index 801b9724..9828d0da 100644 --- a/src/workos/widgets/models/widget_session_token.py +++ b/src/workos/widgets/models/widget_session_token.py @@ -4,8 +4,8 @@ from dataclasses import dataclass from enum import Enum -from typing import cast -from typing import Any, Dict, List, Optional +from typing import Any, cast + from workos._types import _raise_deserialize_error from workos.common.models.widget_session_token_scopes import WidgetSessionTokenScopes @@ -14,15 +14,15 @@ class WidgetSessionToken: """Widget Session Token model.""" - organization_id: Optional[str] = None + organization_id: str | None = None """The ID of the organization to scope the widget session to. Required when scopes are provided. Optional when issuing a token for user-only widgets (e.g. `UserProfile`, `UserSecurity`) that do not require organization context.""" - user_id: Optional[str] = None + user_id: str | None = None """The ID of the user to issue the widget session token for.""" - scopes: Optional[List["WidgetSessionTokenScopes"]] = None + scopes: list[WidgetSessionTokenScopes] | None = None """The scopes to grant the widget session.""" @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "WidgetSessionToken": + def from_dict(cls, data: dict[str, Any]) -> WidgetSessionToken: """Deserialize from a dictionary.""" try: return cls( @@ -38,9 +38,9 @@ def from_dict(cls, data: Dict[str, Any]) -> "WidgetSessionToken": except (KeyError, ValueError) as e: _raise_deserialize_error("WidgetSessionToken", e) - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: """Serialize to a dictionary.""" - result: Dict[str, Any] = {} + result: dict[str, Any] = {} if self.organization_id is not None: result["organization_id"] = self.organization_id if self.user_id is not None: diff --git a/tests/fixtures/agent_registration_refreshed.json b/tests/fixtures/agent_registration_refreshed.json new file mode 100644 index 00000000..5f7b4c48 --- /dev/null +++ b/tests/fixtures/agent_registration_refreshed.json @@ -0,0 +1,29 @@ +{ + "object": "event", + "id": "event_01EHZNVPK3SFK441A1RGBFSHRT", + "event": "agent.registration.refreshed", + "data": { + "agent_registration_id": "agent_reg_01EHWNCE74X7JSDV0X3SZ3KJNY" + }, + "created_at": "2026-01-15T12:00:00.000Z", + "context": { + "google_analytics_client_id": "GA1.2.1234567890.1234567890", + "google_analytics_sessions": [ + { + "containerId": "GTM-ABCDEF", + "sessionId": "1234567890", + "sessionNumber": "1" + } + ], + "ajs_anonymous_id": "ajs_anon_01EHWNCE74X7JSDV0X3SZ3KJNY", + "client_id": "client_01EHWNCE74X7JSDV0X3SZ3KJNY", + "actor": { + "id": "user_01EHWNCE74X7JSDV0X3SZ3KJNY", + "source": "api", + "name": "Jane Doe" + }, + "previous_attributes": { + "key": {} + } + } +} diff --git a/tests/fixtures/agent_registration_refreshed_data.json b/tests/fixtures/agent_registration_refreshed_data.json new file mode 100644 index 00000000..f7cb2dcb --- /dev/null +++ b/tests/fixtures/agent_registration_refreshed_data.json @@ -0,0 +1,3 @@ +{ + "agent_registration_id": "agent_reg_01EHWNCE74X7JSDV0X3SZ3KJNY" +} diff --git a/tests/fixtures/data_integrations_list_response.json b/tests/fixtures/data_integrations_list_response.json index 2d3a90ed..00951fba 100644 --- a/tests/fixtures/data_integrations_list_response.json +++ b/tests/fixtures/data_integrations_list_response.json @@ -30,6 +30,11 @@ ], "auth_method": "oauth", "api_key_last_4": null, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": { + "instance_url": "https://example.my.salesforce.com" + }, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", diff --git a/tests/fixtures/data_integrations_list_response_data.json b/tests/fixtures/data_integrations_list_response_data.json index 86561f78..ccb24ea7 100644 --- a/tests/fixtures/data_integrations_list_response_data.json +++ b/tests/fixtures/data_integrations_list_response_data.json @@ -27,6 +27,11 @@ ], "auth_method": "oauth", "api_key_last_4": null, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": { + "instance_url": "https://example.my.salesforce.com" + }, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", diff --git a/tests/fixtures/data_integrations_upsert_client_credentials_request.json b/tests/fixtures/data_integrations_upsert_client_credentials_request.json new file mode 100644 index 00000000..51b5a18e --- /dev/null +++ b/tests/fixtures/data_integrations_upsert_client_credentials_request.json @@ -0,0 +1,9 @@ +{ + "user_id": "user_01EHZNVPK3SFK441A1RGBFSHRT", + "organization_id": "org_01EHZNVPK3SFK441A1RGBFSHRT", + "client_id": "3MVG9...", + "client_secret": "shhh-secret", + "config": { + "mydomain": "acme" + } +} diff --git a/tests/fixtures/waitlist_user.json b/tests/fixtures/waitlist_user.json index 05973598..c4f74339 100644 --- a/tests/fixtures/waitlist_user.json +++ b/tests/fixtures/waitlist_user.json @@ -4,6 +4,7 @@ "email": "marcelina.davis@example.com", "state": "pending", "approved_at": null, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" } diff --git a/tests/fixtures/waitlist_user_approved.json b/tests/fixtures/waitlist_user_approved.json index 848d68b9..7019eba5 100644 --- a/tests/fixtures/waitlist_user_approved.json +++ b/tests/fixtures/waitlist_user_approved.json @@ -8,6 +8,7 @@ "email": "marcelina.davis@example.com", "state": "pending", "approved_at": null, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }, diff --git a/tests/fixtures/waitlist_user_denied.json b/tests/fixtures/waitlist_user_denied.json index 34abc6e0..25e9b834 100644 --- a/tests/fixtures/waitlist_user_denied.json +++ b/tests/fixtures/waitlist_user_denied.json @@ -8,6 +8,7 @@ "email": "marcelina.davis@example.com", "state": "pending", "approved_at": null, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z" }, diff --git a/tests/test_admin_portal.py b/tests/test_admin_portal.py index 95a877cb..1f82b1ec 100644 --- a/tests/test_admin_portal.py +++ b/tests/test_admin_portal.py @@ -3,10 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.admin_portal.models import PortalLinkResponse +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -15,6 +14,7 @@ ServerError, UnprocessableEntityError, ) +from workos.admin_portal.models import PortalLinkResponse class TestAdminPortal: diff --git a/tests/test_admin_portal_models_round_trip.py b/tests/test_admin_portal_models_round_trip.py index ad46ca14..3c168023 100644 --- a/tests/test_admin_portal_models_round_trip.py +++ b/tests/test_admin_portal_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.admin_portal.models import PortalLinkResponse diff --git a/tests/test_agents.py b/tests/test_agents.py index 5de11c65..07edaa03 100644 --- a/tests/test_agents.py +++ b/tests/test_agents.py @@ -3,16 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.agents.models import ( - AgentAdminLinkClaimAttemptToExternalUserRequestUser, - AgentCredentialValidation, - AgentRegistration, - ClaimViewResponse, -) -from workos.common.models import AgentAdminValidateCredentialRequestType +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -21,6 +14,13 @@ ServerError, UnprocessableEntityError, ) +from workos.agents.models import ( + AgentAdminLinkClaimAttemptToExternalUserRequestUser, + AgentCredentialValidation, + AgentRegistration, + ClaimViewResponse, +) +from workos.common.models import AgentAdminValidateCredentialRequestType class TestAgents: diff --git a/tests/test_agents_models_round_trip.py b/tests/test_agents_models_round_trip.py index 7c353cad..f8c87062 100644 --- a/tests/test_agents_models_round_trip.py +++ b/tests/test_agents_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.agents.models import ( AgentAdminLinkClaimAttemptToExternalUserRequestUser, AgentCredentialValidation, diff --git a/tests/test_api_keys.py b/tests/test_api_keys.py index 578a6e5c..6a36ba1b 100644 --- a/tests/test_api_keys.py +++ b/tests/test_api_keys.py @@ -3,17 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.api_keys.models import ( - ApiKey, - ApiKeyValidationResponse, - OrganizationApiKey, - OrganizationApiKeyWithValue, -) -from workos.common.models import PaginationOrder -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -22,6 +14,14 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.api_keys.models import ( + ApiKey, + ApiKeyValidationResponse, + OrganizationApiKey, + OrganizationApiKeyWithValue, +) +from workos.common.models import PaginationOrder class TestApiKeys: diff --git a/tests/test_api_keys_models_round_trip.py b/tests/test_api_keys_models_round_trip.py index 9cfc63c8..90593473 100644 --- a/tests/test_api_keys_models_round_trip.py +++ b/tests/test_api_keys_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.api_keys.models import ( ApiKey, ApiKeyOwner, diff --git a/tests/test_audit_logs.py b/tests/test_audit_logs.py index d15bcb97..ce604506 100644 --- a/tests/test_audit_logs.py +++ b/tests/test_audit_logs.py @@ -3,9 +3,18 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient +from workos._errors import ( + AuthenticationError, + BadRequestError, + NotFoundError, + RateLimitExceededError, + ServerError, + UnprocessableEntityError, +) +from workos._pagination import AsyncPage, SyncPage from workos.audit_logs.models import ( AuditLogAction, AuditLogEvent, @@ -15,15 +24,6 @@ ) from workos.common.models import PaginationOrder from workos.organizations.models import AuditLogsRetention -from workos._pagination import AsyncPage, SyncPage -from workos._errors import ( - AuthenticationError, - BadRequestError, - NotFoundError, - RateLimitExceededError, - ServerError, - UnprocessableEntityError, -) class TestAuditLogs: diff --git a/tests/test_audit_logs_models_round_trip.py b/tests/test_audit_logs_models_round_trip.py index 6125bc92..904cfda2 100644 --- a/tests/test_audit_logs_models_round_trip.py +++ b/tests/test_audit_logs_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.audit_logs.models import ( AuditLogAction, AuditLogEvent, diff --git a/tests/test_authorization.py b/tests/test_authorization.py index d2ea00cd..b546bf77 100644 --- a/tests/test_authorization.py +++ b/tests/test_authorization.py @@ -3,10 +3,25 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient +from workos._errors import ( + AuthenticationError, + BadRequestError, + NotFoundError, + RateLimitExceededError, + ServerError, + UnprocessableEntityError, +) +from workos._pagination import AsyncPage, SyncPage +from workos.authorization._resource import ( + ParentById, + ParentResourceById, + ResourceTargetById, +) from workos.authorization.models import ( + AuthorizationAssignment, AuthorizationCheck, AuthorizationResource, GroupRoleAssignment, @@ -15,26 +30,11 @@ Role, RoleList, UserRoleAssignment, - AuthorizationAssignment, ) from workos.common.models import ( AuthorizationPermission, - UserOrganizationMembershipBaseListData, PaginationOrder, -) -from workos._pagination import AsyncPage, SyncPage -from workos._errors import ( - AuthenticationError, - BadRequestError, - NotFoundError, - RateLimitExceededError, - ServerError, - UnprocessableEntityError, -) -from workos.authorization._resource import ( - ResourceTargetById, - ParentResourceById, - ParentById, + UserOrganizationMembershipBaseListData, ) diff --git a/tests/test_client_api.py b/tests/test_client_api.py index 4ea7fc59..e3861eaa 100644 --- a/tests/test_client_api.py +++ b/tests/test_client_api.py @@ -3,10 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.client_api.models import ClientApiTokenResponse +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -15,6 +14,7 @@ ServerError, UnprocessableEntityError, ) +from workos.client_api.models import ClientApiTokenResponse class TestClientApi: diff --git a/tests/test_client_api_models_round_trip.py b/tests/test_client_api_models_round_trip.py index 60256e54..8442ceca 100644 --- a/tests/test_client_api_models_round_trip.py +++ b/tests/test_client_api_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.client_api.models import ClientApiTokenResponse diff --git a/tests/test_common_models_round_trip.py b/tests/test_common_models_round_trip.py index adea4874..28cb003e 100644 --- a/tests/test_common_models_round_trip.py +++ b/tests/test_common_models_round_trip.py @@ -26,6 +26,8 @@ AgentRegistrationExpiredData, AgentRegistrationOrganizationSwitched, AgentRegistrationOrganizationSwitchedData, + AgentRegistrationRefreshed, + AgentRegistrationRefreshedData, AgentRegistrationRevoked, AgentRegistrationRevokedData, ApiKeyCreated, @@ -742,12 +744,14 @@ def test_waitlist_user_preserves_nullable_fields(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": None, "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", } instance = WaitlistUser.from_dict(data) serialized = instance.to_dict() assert serialized["approved_at"] is None + assert serialized["waitlist_id"] is None def test_waitlist_user_round_trips_unknown_enum_values(self): data = { @@ -756,6 +760,7 @@ def test_waitlist_user_round_trips_unknown_enum_values(self): "email": "marcelina.davis@example.com", "state": "unexpected_waitlist_user_state", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", } @@ -1611,6 +1616,58 @@ def test_agent_registration_organization_switched_data_minimal_payload(self): assert serialized["from_organization_id"] == data["from_organization_id"] assert serialized["to_organization_id"] == data["to_organization_id"] + def test_agent_registration_refreshed_round_trip(self): + data = load_fixture("agent_registration_refreshed.json") + instance = AgentRegistrationRefreshed.from_dict(data) + serialized = instance.to_dict() + assert serialized == data + restored = AgentRegistrationRefreshed.from_dict(serialized) + assert restored.to_dict() == serialized + + def test_agent_registration_refreshed_minimal_payload(self): + data = { + "object": "event", + "id": "event_01EHZNVPK3SFK441A1RGBFSHRT", + "event": "agent.registration.refreshed", + "data": {"agent_registration_id": "agent_reg_01EHWNCE74X7JSDV0X3SZ3KJNY"}, + "created_at": "2026-01-15T12:00:00.000Z", + } + instance = AgentRegistrationRefreshed.from_dict(data) + serialized = instance.to_dict() + assert serialized["object"] == data["object"] + assert serialized["id"] == data["id"] + assert serialized["event"] == data["event"] + assert serialized["data"] == data["data"] + assert serialized["created_at"] == data["created_at"] + + def test_agent_registration_refreshed_omits_absent_optional_non_nullable_fields( + self, + ): + data = { + "object": "event", + "id": "event_01EHZNVPK3SFK441A1RGBFSHRT", + "event": "agent.registration.refreshed", + "data": {"agent_registration_id": "agent_reg_01EHWNCE74X7JSDV0X3SZ3KJNY"}, + "created_at": "2026-01-15T12:00:00.000Z", + } + instance = AgentRegistrationRefreshed.from_dict(data) + serialized = instance.to_dict() + assert "context" not in serialized + + def test_agent_registration_refreshed_data_round_trip(self): + data = load_fixture("agent_registration_refreshed_data.json") + instance = AgentRegistrationRefreshedData.from_dict(data) + serialized = instance.to_dict() + assert serialized == data + restored = AgentRegistrationRefreshedData.from_dict(serialized) + assert restored.to_dict() == serialized + + def test_agent_registration_refreshed_data_minimal_payload(self): + data = {"agent_registration_id": "agent_reg_01EHWNCE74X7JSDV0X3SZ3KJNY"} + instance = AgentRegistrationRefreshedData.from_dict(data) + serialized = instance.to_dict() + assert serialized["agent_registration_id"] == data["agent_registration_id"] + def test_agent_registration_revoked_round_trip(self): data = load_fixture("agent_registration_revoked.json") instance = AgentRegistrationRevoked.from_dict(data) @@ -13522,6 +13579,7 @@ def test_waitlist_user_approved_minimal_payload(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, @@ -13546,6 +13604,7 @@ def test_waitlist_user_approved_omits_absent_optional_non_nullable_fields(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, @@ -13574,6 +13633,7 @@ def test_waitlist_user_created_minimal_payload(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, @@ -13598,6 +13658,7 @@ def test_waitlist_user_created_omits_absent_optional_non_nullable_fields(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, @@ -13626,6 +13687,7 @@ def test_waitlist_user_denied_minimal_payload(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, @@ -13650,6 +13712,7 @@ def test_waitlist_user_denied_omits_absent_optional_non_nullable_fields(self): "email": "marcelina.davis@example.com", "state": "pending", "approved_at": None, + "waitlist_id": "waitlist_01E4ZCR3C56J083X43JQXF3JK5", "created_at": "2026-01-15T12:00:00.000Z", "updated_at": "2026-01-15T12:00:00.000Z", }, diff --git a/tests/test_directory_sync.py b/tests/test_directory_sync.py index 08fa2ee4..ba71e0d3 100644 --- a/tests/test_directory_sync.py +++ b/tests/test_directory_sync.py @@ -2,12 +2,9 @@ import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import DirectoryGroup, PaginationOrder -from workos.directory_sync.models import Directory, DirectoryUserWithGroups -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -16,6 +13,9 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import DirectoryGroup, PaginationOrder +from workos.directory_sync.models import Directory, DirectoryUserWithGroups class TestDirectorySync: diff --git a/tests/test_directory_sync_models_round_trip.py b/tests/test_directory_sync_models_round_trip.py index 2412cf40..dc7215e2 100644 --- a/tests/test_directory_sync_models_round_trip.py +++ b/tests/test_directory_sync_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.directory_sync.models import ( Directory, DirectoryGroup, diff --git a/tests/test_events.py b/tests/test_events.py index d91a3765..8573d3a6 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -2,11 +2,9 @@ import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import ActionAuthenticationDenied, PaginationOrder -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -15,6 +13,8 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import ActionAuthenticationDenied, PaginationOrder class TestEvents: diff --git a/tests/test_events_models_round_trip.py b/tests/test_events_models_round_trip.py index 87c69c62..d1fba88f 100644 --- a/tests/test_events_models_round_trip.py +++ b/tests/test_events_models_round_trip.py @@ -5,7 +5,6 @@ import pytest from tests.generated_helpers import load_fixture - from workos.common.models import ActionAuthenticationDenied from workos.events.models import EventListListMetadata, EventSchema, EventSchemaUnknown diff --git a/tests/test_feature_flags.py b/tests/test_feature_flags.py index beacf742..e6e8dfc4 100644 --- a/tests/test_feature_flags.py +++ b/tests/test_feature_flags.py @@ -2,11 +2,9 @@ import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import FeatureFlag, Flag, PaginationOrder -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -15,6 +13,8 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import FeatureFlag, Flag, PaginationOrder class TestFeatureFlags: diff --git a/tests/test_feature_flags_models_round_trip.py b/tests/test_feature_flags_models_round_trip.py index 12eb6c13..ca94cef1 100644 --- a/tests/test_feature_flags_models_round_trip.py +++ b/tests/test_feature_flags_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.feature_flags.models import FeatureFlag, FeatureFlagOwner, Flag, FlagOwner diff --git a/tests/test_groups.py b/tests/test_groups.py index 1a260c92..c85f855d 100644 --- a/tests/test_groups.py +++ b/tests/test_groups.py @@ -3,15 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import ( - Group, - UserOrganizationMembershipBaseListData, - PaginationOrder, -) -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -20,6 +14,12 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import ( + Group, + PaginationOrder, + UserOrganizationMembershipBaseListData, +) class TestGroups: diff --git a/tests/test_groups_models_round_trip.py b/tests/test_groups_models_round_trip.py index 79fc0d0c..b9112ee7 100644 --- a/tests/test_groups_models_round_trip.py +++ b/tests/test_groups_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.groups.models import Group, UserOrganizationMembershipBaseListData diff --git a/tests/test_multi_factor_auth.py b/tests/test_multi_factor_auth.py index e3e5f864..1fd0f489 100644 --- a/tests/test_multi_factor_auth.py +++ b/tests/test_multi_factor_auth.py @@ -3,9 +3,18 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient +from workos._errors import ( + AuthenticationError, + BadRequestError, + NotFoundError, + RateLimitExceededError, + ServerError, + UnprocessableEntityError, +) +from workos._pagination import AsyncPage, SyncPage from workos.common.models import ( AuthenticationChallenge, AuthenticationFactor, @@ -17,15 +26,6 @@ AuthenticationChallengeVerifyResponse, UserAuthenticationFactorEnrollResponse, ) -from workos._pagination import AsyncPage, SyncPage -from workos._errors import ( - AuthenticationError, - BadRequestError, - NotFoundError, - RateLimitExceededError, - ServerError, - UnprocessableEntityError, -) class TestMultiFactorAuth: diff --git a/tests/test_multi_factor_auth_models_round_trip.py b/tests/test_multi_factor_auth_models_round_trip.py index 19997a71..3931be43 100644 --- a/tests/test_multi_factor_auth_models_round_trip.py +++ b/tests/test_multi_factor_auth_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.multi_factor_auth.models import ( AuthenticationChallenge, AuthenticationChallengeVerifyResponse, diff --git a/tests/test_organization_domains.py b/tests/test_organization_domains.py index bf719959..fe84aed2 100644 --- a/tests/test_organization_domains.py +++ b/tests/test_organization_domains.py @@ -3,10 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import OrganizationDomain +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -15,6 +14,7 @@ ServerError, UnprocessableEntityError, ) +from workos.common.models import OrganizationDomain class TestOrganizationDomains: diff --git a/tests/test_organization_domains_models_round_trip.py b/tests/test_organization_domains_models_round_trip.py index 050042c1..99b43aa0 100644 --- a/tests/test_organization_domains_models_round_trip.py +++ b/tests/test_organization_domains_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.organization_domains.models import OrganizationDomain diff --git a/tests/test_organization_membership.py b/tests/test_organization_membership.py index 20dc3360..e66e998e 100644 --- a/tests/test_organization_membership.py +++ b/tests/test_organization_membership.py @@ -3,15 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import Group, PaginationOrder -from workos.organization_membership.models import ( - OrganizationMembership, - UserOrganizationMembership, -) -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -20,7 +14,13 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import Group, PaginationOrder from workos.organization_membership._resource import RoleSingle +from workos.organization_membership.models import ( + OrganizationMembership, + UserOrganizationMembership, +) class TestOrganizationMembership: diff --git a/tests/test_organization_membership_models_round_trip.py b/tests/test_organization_membership_models_round_trip.py index 7881c2a8..7bf25e0a 100644 --- a/tests/test_organization_membership_models_round_trip.py +++ b/tests/test_organization_membership_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.organization_membership.models import ( OrganizationMembership, UserOrganizationMembership, diff --git a/tests/test_organizations.py b/tests/test_organizations.py index 361b7bda..8c2bd654 100644 --- a/tests/test_organizations.py +++ b/tests/test_organizations.py @@ -3,16 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import PaginationOrder -from workos.organizations.models import ( - AuditLogConfiguration, - Organization, - OrganizationAuthorizedConnectApplicationListData, -) -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -21,6 +14,13 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import PaginationOrder +from workos.organizations.models import ( + AuditLogConfiguration, + Organization, + OrganizationAuthorizedConnectApplicationListData, +) class TestOrganizations: diff --git a/tests/test_organizations_models_round_trip.py b/tests/test_organizations_models_round_trip.py index 834c520e..e9a218a5 100644 --- a/tests/test_organizations_models_round_trip.py +++ b/tests/test_organizations_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.organizations.models import ( AuditLogConfiguration, AuditLogConfigurationLogStream, diff --git a/tests/test_pipes.py b/tests/test_pipes.py index d0582e6f..b05bc08e 100644 --- a/tests/test_pipes.py +++ b/tests/test_pipes.py @@ -139,6 +139,29 @@ def test_authorize_data_integration(self, workos, httpx_mock): body = json.loads(request.content) assert body["user_id"] == "test_user_id" + def test_update_data_integration_client_credentials(self, workos, httpx_mock): + httpx_mock.add_response( + json=load_fixture("connected_account.json"), + ) + result = workos.pipes.update_data_integration_client_credentials( + "test_slug", + user_id="test_user_id", + client_id="test_client_id", + client_secret="test_client_secret", + ) + assert isinstance(result, ConnectedAccount) + assert result.object == "connected_account" + assert result.id == "data_installation_01EHZNVPK3SFK441A1RGBFSHRT" + request = httpx_mock.get_request() + assert request.method == "PUT" + assert request.url.path.endswith( + "/data-integrations/test_slug/client-credentials" + ) + body = json.loads(request.content) + assert body["user_id"] == "test_user_id" + assert body["client_id"] == "test_client_id" + assert body["client_secret"] == "test_client_secret" + def test_create_data_integration_credential(self, workos, httpx_mock): httpx_mock.add_response( json=load_fixture("data_integration_credentials_response.json"), @@ -465,6 +488,26 @@ async def test_authorize_data_integration(self, async_workos, httpx_mock): assert request.method == "POST" assert request.url.path.endswith("/data-integrations/test_slug/authorize") + @pytest.mark.asyncio + async def test_update_data_integration_client_credentials( + self, async_workos, httpx_mock + ): + httpx_mock.add_response(json=load_fixture("connected_account.json")) + result = await async_workos.pipes.update_data_integration_client_credentials( + "test_slug", + user_id="test_user_id", + client_id="test_client_id", + client_secret="test_client_secret", + ) + assert isinstance(result, ConnectedAccount) + assert result.object == "connected_account" + assert result.id == "data_installation_01EHZNVPK3SFK441A1RGBFSHRT" + request = httpx_mock.get_request() + assert request.method == "PUT" + assert request.url.path.endswith( + "/data-integrations/test_slug/client-credentials" + ) + @pytest.mark.asyncio async def test_create_data_integration_credential(self, async_workos, httpx_mock): httpx_mock.add_response( diff --git a/tests/test_pipes_models_round_trip.py b/tests/test_pipes_models_round_trip.py index 47d0765a..5713907c 100644 --- a/tests/test_pipes_models_round_trip.py +++ b/tests/test_pipes_models_round_trip.py @@ -93,26 +93,20 @@ def test_custom_provider_definition_round_trip(self): assert restored.to_dict() == serialized def test_custom_provider_definition_minimal_payload(self): - data = { - "name": "My OAuth App", - "authorization_url": "https://provider.example.com/oauth/authorize", - "token_url": "https://provider.example.com/oauth/token", - } + data = {"name": "My OAuth App"} instance = CustomProviderDefinition.from_dict(data) serialized = instance.to_dict() assert serialized["name"] == data["name"] - assert serialized["authorization_url"] == data["authorization_url"] - assert serialized["token_url"] == data["token_url"] def test_custom_provider_definition_omits_absent_optional_non_nullable_fields(self): data = { "name": "My OAuth App", - "authorization_url": "https://provider.example.com/oauth/authorize", - "token_url": "https://provider.example.com/oauth/token", "refresh_token_url": "https://provider.example.com/oauth/token", } instance = CustomProviderDefinition.from_dict(data) serialized = instance.to_dict() + assert "authorization_url" not in serialized + assert "token_url" not in serialized assert "pkce_enabled" not in serialized assert "request_scope_separator" not in serialized assert "scopes_required" not in serialized @@ -241,11 +235,7 @@ def test_data_integration_minimal_payload(self): "scopes": None, "redirect_uri": "https://api.workos.com/data-integrations/github/dik_01EHZNVPK3SFK441A1RGBFSHRT/callback", "auth_methods": ["oauth"], - "credentials": { - "type": "custom", - "client_id": "Iv1.abc123", - "redacted_client_secret": "6789", - }, + "credentials": None, "installation": None, "config": {"account_identifier": "acme-prod"}, "custom_provider": None, @@ -283,11 +273,7 @@ def test_data_integration_preserves_nullable_fields(self): "scopes": None, "redirect_uri": "https://api.workos.com/data-integrations/github/dik_01EHZNVPK3SFK441A1RGBFSHRT/callback", "auth_methods": ["oauth"], - "credentials": { - "type": "custom", - "client_id": "Iv1.abc123", - "redacted_client_secret": "6789", - }, + "credentials": None, "installation": None, "config": {"account_identifier": "acme-prod"}, "custom_provider": None, @@ -298,6 +284,7 @@ def test_data_integration_preserves_nullable_fields(self): serialized = instance.to_dict() assert serialized["description"] is None assert serialized["scopes"] is None + assert serialized["credentials"] is None assert serialized["installation"] is None assert serialized["custom_provider"] is None @@ -474,6 +461,8 @@ def test_connected_account_omits_absent_optional_non_nullable_fields(self): "organization_id": None, "scopes": ["repo", "user:email"], "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -481,6 +470,7 @@ def test_connected_account_omits_absent_optional_non_nullable_fields(self): instance = ConnectedAccount.from_dict(data) serialized = instance.to_dict() assert "auth_method" not in serialized + assert "config" not in serialized def test_connected_account_preserves_nullable_fields(self): data = { @@ -491,6 +481,9 @@ def test_connected_account_preserves_nullable_fields(self): "scopes": ["repo", "user:email"], "auth_method": "oauth", "api_key_last_4": None, + "client_id": None, + "client_secret_last_4": None, + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -500,6 +493,8 @@ def test_connected_account_preserves_nullable_fields(self): assert serialized["user_id"] is None assert serialized["organization_id"] is None assert serialized["api_key_last_4"] is None + assert serialized["client_id"] is None + assert serialized["client_secret_last_4"] is None def test_connected_account_round_trips_unknown_enum_values(self): data = { @@ -510,6 +505,9 @@ def test_connected_account_round_trips_unknown_enum_values(self): "scopes": ["repo", "user:email"], "auth_method": "unexpected_connected_account_auth_method", "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -550,6 +548,9 @@ def test_data_integrations_list_response_minimal_payload(self): "scopes": ["repo", "user:email"], "auth_method": "oauth", "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -624,6 +625,9 @@ def test_data_integrations_list_response_data_omits_absent_optional_non_nullable "scopes": ["repo", "user:email"], "auth_method": "oauth", "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -678,6 +682,9 @@ def test_data_integrations_list_response_data_round_trips_unknown_enum_values(se "scopes": ["repo", "user:email"], "auth_method": "oauth", "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -956,6 +963,8 @@ def test_data_integrations_list_response_data_connected_account_omits_absent_opt "organization_id": None, "scopes": ["repo", "user:email"], "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -964,6 +973,7 @@ def test_data_integrations_list_response_data_connected_account_omits_absent_opt instance = DataIntegrationsListResponseDataConnectedAccount.from_dict(data) serialized = instance.to_dict() assert "auth_method" not in serialized + assert "config" not in serialized def test_data_integrations_list_response_data_connected_account_preserves_nullable_fields( self, @@ -976,6 +986,9 @@ def test_data_integrations_list_response_data_connected_account_preserves_nullab "scopes": ["repo", "user:email"], "auth_method": "oauth", "api_key_last_4": None, + "client_id": None, + "client_secret_last_4": None, + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", @@ -986,6 +999,8 @@ def test_data_integrations_list_response_data_connected_account_preserves_nullab assert serialized["user_id"] is None assert serialized["organization_id"] is None assert serialized["api_key_last_4"] is None + assert serialized["client_id"] is None + assert serialized["client_secret_last_4"] is None assert serialized["userlandUserId"] is None def test_data_integrations_list_response_data_connected_account_round_trips_unknown_enum_values( @@ -999,6 +1014,9 @@ def test_data_integrations_list_response_data_connected_account_round_trips_unkn "scopes": ["repo", "user:email"], "auth_method": "unexpected_data_integrations_list_response_data_connected_account_auth_method", "api_key_last_4": None, + "client_id": "3MVG9dZJodJWxft2VoStSCVwPFsx0eDcpVc", + "client_secret_last_4": "cdef", + "config": {"instance_url": "https://example.my.salesforce.com"}, "state": "connected", "created_at": "2024-01-16T14:20:00.000Z", "updated_at": "2024-01-16T14:20:00.000Z", diff --git a/tests/test_radar.py b/tests/test_radar.py index 6a6c4903..d3e41585 100644 --- a/tests/test_radar.py +++ b/tests/test_radar.py @@ -3,17 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import ( - RadarStandaloneAssessRequestAction, - RadarStandaloneAssessRequestAuthMethod, -) -from workos.radar.models import ( - RadarListEntryAlreadyPresentResponse, - RadarStandaloneResponse, -) +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -22,6 +14,14 @@ ServerError, UnprocessableEntityError, ) +from workos.common.models import ( + RadarStandaloneAssessRequestAction, + RadarStandaloneAssessRequestAuthMethod, +) +from workos.radar.models import ( + RadarListEntryAlreadyPresentResponse, + RadarStandaloneResponse, +) class TestRadar: diff --git a/tests/test_radar_models_round_trip.py b/tests/test_radar_models_round_trip.py index e0054408..cf4a78fd 100644 --- a/tests/test_radar_models_round_trip.py +++ b/tests/test_radar_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.radar.models import ( RadarListEntryAlreadyPresentResponse, RadarStandaloneResponse, diff --git a/tests/test_vault.py b/tests/test_vault.py index 401d5479..8e677fd4 100644 --- a/tests/test_vault.py +++ b/tests/test_vault.py @@ -3,9 +3,18 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient +from workos._errors import ( + AuthenticationError, + BadRequestError, + NotFoundError, + RateLimitExceededError, + ServerError, + UnprocessableEntityError, +) +from workos._pagination import AsyncPage, SyncPage from workos.vault.models import ( CreateDataKeyResponse, DecryptResponse, @@ -13,17 +22,8 @@ ObjectSummary, ObjectWithoutValue, VaultObject, - VersionListResponse, VaultOrder, -) -from workos._pagination import AsyncPage, SyncPage -from workos._errors import ( - AuthenticationError, - BadRequestError, - NotFoundError, - RateLimitExceededError, - ServerError, - UnprocessableEntityError, + VersionListResponse, ) diff --git a/tests/test_vault_models_round_trip.py b/tests/test_vault_models_round_trip.py index c1dae83e..484a03ac 100644 --- a/tests/test_vault_models_round_trip.py +++ b/tests/test_vault_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.vault.models import ( Actor, CreateDataKeyResponse, diff --git a/tests/test_webhooks.py b/tests/test_webhooks.py index 285aca51..f8e23a9e 100644 --- a/tests/test_webhooks.py +++ b/tests/test_webhooks.py @@ -3,12 +3,9 @@ import json import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.common.models import PaginationOrder -from workos.webhooks.models import WebhookEndpoint -from workos._pagination import AsyncPage, SyncPage +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -17,6 +14,9 @@ ServerError, UnprocessableEntityError, ) +from workos._pagination import AsyncPage, SyncPage +from workos.common.models import PaginationOrder +from workos.webhooks.models import WebhookEndpoint class TestWebhooks: diff --git a/tests/test_webhooks_models_round_trip.py b/tests/test_webhooks_models_round_trip.py index d442b2f3..d8e6f751 100644 --- a/tests/test_webhooks_models_round_trip.py +++ b/tests/test_webhooks_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.webhooks.models import WebhookEndpoint diff --git a/tests/test_widgets.py b/tests/test_widgets.py index c280de85..c898bf3b 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -2,10 +2,9 @@ import pytest -from workos import WorkOSClient, AsyncWorkOSClient -from tests.generated_helpers import load_fixture -from workos.widgets.models import WidgetSessionTokenResponse +from tests.generated_helpers import load_fixture +from workos import AsyncWorkOSClient, WorkOSClient from workos._errors import ( AuthenticationError, BadRequestError, @@ -14,6 +13,7 @@ ServerError, UnprocessableEntityError, ) +from workos.widgets.models import WidgetSessionTokenResponse class TestWidgets: diff --git a/tests/test_widgets_models_round_trip.py b/tests/test_widgets_models_round_trip.py index b7897d3c..1d0ff073 100644 --- a/tests/test_widgets_models_round_trip.py +++ b/tests/test_widgets_models_round_trip.py @@ -3,7 +3,6 @@ """Model round-trip tests: from_dict(to_dict()) preserves data.""" from tests.generated_helpers import load_fixture - from workos.widgets.models import WidgetSessionTokenResponse From d92a1325c20192c416d16a13eff3aa0cfea478c3 Mon Sep 17 00:00:00 2001 From: "workos-sdk-automation[bot]" <255426317+workos-sdk-automation[bot]@users.noreply.github.com> Date: Fri, 7 Aug 2026 02:57:36 +0000 Subject: [PATCH 7/7] chore(generated): add release notes fragment --- ...b3515e11f894b81badbe6f5d2281ece502d3869.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .changelog-pending/2026-08-07T02-57-36-8b3515e11f894b81badbe6f5d2281ece502d3869.md diff --git a/.changelog-pending/2026-08-07T02-57-36-8b3515e11f894b81badbe6f5d2281ece502d3869.md b/.changelog-pending/2026-08-07T02-57-36-8b3515e11f894b81badbe6f5d2281ece502d3869.md new file mode 100644 index 00000000..e4965958 --- /dev/null +++ b/.changelog-pending/2026-08-07T02-57-36-8b3515e11f894b81badbe6f5d2281ece502d3869.md @@ -0,0 +1,39 @@ +* [#709](https://github.com/workos/workos-python/pull/709) feat(generated)!: regenerate from spec (7 changes) + + **⚠️ Breaking** + * **[pipes](https://workos.com/docs/reference/pipes)**: + * SDK surface change: Symbol "CreateDataIntegrationAuthMethodsLiteral" was removed + * **[user_management](https://workos.com/docs/reference/authkit/user)**: + * SDK surface change: Parameter type changed for "verification_id" on "UserManagement.authenticate_with_radar_sms_challenge" + + **Features** + * **[connect](https://workos.com/docs/reference/workos-connect/standalone)**: + * Added `client_id` to `ConnectedAccount` + * Added `client_secret_last_4` to `ConnectedAccount` + * Added `config` to `ConnectedAccount` + * **[pipes](https://workos.com/docs/reference/pipes)**: + * Added `client_id` to `DataIntegrationsListResponseDataConnectedAccount` + * Added `client_secret_last_4` to `DataIntegrationsListResponseDataConnectedAccount` + * Added `config` to `DataIntegrationsListResponseDataConnectedAccount` + * **[sso](https://workos.com/docs/reference/sso)**: + * Added `XOAuth` to `ConnectionType` + * Added `XOAuth` to `ConnectionActivatedDataConnectionType` + * Added `XOAuth` to `ConnectionDeactivatedDataConnectionType` + * Added `XOAuth` to `ConnectionDeletedDataConnectionType` + * Added `XOAuth` to `ProfileConnectionType` + * Added `XOAuth` to `ConnectionsConnectionType` + * **[user_management](https://workos.com/docs/reference/authkit/user)**: + * Added `password_salt_position` to `CreateUser` + * Added `password_salt_position` to `UpdateUser` + * Made `RadarSmsChallengeCodeSessionAuthenticateRequest.verification_id` optional + * Made `RadarSmsChallengeCodeSessionAuthenticateRequest.phone_number` optional + * Added enum `CreateUserPasswordSaltPosition` + * Added enum `UpdateUserPasswordSaltPosition` + * Added `XOAuth` to `AuthenticateResponseAuthenticationMethod` + * Added `XOAuth` to `UserIdentitiesGetItemProvider` + + **Fixes** + * **[user_management](https://workos.com/docs/reference/authkit/user)**: + * Changed errors for endpoint `POST /user_management/authenticate` + * Changed errors for endpoint `POST /user_management/users` + * Changed errors for endpoint `PUT /user_management/users/{id}`