Skip to content

Commit 75322fb

Browse files
vivekkhimanigjtorikianclaude
authored
feat: make vault events available in SDK (#588)
Co-authored-by: Garen J. Torikian <gjtorikian@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 865aeb5 commit 75322fb

File tree

9 files changed

+534
-2
lines changed

9 files changed

+534
-2
lines changed

src/workos/types/events/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@
1313
from .organization_domain_verification_failed_payload import *
1414
from .previous_attributes import *
1515
from .session_payload import *
16+
from .vault_payload import *

src/workos/types/events/event.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,17 @@
5353
SessionCreatedPayload,
5454
SessionRevokedPayload,
5555
)
56+
from workos.types.events.vault_payload import (
57+
VaultDataCreatedPayload,
58+
VaultDataDeletedPayload,
59+
VaultDataReadPayload,
60+
VaultDataUpdatedPayload,
61+
VaultDekDecryptedPayload,
62+
VaultDekReadPayload,
63+
VaultKekCreatedPayload,
64+
VaultMetadataReadPayload,
65+
VaultNamesListedPayload,
66+
)
5667
from workos.types.organizations.organization_common import OrganizationCommon
5768
from workos.types.organization_domains import OrganizationDomain
5869
from workos.types.roles.role import EventRole
@@ -372,6 +383,42 @@ class UserUpdatedEvent(EventModel[User]):
372383
event: Literal["user.updated"]
373384

374385

386+
class VaultDataCreatedEvent(EventModel[VaultDataCreatedPayload]):
387+
event: Literal["vault.data.created"]
388+
389+
390+
class VaultDataDeletedEvent(EventModel[VaultDataDeletedPayload]):
391+
event: Literal["vault.data.deleted"]
392+
393+
394+
class VaultDataReadEvent(EventModel[VaultDataReadPayload]):
395+
event: Literal["vault.data.read"]
396+
397+
398+
class VaultDataUpdatedEvent(EventModel[VaultDataUpdatedPayload]):
399+
event: Literal["vault.data.updated"]
400+
401+
402+
class VaultDekDecryptedEvent(EventModel[VaultDekDecryptedPayload]):
403+
event: Literal["vault.dek.decrypted"]
404+
405+
406+
class VaultDekReadEvent(EventModel[VaultDekReadPayload]):
407+
event: Literal["vault.dek.read"]
408+
409+
410+
class VaultKekCreatedEvent(EventModel[VaultKekCreatedPayload]):
411+
event: Literal["vault.kek.created"]
412+
413+
414+
class VaultMetadataReadEvent(EventModel[VaultMetadataReadPayload]):
415+
event: Literal["vault.metadata.read"]
416+
417+
418+
class VaultNamesListedEvent(EventModel[VaultNamesListedPayload]):
419+
event: Literal["vault.names.listed"]
420+
421+
375422
Event = Annotated[
376423
Union[
377424
ApiKeyCreatedEvent,
@@ -443,6 +490,15 @@ class UserUpdatedEvent(EventModel[User]):
443490
UserCreatedEvent,
444491
UserDeletedEvent,
445492
UserUpdatedEvent,
493+
VaultDataCreatedEvent,
494+
VaultDataDeletedEvent,
495+
VaultDataReadEvent,
496+
VaultDataUpdatedEvent,
497+
VaultDekDecryptedEvent,
498+
VaultDekReadEvent,
499+
VaultKekCreatedEvent,
500+
VaultMetadataReadEvent,
501+
VaultNamesListedEvent,
446502
],
447503
Field(..., discriminator="event"),
448504
]

src/workos/types/events/event_model.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@
5050
SessionCreatedPayload,
5151
SessionRevokedPayload,
5252
)
53+
from workos.types.events.vault_payload import (
54+
VaultDataCreatedPayload,
55+
VaultDataDeletedPayload,
56+
VaultDataReadPayload,
57+
VaultDataUpdatedPayload,
58+
VaultDekDecryptedPayload,
59+
VaultDekReadPayload,
60+
VaultKekCreatedPayload,
61+
VaultMetadataReadPayload,
62+
VaultNamesListedPayload,
63+
)
5364
from workos.types.organizations.organization_common import OrganizationCommon
5465
from workos.types.organization_domains import OrganizationDomain
5566
from workos.types.authorization.organization_role import OrganizationRoleEvent
@@ -110,6 +121,15 @@
110121
SessionCreatedPayload,
111122
SessionRevokedPayload,
112123
User,
124+
VaultDataCreatedPayload,
125+
VaultDataDeletedPayload,
126+
VaultDataReadPayload,
127+
VaultDataUpdatedPayload,
128+
VaultDekDecryptedPayload,
129+
VaultDekReadPayload,
130+
VaultKekCreatedPayload,
131+
VaultMetadataReadPayload,
132+
VaultNamesListedPayload,
113133
)
114134

115135

src/workos/types/events/event_type.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,15 @@
7474
"user.created",
7575
"user.deleted",
7676
"user.updated",
77+
"vault.data.created",
78+
"vault.data.deleted",
79+
"vault.data.read",
80+
"vault.data.updated",
81+
"vault.dek.decrypted",
82+
"vault.dek.read",
83+
"vault.kek.created",
84+
"vault.metadata.read",
85+
"vault.names.listed",
7786
]
7887

7988
EventTypeDiscriminator = TypeVar("EventTypeDiscriminator", bound=EventType)
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
from typing import List, Optional
2+
3+
from workos.types.vault.key import KeyContext
4+
from workos.types.workos_model import WorkOSModel
5+
6+
7+
class VaultNamesListedPayload(WorkOSModel):
8+
actor_id: str
9+
actor_source: str
10+
actor_name: str
11+
12+
13+
class VaultDataDeletedPayload(WorkOSModel):
14+
actor_id: str
15+
actor_source: str
16+
actor_name: str
17+
kv_name: str
18+
19+
20+
class VaultDekDecryptedPayload(WorkOSModel):
21+
actor_id: str
22+
actor_source: str
23+
actor_name: str
24+
key_id: str
25+
26+
27+
class VaultDataReadPayload(WorkOSModel):
28+
actor_id: str
29+
actor_source: str
30+
actor_name: str
31+
kv_name: str
32+
key_id: str
33+
34+
35+
class VaultDataCreatedPayload(WorkOSModel):
36+
actor_id: str
37+
actor_source: str
38+
actor_name: str
39+
kv_name: str
40+
key_id: str
41+
key_context: Optional[KeyContext] = None
42+
43+
44+
class VaultDekReadPayload(WorkOSModel):
45+
actor_id: str
46+
actor_source: str
47+
actor_name: str
48+
key_ids: List[str]
49+
key_context: Optional[KeyContext] = None
50+
51+
52+
class VaultKekCreatedPayload(WorkOSModel):
53+
actor_id: str
54+
actor_source: str
55+
actor_name: str
56+
key_name: str
57+
key_id: str
58+
59+
60+
class VaultDataUpdatedPayload(VaultDataCreatedPayload):
61+
pass
62+
63+
64+
class VaultMetadataReadPayload(VaultDataDeletedPayload):
65+
pass

src/workos/types/organizations/organization.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,4 @@ class Organization(OrganizationCommon):
99
allow_profiles_outside_organization: bool
1010
domains: Sequence[OrganizationDomain]
1111
stripe_customer_id: Optional[str] = None
12-
external_id: Optional[str] = None
1312
metadata: Metadata = field(default_factory=dict)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Literal, Sequence
1+
from typing import Literal, Optional, Sequence
22
from workos.types.workos_model import WorkOSModel
33
from workos.types.organization_domains import OrganizationDomain
44

@@ -7,6 +7,7 @@ class OrganizationCommon(WorkOSModel):
77
id: str
88
object: Literal["organization"]
99
name: str
10+
external_id: Optional[str] = None
1011
domains: Sequence[OrganizationDomain]
1112
created_at: str
1213
updated_at: str

src/workos/types/roles/role.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ class RoleCommon(WorkOSModel):
1111

1212
class EventRole(RoleCommon):
1313
permissions: Optional[Sequence[str]] = None
14+
created_at: Optional[str] = None
15+
updated_at: Optional[str] = None
1416

1517

1618
class Role(RoleCommon):

0 commit comments

Comments
 (0)