Skip to content

Commit

Permalink
Add organization domain events (#1123)
Browse files Browse the repository at this point in the history
## Description
Adds the `organization_domain.verified` and
`organization_domain.verification_failed` events.


## Documentation

Does this require changes to the WorkOS Docs? E.g. the [API
Reference](https://workos.com/docs/reference) or code snippets need
updates.

```
[ ] Yes
```

If yes, link a related docs PR and add a docs maintainer as a reviewer.
Their approval is required.
  • Loading branch information
PaulAsjes committed Sep 13, 2024
1 parent 03a6d0e commit f458828
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 2 deletions.
46 changes: 44 additions & 2 deletions src/common/interfaces/event.interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ import {
RoleEvent,
RoleEventResponse,
} from '../../roles/interfaces/role.interface';
import {
OrganizationDomain,
OrganizationDomainResponse,
} from '../../organization-domains/interfaces';

export interface EventBase {
id: string;
Expand Down Expand Up @@ -500,6 +504,16 @@ export interface RoleDeletedEventResponse extends EventResponseBase {
data: RoleEventResponse;
}

export interface RoleUpdatedEvent extends EventBase {
event: 'role.updated';
data: RoleEvent;
}

export interface RoleUpdatedEventResponse extends EventResponseBase {
event: 'role.updated';
data: RoleEventResponse;
}

export interface SessionCreatedEvent extends EventBase {
event: 'session.created';
data: Session;
Expand All @@ -510,6 +524,28 @@ export interface SessionCreatedEventResponse extends EventResponseBase {
data: SessionResponse;
}

export interface OrganizationDomainVerifiedEvent extends EventBase {
event: 'organization_domain.verified';
data: OrganizationDomain;
}

export interface OrganizationDomainVerifiedEventResponse
extends EventResponseBase {
event: 'organization_domain.verified';
data: OrganizationDomainResponse;
}

export interface OrganizationDomainVerificationFailedEvent extends EventBase {
event: 'organization_domain.verification_failed';
data: OrganizationDomain;
}

export interface OrganizationDomainVerificationFailedEventResponse
extends EventResponseBase {
event: 'organization_domain.verification_failed';
data: OrganizationDomainResponse;
}

export type Event =
| AuthenticationEmailVerificationSucceededEvent
| AuthenticationMfaSucceededEvent
Expand Down Expand Up @@ -549,10 +585,13 @@ export type Event =
| OrganizationMembershipRemoved
| RoleCreatedEvent
| RoleDeletedEvent
| RoleUpdatedEvent
| SessionCreatedEvent
| OrganizationCreatedEvent
| OrganizationUpdatedEvent
| OrganizationDeletedEvent;
| OrganizationDeletedEvent
| OrganizationDomainVerifiedEvent
| OrganizationDomainVerificationFailedEvent;

export type EventResponse =
| AuthenticationEmailVerificationSucceededEventResponse
Expand Down Expand Up @@ -593,9 +632,12 @@ export type EventResponse =
| OrganizationMembershipRemovedResponse
| RoleCreatedEventResponse
| RoleDeletedEventResponse
| RoleUpdatedEventResponse
| SessionCreatedEventResponse
| OrganizationCreatedResponse
| OrganizationUpdatedResponse
| OrganizationDeletedResponse;
| OrganizationDeletedResponse
| OrganizationDomainVerifiedEventResponse
| OrganizationDomainVerificationFailedEventResponse;

export type EventName = Event['event'];
9 changes: 9 additions & 0 deletions src/common/serializers/event.serializer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
deserializePasswordResetEvent,
deserializeUser,
} from '../../user-management/serializers';
import { deserializeOrganizationDomain } from '../../organization-domains/serializers/organization-domain.serializer';
import { deserializeOrganizationMembership } from '../../user-management/serializers/organization-membership.serializer';
import { deserializeRole } from '../../user-management/serializers/role.serializer';
import { deserializeSession } from '../../user-management/serializers/session.serializer';
Expand Down Expand Up @@ -145,6 +146,7 @@ export const deserializeEvent = (event: EventResponse): Event => {
};
case 'role.created':
case 'role.deleted':
case 'role.updated':
return {
...eventBase,
event: event.event,
Expand All @@ -164,5 +166,12 @@ export const deserializeEvent = (event: EventResponse): Event => {
event: event.event,
data: deserializeOrganization(event.data),
};
case 'organization_domain.verified':
case 'organization_domain.verification_failed':
return {
...eventBase,
event: event.event,
data: deserializeOrganizationDomain(event.data),
};
}
};

0 comments on commit f458828

Please sign in to comment.