@workos-inc/node 3.0.0-alpha.2 → 3.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/lib/audit-trail/audit-trail.d.ts +2 -2
  2. package/lib/common/interfaces/at-least-one-property-of.interface.d.ts +7 -0
  3. package/lib/common/interfaces/event.interface.d.ts +142 -0
  4. package/lib/common/interfaces/index.d.ts +2 -0
  5. package/lib/common/interfaces/index.js +2 -0
  6. package/lib/common/interfaces/list.interface.d.ts +2 -2
  7. package/lib/common/serializers/event.serializer.js +40 -0
  8. package/lib/common/serializers/index.d.ts +1 -0
  9. package/lib/common/serializers/index.js +1 -0
  10. package/lib/common/serializers/list.serializer.d.ts +2 -2
  11. package/lib/directory-sync/directory-sync.d.ts +5 -5
  12. package/lib/directory-sync/directory-sync.spec.js +2 -0
  13. package/lib/directory-sync/interfaces/directory-group.interface.d.ts +20 -0
  14. package/lib/directory-sync/interfaces/directory-user.interface.d.ts +2 -0
  15. package/lib/directory-sync/interfaces/directory.interface.d.ts +34 -2
  16. package/lib/directory-sync/interfaces/list-groups-options.interface.d.ts +1 -1
  17. package/lib/directory-sync/serializers/directory-group.serializer.d.ts +3 -1
  18. package/lib/directory-sync/serializers/directory-group.serializer.js +24 -1
  19. package/lib/directory-sync/serializers/directory-user.serializer.d.ts +1 -0
  20. package/lib/directory-sync/serializers/directory-user.serializer.js +21 -1
  21. package/lib/directory-sync/serializers/directory.serializer.d.ts +3 -1
  22. package/lib/directory-sync/serializers/directory.serializer.js +25 -1
  23. package/lib/directory-sync/utils/get-primary-email.spec.js +1 -0
  24. package/lib/events/events.d.ts +2 -3
  25. package/lib/events/events.js +1 -2
  26. package/lib/events/events.spec.js +22 -4
  27. package/lib/events/interfaces/index.d.ts +0 -1
  28. package/lib/events/interfaces/index.js +0 -1
  29. package/lib/events/interfaces/list-events-options.interface.d.ts +2 -2
  30. package/lib/index.d.ts +0 -1
  31. package/lib/index.js +0 -1
  32. package/lib/organizations/organizations.d.ts +2 -2
  33. package/lib/sso/interfaces/connection.interface.d.ts +0 -8
  34. package/lib/sso/serializers/connection.serializer.js +0 -1
  35. package/lib/sso/sso.d.ts +2 -2
  36. package/lib/sso/sso.spec.js +0 -1
  37. package/lib/users/fixtures/list-users.json +0 -1
  38. package/lib/users/fixtures/session.json +2 -0
  39. package/lib/users/fixtures/user.json +0 -1
  40. package/lib/users/interfaces/session.interface.d.ts +29 -0
  41. package/lib/users/interfaces/update-user-options.interface.d.ts +8 -3
  42. package/lib/users/interfaces/user.interface.d.ts +0 -18
  43. package/lib/users/serializers/session.serializer.d.ts +3 -1
  44. package/lib/users/serializers/session.serializer.js +13 -1
  45. package/lib/users/serializers/user.serializer.js +2 -9
  46. package/lib/users/users.d.ts +2 -2
  47. package/lib/users/users.spec.js +20 -2
  48. package/lib/webhooks/fixtures/webhook.json +67 -1
  49. package/lib/webhooks/webhooks.d.ts +2 -2
  50. package/lib/webhooks/webhooks.js +2 -1
  51. package/lib/webhooks/webhooks.spec.js +8 -6
  52. package/lib/workos.js +1 -1
  53. package/package.json +1 -1
  54. package/lib/events/interfaces/event.interface.d.ts +0 -66
  55. package/lib/events/serializers/event.serializer.js +0 -10
  56. package/lib/webhooks/interfaces/index.d.ts +0 -4
  57. package/lib/webhooks/interfaces/index.js +0 -20
  58. package/lib/webhooks/interfaces/webhook-directory-group.interface.d.ts +0 -10
  59. package/lib/webhooks/interfaces/webhook-directory-user.interface.d.ts +0 -5
  60. package/lib/webhooks/interfaces/webhook-directory-user.interface.js +0 -2
  61. package/lib/webhooks/interfaces/webhook-directory.interface.d.ts +0 -20
  62. package/lib/webhooks/interfaces/webhook-directory.interface.js +0 -2
  63. package/lib/webhooks/interfaces/webhook.interface.d.ts +0 -74
  64. package/lib/webhooks/interfaces/webhook.interface.js +0 -2
  65. /package/lib/{events/interfaces/event.interface.js → common/interfaces/at-least-one-property-of.interface.js} +0 -0
  66. /package/lib/{webhooks/interfaces/webhook-directory-group.interface.js → common/interfaces/event.interface.js} +0 -0
  67. /package/lib/{events → common}/serializers/event.serializer.d.ts +0 -0
@@ -1,12 +1,12 @@
1
1
  import { CreateEventOptions } from './interfaces/create-event-options.interface';
2
2
  import { AuditTrailEvent } from './interfaces/event.interface';
3
3
  import { EventOptions } from './interfaces/event-options.interface';
4
- import { List } from '../common/interfaces/list.interface';
4
+ import { ListResponse } from '../common/interfaces';
5
5
  import { ListEventsOptions } from './interfaces/list-events-options.interface';
6
6
  import { WorkOS } from '../workos';
7
7
  export declare class AuditTrail {
8
8
  private readonly workos;
9
9
  constructor(workos: WorkOS);
10
10
  createEvent(event: EventOptions, { idempotencyKey }?: CreateEventOptions): Promise<void>;
11
- listEvents(options?: ListEventsOptions): Promise<List<AuditTrailEvent>>;
11
+ listEvents(options?: ListEventsOptions): Promise<ListResponse<AuditTrailEvent>>;
12
12
  }
@@ -0,0 +1,7 @@
1
+ export type AtLeastOnePropertyOf<T> = {
2
+ [K in keyof T]: {
3
+ [L in K]: T[L];
4
+ } & {
5
+ [L in Exclude<keyof T, K>]?: T[L];
6
+ };
7
+ }[keyof T];
@@ -0,0 +1,142 @@
1
+ import { DirectoryUser, DirectoryUserResponse, EventDirectory, EventDirectoryGroup, EventDirectoryGroupResponse, EventDirectoryResponse } from '../../directory-sync/interfaces';
2
+ import { Connection, ConnectionResponse } from '../../sso/interfaces';
3
+ export interface EventBase {
4
+ id: string;
5
+ createdAt: string;
6
+ }
7
+ interface EventResponseBase {
8
+ id: string;
9
+ created_at: string;
10
+ }
11
+ export interface ConnectionActivatedEvent extends EventBase {
12
+ event: 'connection.activated';
13
+ data: Connection;
14
+ }
15
+ export interface ConnectionActivatedEventResponse extends EventResponseBase {
16
+ event: 'connection.activated';
17
+ data: ConnectionResponse;
18
+ }
19
+ export interface ConnectionDeactivatedEvent extends EventBase {
20
+ event: 'connection.deactivated';
21
+ data: Connection;
22
+ }
23
+ export interface ConnectionDeactivatedEventResponse extends EventResponseBase {
24
+ event: 'connection.deactivated';
25
+ data: ConnectionResponse;
26
+ }
27
+ export interface ConnectionDeletedEvent extends EventBase {
28
+ event: 'connection.deleted';
29
+ data: Connection;
30
+ }
31
+ export interface ConnectionDeletedEventResponse extends EventResponseBase {
32
+ event: 'connection.deleted';
33
+ data: ConnectionResponse;
34
+ }
35
+ export interface DsyncActivatedEvent extends EventBase {
36
+ event: 'dsync.activated';
37
+ data: EventDirectory;
38
+ }
39
+ export interface DsyncActivatedEventResponse extends EventResponseBase {
40
+ event: 'dsync.activated';
41
+ data: EventDirectoryResponse;
42
+ }
43
+ export interface DsyncDeactivatedEvent extends EventBase {
44
+ event: 'dsync.deactivated';
45
+ data: EventDirectory;
46
+ }
47
+ export interface DsyncDeactivatedEventResponse extends EventResponseBase {
48
+ event: 'dsync.deactivated';
49
+ data: EventDirectoryResponse;
50
+ }
51
+ export interface DsyncDeletedEvent extends EventBase {
52
+ event: 'dsync.deleted';
53
+ data: Omit<EventDirectory, 'domains' | 'externalKey'>;
54
+ }
55
+ export interface DsyncDeletedEventResponse extends EventResponseBase {
56
+ event: 'dsync.deleted';
57
+ data: Omit<EventDirectoryResponse, 'domains' | 'external_key'>;
58
+ }
59
+ export interface DsyncGroupCreatedEvent extends EventBase {
60
+ event: 'dsync.group.created';
61
+ data: EventDirectoryGroup;
62
+ }
63
+ export interface DsyncGroupCreatedEventResponse extends EventResponseBase {
64
+ event: 'dsync.group.created';
65
+ data: EventDirectoryGroupResponse;
66
+ }
67
+ export interface DsyncGroupDeletedEvent extends EventBase {
68
+ event: 'dsync.group.deleted';
69
+ data: EventDirectoryGroup;
70
+ }
71
+ export interface DsyncGroupDeletedEventResponse extends EventResponseBase {
72
+ event: 'dsync.group.deleted';
73
+ data: EventDirectoryGroupResponse;
74
+ }
75
+ export interface DsyncGroupUpdatedEvent extends EventBase {
76
+ event: 'dsync.group.updated';
77
+ data: EventDirectoryGroup & Record<'previousAttributes', any>;
78
+ }
79
+ export interface DsyncGroupUpdatedEventResponse extends EventResponseBase {
80
+ event: 'dsync.group.updated';
81
+ data: EventDirectoryGroupResponse & Record<'previous_attributes', any>;
82
+ }
83
+ export interface DsyncGroupUserAddedEvent extends EventBase {
84
+ event: 'dsync.group.user_added';
85
+ data: {
86
+ directoryId: string;
87
+ user: DirectoryUser;
88
+ group: Pick<EventDirectoryGroup, 'id' | 'name'>;
89
+ };
90
+ }
91
+ export interface DsyncGroupUserAddedEventResponse extends EventResponseBase {
92
+ event: 'dsync.group.user_added';
93
+ data: {
94
+ directory_id: string;
95
+ user: DirectoryUserResponse;
96
+ group: Pick<EventDirectoryGroupResponse, 'id' | 'name'>;
97
+ };
98
+ }
99
+ export interface DsyncGroupUserRemovedEvent extends EventBase {
100
+ event: 'dsync.group.user_removed';
101
+ data: {
102
+ directoryId: string;
103
+ user: DirectoryUser;
104
+ group: Pick<EventDirectoryGroup, 'id' | 'name'>;
105
+ };
106
+ }
107
+ export interface DsyncGroupUserRemovedEventResponse extends EventResponseBase {
108
+ event: 'dsync.group.user_removed';
109
+ data: {
110
+ directory_id: string;
111
+ user: DirectoryUserResponse;
112
+ group: Pick<EventDirectoryGroupResponse, 'id' | 'name'>;
113
+ };
114
+ }
115
+ export interface DsyncUserCreatedEvent extends EventBase {
116
+ event: 'dsync.user.created';
117
+ data: DirectoryUser;
118
+ }
119
+ export interface DsyncUserCreatedEventResponse extends EventResponseBase {
120
+ event: 'dsync.user.created';
121
+ data: DirectoryUserResponse;
122
+ }
123
+ export interface DsyncUserDeletedEvent extends EventBase {
124
+ event: 'dsync.user.deleted';
125
+ data: DirectoryUser;
126
+ }
127
+ export interface DsyncUserDeletedEventResponse extends EventResponseBase {
128
+ event: 'dsync.user.deleted';
129
+ data: DirectoryUserResponse;
130
+ }
131
+ export interface DsyncUserUpdatedEvent extends EventBase {
132
+ event: 'dsync.user.updated';
133
+ data: DirectoryUser & Record<'previousAttributes', any>;
134
+ }
135
+ export interface DsyncUserUpdatedEventResponse extends EventResponseBase {
136
+ event: 'dsync.user.updated';
137
+ data: DirectoryUserResponse & Record<'previous_attributes', any>;
138
+ }
139
+ export type Event = ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent;
140
+ export type EventResponse = ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse;
141
+ export type EventName = 'connection.activated' | 'connection.deactivated' | 'connection.deleted' | 'dsync.activated' | 'dsync.deactivated' | 'dsync.deleted' | 'dsync.group.created' | 'dsync.group.deleted' | 'dsync.group.updated' | 'dsync.group.user_added' | 'dsync.group.user_removed' | 'dsync.user.created' | 'dsync.user.deleted' | 'dsync.user.updated';
142
+ export {};
@@ -1,3 +1,5 @@
1
+ export * from './at-least-one-property-of.interface';
2
+ export * from './event.interface';
1
3
  export * from './get-options.interface';
2
4
  export * from './list.interface';
3
5
  export * from './post-options.interface';
@@ -14,6 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./at-least-one-property-of.interface"), exports);
18
+ __exportStar(require("./event.interface"), exports);
17
19
  __exportStar(require("./get-options.interface"), exports);
18
20
  __exportStar(require("./list.interface"), exports);
19
21
  __exportStar(require("./post-options.interface"), exports);
@@ -1,4 +1,4 @@
1
- export interface List<T> {
1
+ export interface ListResponse<T> {
2
2
  readonly object: 'list';
3
3
  data: T[];
4
4
  list_metadata: {
@@ -6,7 +6,7 @@ export interface List<T> {
6
6
  after?: string;
7
7
  };
8
8
  }
9
- export interface DeserializedList<T> {
9
+ export interface List<T> {
10
10
  readonly object: 'list';
11
11
  data: T[];
12
12
  listMetadata: {
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeEvent = void 0;
4
+ const serializers_1 = require("../../directory-sync/serializers");
5
+ const serializers_2 = require("../../sso/serializers");
6
+ const deserializeEvent = (event) => {
7
+ const eventBase = {
8
+ id: event.id,
9
+ createdAt: event.created_at,
10
+ };
11
+ switch (event.event) {
12
+ case 'connection.activated':
13
+ case 'connection.deactivated':
14
+ case 'connection.deleted':
15
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_2.deserializeConnection)(event.data) });
16
+ case 'dsync.activated':
17
+ case 'dsync.deactivated':
18
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeEventDirectory)(event.data) });
19
+ case 'dsync.deleted':
20
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeDeletedEventDirectory)(event.data) });
21
+ case 'dsync.group.created':
22
+ case 'dsync.group.deleted':
23
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeEventDirectoryGroup)(event.data) });
24
+ case 'dsync.group.updated':
25
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeUpdatedEventDirectoryGroup)(event.data) });
26
+ case 'dsync.group.user_added':
27
+ case 'dsync.group.user_removed':
28
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: {
29
+ directoryId: event.data.directory_id,
30
+ user: (0, serializers_1.deserializeDirectoryUser)(event.data.user),
31
+ group: event.data.group,
32
+ } });
33
+ case 'dsync.user.created':
34
+ case 'dsync.user.deleted':
35
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeDirectoryUser)(event.data) });
36
+ case 'dsync.user.updated':
37
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_1.deserializeUpdatedEventDirectoryUser)(event.data) });
38
+ }
39
+ };
40
+ exports.deserializeEvent = deserializeEvent;
@@ -1 +1,2 @@
1
+ export * from './event.serializer';
1
2
  export * from './list.serializer';
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./event.serializer"), exports);
17
18
  __exportStar(require("./list.serializer"), exports);
@@ -1,2 +1,2 @@
1
- import { DeserializedList, List } from '../interfaces';
2
- export declare const deserializeList: <TSerialized, TDeserialized>(list: List<TSerialized>, deserializer: (serialized: TSerialized) => TDeserialized) => DeserializedList<TDeserialized>;
1
+ import { List, ListResponse } from '../interfaces';
2
+ export declare const deserializeList: <TSerialized, TDeserialized>(list: ListResponse<TSerialized>, deserializer: (serialized: TSerialized) => TDeserialized) => List<TDeserialized>;
@@ -1,14 +1,14 @@
1
1
  import { WorkOS } from '../workos';
2
- import { DefaultCustomAttributes, Directory, DirectoryGroup, DirectoryUserWithGroups, ListDirectoriesOptions, ListDirectoryUsersOptions, ListGroupsOptions } from './interfaces';
3
- import { DeserializedList } from '../common/interfaces';
2
+ import { DefaultCustomAttributes, Directory, DirectoryGroup, DirectoryUserWithGroups, ListDirectoriesOptions, ListDirectoryGroupsOptions, ListDirectoryUsersOptions } from './interfaces';
3
+ import { List } from '../common/interfaces';
4
4
  export declare class DirectorySync {
5
5
  private readonly workos;
6
6
  constructor(workos: WorkOS);
7
- listDirectories(options?: ListDirectoriesOptions): Promise<DeserializedList<Directory>>;
7
+ listDirectories(options?: ListDirectoriesOptions): Promise<List<Directory>>;
8
8
  getDirectory(id: string): Promise<Directory>;
9
9
  deleteDirectory(id: string): Promise<void>;
10
- listGroups(options: ListGroupsOptions): Promise<DeserializedList<DirectoryGroup>>;
11
- listUsers<TCustomAttributes extends object = DefaultCustomAttributes>(options: ListDirectoryUsersOptions): Promise<DeserializedList<DirectoryUserWithGroups<TCustomAttributes>>>;
10
+ listGroups(options: ListDirectoryGroupsOptions): Promise<List<DirectoryGroup>>;
11
+ listUsers<TCustomAttributes extends object = DefaultCustomAttributes>(options: ListDirectoryUsersOptions): Promise<List<DirectoryUserWithGroups<TCustomAttributes>>>;
12
12
  getUser<TCustomAttributes extends object = DefaultCustomAttributes>(user: string): Promise<DirectoryUserWithGroups<TCustomAttributes>>;
13
13
  getGroup(group: string): Promise<DirectoryGroup>;
14
14
  }
@@ -68,6 +68,7 @@ describe('DirectorySync', () => {
68
68
  },
69
69
  };
70
70
  const userWithGroup = {
71
+ object: 'directory_user',
71
72
  id: 'user_123',
72
73
  customAttributes: {
73
74
  custom: true,
@@ -93,6 +94,7 @@ describe('DirectorySync', () => {
93
94
  updatedAt: '2021-12-13 12:15:45.531847',
94
95
  };
95
96
  const userWithGroupResponse = {
97
+ object: 'directory_user',
96
98
  id: 'user_123',
97
99
  custom_attributes: {
98
100
  custom: true,
@@ -18,3 +18,23 @@ export interface DirectoryGroupResponse {
18
18
  updated_at: string;
19
19
  raw_attributes: any;
20
20
  }
21
+ export interface EventDirectoryGroup<TRawAttributes = any> {
22
+ id: string;
23
+ idpId: string;
24
+ directoryId: string;
25
+ organizationId: string | null;
26
+ name: string;
27
+ createdAt: string;
28
+ updatedAt: string;
29
+ rawAttributes: TRawAttributes;
30
+ }
31
+ export interface EventDirectoryGroupResponse<TRawAttributes = any> {
32
+ id: string;
33
+ idp_id: string;
34
+ directory_id: string;
35
+ organization_id: string | null;
36
+ name: string;
37
+ created_at: string;
38
+ updated_at: string;
39
+ raw_attributes: TRawAttributes;
40
+ }
@@ -1,6 +1,7 @@
1
1
  import { DirectoryGroup, DirectoryGroupResponse } from './directory-group.interface';
2
2
  export type DefaultCustomAttributes = Record<string, unknown>;
3
3
  export interface DirectoryUser<TCustomAttributes extends object = DefaultCustomAttributes, TRawAttributes = any> {
4
+ object: 'directory_user';
4
5
  id: string;
5
6
  directoryId: string;
6
7
  organizationId: string | null;
@@ -21,6 +22,7 @@ export interface DirectoryUser<TCustomAttributes extends object = DefaultCustomA
21
22
  updatedAt: string;
22
23
  }
23
24
  export interface DirectoryUserResponse<TCustomAttributes extends object = DefaultCustomAttributes, TRawAttributes = any> {
25
+ object: 'directory_user';
24
26
  id: string;
25
27
  directory_id: string;
26
28
  organization_id: string | null;
@@ -1,3 +1,4 @@
1
+ export type DirectoryType = 'azure scim v2.0' | 'bamboohr' | 'breathe hr' | 'cezanne hr' | 'cyberark scim v2.0' | 'fourth hr' | 'gsuite directory' | 'generic scim v1.1' | 'generic scim v2.0' | 'gusto' | 'hibob' | 'jump cloud scim v2.0' | 'okta scim v1.1' | 'okta scim v2.0' | 'onelogin scim v2.0' | 'people hr' | 'personio' | 'pingfederate scim v2.0' | 'rippling' | 'rippling scim v2.0' | 'sftp' | 'sftp workday' | 's3' | 'workday';
1
2
  export interface Directory {
2
3
  object: 'directory';
3
4
  id: string;
@@ -6,7 +7,7 @@ export interface Directory {
6
7
  name: string;
7
8
  organizationId?: string;
8
9
  state: 'unlinked' | 'linked' | 'invalid_credentials';
9
- type: string;
10
+ type: DirectoryType;
10
11
  createdAt: string;
11
12
  updatedAt: string;
12
13
  }
@@ -18,7 +19,38 @@ export interface DirectoryResponse {
18
19
  name: string;
19
20
  organization_id?: string;
20
21
  state: 'unlinked' | 'linked' | 'invalid_credentials';
21
- type: string;
22
+ type: DirectoryType;
22
23
  created_at: string;
23
24
  updated_at: string;
24
25
  }
26
+ export type EventDirectoryState = 'active' | 'validating' | 'invalid_credentials' | 'inactive' | 'deleting';
27
+ interface EventDirectoryDomain {
28
+ object: 'organization_domain';
29
+ id: string;
30
+ domain: string;
31
+ }
32
+ export interface EventDirectory {
33
+ object: 'directory';
34
+ id: string;
35
+ externalKey: string;
36
+ type: DirectoryType;
37
+ state: EventDirectoryState;
38
+ name: string;
39
+ organizationId?: string;
40
+ domains: EventDirectoryDomain[];
41
+ createdAt: string;
42
+ updatedAt: string;
43
+ }
44
+ export interface EventDirectoryResponse {
45
+ object: 'directory';
46
+ id: string;
47
+ external_key: string;
48
+ type: DirectoryType;
49
+ state: EventDirectoryState;
50
+ name: string;
51
+ organization_id?: string;
52
+ domains: EventDirectoryDomain[];
53
+ created_at: string;
54
+ updated_at: string;
55
+ }
56
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { PaginationOptions } from '../../common/interfaces/pagination-options.interface';
2
- export interface ListGroupsOptions extends PaginationOptions {
2
+ export interface ListDirectoryGroupsOptions extends PaginationOptions {
3
3
  directory?: string;
4
4
  user?: string;
5
5
  }
@@ -1,2 +1,4 @@
1
- import { DirectoryGroup, DirectoryGroupResponse } from '../interfaces';
1
+ import { DirectoryGroup, DirectoryGroupResponse, EventDirectoryGroup, EventDirectoryGroupResponse } from '../interfaces';
2
2
  export declare const deserializeDirectoryGroup: (directoryGroup: DirectoryGroupResponse) => DirectoryGroup;
3
+ export declare const deserializeEventDirectoryGroup: (directoryGroup: EventDirectoryGroupResponse) => EventDirectoryGroup;
4
+ export declare const deserializeUpdatedEventDirectoryGroup: (directoryGroup: EventDirectoryGroupResponse & Record<'previous_attributes', any>) => EventDirectoryGroup & Record<'previousAttributes', any>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deserializeDirectoryGroup = void 0;
3
+ exports.deserializeUpdatedEventDirectoryGroup = exports.deserializeEventDirectoryGroup = exports.deserializeDirectoryGroup = void 0;
4
4
  const deserializeDirectoryGroup = (directoryGroup) => ({
5
5
  id: directoryGroup.id,
6
6
  idpId: directoryGroup.idp_id,
@@ -12,3 +12,26 @@ const deserializeDirectoryGroup = (directoryGroup) => ({
12
12
  rawAttributes: directoryGroup.raw_attributes,
13
13
  });
14
14
  exports.deserializeDirectoryGroup = deserializeDirectoryGroup;
15
+ const deserializeEventDirectoryGroup = (directoryGroup) => ({
16
+ id: directoryGroup.id,
17
+ idpId: directoryGroup.idp_id,
18
+ directoryId: directoryGroup.directory_id,
19
+ organizationId: directoryGroup.organization_id,
20
+ name: directoryGroup.name,
21
+ createdAt: directoryGroup.created_at,
22
+ updatedAt: directoryGroup.updated_at,
23
+ rawAttributes: directoryGroup.raw_attributes,
24
+ });
25
+ exports.deserializeEventDirectoryGroup = deserializeEventDirectoryGroup;
26
+ const deserializeUpdatedEventDirectoryGroup = (directoryGroup) => ({
27
+ id: directoryGroup.id,
28
+ idpId: directoryGroup.idp_id,
29
+ directoryId: directoryGroup.directory_id,
30
+ organizationId: directoryGroup.organization_id,
31
+ name: directoryGroup.name,
32
+ createdAt: directoryGroup.created_at,
33
+ updatedAt: directoryGroup.updated_at,
34
+ rawAttributes: directoryGroup.raw_attributes,
35
+ previousAttributes: directoryGroup.previous_attributes,
36
+ });
37
+ exports.deserializeUpdatedEventDirectoryGroup = deserializeUpdatedEventDirectoryGroup;
@@ -1,3 +1,4 @@
1
1
  import { DefaultCustomAttributes, DirectoryUser, DirectoryUserResponse, DirectoryUserWithGroups, DirectoryUserWithGroupsResponse } from '../interfaces';
2
2
  export declare const deserializeDirectoryUser: <TCustomAttributes extends object = DefaultCustomAttributes>(directoryUser: DirectoryUserResponse<TCustomAttributes, any> | DirectoryUserWithGroupsResponse<TCustomAttributes>) => DirectoryUser<TCustomAttributes, any>;
3
3
  export declare const deserializeDirectoryUserWithGroups: <TCustomAttributes extends object = DefaultCustomAttributes>(directoryUserWithGroups: DirectoryUserWithGroupsResponse<TCustomAttributes>) => DirectoryUserWithGroups<TCustomAttributes>;
4
+ export declare const deserializeUpdatedEventDirectoryUser: (directoryUser: DirectoryUserResponse & Record<'previous_attributes', any>) => DirectoryUser & Record<'previousAttributes', any>;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deserializeDirectoryUserWithGroups = exports.deserializeDirectoryUser = void 0;
3
+ exports.deserializeUpdatedEventDirectoryUser = exports.deserializeDirectoryUserWithGroups = exports.deserializeDirectoryUser = void 0;
4
4
  const directory_group_serializer_1 = require("./directory-group.serializer");
5
5
  const deserializeDirectoryUser = (directoryUser) => ({
6
+ object: directoryUser.object,
6
7
  id: directoryUser.id,
7
8
  directoryId: directoryUser.directory_id,
8
9
  organizationId: directoryUser.organization_id,
@@ -21,3 +22,22 @@ const deserializeDirectoryUser = (directoryUser) => ({
21
22
  exports.deserializeDirectoryUser = deserializeDirectoryUser;
22
23
  const deserializeDirectoryUserWithGroups = (directoryUserWithGroups) => (Object.assign(Object.assign({}, (0, exports.deserializeDirectoryUser)(directoryUserWithGroups)), { groups: directoryUserWithGroups.groups.map(directory_group_serializer_1.deserializeDirectoryGroup) }));
23
24
  exports.deserializeDirectoryUserWithGroups = deserializeDirectoryUserWithGroups;
25
+ const deserializeUpdatedEventDirectoryUser = (directoryUser) => ({
26
+ object: 'directory_user',
27
+ id: directoryUser.id,
28
+ directoryId: directoryUser.directory_id,
29
+ organizationId: directoryUser.organization_id,
30
+ rawAttributes: directoryUser.raw_attributes,
31
+ customAttributes: directoryUser.custom_attributes,
32
+ idpId: directoryUser.idp_id,
33
+ firstName: directoryUser.first_name,
34
+ emails: directoryUser.emails,
35
+ username: directoryUser.username,
36
+ lastName: directoryUser.last_name,
37
+ jobTitle: directoryUser.job_title,
38
+ state: directoryUser.state,
39
+ createdAt: directoryUser.created_at,
40
+ updatedAt: directoryUser.updated_at,
41
+ previousAttributes: directoryUser.previous_attributes,
42
+ });
43
+ exports.deserializeUpdatedEventDirectoryUser = deserializeUpdatedEventDirectoryUser;
@@ -1,2 +1,4 @@
1
- import { Directory, DirectoryResponse } from '../interfaces';
1
+ import { Directory, DirectoryResponse, EventDirectory, EventDirectoryResponse } from '../interfaces';
2
2
  export declare const deserializeDirectory: (directory: DirectoryResponse) => Directory;
3
+ export declare const deserializeEventDirectory: (directory: EventDirectoryResponse) => EventDirectory;
4
+ export declare const deserializeDeletedEventDirectory: (directory: Omit<EventDirectoryResponse, 'domains' | 'external_key'>) => Omit<EventDirectory, 'domains' | 'externalKey'>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deserializeDirectory = void 0;
3
+ exports.deserializeDeletedEventDirectory = exports.deserializeEventDirectory = exports.deserializeDirectory = void 0;
4
4
  const deserializeDirectory = (directory) => ({
5
5
  object: directory.object,
6
6
  id: directory.id,
@@ -14,3 +14,27 @@ const deserializeDirectory = (directory) => ({
14
14
  updatedAt: directory.updated_at,
15
15
  });
16
16
  exports.deserializeDirectory = deserializeDirectory;
17
+ const deserializeEventDirectory = (directory) => ({
18
+ object: directory.object,
19
+ id: directory.id,
20
+ externalKey: directory.external_key,
21
+ type: directory.type,
22
+ state: directory.state,
23
+ name: directory.name,
24
+ organizationId: directory.organization_id,
25
+ domains: directory.domains,
26
+ createdAt: directory.created_at,
27
+ updatedAt: directory.updated_at,
28
+ });
29
+ exports.deserializeEventDirectory = deserializeEventDirectory;
30
+ const deserializeDeletedEventDirectory = (directory) => ({
31
+ object: directory.object,
32
+ id: directory.id,
33
+ type: directory.type,
34
+ state: directory.state,
35
+ name: directory.name,
36
+ organizationId: directory.organization_id,
37
+ createdAt: directory.created_at,
38
+ updatedAt: directory.updated_at,
39
+ });
40
+ exports.deserializeDeletedEventDirectory = deserializeDeletedEventDirectory;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const get_primary_email_1 = require("./get-primary-email");
4
4
  describe('getPrimaryEmail', () => {
5
5
  const user = {
6
+ object: 'directory_user',
6
7
  id: 'user_123',
7
8
  customAttributes: {
8
9
  custom: true,
@@ -1,9 +1,8 @@
1
1
  import { WorkOS } from '../workos';
2
- import { Event } from './interfaces';
3
2
  import { ListEventOptions } from './interfaces';
4
- import { DeserializedList } from '../common/interfaces';
3
+ import { Event, List } from '../common/interfaces';
5
4
  export declare class Events {
6
5
  private readonly workos;
7
6
  constructor(workos: WorkOS);
8
- listEvents(options: ListEventOptions): Promise<DeserializedList<Event>>;
7
+ listEvents(options: ListEventOptions): Promise<List<Event>>;
9
8
  }
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Events = void 0;
13
13
  const serializers_1 = require("../common/serializers");
14
- const event_serializer_1 = require("./serializers/event.serializer");
15
14
  class Events {
16
15
  constructor(workos) {
17
16
  this.workos = workos;
@@ -21,7 +20,7 @@ class Events {
21
20
  const { data } = yield this.workos.get(`/events`, {
22
21
  query: options,
23
22
  });
24
- return (0, serializers_1.deserializeList)(data, event_serializer_1.deserializeEvent);
23
+ return (0, serializers_1.deserializeList)(data, serializers_1.deserializeEvent);
25
24
  });
26
25
  }
27
26
  }
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const axios_1 = __importDefault(require("axios"));
16
16
  const axios_mock_adapter_1 = __importDefault(require("axios-mock-adapter"));
17
17
  const workos_1 = require("../workos");
18
+ const interfaces_1 = require("../sso/interfaces");
18
19
  const mock = new axios_mock_adapter_1.default(axios_1.default);
19
20
  describe('Event', () => {
20
21
  afterEach(() => mock.resetHistory());
@@ -22,17 +23,34 @@ describe('Event', () => {
22
23
  const event = {
23
24
  id: 'event_01234ABCD',
24
25
  createdAt: '2020-05-06 04:21:48.649164',
25
- event: 'dsync.user.created',
26
+ event: 'connection.activated',
26
27
  data: {
27
- id: 'event_01234ABCD',
28
+ object: 'connection',
29
+ id: 'conn_01234ABCD',
30
+ organizationId: 'org_1234',
31
+ name: 'Connection',
32
+ type: interfaces_1.ConnectionType.OktaSAML,
33
+ connectionType: interfaces_1.ConnectionType.OktaSAML,
34
+ state: 'active',
35
+ domains: [],
36
+ createdAt: '2020-05-06 04:21:48.649164',
37
+ updatedAt: '2020-05-06 04:21:48.649164',
28
38
  },
29
39
  };
30
40
  const eventResponse = {
31
41
  id: 'event_01234ABCD',
32
42
  created_at: '2020-05-06 04:21:48.649164',
33
- event: 'dsync.user.created',
43
+ event: 'connection.activated',
34
44
  data: {
35
- id: 'event_01234ABCD',
45
+ object: 'connection',
46
+ id: 'conn_01234ABCD',
47
+ organization_id: 'org_1234',
48
+ name: 'Connection',
49
+ connection_type: interfaces_1.ConnectionType.OktaSAML,
50
+ state: 'active',
51
+ domains: [],
52
+ created_at: '2020-05-06 04:21:48.649164',
53
+ updated_at: '2020-05-06 04:21:48.649164',
36
54
  },
37
55
  };
38
56
  describe('listEvents', () => {
@@ -1,2 +1 @@
1
1
  export * from './list-events-options.interface';
2
- export * from './event.interface';
@@ -15,4 +15,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./list-events-options.interface"), exports);
18
- __exportStar(require("./event.interface"), exports);
@@ -1,6 +1,6 @@
1
- import { EventNames } from './event.interface';
1
+ import { EventName } from '../../common/interfaces';
2
2
  export interface ListEventOptions {
3
- events?: EventNames[];
3
+ events?: EventName[];
4
4
  rangeStart?: string;
5
5
  rangeEnd?: string;
6
6
  limit?: number;
package/lib/index.d.ts CHANGED
@@ -10,7 +10,6 @@ export * from './organizations/interfaces';
10
10
  export * from './passwordless/interfaces';
11
11
  export * from './portal/interfaces';
12
12
  export * from './sso/interfaces';
13
- export * from './webhooks/interfaces';
14
13
  export * from './users/interfaces';
15
14
  export { WorkOS };
16
15
  export default WorkOS;