Skip to content

Commit bab991a

Browse files
csrbarberclaude
andauthored
Add authorization event and webhook types (#551)
* 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 <noreply@anthropic.com> * Distinct type for organization role events * mypy --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent d7496b7 commit bab991a

6 files changed

Lines changed: 93 additions & 1 deletion

File tree

‎workos/types/authorization/__init__.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
)
55
from workos.types.authorization.organization_role import (
66
OrganizationRole as OrganizationRole,
7+
OrganizationRoleEvent as OrganizationRoleEvent,
78
OrganizationRoleList as OrganizationRoleList,
89
)
910
from workos.types.authorization.permission import (

‎workos/types/authorization/organization_role.py‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
class OrganizationRole(WorkOSModel):
77
object: Literal["role"]
88
id: str
9-
organization_id: str
109
name: str
1110
slug: str
1211
description: Optional[str] = None
@@ -16,6 +15,20 @@ class OrganizationRole(WorkOSModel):
1615
updated_at: str
1716

1817

18+
class OrganizationRoleEvent(WorkOSModel):
19+
"""Organization role type for Events API responses."""
20+
21+
object: Literal["organization_role"]
22+
organization_id: str
23+
slug: str
24+
name: str
25+
description: Optional[str] = None
26+
resource_type_slug: str
27+
permissions: Sequence[str]
28+
created_at: str
29+
updated_at: str
30+
31+
1932
class OrganizationRoleList(WorkOSModel):
2033
object: Literal["list"]
2134
data: Sequence[OrganizationRole]

‎workos/types/events/event.py‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
from workos.types.events.directory_user_with_previous_attributes import (
3333
DirectoryUserWithPreviousAttributes,
3434
)
35+
from workos.types.authorization.organization_role import OrganizationRoleEvent
36+
from workos.types.authorization.permission import Permission
3537
from workos.types.events.event_model import EventModel
3638
from workos.types.events.organization_domain_verification_failed_payload import (
3739
OrganizationDomainVerificationFailedPayload,
@@ -225,6 +227,18 @@ class OrganizationMembershipUpdatedEvent(EventModel[OrganizationMembership]):
225227
event: Literal["organization_membership.updated"]
226228

227229

230+
class OrganizationRoleCreatedEvent(EventModel[OrganizationRoleEvent]):
231+
event: Literal["organization_role.created"]
232+
233+
234+
class OrganizationRoleUpdatedEvent(EventModel[OrganizationRoleEvent]):
235+
event: Literal["organization_role.updated"]
236+
237+
238+
class OrganizationRoleDeletedEvent(EventModel[OrganizationRoleEvent]):
239+
event: Literal["organization_role.deleted"]
240+
241+
228242
class PasswordResetCreatedEvent(EventModel[PasswordResetCommon]):
229243
event: Literal["password_reset.created"]
230244

@@ -233,6 +247,18 @@ class PasswordResetSucceededEvent(EventModel[PasswordResetCommon]):
233247
event: Literal["password_reset.succeeded"]
234248

235249

250+
class PermissionCreatedEvent(EventModel[Permission]):
251+
event: Literal["permission.created"]
252+
253+
254+
class PermissionUpdatedEvent(EventModel[Permission]):
255+
event: Literal["permission.updated"]
256+
257+
258+
class PermissionDeletedEvent(EventModel[Permission]):
259+
event: Literal["permission.deleted"]
260+
261+
236262
class RoleCreatedEvent(EventModel[EventRole]):
237263
event: Literal["role.created"]
238264

@@ -302,8 +328,14 @@ class UserUpdatedEvent(EventModel[User]):
302328
OrganizationMembershipCreatedEvent,
303329
OrganizationMembershipDeletedEvent,
304330
OrganizationMembershipUpdatedEvent,
331+
OrganizationRoleCreatedEvent,
332+
OrganizationRoleUpdatedEvent,
333+
OrganizationRoleDeletedEvent,
305334
PasswordResetCreatedEvent,
306335
PasswordResetSucceededEvent,
336+
PermissionCreatedEvent,
337+
PermissionUpdatedEvent,
338+
PermissionDeletedEvent,
307339
RoleCreatedEvent,
308340
RoleDeletedEvent,
309341
RoleUpdatedEvent,

‎workos/types/events/event_model.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
from workos.types.events.session_created_payload import SessionCreatedPayload
3939
from workos.types.organizations.organization_common import OrganizationCommon
4040
from workos.types.organization_domains import OrganizationDomain
41+
from workos.types.authorization.organization_role import (
42+
OrganizationRole,
43+
OrganizationRoleEvent,
44+
)
45+
from workos.types.authorization.permission import Permission
4146
from workos.types.roles.role import EventRole
4247
from workos.types.sso.connection import Connection
4348
from workos.types.user_management.email_verification import (
@@ -79,7 +84,10 @@
7984
OrganizationDomain,
8085
OrganizationDomainVerificationFailedPayload,
8186
OrganizationMembership,
87+
OrganizationRole,
88+
OrganizationRoleEvent,
8289
PasswordResetCommon,
90+
Permission,
8391
SessionCreatedPayload,
8492
User,
8593
)

‎workos/types/events/event_type.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@
4444
"organization_membership.created",
4545
"organization_membership.deleted",
4646
"organization_membership.updated",
47+
"organization_role.created",
48+
"organization_role.updated",
49+
"organization_role.deleted",
4750
"password_reset.created",
4851
"password_reset.succeeded",
52+
"permission.created",
53+
"permission.updated",
54+
"permission.deleted",
4955
"role.created",
5056
"role.deleted",
5157
"role.updated",

‎workos/types/webhooks/webhook.py‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
OrganizationDomainVerificationFailedPayload,
3838
)
3939
from workos.types.events.session_created_payload import SessionCreatedPayload
40+
from workos.types.authorization.organization_role import OrganizationRole
41+
from workos.types.authorization.permission import Permission
4042
from workos.types.organization_domains import OrganizationDomain
4143
from workos.types.organizations.organization_common import OrganizationCommon
4244
from workos.types.roles.role import EventRole
@@ -231,6 +233,18 @@ class OrganizationMembershipUpdatedWebhook(WebhookModel[OrganizationMembership])
231233
event: Literal["organization_membership.updated"]
232234

233235

236+
class OrganizationRoleCreatedWebhook(WebhookModel[OrganizationRole]):
237+
event: Literal["organization_role.created"]
238+
239+
240+
class OrganizationRoleUpdatedWebhook(WebhookModel[OrganizationRole]):
241+
event: Literal["organization_role.updated"]
242+
243+
244+
class OrganizationRoleDeletedWebhook(WebhookModel[OrganizationRole]):
245+
event: Literal["organization_role.deleted"]
246+
247+
234248
class PasswordResetCreatedWebhook(WebhookModel[PasswordResetCommon]):
235249
event: Literal["password_reset.created"]
236250

@@ -239,6 +253,18 @@ class PasswordResetSucceededWebhook(WebhookModel[PasswordResetCommon]):
239253
event: Literal["password_reset.succeeded"]
240254

241255

256+
class PermissionCreatedWebhook(WebhookModel[Permission]):
257+
event: Literal["permission.created"]
258+
259+
260+
class PermissionUpdatedWebhook(WebhookModel[Permission]):
261+
event: Literal["permission.updated"]
262+
263+
264+
class PermissionDeletedWebhook(WebhookModel[Permission]):
265+
event: Literal["permission.deleted"]
266+
267+
242268
class RoleCreatedWebhook(WebhookModel[EventRole]):
243269
event: Literal["role.created"]
244270

@@ -308,8 +334,14 @@ class UserUpdatedWebhook(WebhookModel[User]):
308334
OrganizationMembershipCreatedWebhook,
309335
OrganizationMembershipDeletedWebhook,
310336
OrganizationMembershipUpdatedWebhook,
337+
OrganizationRoleCreatedWebhook,
338+
OrganizationRoleUpdatedWebhook,
339+
OrganizationRoleDeletedWebhook,
311340
PasswordResetCreatedWebhook,
312341
PasswordResetSucceededWebhook,
342+
PermissionCreatedWebhook,
343+
PermissionUpdatedWebhook,
344+
PermissionDeletedWebhook,
313345
RoleCreatedWebhook,
314346
RoleDeletedWebhook,
315347
RoleUpdatedWebhook,

0 commit comments

Comments
 (0)