diff --git a/src/workos/types/events/__init__.py b/src/workos/types/events/__init__.py index ba6f15ba..25a293c1 100644 --- a/src/workos/types/events/__init__.py +++ b/src/workos/types/events/__init__.py @@ -1,5 +1,6 @@ from .authentication_payload import * from .connection_payload_with_legacy_fields import * +from .connection_saml_certificate_payload import * from .directory_group_membership_payload import * from .directory_group_with_previous_attributes import * from .directory_payload import * @@ -8,6 +9,9 @@ from .event_model import * from .event_type import * from .event import * +from .flag_payload import * from .organization_domain_verification_failed_payload import * +from .organization_role_payload import * +from .permission_payload import * from .previous_attributes import * from .session_payload import * diff --git a/src/workos/types/events/authentication_payload.py b/src/workos/types/events/authentication_payload.py index e013a1f5..05ebe02e 100644 --- a/src/workos/types/events/authentication_payload.py +++ b/src/workos/types/events/authentication_payload.py @@ -29,6 +29,10 @@ class AuthenticationEmailVerificationSucceededPayload(AuthenticationResultSuccee user_id: str +class AuthenticationEmailVerificationFailedPayload(AuthenticationResultFailed): + type: Literal["email_verification"] + + class AuthenticationMagicAuthFailedPayload(AuthenticationResultFailed): type: Literal["magic_auth"] @@ -43,6 +47,10 @@ class AuthenticationMfaSucceededPayload(AuthenticationResultSucceeded): user_id: Optional[str] = None +class AuthenticationMfaFailedPayload(AuthenticationResultFailed): + type: Literal["mfa"] + + class AuthenticationOauthFailedPayload(AuthenticationResultFailed): type: Literal["oauth"] @@ -52,6 +60,15 @@ class AuthenticationOauthSucceededPayload(AuthenticationResultSucceeded): user_id: Optional[str] = None +class AuthenticationPasskeyFailedPayload(AuthenticationResultFailed): + type: Literal["passkey"] + + +class AuthenticationPasskeySucceededPayload(AuthenticationResultSucceeded): + type: Literal["passkey"] + user_id: str + + class AuthenticationPasswordFailedPayload(AuthenticationResultFailed): type: Literal["password"] @@ -69,10 +86,19 @@ class AuthenticationSsoData(WorkOSModel): class AuthenticationSsoFailedPayload(AuthenticationResultFailed): type: Literal["sso"] - sso: Optional[AuthenticationSsoData] = None + sso: AuthenticationSsoData class AuthenticationSsoSucceededPayload(AuthenticationResultSucceeded): type: Literal["sso"] user_id: Optional[str] = None - sso: Optional[AuthenticationSsoData] = None + sso: AuthenticationSsoData + + +class AuthenticationRadarRiskDetectedPayload(AuthenticationResultCommon): + auth_method: str + action: str + control: Optional[str] = None + blocklist_type: Optional[str] = None + user_id: str + email: str diff --git a/src/workos/types/events/connection_saml_certificate_payload.py b/src/workos/types/events/connection_saml_certificate_payload.py new file mode 100644 index 00000000..784aca1d --- /dev/null +++ b/src/workos/types/events/connection_saml_certificate_payload.py @@ -0,0 +1,30 @@ +from typing import Literal, Optional +from workos.types.workos_model import WorkOSModel + +SamlCertificateType = Literal["ResponseSigning", "RequestSigning", "ResponseEncryption"] + + +class SamlCertificateConnection(WorkOSModel): + id: str + organization_id: Optional[str] = None + + +class SamlCertificate(WorkOSModel): + certificate_type: SamlCertificateType + expiry_date: str + + +class SamlCertificateWithExpiry(SamlCertificate): + is_expired: bool + + +class ConnectionSamlCertificateRenewedPayload(WorkOSModel): + connection: SamlCertificateConnection + certificate: SamlCertificate + renewed_at: str + + +class ConnectionSamlCertificateRenewalRequiredPayload(WorkOSModel): + connection: SamlCertificateConnection + certificate: SamlCertificateWithExpiry + days_until_expiry: int diff --git a/src/workos/types/events/event.py b/src/workos/types/events/event.py index 01cf9771..582be909 100644 --- a/src/workos/types/events/event.py +++ b/src/workos/types/events/event.py @@ -4,21 +4,31 @@ from workos.types.user_management import OrganizationMembership, User from workos.types.directory_sync.directory_group import DirectoryGroup from workos.types.directory_sync.directory_user import DirectoryUser +from workos.types.api_keys import ApiKey from workos.types.events.authentication_payload import ( + AuthenticationEmailVerificationFailedPayload, AuthenticationEmailVerificationSucceededPayload, AuthenticationMagicAuthFailedPayload, AuthenticationMagicAuthSucceededPayload, + AuthenticationMfaFailedPayload, AuthenticationMfaSucceededPayload, AuthenticationOauthFailedPayload, AuthenticationOauthSucceededPayload, + AuthenticationPasskeyFailedPayload, + AuthenticationPasskeySucceededPayload, AuthenticationPasswordFailedPayload, AuthenticationPasswordSucceededPayload, + AuthenticationRadarRiskDetectedPayload, AuthenticationSsoFailedPayload, AuthenticationSsoSucceededPayload, ) from workos.types.events.connection_payload_with_legacy_fields import ( ConnectionPayloadWithLegacyFields, ) +from workos.types.events.connection_saml_certificate_payload import ( + ConnectionSamlCertificateRenewedPayload, + ConnectionSamlCertificateRenewalRequiredPayload, +) from workos.types.events.directory_group_membership_payload import ( DirectoryGroupMembershipPayload, ) @@ -33,9 +43,12 @@ DirectoryUserWithPreviousAttributes, ) from workos.types.events.event_model import EventModel +from workos.types.events.flag_payload import FlagPayload, FlagRuleUpdatedContext from workos.types.events.organization_domain_verification_failed_payload import ( OrganizationDomainVerificationFailedPayload, ) +from workos.types.events.organization_role_payload import OrganizationRolePayload +from workos.types.events.permission_payload import PermissionPayload from workos.types.events.session_payload import ( SessionCreatedPayload, SessionRevokedPayload, @@ -58,6 +71,20 @@ # the event name is added to the EventType union type in event_type.py. +class ApiKeyCreatedEvent(EventModel[ApiKey]): + event: Literal["api_key.created"] + + +class ApiKeyRevokedEvent(EventModel[ApiKey]): + event: Literal["api_key.revoked"] + + +class AuthenticationEmailVerificationFailedEvent( + EventModel[AuthenticationEmailVerificationFailedPayload,] +): + event: Literal["authentication.email_verification_failed"] + + class AuthenticationEmailVerificationSucceededEvent( EventModel[AuthenticationEmailVerificationSucceededPayload,] ): @@ -76,6 +103,10 @@ class AuthenticationMagicAuthSucceededEvent( event: Literal["authentication.magic_auth_succeeded"] +class AuthenticationMfaFailedEvent(EventModel[AuthenticationMfaFailedPayload]): + event: Literal["authentication.mfa_failed"] + + class AuthenticationMfaSucceededEvent(EventModel[AuthenticationMfaSucceededPayload]): event: Literal["authentication.mfa_succeeded"] @@ -90,6 +121,16 @@ class AuthenticationOauthSucceededEvent( event: Literal["authentication.oauth_succeeded"] +class AuthenticationPasskeyFailedEvent(EventModel[AuthenticationPasskeyFailedPayload]): + event: Literal["authentication.passkey_failed"] + + +class AuthenticationPasskeySucceededEvent( + EventModel[AuthenticationPasskeySucceededPayload] +): + event: Literal["authentication.passkey_succeeded"] + + class AuthenticationPasswordFailedEvent( EventModel[AuthenticationPasswordFailedPayload] ): @@ -102,6 +143,12 @@ class AuthenticationPasswordSucceededEvent( event: Literal["authentication.password_succeeded"] +class AuthenticationRadarRiskDetectedEvent( + EventModel[AuthenticationRadarRiskDetectedPayload] +): + event: Literal["authentication.radar_risk_detected"] + + class AuthenticationSsoFailedEvent(EventModel[AuthenticationSsoFailedPayload]): event: Literal["authentication.sso_failed"] @@ -122,6 +169,18 @@ class ConnectionDeletedEvent(EventModel[Connection]): event: Literal["connection.deleted"] +class ConnectionSamlCertificateRenewedEvent( + EventModel[ConnectionSamlCertificateRenewedPayload] +): + event: Literal["connection.saml_certificate_renewed"] + + +class ConnectionSamlCertificateRenewalRequiredEvent( + EventModel[ConnectionSamlCertificateRenewalRequiredPayload] +): + event: Literal["connection.saml_certificate_renewal_required"] + + class DirectoryActivatedEvent(EventModel[DirectoryPayloadWithLegacyFieldsForEventsApi]): event: Literal["dsync.activated"] @@ -166,6 +225,23 @@ class EmailVerificationCreatedEvent(EventModel[EmailVerificationCommon]): event: Literal["email_verification.created"] +class FlagCreatedEvent(EventModel[FlagPayload]): + event: Literal["flag.created"] + + +class FlagDeletedEvent(EventModel[FlagPayload]): + event: Literal["flag.deleted"] + + +class FlagRuleUpdatedEvent(EventModel[FlagPayload]): + event: Literal["flag.rule_updated"] + context: FlagRuleUpdatedContext + + +class FlagUpdatedEvent(EventModel[FlagPayload]): + event: Literal["flag.updated"] + + class InvitationAcceptedEvent(EventModel[InvitationCommon]): event: Literal["invitation.accepted"] @@ -174,6 +250,10 @@ class InvitationCreatedEvent(EventModel[InvitationCommon]): event: Literal["invitation.created"] +class InvitationResentEvent(EventModel[InvitationCommon]): + event: Literal["invitation.resent"] + + class InvitationRevokedEvent(EventModel[InvitationCommon]): event: Literal["invitation.revoked"] @@ -228,6 +308,18 @@ class OrganizationMembershipUpdatedEvent(EventModel[OrganizationMembership]): event: Literal["organization_membership.updated"] +class OrganizationRoleCreatedEvent(EventModel[OrganizationRolePayload]): + event: Literal["organization_role.created"] + + +class OrganizationRoleDeletedEvent(EventModel[OrganizationRolePayload]): + event: Literal["organization_role.deleted"] + + +class OrganizationRoleUpdatedEvent(EventModel[OrganizationRolePayload]): + event: Literal["organization_role.updated"] + + class PasswordResetCreatedEvent(EventModel[PasswordResetCommon]): event: Literal["password_reset.created"] @@ -236,6 +328,18 @@ class PasswordResetSucceededEvent(EventModel[PasswordResetCommon]): event: Literal["password_reset.succeeded"] +class PermissionCreatedEvent(EventModel[PermissionPayload]): + event: Literal["permission.created"] + + +class PermissionDeletedEvent(EventModel[PermissionPayload]): + event: Literal["permission.deleted"] + + +class PermissionUpdatedEvent(EventModel[PermissionPayload]): + event: Literal["permission.updated"] + + class RoleCreatedEvent(EventModel[EventRole]): event: Literal["role.created"] @@ -270,19 +374,28 @@ class UserUpdatedEvent(EventModel[User]): Event = Annotated[ Union[ + ApiKeyCreatedEvent, + ApiKeyRevokedEvent, + AuthenticationEmailVerificationFailedEvent, AuthenticationEmailVerificationSucceededEvent, AuthenticationMagicAuthFailedEvent, AuthenticationMagicAuthSucceededEvent, + AuthenticationMfaFailedEvent, AuthenticationMfaSucceededEvent, AuthenticationOauthFailedEvent, AuthenticationOauthSucceededEvent, + AuthenticationPasskeyFailedEvent, + AuthenticationPasskeySucceededEvent, AuthenticationPasswordFailedEvent, AuthenticationPasswordSucceededEvent, + AuthenticationRadarRiskDetectedEvent, AuthenticationSsoFailedEvent, AuthenticationSsoSucceededEvent, ConnectionActivatedEvent, ConnectionDeactivatedEvent, ConnectionDeletedEvent, + ConnectionSamlCertificateRenewedEvent, + ConnectionSamlCertificateRenewalRequiredEvent, DirectoryActivatedEvent, DirectoryDeletedEvent, DirectoryGroupCreatedEvent, @@ -294,8 +407,13 @@ class UserUpdatedEvent(EventModel[User]): DirectoryUserAddedToGroupEvent, DirectoryUserRemovedFromGroupEvent, EmailVerificationCreatedEvent, + FlagCreatedEvent, + FlagDeletedEvent, + FlagRuleUpdatedEvent, + FlagUpdatedEvent, InvitationAcceptedEvent, InvitationCreatedEvent, + InvitationResentEvent, InvitationRevokedEvent, MagicAuthCreatedEvent, OrganizationCreatedEvent, @@ -309,8 +427,14 @@ class UserUpdatedEvent(EventModel[User]): OrganizationMembershipCreatedEvent, OrganizationMembershipDeletedEvent, OrganizationMembershipUpdatedEvent, + OrganizationRoleCreatedEvent, + OrganizationRoleDeletedEvent, + OrganizationRoleUpdatedEvent, PasswordResetCreatedEvent, PasswordResetSucceededEvent, + PermissionCreatedEvent, + PermissionDeletedEvent, + PermissionUpdatedEvent, RoleCreatedEvent, RoleDeletedEvent, RoleUpdatedEvent, diff --git a/src/workos/types/events/event_model.py b/src/workos/types/events/event_model.py index d89a7054..d010e004 100644 --- a/src/workos/types/events/event_model.py +++ b/src/workos/types/events/event_model.py @@ -3,21 +3,31 @@ from workos.types.workos_model import WorkOSModel from workos.types.directory_sync.directory_group import DirectoryGroup from workos.types.directory_sync.directory_user import DirectoryUser +from workos.types.api_keys import ApiKey from workos.types.events.authentication_payload import ( + AuthenticationEmailVerificationFailedPayload, AuthenticationEmailVerificationSucceededPayload, AuthenticationMagicAuthFailedPayload, AuthenticationMagicAuthSucceededPayload, + AuthenticationMfaFailedPayload, AuthenticationMfaSucceededPayload, AuthenticationOauthFailedPayload, AuthenticationOauthSucceededPayload, + AuthenticationPasskeyFailedPayload, + AuthenticationPasskeySucceededPayload, AuthenticationPasswordFailedPayload, AuthenticationPasswordSucceededPayload, + AuthenticationRadarRiskDetectedPayload, AuthenticationSsoFailedPayload, AuthenticationSsoSucceededPayload, ) from workos.types.events.connection_payload_with_legacy_fields import ( ConnectionPayloadWithLegacyFields, ) +from workos.types.events.connection_saml_certificate_payload import ( + ConnectionSamlCertificateRenewedPayload, + ConnectionSamlCertificateRenewalRequiredPayload, +) from workos.types.events.directory_group_membership_payload import ( DirectoryGroupMembershipPayload, ) @@ -32,9 +42,12 @@ from workos.types.events.directory_user_with_previous_attributes import ( DirectoryUserWithPreviousAttributes, ) +from workos.types.events.flag_payload import FlagPayload from workos.types.events.organization_domain_verification_failed_payload import ( OrganizationDomainVerificationFailedPayload, ) +from workos.types.events.organization_role_payload import OrganizationRolePayload +from workos.types.events.permission_payload import PermissionPayload from workos.types.events.session_payload import ( SessionCreatedPayload, @@ -54,18 +67,26 @@ EventPayload = TypeVar( "EventPayload", + ApiKey, + AuthenticationEmailVerificationFailedPayload, AuthenticationEmailVerificationSucceededPayload, AuthenticationMagicAuthFailedPayload, AuthenticationMagicAuthSucceededPayload, + AuthenticationMfaFailedPayload, AuthenticationMfaSucceededPayload, AuthenticationOauthFailedPayload, AuthenticationOauthSucceededPayload, + AuthenticationPasskeyFailedPayload, + AuthenticationPasskeySucceededPayload, AuthenticationPasswordFailedPayload, AuthenticationPasswordSucceededPayload, + AuthenticationRadarRiskDetectedPayload, AuthenticationSsoFailedPayload, AuthenticationSsoSucceededPayload, Connection, ConnectionPayloadWithLegacyFields, + ConnectionSamlCertificateRenewedPayload, + ConnectionSamlCertificateRenewalRequiredPayload, DirectoryPayload, DirectoryPayloadWithLegacyFields, # TODO: Remove once merged with DirectoryPayloadWithLegacyFields in next major release. @@ -77,13 +98,16 @@ DirectoryGroupMembershipPayload, EmailVerificationCommon, EventRole, + FlagPayload, InvitationCommon, MagicAuthCommon, OrganizationCommon, OrganizationDomain, OrganizationDomainVerificationFailedPayload, OrganizationMembership, + OrganizationRolePayload, PasswordResetCommon, + PermissionPayload, SessionCreatedPayload, SessionRevokedPayload, User, diff --git a/src/workos/types/events/event_type.py b/src/workos/types/events/event_type.py index fb4027a8..ca6f9447 100644 --- a/src/workos/types/events/event_type.py +++ b/src/workos/types/events/event_type.py @@ -5,19 +5,28 @@ # and added to the Event class union type in event.py. EventType = Literal[ + "api_key.created", + "api_key.revoked", + "authentication.email_verification_failed", "authentication.email_verification_succeeded", "authentication.magic_auth_failed", "authentication.magic_auth_succeeded", + "authentication.mfa_failed", "authentication.mfa_succeeded", "authentication.oauth_failed", "authentication.oauth_succeeded", + "authentication.passkey_failed", + "authentication.passkey_succeeded", "authentication.password_failed", "authentication.password_succeeded", + "authentication.radar_risk_detected", "authentication.sso_failed", "authentication.sso_succeeded", "connection.activated", "connection.deactivated", "connection.deleted", + "connection.saml_certificate_renewed", + "connection.saml_certificate_renewal_required", "dsync.activated", "dsync.deleted", "dsync.group.created", @@ -29,8 +38,13 @@ "dsync.group.user_added", "dsync.group.user_removed", "email_verification.created", + "flag.created", + "flag.deleted", + "flag.rule_updated", + "flag.updated", "invitation.accepted", "invitation.created", + "invitation.resent", "invitation.revoked", "magic_auth.created", "organization.created", @@ -44,8 +58,14 @@ "organization_membership.created", "organization_membership.deleted", "organization_membership.updated", + "organization_role.created", + "organization_role.deleted", + "organization_role.updated", "password_reset.created", "password_reset.succeeded", + "permission.created", + "permission.deleted", + "permission.updated", "role.created", "role.deleted", "role.updated", diff --git a/src/workos/types/events/flag_payload.py b/src/workos/types/events/flag_payload.py new file mode 100644 index 00000000..b382990f --- /dev/null +++ b/src/workos/types/events/flag_payload.py @@ -0,0 +1,70 @@ +from typing import Literal, Optional, Sequence + +from workos.types.workos_model import WorkOSModel + +AccessType = Literal["none", "some", "all"] + + +class FlagOwner(WorkOSModel): + email: str + first_name: Optional[str] = None + last_name: Optional[str] = None + + +class FlagPayload(WorkOSModel): + object: Literal["feature_flag"] + id: str + environment_id: str + slug: str + name: str + description: Optional[str] = None + owner: Optional[FlagOwner] = None + tags: Sequence[str] + enabled: bool + default_value: bool + created_at: str + updated_at: str + + +class FlagRuleActor(WorkOSModel): + id: str + source: Literal["api", "dashboard", "system"] + name: Optional[str] = None + + +class FlagRuleOrganizationTarget(WorkOSModel): + id: str + name: str + + +class FlagRuleUserTarget(WorkOSModel): + id: str + email: str + + +class FlagRuleConfiguredTargets(WorkOSModel): + organizations: Sequence[FlagRuleOrganizationTarget] + users: Sequence[FlagRuleUserTarget] + + +class FlagRulePreviousDataAttributes(WorkOSModel): + enabled: Optional[bool] = None + default_value: Optional[bool] = None + + +class FlagRulePreviousContextAttributes(WorkOSModel): + access_type: Optional[AccessType] = None + configured_targets: Optional[FlagRuleConfiguredTargets] = None + + +class FlagRulePreviousAttributes(WorkOSModel): + data: Optional[FlagRulePreviousDataAttributes] = None + context: Optional[FlagRulePreviousContextAttributes] = None + + +class FlagRuleUpdatedContext(WorkOSModel): + client_id: str + actor: FlagRuleActor + access_type: AccessType + configured_targets: FlagRuleConfiguredTargets + previous_attributes: FlagRulePreviousAttributes diff --git a/src/workos/types/events/organization_role_payload.py b/src/workos/types/events/organization_role_payload.py new file mode 100644 index 00000000..e257baff --- /dev/null +++ b/src/workos/types/events/organization_role_payload.py @@ -0,0 +1,14 @@ +from typing import Literal, Optional, Sequence +from workos.types.workos_model import WorkOSModel + + +class OrganizationRolePayload(WorkOSModel): + object: Literal["organization_role"] + organization_id: str + slug: str + name: str + description: Optional[str] = None + resource_type_slug: str + permissions: Sequence[str] + created_at: str + updated_at: str diff --git a/src/workos/types/events/permission_payload.py b/src/workos/types/events/permission_payload.py new file mode 100644 index 00000000..514af392 --- /dev/null +++ b/src/workos/types/events/permission_payload.py @@ -0,0 +1,13 @@ +from typing import Literal, Optional +from workos.types.workos_model import WorkOSModel + + +class PermissionPayload(WorkOSModel): + object: Literal["permission"] + id: str + slug: str + name: str + description: Optional[str] = None + system: bool + created_at: str + updated_at: str diff --git a/src/workos/types/webhooks/webhook.py b/src/workos/types/webhooks/webhook.py index bca584bd..fa2a47b0 100644 --- a/src/workos/types/webhooks/webhook.py +++ b/src/workos/types/webhooks/webhook.py @@ -5,21 +5,31 @@ from workos.types.directory_sync import DirectoryGroup from workos.types.directory_sync.directory_user import DirectoryUser +from workos.types.api_keys import ApiKey from workos.types.events.authentication_payload import ( + AuthenticationEmailVerificationFailedPayload, AuthenticationEmailVerificationSucceededPayload, AuthenticationMagicAuthFailedPayload, AuthenticationMagicAuthSucceededPayload, + AuthenticationMfaFailedPayload, AuthenticationMfaSucceededPayload, AuthenticationOauthFailedPayload, AuthenticationOauthSucceededPayload, + AuthenticationPasskeyFailedPayload, + AuthenticationPasskeySucceededPayload, AuthenticationPasswordFailedPayload, AuthenticationPasswordSucceededPayload, + AuthenticationRadarRiskDetectedPayload, AuthenticationSsoFailedPayload, AuthenticationSsoSucceededPayload, ) from workos.types.events.connection_payload_with_legacy_fields import ( ConnectionPayloadWithLegacyFields, ) +from workos.types.events.connection_saml_certificate_payload import ( + ConnectionSamlCertificateRenewedPayload, + ConnectionSamlCertificateRenewalRequiredPayload, +) from workos.types.events.directory_group_membership_payload import ( DirectoryGroupMembershipPayload, ) @@ -33,9 +43,12 @@ from workos.types.events.directory_user_with_previous_attributes import ( DirectoryUserWithPreviousAttributes, ) +from workos.types.events.flag_payload import FlagPayload, FlagRuleUpdatedContext from workos.types.events.organization_domain_verification_failed_payload import ( OrganizationDomainVerificationFailedPayload, ) +from workos.types.events.organization_role_payload import OrganizationRolePayload +from workos.types.events.permission_payload import PermissionPayload from workos.types.events.session_payload import ( SessionCreatedPayload, SessionRevokedPayload, @@ -58,6 +71,20 @@ # added to the Webhook union type at the bottom of this file. +class ApiKeyCreatedWebhook(WebhookModel[ApiKey]): + event: Literal["api_key.created"] + + +class ApiKeyRevokedWebhook(WebhookModel[ApiKey]): + event: Literal["api_key.revoked"] + + +class AuthenticationEmailVerificationFailedWebhook( + WebhookModel[AuthenticationEmailVerificationFailedPayload,] +): + event: Literal["authentication.email_verification_failed"] + + class AuthenticationEmailVerificationSucceededWebhook( WebhookModel[AuthenticationEmailVerificationSucceededPayload,] ): @@ -76,6 +103,10 @@ class AuthenticationMagicAuthSucceededWebhook( event: Literal["authentication.magic_auth_succeeded"] +class AuthenticationMfaFailedWebhook(WebhookModel[AuthenticationMfaFailedPayload]): + event: Literal["authentication.mfa_failed"] + + class AuthenticationMfaSucceededWebhook( WebhookModel[AuthenticationMfaSucceededPayload] ): @@ -92,6 +123,18 @@ class AuthenticationOauthSucceededWebhook( event: Literal["authentication.oauth_succeeded"] +class AuthenticationPasskeyFailedWebhook( + WebhookModel[AuthenticationPasskeyFailedPayload] +): + event: Literal["authentication.passkey_failed"] + + +class AuthenticationPasskeySucceededWebhook( + WebhookModel[AuthenticationPasskeySucceededPayload] +): + event: Literal["authentication.passkey_succeeded"] + + class AuthenticationPasswordFailedWebhook( WebhookModel[AuthenticationPasswordFailedPayload] ): @@ -104,6 +147,12 @@ class AuthenticationPasswordSucceededWebhook( event: Literal["authentication.password_succeeded"] +class AuthenticationRadarRiskDetectedWebhook( + WebhookModel[AuthenticationRadarRiskDetectedPayload] +): + event: Literal["authentication.radar_risk_detected"] + + class AuthenticationSsoFailedWebhook(WebhookModel[AuthenticationSsoFailedPayload]): event: Literal["authentication.sso_failed"] @@ -126,6 +175,18 @@ class ConnectionDeletedWebhook(WebhookModel[Connection]): event: Literal["connection.deleted"] +class ConnectionSamlCertificateRenewedWebhook( + WebhookModel[ConnectionSamlCertificateRenewedPayload] +): + event: Literal["connection.saml_certificate_renewed"] + + +class ConnectionSamlCertificateRenewalRequiredWebhook( + WebhookModel[ConnectionSamlCertificateRenewalRequiredPayload] +): + event: Literal["connection.saml_certificate_renewal_required"] + + class DirectoryActivatedWebhook(WebhookModel[DirectoryPayloadWithLegacyFields]): event: Literal["dsync.activated"] @@ -172,6 +233,23 @@ class EmailVerificationCreatedWebhook(WebhookModel[EmailVerificationCommon]): event: Literal["email_verification.created"] +class FlagCreatedWebhook(WebhookModel[FlagPayload]): + event: Literal["flag.created"] + + +class FlagDeletedWebhook(WebhookModel[FlagPayload]): + event: Literal["flag.deleted"] + + +class FlagRuleUpdatedWebhook(WebhookModel[FlagPayload]): + event: Literal["flag.rule_updated"] + context: FlagRuleUpdatedContext + + +class FlagUpdatedWebhook(WebhookModel[FlagPayload]): + event: Literal["flag.updated"] + + class InvitationAcceptedWebhook(WebhookModel[InvitationCommon]): event: Literal["invitation.accepted"] @@ -180,6 +258,10 @@ class InvitationCreatedWebhook(WebhookModel[InvitationCommon]): event: Literal["invitation.created"] +class InvitationResentWebhook(WebhookModel[InvitationCommon]): + event: Literal["invitation.resent"] + + class InvitationRevokedWebhook(WebhookModel[InvitationCommon]): event: Literal["invitation.revoked"] @@ -234,6 +316,18 @@ class OrganizationMembershipUpdatedWebhook(WebhookModel[OrganizationMembership]) event: Literal["organization_membership.updated"] +class OrganizationRoleCreatedWebhook(WebhookModel[OrganizationRolePayload]): + event: Literal["organization_role.created"] + + +class OrganizationRoleDeletedWebhook(WebhookModel[OrganizationRolePayload]): + event: Literal["organization_role.deleted"] + + +class OrganizationRoleUpdatedWebhook(WebhookModel[OrganizationRolePayload]): + event: Literal["organization_role.updated"] + + class PasswordResetCreatedWebhook(WebhookModel[PasswordResetCommon]): event: Literal["password_reset.created"] @@ -242,6 +336,18 @@ class PasswordResetSucceededWebhook(WebhookModel[PasswordResetCommon]): event: Literal["password_reset.succeeded"] +class PermissionCreatedWebhook(WebhookModel[PermissionPayload]): + event: Literal["permission.created"] + + +class PermissionDeletedWebhook(WebhookModel[PermissionPayload]): + event: Literal["permission.deleted"] + + +class PermissionUpdatedWebhook(WebhookModel[PermissionPayload]): + event: Literal["permission.updated"] + + class RoleCreatedWebhook(WebhookModel[EventRole]): event: Literal["role.created"] @@ -276,19 +382,28 @@ class UserUpdatedWebhook(WebhookModel[User]): Webhook = Annotated[ Union[ + ApiKeyCreatedWebhook, + ApiKeyRevokedWebhook, + AuthenticationEmailVerificationFailedWebhook, AuthenticationEmailVerificationSucceededWebhook, AuthenticationMagicAuthFailedWebhook, AuthenticationMagicAuthSucceededWebhook, + AuthenticationMfaFailedWebhook, AuthenticationMfaSucceededWebhook, AuthenticationOauthFailedWebhook, AuthenticationOauthSucceededWebhook, + AuthenticationPasskeyFailedWebhook, + AuthenticationPasskeySucceededWebhook, AuthenticationPasswordFailedWebhook, AuthenticationPasswordSucceededWebhook, + AuthenticationRadarRiskDetectedWebhook, AuthenticationSsoFailedWebhook, AuthenticationSsoSucceededWebhook, ConnectionActivatedWebhook, ConnectionDeactivatedWebhook, ConnectionDeletedWebhook, + ConnectionSamlCertificateRenewedWebhook, + ConnectionSamlCertificateRenewalRequiredWebhook, DirectoryActivatedWebhook, DirectoryDeletedWebhook, DirectoryGroupCreatedWebhook, @@ -300,8 +415,13 @@ class UserUpdatedWebhook(WebhookModel[User]): DirectoryUserAddedToGroupWebhook, DirectoryUserRemovedFromGroupWebhook, EmailVerificationCreatedWebhook, + FlagCreatedWebhook, + FlagDeletedWebhook, + FlagRuleUpdatedWebhook, + FlagUpdatedWebhook, InvitationAcceptedWebhook, InvitationCreatedWebhook, + InvitationResentWebhook, InvitationRevokedWebhook, MagicAuthCreatedWebhook, OrganizationCreatedWebhook, @@ -315,8 +435,14 @@ class UserUpdatedWebhook(WebhookModel[User]): OrganizationMembershipCreatedWebhook, OrganizationMembershipDeletedWebhook, OrganizationMembershipUpdatedWebhook, + OrganizationRoleCreatedWebhook, + OrganizationRoleDeletedWebhook, + OrganizationRoleUpdatedWebhook, PasswordResetCreatedWebhook, PasswordResetSucceededWebhook, + PermissionCreatedWebhook, + PermissionDeletedWebhook, + PermissionUpdatedWebhook, RoleCreatedWebhook, RoleDeletedWebhook, RoleUpdatedWebhook,