@workos-inc/node 7.1.0 → 7.2.0

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 (25) hide show
  1. package/README.md +13 -0
  2. package/lib/common/interfaces/event.interface.d.ts +47 -2
  3. package/lib/common/serializers/event.serializer.js +6 -0
  4. package/lib/events/events.spec.js +12 -0
  5. package/lib/events/interfaces/list-events-options.interface.d.ts +2 -0
  6. package/lib/events/serializers/list-event-options.serializer.js +1 -0
  7. package/lib/organizations/interfaces/create-organization-options.interface.d.ts +9 -0
  8. package/lib/organizations/interfaces/domain-data.interface.d.ts +8 -0
  9. package/lib/organizations/interfaces/domain-data.interface.js +9 -0
  10. package/lib/organizations/interfaces/index.d.ts +1 -0
  11. package/lib/organizations/interfaces/index.js +1 -0
  12. package/lib/organizations/interfaces/update-organization-options.interface.d.ts +9 -0
  13. package/lib/organizations/organizations.spec.js +71 -29
  14. package/lib/organizations/serializers/create-organization-options.serializer.js +1 -0
  15. package/lib/organizations/serializers/update-organization-options.serializer.js +1 -0
  16. package/lib/user-management/interfaces/authentication-response.interface.d.ts +4 -0
  17. package/lib/user-management/interfaces/index.d.ts +1 -0
  18. package/lib/user-management/interfaces/index.js +1 -0
  19. package/lib/user-management/interfaces/role.interface.d.ts +8 -0
  20. package/lib/user-management/serializers/authentication-response.serializer.js +2 -2
  21. package/lib/user-management/serializers/role.serializer.d.ts +2 -0
  22. package/lib/user-management/serializers/role.serializer.js +8 -0
  23. package/lib/user-management/user-management.spec.js +16 -0
  24. package/lib/workos.js +1 -1
  25. package/package.json +2 -2
package/README.md CHANGED
@@ -37,6 +37,19 @@ const workos = new WorkOS('sk_1234');
37
37
 
38
38
  For our SDKs WorkOS follows a Semantic Versioning ([SemVer](https://semver.org/)) process where all releases will have a version X.Y.Z (like 1.0.0) pattern wherein Z would be a bug fix (e.g., 1.0.1), Y would be a minor release (1.1.0) and X would be a major release (2.0.0). We permit any breaking changes to only be released in major versions and strongly recommend reading changelogs before making any major version upgrades.
39
39
 
40
+ ## Beta Releases
41
+
42
+ WorkOS has features in Beta that can be accessed via Beta releases. We would love for you to try these
43
+ and share feedback with us before these features reach general availability (GA). To install a Beta version,
44
+ please follow the [installation steps](#installation) above using the Beta release version.
45
+
46
+ > Note: there can be breaking changes between Beta versions. Therefore, we recommend pinning the package version to a
47
+ > specific version. This way you can install the same version each time without breaking changes unless you are
48
+ > intentionally looking for the latest Beta version.
49
+
50
+ We highly recommend keeping an eye on when the Beta feature you are interested in goes from Beta to stable so that you
51
+ can move to using the stable version.
52
+
40
53
  ## More Information
41
54
 
42
55
  - [Single Sign-On Guide](https://workos.com/docs/sso/guide)
@@ -3,6 +3,7 @@ import { Organization, OrganizationResponse } from '../../organizations/interfac
3
3
  import { Connection, ConnectionResponse } from '../../sso/interfaces';
4
4
  import { Session, SessionResponse, User, UserResponse } from '../../user-management/interfaces';
5
5
  import { OrganizationMembership, OrganizationMembershipResponse } from '../../user-management/interfaces/organization-membership.interface';
6
+ import { RoleEvent, RoleEventResponse } from '../../user-management/interfaces/role.interface';
6
7
  export interface EventBase {
7
8
  id: string;
8
9
  createdAt: string;
@@ -163,14 +164,36 @@ export interface UserDeletedEventResponse extends EventResponseBase {
163
164
  event: 'user.deleted';
164
165
  data: UserResponse;
165
166
  }
167
+ /**
168
+ * @deprecated Use OrganizationMembershipCreated instead. Will be removed in a future major version.
169
+ */
166
170
  export interface OrganizationMembershipAdded extends EventBase {
167
171
  event: 'organization_membership.added';
168
172
  data: OrganizationMembership;
169
173
  }
174
+ /**
175
+ * @deprecated Use OrganizationMembershipCreatedResponse instead. Will be removed in a future major version.
176
+ */
170
177
  export interface OrganizationMembershipAddedResponse extends EventResponseBase {
171
178
  event: 'organization_membership.added';
172
179
  data: OrganizationMembershipResponse;
173
180
  }
181
+ export interface OrganizationMembershipCreated extends EventBase {
182
+ event: 'organization_membership.created';
183
+ data: OrganizationMembership;
184
+ }
185
+ export interface OrganizationMembershipCreatedResponse extends EventResponseBase {
186
+ event: 'organization_membership.created';
187
+ data: OrganizationMembershipResponse;
188
+ }
189
+ export interface OrganizationMembershipDeleted extends EventBase {
190
+ event: 'organization_membership.deleted';
191
+ data: OrganizationMembership;
192
+ }
193
+ export interface OrganizationMembershipDeletedResponse extends EventResponseBase {
194
+ event: 'organization_membership.deleted';
195
+ data: OrganizationMembershipResponse;
196
+ }
174
197
  export interface OrganizationMembershipUpdated extends EventBase {
175
198
  event: 'organization_membership.updated';
176
199
  data: OrganizationMembership;
@@ -179,10 +202,16 @@ export interface OrganizationMembershipUpdatedResponse extends EventResponseBase
179
202
  event: 'organization_membership.updated';
180
203
  data: OrganizationMembershipResponse;
181
204
  }
205
+ /**
206
+ * @deprecated Use OrganizationMembershipDeleted instead. Will be removed in a future major version.
207
+ */
182
208
  export interface OrganizationMembershipRemoved extends EventBase {
183
209
  event: 'organization_membership.removed';
184
210
  data: OrganizationMembership;
185
211
  }
212
+ /**
213
+ * @deprecated Use OrganizationMembershipDeletedResponse instead. Will be removed in a future major version.
214
+ */
186
215
  export interface OrganizationMembershipRemovedResponse extends EventResponseBase {
187
216
  event: 'organization_membership.removed';
188
217
  data: OrganizationMembershipResponse;
@@ -211,6 +240,22 @@ export interface OrganizationDeletedResponse extends EventResponseBase {
211
240
  event: 'organization.deleted';
212
241
  data: OrganizationResponse;
213
242
  }
243
+ export interface RoleCreatedEvent extends EventBase {
244
+ event: 'role.created';
245
+ data: RoleEvent;
246
+ }
247
+ export interface RoleCreatedEventResponse extends EventResponseBase {
248
+ event: 'role.created';
249
+ data: RoleEventResponse;
250
+ }
251
+ export interface RoleDeletedEvent extends EventBase {
252
+ event: 'role.deleted';
253
+ data: RoleEvent;
254
+ }
255
+ export interface RoleDeletedEventResponse extends EventResponseBase {
256
+ event: 'role.deleted';
257
+ data: RoleEventResponse;
258
+ }
214
259
  export interface SessionCreatedEvent extends EventBase {
215
260
  event: 'session.created';
216
261
  data: Session;
@@ -219,7 +264,7 @@ export interface SessionCreatedEventResponse extends EventResponseBase {
219
264
  event: 'session.created';
220
265
  data: SessionResponse;
221
266
  }
222
- export type Event = ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | OrganizationMembershipAdded | OrganizationMembershipUpdated | OrganizationMembershipRemoved | SessionCreatedEvent | OrganizationCreatedEvent | OrganizationUpdatedEvent | OrganizationDeletedEvent;
223
- export type EventResponse = ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse | SessionCreatedEventResponse | OrganizationCreatedResponse | OrganizationUpdatedResponse | OrganizationDeletedResponse;
267
+ export type Event = ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | OrganizationMembershipAdded | OrganizationMembershipCreated | OrganizationMembershipDeleted | OrganizationMembershipUpdated | OrganizationMembershipRemoved | RoleCreatedEvent | RoleDeletedEvent | SessionCreatedEvent | OrganizationCreatedEvent | OrganizationUpdatedEvent | OrganizationDeletedEvent;
268
+ export type EventResponse = ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipCreatedResponse | OrganizationMembershipDeletedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse | RoleCreatedEventResponse | RoleDeletedEventResponse | SessionCreatedEventResponse | OrganizationCreatedResponse | OrganizationUpdatedResponse | OrganizationDeletedResponse;
224
269
  export type EventName = Event['event'];
225
270
  export {};
@@ -6,6 +6,7 @@ const serializers_2 = require("../../organizations/serializers");
6
6
  const serializers_3 = require("../../sso/serializers");
7
7
  const serializers_4 = require("../../user-management/serializers");
8
8
  const organization_membership_serializer_1 = require("../../user-management/serializers/organization-membership.serializer");
9
+ const role_serializer_1 = require("../../user-management/serializers/role.serializer");
9
10
  const session_serializer_1 = require("../../user-management/serializers/session.serializer");
10
11
  const deserializeEvent = (event) => {
11
12
  const eventBase = {
@@ -44,9 +45,14 @@ const deserializeEvent = (event) => {
44
45
  case 'user.deleted':
45
46
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_4.deserializeUser)(event.data) });
46
47
  case 'organization_membership.added':
48
+ case 'organization_membership.created':
49
+ case 'organization_membership.deleted':
47
50
  case 'organization_membership.updated':
48
51
  case 'organization_membership.removed':
49
52
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, organization_membership_serializer_1.deserializeOrganizationMembership)(event.data) });
53
+ case 'role.created':
54
+ case 'role.deleted':
55
+ return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, role_serializer_1.deserializeRole)(event.data) });
50
56
  case 'session.created':
51
57
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, session_serializer_1.deserializeSession)(event.data) });
52
58
  case 'organization.created':
@@ -94,5 +94,17 @@ describe('Event', () => {
94
94
  listMetadata: {},
95
95
  });
96
96
  }));
97
+ it(`requests Events with a valid organization id`, () => __awaiter(void 0, void 0, void 0, function* () {
98
+ (0, test_utils_1.fetchOnce)(eventsListResponse);
99
+ const list = yield workos.events.listEvents({
100
+ events: ['connection.activated'],
101
+ organizationId: 'org_1234',
102
+ });
103
+ expect(list).toEqual({
104
+ object: 'list',
105
+ data: [event],
106
+ listMetadata: {},
107
+ });
108
+ }));
97
109
  });
98
110
  });
@@ -5,6 +5,7 @@ export interface ListEventOptions {
5
5
  rangeEnd?: string;
6
6
  limit?: number;
7
7
  after?: string;
8
+ organizationId?: string;
8
9
  }
9
10
  export interface SerializedListEventOptions {
10
11
  events: EventName[];
@@ -12,4 +13,5 @@ export interface SerializedListEventOptions {
12
13
  range_end?: string;
13
14
  limit?: number;
14
15
  after?: string;
16
+ organization_id?: string;
15
17
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.serializeListEventOptions = void 0;
4
4
  const serializeListEventOptions = (options) => ({
5
5
  events: options.events,
6
+ organization_id: options.organizationId,
6
7
  range_start: options.rangeStart,
7
8
  range_end: options.rangeEnd,
8
9
  limit: options.limit,
@@ -1,12 +1,21 @@
1
1
  import { PostOptions } from '../../common/interfaces';
2
+ import { DomainData } from './domain-data.interface';
2
3
  export interface CreateOrganizationOptions {
3
4
  name: string;
4
5
  allowProfilesOutsideOrganization?: boolean;
6
+ domainData?: DomainData[];
7
+ /**
8
+ * @deprecated Use `domain_data` instead.
9
+ */
5
10
  domains?: string[];
6
11
  }
7
12
  export interface SerializedCreateOrganizationOptions {
8
13
  name: string;
9
14
  allow_profiles_outside_organization?: boolean;
15
+ domain_data?: DomainData[];
16
+ /**
17
+ * @deprecated Use `domain_data` instead.
18
+ */
10
19
  domains?: string[];
11
20
  }
12
21
  export interface CreateOrganizationRequestOptions extends Pick<PostOptions, 'idempotencyKey'> {
@@ -0,0 +1,8 @@
1
+ export declare enum DomainDataState {
2
+ Verified = "verified",
3
+ Pending = "pending"
4
+ }
5
+ export interface DomainData {
6
+ domain: string;
7
+ state: DomainDataState;
8
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainDataState = void 0;
4
+ // These are the only possible states to create an organization domain with
5
+ var DomainDataState;
6
+ (function (DomainDataState) {
7
+ DomainDataState["Verified"] = "verified";
8
+ DomainDataState["Pending"] = "pending";
9
+ })(DomainDataState || (exports.DomainDataState = DomainDataState = {}));
@@ -1,4 +1,5 @@
1
1
  export * from './create-organization-options.interface';
2
+ export * from './domain-data.interface';
2
3
  export * from './list-organizations-options.interface';
3
4
  export * from './organization-domain.interface';
4
5
  export * from './organization.interface';
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./create-organization-options.interface"), exports);
18
+ __exportStar(require("./domain-data.interface"), exports);
18
19
  __exportStar(require("./list-organizations-options.interface"), exports);
19
20
  __exportStar(require("./organization-domain.interface"), exports);
20
21
  __exportStar(require("./organization.interface"), exports);
@@ -1,11 +1,20 @@
1
+ import { DomainData } from './domain-data.interface';
1
2
  export interface UpdateOrganizationOptions {
2
3
  organization: string;
3
4
  name: string;
4
5
  allowProfilesOutsideOrganization?: boolean;
6
+ domainData?: DomainData[];
7
+ /**
8
+ * @deprecated Use `domain_data` instead.
9
+ */
5
10
  domains?: string[];
6
11
  }
7
12
  export interface SerializedUpdateOrganizationOptions {
8
13
  name: string;
9
14
  allow_profiles_outside_organization?: boolean;
15
+ domain_data?: DomainData[];
16
+ /**
17
+ * @deprecated Use `domain_data` instead.
18
+ */
10
19
  domains?: string[];
11
20
  }
@@ -20,6 +20,7 @@ const create_organization_json_1 = __importDefault(require("./fixtures/create-or
20
20
  const get_organization_json_1 = __importDefault(require("./fixtures/get-organization.json"));
21
21
  const list_organizations_json_1 = __importDefault(require("./fixtures/list-organizations.json"));
22
22
  const update_organization_json_1 = __importDefault(require("./fixtures/update-organization.json"));
23
+ const interfaces_1 = require("./interfaces");
23
24
  const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
24
25
  describe('Organizations', () => {
25
26
  beforeEach(() => jest_fetch_mock_1.default.resetMocks());
@@ -116,20 +117,40 @@ describe('Organizations', () => {
116
117
  }));
117
118
  });
118
119
  describe('with a valid payload', () => {
119
- it('creates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
120
- (0, test_utils_1.fetchOnce)(create_organization_json_1.default, { status: 201 });
121
- const subject = yield workos.organizations.createOrganization({
122
- domains: ['example.com'],
123
- name: 'Test Organization',
124
- });
125
- expect((0, test_utils_1.fetchBody)()).toEqual({
126
- domains: ['example.com'],
127
- name: 'Test Organization',
128
- });
129
- expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
130
- expect(subject.name).toEqual('Test Organization');
131
- expect(subject.domains).toHaveLength(1);
132
- }));
120
+ describe('with `domains`', () => {
121
+ it('creates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
122
+ (0, test_utils_1.fetchOnce)(create_organization_json_1.default, { status: 201 });
123
+ const subject = yield workos.organizations.createOrganization({
124
+ domains: ['example.com'],
125
+ name: 'Test Organization',
126
+ });
127
+ expect((0, test_utils_1.fetchBody)()).toEqual({
128
+ domains: ['example.com'],
129
+ name: 'Test Organization',
130
+ });
131
+ expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
132
+ expect(subject.name).toEqual('Test Organization');
133
+ expect(subject.domains).toHaveLength(1);
134
+ }));
135
+ });
136
+ describe('with `domain_data`', () => {
137
+ it('creates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
138
+ (0, test_utils_1.fetchOnce)(create_organization_json_1.default, { status: 201 });
139
+ const subject = yield workos.organizations.createOrganization({
140
+ domainData: [
141
+ { domain: 'example.com', state: interfaces_1.DomainDataState.Verified },
142
+ ],
143
+ name: 'Test Organization',
144
+ });
145
+ expect((0, test_utils_1.fetchBody)()).toEqual({
146
+ domain_data: [{ domain: 'example.com', state: 'verified' }],
147
+ name: 'Test Organization',
148
+ });
149
+ expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
150
+ expect(subject.name).toEqual('Test Organization');
151
+ expect(subject.domains).toHaveLength(1);
152
+ }));
153
+ });
133
154
  });
134
155
  describe('with an invalid payload', () => {
135
156
  it('returns an error', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -170,21 +191,42 @@ describe('Organizations', () => {
170
191
  });
171
192
  describe('updateOrganization', () => {
172
193
  describe('with a valid payload', () => {
173
- it('updates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
174
- (0, test_utils_1.fetchOnce)(update_organization_json_1.default, { status: 201 });
175
- const subject = yield workos.organizations.updateOrganization({
176
- organization: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
177
- domains: ['example.com'],
178
- name: 'Test Organization 2',
179
- });
180
- expect((0, test_utils_1.fetchBody)()).toEqual({
181
- domains: ['example.com'],
182
- name: 'Test Organization 2',
183
- });
184
- expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
185
- expect(subject.name).toEqual('Test Organization 2');
186
- expect(subject.domains).toHaveLength(1);
187
- }));
194
+ describe('with `domains', () => {
195
+ it('updates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
196
+ (0, test_utils_1.fetchOnce)(update_organization_json_1.default, { status: 201 });
197
+ const subject = yield workos.organizations.updateOrganization({
198
+ organization: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
199
+ domains: ['example.com'],
200
+ name: 'Test Organization 2',
201
+ });
202
+ expect((0, test_utils_1.fetchBody)()).toEqual({
203
+ domains: ['example.com'],
204
+ name: 'Test Organization 2',
205
+ });
206
+ expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
207
+ expect(subject.name).toEqual('Test Organization 2');
208
+ expect(subject.domains).toHaveLength(1);
209
+ }));
210
+ });
211
+ describe('with `domain_data`', () => {
212
+ it('updates an organization', () => __awaiter(void 0, void 0, void 0, function* () {
213
+ (0, test_utils_1.fetchOnce)(update_organization_json_1.default, { status: 201 });
214
+ const subject = yield workos.organizations.updateOrganization({
215
+ organization: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
216
+ domainData: [
217
+ { domain: 'example.com', state: interfaces_1.DomainDataState.Verified },
218
+ ],
219
+ name: 'Test Organization 2',
220
+ });
221
+ expect((0, test_utils_1.fetchBody)()).toEqual({
222
+ domain_data: [{ domain: 'example.com', state: 'verified' }],
223
+ name: 'Test Organization 2',
224
+ });
225
+ expect(subject.id).toEqual('org_01EHT88Z8J8795GZNQ4ZP1J81T');
226
+ expect(subject.name).toEqual('Test Organization 2');
227
+ expect(subject.domains).toHaveLength(1);
228
+ }));
229
+ });
188
230
  });
189
231
  });
190
232
  });
@@ -4,6 +4,7 @@ exports.serializeCreateOrganizationOptions = void 0;
4
4
  const serializeCreateOrganizationOptions = (options) => ({
5
5
  name: options.name,
6
6
  allow_profiles_outside_organization: options.allowProfilesOutsideOrganization,
7
+ domain_data: options.domainData,
7
8
  domains: options.domains,
8
9
  });
9
10
  exports.serializeCreateOrganizationOptions = serializeCreateOrganizationOptions;
@@ -4,6 +4,7 @@ exports.serializeUpdateOrganizationOptions = void 0;
4
4
  const serializeUpdateOrganizationOptions = (options) => ({
5
5
  name: options.name,
6
6
  allow_profiles_outside_organization: options.allowProfilesOutsideOrganization,
7
+ domain_data: options.domainData,
7
8
  domains: options.domains,
8
9
  });
9
10
  exports.serializeUpdateOrganizationOptions = serializeUpdateOrganizationOptions;
@@ -1,11 +1,13 @@
1
1
  import { Impersonator, ImpersonatorResponse } from './impersonator.interface';
2
2
  import { User, UserResponse } from './user.interface';
3
+ type AuthenticationMethod = 'SSO' | 'Password' | 'GitHubOAuth' | 'GoogleOAuth' | 'MicrosoftOAuth' | 'MagicAuth' | 'Impersonation';
3
4
  export interface AuthenticationResponse {
4
5
  user: User;
5
6
  organizationId?: string;
6
7
  accessToken: string;
7
8
  refreshToken: string;
8
9
  impersonator?: Impersonator;
10
+ authenticationMethod?: AuthenticationMethod;
9
11
  }
10
12
  export interface AuthenticationResponseResponse {
11
13
  user: UserResponse;
@@ -13,6 +15,7 @@ export interface AuthenticationResponseResponse {
13
15
  access_token: string;
14
16
  refresh_token: string;
15
17
  impersonator?: ImpersonatorResponse;
18
+ authentication_method?: AuthenticationMethod;
16
19
  }
17
20
  export interface RefreshAuthenticationResponse {
18
21
  accessToken: string;
@@ -22,3 +25,4 @@ export interface RefreshAuthenticationResponseResponse {
22
25
  access_token: string;
23
26
  refresh_token: string;
24
27
  }
28
+ export {};
@@ -33,3 +33,4 @@ export * from './update-user-options.interface';
33
33
  export * from './update-user-password-options.interface';
34
34
  export * from './user.interface';
35
35
  export * from './verify-email-options.interface';
36
+ export * from './role.interface';
@@ -49,3 +49,4 @@ __exportStar(require("./update-user-options.interface"), exports);
49
49
  __exportStar(require("./update-user-password-options.interface"), exports);
50
50
  __exportStar(require("./user.interface"), exports);
51
51
  __exportStar(require("./verify-email-options.interface"), exports);
52
+ __exportStar(require("./role.interface"), exports);
@@ -1,3 +1,11 @@
1
1
  export interface RoleResponse {
2
2
  slug: string;
3
3
  }
4
+ export interface RoleEvent {
5
+ object: 'role';
6
+ slug: string;
7
+ }
8
+ export interface RoleEventResponse {
9
+ object: 'role';
10
+ slug: string;
11
+ }
@@ -14,8 +14,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.deserializeRefreshAuthenticationResponse = exports.deserializeAuthenticationResponse = void 0;
15
15
  const user_serializer_1 = require("./user.serializer");
16
16
  const deserializeAuthenticationResponse = (authenticationResponse) => {
17
- const { user, organization_id, access_token, refresh_token, impersonator } = authenticationResponse, rest = __rest(authenticationResponse, ["user", "organization_id", "access_token", "refresh_token", "impersonator"]);
18
- return Object.assign({ user: (0, user_serializer_1.deserializeUser)(user), organizationId: organization_id, accessToken: access_token, refreshToken: refresh_token, impersonator }, rest);
17
+ const { user, organization_id, access_token, refresh_token, authentication_method, impersonator } = authenticationResponse, rest = __rest(authenticationResponse, ["user", "organization_id", "access_token", "refresh_token", "authentication_method", "impersonator"]);
18
+ return Object.assign({ user: (0, user_serializer_1.deserializeUser)(user), organizationId: organization_id, accessToken: access_token, refreshToken: refresh_token, impersonator, authenticationMethod: authentication_method }, rest);
19
19
  };
20
20
  exports.deserializeAuthenticationResponse = deserializeAuthenticationResponse;
21
21
  const deserializeRefreshAuthenticationResponse = (refreshAuthenticationResponse) => {
@@ -0,0 +1,2 @@
1
+ import { RoleEvent, RoleEventResponse } from '../interfaces';
2
+ export declare const deserializeRole: (role: RoleEventResponse) => RoleEvent;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeRole = void 0;
4
+ const deserializeRole = (role) => ({
5
+ object: 'role',
6
+ slug: role.slug,
7
+ });
8
+ exports.deserializeRole = deserializeRole;
@@ -155,6 +155,22 @@ describe('UserManagement', () => {
155
155
  },
156
156
  });
157
157
  }));
158
+ it('deserializes authentication_method', () => __awaiter(void 0, void 0, void 0, function* () {
159
+ (0, test_utils_1.fetchOnce)({
160
+ user: user_json_1.default,
161
+ authentication_method: 'Password',
162
+ });
163
+ const resp = yield workos.userManagement.authenticateWithCode({
164
+ clientId: 'proj_whatever',
165
+ code: 'or this',
166
+ });
167
+ expect(resp).toMatchObject({
168
+ user: {
169
+ email: 'test01@example.com',
170
+ },
171
+ authenticationMethod: 'Password',
172
+ });
173
+ }));
158
174
  describe('when the code is for an impersonator', () => {
159
175
  it('deserializes the impersonator metadata', () => __awaiter(void 0, void 0, void 0, function* () {
160
176
  (0, test_utils_1.fetchOnce)({
package/lib/workos.js CHANGED
@@ -24,7 +24,7 @@ const audit_logs_1 = require("./audit-logs/audit-logs");
24
24
  const user_management_1 = require("./user-management/user-management");
25
25
  const bad_request_exception_1 = require("./common/exceptions/bad-request.exception");
26
26
  const fetch_client_1 = require("./common/utils/fetch-client");
27
- const VERSION = '7.1.0';
27
+ const VERSION = '7.2.0';
28
28
  const DEFAULT_HOSTNAME = 'api.workos.com';
29
29
  class WorkOS {
30
30
  constructor(key, options = {}) {
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.1.0",
2
+ "version": "7.2.0",
3
3
  "name": "@workos-inc/node",
4
4
  "author": "WorkOS",
5
5
  "description": "A Node wrapper for the WorkOS API",
@@ -9,7 +9,7 @@
9
9
  "workos"
10
10
  ],
11
11
  "volta": {
12
- "node": "14.21.3",
12
+ "node": "19.9.0",
13
13
  "yarn": "1.22.19"
14
14
  },
15
15
  "engines": {