From 94a09eb47d5ecaa9fd006c9705c58135177fc362 Mon Sep 17 00:00:00 2001 From: Colin Barber Date: Fri, 13 Feb 2026 10:55:42 -0400 Subject: [PATCH] Add authorization event and webhook types Add event and webhook types for organization_role (created, updated, deleted) and permission (created, updated, deleted) to support authorization-related event streaming and webhook delivery. Co-Authored-By: Claude Opus 4.6 --- workos/types/events/event.py | 32 ++++++++++++++++++++++++++++++ workos/types/events/event_model.py | 4 ++++ workos/types/events/event_type.py | 6 ++++++ workos/types/webhooks/webhook.py | 32 ++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+) diff --git a/workos/types/events/event.py b/workos/types/events/event.py index 6df63091..bb0b9a50 100644 --- a/workos/types/events/event.py +++ b/workos/types/events/event.py @@ -32,6 +32,8 @@ from workos.types.events.directory_user_with_previous_attributes import ( DirectoryUserWithPreviousAttributes, ) +from workos.types.authorization.organization_role import OrganizationRole +from workos.types.authorization.permission import Permission from workos.types.events.event_model import EventModel from workos.types.events.organization_domain_verification_failed_payload import ( OrganizationDomainVerificationFailedPayload, @@ -225,6 +227,18 @@ class OrganizationMembershipUpdatedEvent(EventModel[OrganizationMembership]): event: Literal["organization_membership.updated"] +class OrganizationRoleCreatedEvent(EventModel[OrganizationRole]): + event: Literal["organization_role.created"] + + +class OrganizationRoleUpdatedEvent(EventModel[OrganizationRole]): + event: Literal["organization_role.updated"] + + +class OrganizationRoleDeletedEvent(EventModel[OrganizationRole]): + event: Literal["organization_role.deleted"] + + class PasswordResetCreatedEvent(EventModel[PasswordResetCommon]): event: Literal["password_reset.created"] @@ -233,6 +247,18 @@ class PasswordResetSucceededEvent(EventModel[PasswordResetCommon]): event: Literal["password_reset.succeeded"] +class PermissionCreatedEvent(EventModel[Permission]): + event: Literal["permission.created"] + + +class PermissionUpdatedEvent(EventModel[Permission]): + event: Literal["permission.updated"] + + +class PermissionDeletedEvent(EventModel[Permission]): + event: Literal["permission.deleted"] + + class RoleCreatedEvent(EventModel[EventRole]): event: Literal["role.created"] @@ -302,8 +328,14 @@ class UserUpdatedEvent(EventModel[User]): OrganizationMembershipCreatedEvent, OrganizationMembershipDeletedEvent, OrganizationMembershipUpdatedEvent, + OrganizationRoleCreatedEvent, + OrganizationRoleUpdatedEvent, + OrganizationRoleDeletedEvent, PasswordResetCreatedEvent, PasswordResetSucceededEvent, + PermissionCreatedEvent, + PermissionUpdatedEvent, + PermissionDeletedEvent, RoleCreatedEvent, RoleDeletedEvent, RoleUpdatedEvent, diff --git a/workos/types/events/event_model.py b/workos/types/events/event_model.py index 24443a52..2427ae5d 100644 --- a/workos/types/events/event_model.py +++ b/workos/types/events/event_model.py @@ -38,6 +38,8 @@ from workos.types.events.session_created_payload import SessionCreatedPayload from workos.types.organizations.organization_common import OrganizationCommon from workos.types.organization_domains import OrganizationDomain +from workos.types.authorization.organization_role import OrganizationRole +from workos.types.authorization.permission import Permission from workos.types.roles.role import EventRole from workos.types.sso.connection import Connection from workos.types.user_management.email_verification import ( @@ -79,7 +81,9 @@ OrganizationDomain, OrganizationDomainVerificationFailedPayload, OrganizationMembership, + OrganizationRole, PasswordResetCommon, + Permission, SessionCreatedPayload, User, ) diff --git a/workos/types/events/event_type.py b/workos/types/events/event_type.py index 79856e54..8ba263e3 100644 --- a/workos/types/events/event_type.py +++ b/workos/types/events/event_type.py @@ -44,8 +44,14 @@ "organization_membership.created", "organization_membership.deleted", "organization_membership.updated", + "organization_role.created", + "organization_role.updated", + "organization_role.deleted", "password_reset.created", "password_reset.succeeded", + "permission.created", + "permission.updated", + "permission.deleted", "role.created", "role.deleted", "role.updated", diff --git a/workos/types/webhooks/webhook.py b/workos/types/webhooks/webhook.py index afe9e9ff..3a4c21b3 100644 --- a/workos/types/webhooks/webhook.py +++ b/workos/types/webhooks/webhook.py @@ -37,6 +37,8 @@ OrganizationDomainVerificationFailedPayload, ) from workos.types.events.session_created_payload import SessionCreatedPayload +from workos.types.authorization.organization_role import OrganizationRole +from workos.types.authorization.permission import Permission from workos.types.organization_domains import OrganizationDomain from workos.types.organizations.organization_common import OrganizationCommon from workos.types.roles.role import EventRole @@ -231,6 +233,18 @@ class OrganizationMembershipUpdatedWebhook(WebhookModel[OrganizationMembership]) event: Literal["organization_membership.updated"] +class OrganizationRoleCreatedWebhook(WebhookModel[OrganizationRole]): + event: Literal["organization_role.created"] + + +class OrganizationRoleUpdatedWebhook(WebhookModel[OrganizationRole]): + event: Literal["organization_role.updated"] + + +class OrganizationRoleDeletedWebhook(WebhookModel[OrganizationRole]): + event: Literal["organization_role.deleted"] + + class PasswordResetCreatedWebhook(WebhookModel[PasswordResetCommon]): event: Literal["password_reset.created"] @@ -239,6 +253,18 @@ class PasswordResetSucceededWebhook(WebhookModel[PasswordResetCommon]): event: Literal["password_reset.succeeded"] +class PermissionCreatedWebhook(WebhookModel[Permission]): + event: Literal["permission.created"] + + +class PermissionUpdatedWebhook(WebhookModel[Permission]): + event: Literal["permission.updated"] + + +class PermissionDeletedWebhook(WebhookModel[Permission]): + event: Literal["permission.deleted"] + + class RoleCreatedWebhook(WebhookModel[EventRole]): event: Literal["role.created"] @@ -308,8 +334,14 @@ class UserUpdatedWebhook(WebhookModel[User]): OrganizationMembershipCreatedWebhook, OrganizationMembershipDeletedWebhook, OrganizationMembershipUpdatedWebhook, + OrganizationRoleCreatedWebhook, + OrganizationRoleUpdatedWebhook, + OrganizationRoleDeletedWebhook, PasswordResetCreatedWebhook, PasswordResetSucceededWebhook, + PermissionCreatedWebhook, + PermissionUpdatedWebhook, + PermissionDeletedWebhook, RoleCreatedWebhook, RoleDeletedWebhook, RoleUpdatedWebhook,