feat: make vault events available in SDK#588
Open
vivekkhimani wants to merge 4 commits intoworkos:mainfrom
Open
feat: make vault events available in SDK#588vivekkhimani wants to merge 4 commits intoworkos:mainfrom
vivekkhimani wants to merge 4 commits intoworkos:mainfrom
Conversation
vivekkhimani
commented
Mar 12, 2026
| id: str | ||
| object: Literal["organization"] | ||
| name: str | ||
| external_id: Optional[str] = None |
Contributor
Author
There was a problem hiding this comment.
Let me know if you all disagree moving this up in OrganizationCommon
Contributor
Greptile SummaryThis PR expands the Events module with 9 new Vault event types, and fixes two pre-existing gaps in Key changes:
Confidence Score: 4/5
Important Files Changed
Class Diagram%%{init: {'theme': 'neutral'}}%%
classDiagram
class WorkOSModel
class EventModel~T~ {
+str id
+Literal["event"] object
+T data
+str created_at
}
class VaultNamesListedPayload {
+str actor_id
+str actor_source
+str actor_name
}
class VaultDataDeletedPayload {
+str actor_id
+str actor_source
+str actor_name
+str kv_name
}
class VaultDekDecryptedPayload {
+str actor_id
+str actor_source
+str actor_name
+str key_id
}
class VaultDataReadPayload {
+str actor_id
+str actor_source
+str actor_name
+str kv_name
+str key_id
}
class VaultDataCreatedPayload {
+str actor_id
+str actor_source
+str actor_name
+str kv_name
+str key_id
+Optional~KeyContext~ key_context
}
class VaultDekReadPayload {
+str actor_id
+str actor_source
+str actor_name
+List~str~ key_ids
+Optional~KeyContext~ key_context
}
class VaultKekCreatedPayload {
+str actor_id
+str actor_source
+str actor_name
+str key_name
+str key_id
}
WorkOSModel <|-- VaultNamesListedPayload
WorkOSModel <|-- VaultDataDeletedPayload
WorkOSModel <|-- VaultDekDecryptedPayload
WorkOSModel <|-- VaultDataReadPayload
WorkOSModel <|-- VaultDataCreatedPayload
WorkOSModel <|-- VaultDekReadPayload
WorkOSModel <|-- VaultKekCreatedPayload
EventModel~VaultNamesListedPayload~ <|-- VaultNamesListedEvent : event = "vault.names.listed"
EventModel~VaultDataDeletedPayload~ <|-- VaultDataDeletedEvent : event = "vault.data.deleted"
EventModel~VaultDataDeletedPayload~ <|-- VaultMetadataReadEvent : event = "vault.metadata.read"
EventModel~VaultDekDecryptedPayload~ <|-- VaultDekDecryptedEvent : event = "vault.dek.decrypted"
EventModel~VaultDataReadPayload~ <|-- VaultDataReadEvent : event = "vault.data.read"
EventModel~VaultDataCreatedPayload~ <|-- VaultDataCreatedEvent : event = "vault.data.created"
EventModel~VaultDataCreatedPayload~ <|-- VaultDataUpdatedEvent : event = "vault.data.updated"
EventModel~VaultDekReadPayload~ <|-- VaultDekReadEvent : event = "vault.dek.read"
EventModel~VaultKekCreatedPayload~ <|-- VaultKekCreatedEvent : event = "vault.kek.created"
Last reviewed commit: da8c1e8 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
vault.data.createdvault.data.deletedvault.data.readvault.data.updatedvault.dek.decryptedvault.dek.readvault.kek.createdvault.metadata.readvault.names.listedEventRolemissingcreated_at/updated_atfields that the API returns on role eventsOrganizationCommonmissingexternal_idfield that the API returns on organization events(it previously existed only on the
Organizationsubclass, not on the event payload model)Closes #573
Vault event details
Seven payload classes cover all nine events. Where two events share the same shape, they reuse a payload class (following the same pattern as
ConnectionPayloadWithLegacyFields, which is used for bothconnection.activatedandconnection.deactivated).Shared payload mappings:
VaultDataCreatedPayloadvault.data.createdvault.data.updatedVaultDataDeletedPayloadvault.data.deletedvault.metadata.readAll payloads were verified against:
https://workos.com/docs/events#vault
Existing event fixes
While auditing Vault events against the docs, every other event type was also reviewed. Two gaps were identified and fixed (please let me know if you want to not do it as a part of this PR):
1.
EventRoleEventRolewas missing the fields:created_atupdated_atBoth were added as
Optional[str]to remain consistent with the SDK’s defensive typing approach and avoid breaking existing consumers.2.
OrganizationCommonOrganizationCommonwas missing theexternal_idfield.Changes made:
external_idfromOrganization(where it already existed) intoOrganizationCommonOrganizationThis ensures organization event payloads include
external_id.Test plan
data.createdwithkey_contextdek.readwithkey_idsnames.listedwith actor-only fieldsuv run ruff format . && uv run ruff check .passesuv run mypypasses (strict mode, 163 source files)Documentation
Does this require changes to the WorkOS Docs? E.g. the API Reference or code snippets need updates.
If yes, link a related docs PR and add a docs maintainer as a reviewer. Their approval is required.