@workos-inc/node 7.79.3 → 7.80.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 (28) hide show
  1. package/lib/api-keys/api-keys.d.ts +1 -0
  2. package/lib/api-keys/api-keys.js +5 -0
  3. package/lib/api-keys/api-keys.spec.js +7 -0
  4. package/lib/api-keys/interfaces/create-organization-api-key-options.interface.d.ts +12 -0
  5. package/lib/api-keys/interfaces/create-organization-api-key-options.interface.js +2 -0
  6. package/lib/api-keys/interfaces/created-api-key.interface.d.ts +30 -0
  7. package/lib/api-keys/interfaces/created-api-key.interface.js +2 -0
  8. package/lib/api-keys/interfaces/index.d.ts +5 -0
  9. package/lib/api-keys/interfaces/index.js +21 -0
  10. package/lib/api-keys/interfaces/list-organization-api-keys-options.interface.d.ts +4 -0
  11. package/lib/api-keys/interfaces/list-organization-api-keys-options.interface.js +2 -0
  12. package/lib/api-keys/serializers/create-organization-api-key-options.serializer.d.ts +2 -0
  13. package/lib/api-keys/serializers/create-organization-api-key-options.serializer.js +10 -0
  14. package/lib/api-keys/serializers/created-api-key.serializer.d.ts +2 -0
  15. package/lib/api-keys/serializers/created-api-key.serializer.js +18 -0
  16. package/lib/api-keys/serializers/index.d.ts +4 -0
  17. package/lib/api-keys/serializers/index.js +20 -0
  18. package/lib/common/interfaces/event.interface.d.ts +10 -2
  19. package/lib/common/serializers/event.serializer.js +1 -0
  20. package/lib/index.d.ts +1 -0
  21. package/lib/index.js +1 -0
  22. package/lib/organizations/fixtures/create-organization-api-key.json +15 -0
  23. package/lib/organizations/fixtures/list-organization-api-keys.json +37 -0
  24. package/lib/organizations/organizations.d.ts +3 -0
  25. package/lib/organizations/organizations.js +14 -0
  26. package/lib/organizations/organizations.spec.js +120 -0
  27. package/lib/workos.js +1 -1
  28. package/package.json +1 -1
@@ -4,4 +4,5 @@ export declare class ApiKeys {
4
4
  private readonly workos;
5
5
  constructor(workos: WorkOS);
6
6
  validateApiKey(payload: ValidateApiKeyOptions): Promise<ValidateApiKeyResponse>;
7
+ deleteApiKey(id: string): Promise<void>;
7
8
  }
@@ -21,5 +21,10 @@ class ApiKeys {
21
21
  return (0, validate_api_key_serializer_1.deserializeValidateApiKeyResponse)(data);
22
22
  });
23
23
  }
24
+ deleteApiKey(id) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ yield this.workos.delete(`/api_keys/${id}`);
27
+ });
28
+ }
24
29
  }
25
30
  exports.ApiKeys = ApiKeys;
@@ -58,4 +58,11 @@ describe('ApiKeys', () => {
58
58
  expect(response).toEqual({ apiKey: null });
59
59
  }));
60
60
  });
61
+ describe('deleteApiKey', () => {
62
+ it('sends a delete request', () => __awaiter(void 0, void 0, void 0, function* () {
63
+ (0, test_utils_1.fetchOnce)({}, { status: 204 });
64
+ yield workos.apiKeys.deleteApiKey('api_key_01H5JQDV7R7ATEYZDEG0W5PRYS');
65
+ expect((0, test_utils_1.fetchURL)()).toContain('/api_keys/api_key_01H5JQDV7R7ATEYZDEG0W5PRYS');
66
+ }));
67
+ });
61
68
  });
@@ -0,0 +1,12 @@
1
+ import { PostOptions } from '../../common/interfaces';
2
+ export interface CreateOrganizationApiKeyOptions {
3
+ organizationId: string;
4
+ name: string;
5
+ permissions?: string[];
6
+ }
7
+ export interface SerializedCreateOrganizationApiKeyOptions {
8
+ name: string;
9
+ permissions?: string[];
10
+ }
11
+ export interface CreateOrganizationApiKeyRequestOptions extends Pick<PostOptions, 'idempotencyKey'> {
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,30 @@
1
+ export interface CreatedApiKey {
2
+ object: 'api_key';
3
+ id: string;
4
+ owner: {
5
+ type: 'organization';
6
+ id: string;
7
+ };
8
+ name: string;
9
+ obfuscatedValue: string;
10
+ value: string;
11
+ lastUsedAt: string | null;
12
+ permissions: string[];
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ }
16
+ export interface SerializedCreatedApiKey {
17
+ object: 'api_key';
18
+ id: string;
19
+ owner: {
20
+ type: 'organization';
21
+ id: string;
22
+ };
23
+ name: string;
24
+ obfuscated_value: string;
25
+ value: string;
26
+ last_used_at: string | null;
27
+ permissions: string[];
28
+ created_at: string;
29
+ updated_at: string;
30
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export * from './api-key.interface';
2
+ export * from './create-organization-api-key-options.interface';
3
+ export * from './created-api-key.interface';
4
+ export * from './list-organization-api-keys-options.interface';
5
+ export * from './validate-api-key.interface';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api-key.interface"), exports);
18
+ __exportStar(require("./create-organization-api-key-options.interface"), exports);
19
+ __exportStar(require("./created-api-key.interface"), exports);
20
+ __exportStar(require("./list-organization-api-keys-options.interface"), exports);
21
+ __exportStar(require("./validate-api-key.interface"), exports);
@@ -0,0 +1,4 @@
1
+ import { PaginationOptions } from '../../common/interfaces/pagination-options.interface';
2
+ export interface ListOrganizationApiKeysOptions extends PaginationOptions {
3
+ organizationId: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ import { CreateOrganizationApiKeyOptions, SerializedCreateOrganizationApiKeyOptions } from '../interfaces/create-organization-api-key-options.interface';
2
+ export declare function serializeCreateOrganizationApiKeyOptions(options: CreateOrganizationApiKeyOptions): SerializedCreateOrganizationApiKeyOptions;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeCreateOrganizationApiKeyOptions = void 0;
4
+ function serializeCreateOrganizationApiKeyOptions(options) {
5
+ return {
6
+ name: options.name,
7
+ permissions: options.permissions,
8
+ };
9
+ }
10
+ exports.serializeCreateOrganizationApiKeyOptions = serializeCreateOrganizationApiKeyOptions;
@@ -0,0 +1,2 @@
1
+ import { CreatedApiKey, SerializedCreatedApiKey } from '../interfaces/created-api-key.interface';
2
+ export declare function deserializeCreatedApiKey(apiKey: SerializedCreatedApiKey): CreatedApiKey;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializeCreatedApiKey = void 0;
4
+ function deserializeCreatedApiKey(apiKey) {
5
+ return {
6
+ object: apiKey.object,
7
+ id: apiKey.id,
8
+ owner: apiKey.owner,
9
+ name: apiKey.name,
10
+ obfuscatedValue: apiKey.obfuscated_value,
11
+ value: apiKey.value,
12
+ lastUsedAt: apiKey.last_used_at,
13
+ permissions: apiKey.permissions,
14
+ createdAt: apiKey.created_at,
15
+ updatedAt: apiKey.updated_at,
16
+ };
17
+ }
18
+ exports.deserializeCreatedApiKey = deserializeCreatedApiKey;
@@ -0,0 +1,4 @@
1
+ export * from './api-key.serializer';
2
+ export * from './create-organization-api-key-options.serializer';
3
+ export * from './created-api-key.serializer';
4
+ export * from './validate-api-key.serializer';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api-key.serializer"), exports);
18
+ __exportStar(require("./create-organization-api-key-options.serializer"), exports);
19
+ __exportStar(require("./created-api-key.serializer"), exports);
20
+ __exportStar(require("./validate-api-key.serializer"), exports);
@@ -266,6 +266,10 @@ export interface InvitationRevokedEvent extends EventBase {
266
266
  event: 'invitation.revoked';
267
267
  data: InvitationEvent;
268
268
  }
269
+ export interface InvitationResentEvent extends EventBase {
270
+ event: 'invitation.resent';
271
+ data: InvitationEvent;
272
+ }
269
273
  export interface InvitationAcceptedEventResponse extends EventResponseBase {
270
274
  event: 'invitation.accepted';
271
275
  data: InvitationEventResponse;
@@ -278,6 +282,10 @@ export interface InvitationRevokedEventResponse extends EventResponseBase {
278
282
  event: 'invitation.revoked';
279
283
  data: InvitationEventResponse;
280
284
  }
285
+ export interface InvitationResentEventResponse extends EventResponseBase {
286
+ event: 'invitation.resent';
287
+ data: InvitationEventResponse;
288
+ }
281
289
  export interface MagicAuthCreatedEvent extends EventBase {
282
290
  event: 'magic_auth.created';
283
291
  data: MagicAuthEvent;
@@ -482,7 +490,7 @@ export interface OrganizationDomainDeletedEventResponse extends EventResponseBas
482
490
  event: 'organization_domain.deleted';
483
491
  data: OrganizationDomainResponse;
484
492
  }
485
- export type Event = AuthenticationEmailVerificationSucceededEvent | AuthenticationMfaSucceededEvent | AuthenticationOAuthFailedEvent | AuthenticationOAuthSucceededEvent | AuthenticationSSOFailedEvent | AuthenticationSSOSucceededEvent | AuthenticationPasskeyFailedEvent | AuthenticationPasskeySucceededEvent | AuthenticationPasswordFailedEvent | AuthenticationPasswordSucceededEvent | AuthenticationMagicAuthFailedEvent | AuthenticationMagicAuthSucceededEvent | AuthenticationRadarRiskDetectedEvent | ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | EmailVerificationCreatedEvent | InvitationAcceptedEvent | InvitationCreatedEvent | InvitationRevokedEvent | MagicAuthCreatedEvent | PasswordResetCreatedEvent | PasswordResetSucceededEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | OrganizationMembershipAdded | OrganizationMembershipCreated | OrganizationMembershipDeleted | OrganizationMembershipUpdated | OrganizationMembershipRemoved | RoleCreatedEvent | RoleDeletedEvent | RoleUpdatedEvent | SessionCreatedEvent | SessionRevokedEvent | OrganizationCreatedEvent | OrganizationUpdatedEvent | OrganizationDeletedEvent | OrganizationDomainVerifiedEvent | OrganizationDomainVerificationFailedEvent | OrganizationDomainCreatedEvent | OrganizationDomainUpdatedEvent | OrganizationDomainDeletedEvent;
486
- export type EventResponse = AuthenticationEmailVerificationSucceededEventResponse | AuthenticationMagicAuthFailedEventResponse | AuthenticationMagicAuthSucceededEventResponse | AuthenticationMfaSucceededEventResponse | AuthenticationOAuthFailedEventResponse | AuthenticationOAuthSucceededEventResponse | AuthenticationPasskeyFailedEventResponse | AuthenticationPasskeySucceededEventResponse | AuthenticationPasswordFailedEventResponse | AuthenticationPasswordSucceededEventResponse | AuthenticationSSOFailedEventResponse | AuthenticationSSOSucceededEventResponse | AuthenticationRadarRiskDetectedEventResponse | ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | EmailVerificationCreatedEventResponse | InvitationAcceptedEventResponse | InvitationCreatedEventResponse | InvitationRevokedEventResponse | MagicAuthCreatedEventResponse | PasswordResetCreatedEventResponse | PasswordResetSucceededEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipCreatedResponse | OrganizationMembershipDeletedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse | RoleCreatedEventResponse | RoleDeletedEventResponse | RoleUpdatedEventResponse | SessionCreatedEventResponse | SessionRevokedEventResponse | OrganizationCreatedResponse | OrganizationUpdatedResponse | OrganizationDeletedResponse | OrganizationDomainVerifiedEventResponse | OrganizationDomainVerificationFailedEventResponse | OrganizationDomainCreatedEventResponse | OrganizationDomainUpdatedEventResponse | OrganizationDomainDeletedEventResponse;
493
+ export type Event = AuthenticationEmailVerificationSucceededEvent | AuthenticationMfaSucceededEvent | AuthenticationOAuthFailedEvent | AuthenticationOAuthSucceededEvent | AuthenticationSSOFailedEvent | AuthenticationSSOSucceededEvent | AuthenticationPasskeyFailedEvent | AuthenticationPasskeySucceededEvent | AuthenticationPasswordFailedEvent | AuthenticationPasswordSucceededEvent | AuthenticationMagicAuthFailedEvent | AuthenticationMagicAuthSucceededEvent | AuthenticationRadarRiskDetectedEvent | ConnectionActivatedEvent | ConnectionDeactivatedEvent | ConnectionDeletedEvent | DsyncActivatedEvent | DsyncDeactivatedEvent | DsyncDeletedEvent | DsyncGroupCreatedEvent | DsyncGroupUpdatedEvent | DsyncGroupDeletedEvent | DsyncGroupUserAddedEvent | DsyncGroupUserRemovedEvent | DsyncUserCreatedEvent | DsyncUserUpdatedEvent | DsyncUserDeletedEvent | EmailVerificationCreatedEvent | InvitationAcceptedEvent | InvitationCreatedEvent | InvitationRevokedEvent | InvitationResentEvent | MagicAuthCreatedEvent | PasswordResetCreatedEvent | PasswordResetSucceededEvent | UserCreatedEvent | UserUpdatedEvent | UserDeletedEvent | OrganizationMembershipAdded | OrganizationMembershipCreated | OrganizationMembershipDeleted | OrganizationMembershipUpdated | OrganizationMembershipRemoved | RoleCreatedEvent | RoleDeletedEvent | RoleUpdatedEvent | SessionCreatedEvent | SessionRevokedEvent | OrganizationCreatedEvent | OrganizationUpdatedEvent | OrganizationDeletedEvent | OrganizationDomainVerifiedEvent | OrganizationDomainVerificationFailedEvent | OrganizationDomainCreatedEvent | OrganizationDomainUpdatedEvent | OrganizationDomainDeletedEvent;
494
+ export type EventResponse = AuthenticationEmailVerificationSucceededEventResponse | AuthenticationMagicAuthFailedEventResponse | AuthenticationMagicAuthSucceededEventResponse | AuthenticationMfaSucceededEventResponse | AuthenticationOAuthFailedEventResponse | AuthenticationOAuthSucceededEventResponse | AuthenticationPasskeyFailedEventResponse | AuthenticationPasskeySucceededEventResponse | AuthenticationPasswordFailedEventResponse | AuthenticationPasswordSucceededEventResponse | AuthenticationSSOFailedEventResponse | AuthenticationSSOSucceededEventResponse | AuthenticationRadarRiskDetectedEventResponse | ConnectionActivatedEventResponse | ConnectionDeactivatedEventResponse | ConnectionDeletedEventResponse | DsyncActivatedEventResponse | DsyncDeactivatedEventResponse | DsyncDeletedEventResponse | DsyncGroupCreatedEventResponse | DsyncGroupUpdatedEventResponse | DsyncGroupDeletedEventResponse | DsyncGroupUserAddedEventResponse | DsyncGroupUserRemovedEventResponse | DsyncUserCreatedEventResponse | DsyncUserUpdatedEventResponse | DsyncUserDeletedEventResponse | EmailVerificationCreatedEventResponse | InvitationAcceptedEventResponse | InvitationCreatedEventResponse | InvitationRevokedEventResponse | InvitationResentEventResponse | MagicAuthCreatedEventResponse | PasswordResetCreatedEventResponse | PasswordResetSucceededEventResponse | UserCreatedEventResponse | UserUpdatedEventResponse | UserDeletedEventResponse | OrganizationMembershipAddedResponse | OrganizationMembershipCreatedResponse | OrganizationMembershipDeletedResponse | OrganizationMembershipUpdatedResponse | OrganizationMembershipRemovedResponse | RoleCreatedEventResponse | RoleDeletedEventResponse | RoleUpdatedEventResponse | SessionCreatedEventResponse | SessionRevokedEventResponse | OrganizationCreatedResponse | OrganizationUpdatedResponse | OrganizationDeletedResponse | OrganizationDomainVerifiedEventResponse | OrganizationDomainVerificationFailedEventResponse | OrganizationDomainCreatedEventResponse | OrganizationDomainUpdatedEventResponse | OrganizationDomainDeletedEventResponse;
487
495
  export type EventName = Event['event'];
488
496
  export {};
@@ -62,6 +62,7 @@ const deserializeEvent = (event) => {
62
62
  case 'invitation.accepted':
63
63
  case 'invitation.created':
64
64
  case 'invitation.revoked':
65
+ case 'invitation.resent':
65
66
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_4.deserializeInvitationEvent)(event.data) });
66
67
  case 'magic_auth.created':
67
68
  return Object.assign(Object.assign({}, eventBase), { event: event.event, data: (0, serializers_4.deserializeMagicAuthEvent)(event.data) });
package/lib/index.d.ts CHANGED
@@ -6,6 +6,7 @@ import { WorkOS } from './workos';
6
6
  import { WorkOSOptions } from './common/interfaces';
7
7
  import { IronSessionProvider } from './common/iron-session/iron-session-provider';
8
8
  export * from './actions/interfaces';
9
+ export * from './api-keys/interfaces';
9
10
  export * from './audit-logs/interfaces';
10
11
  export * from './common/exceptions';
11
12
  export * from './common/interfaces';
package/lib/index.js CHANGED
@@ -24,6 +24,7 @@ const webhooks_1 = require("./webhooks/webhooks");
24
24
  const workos_1 = require("./workos");
25
25
  const web_iron_session_provider_1 = require("./common/iron-session/web-iron-session-provider");
26
26
  __exportStar(require("./actions/interfaces"), exports);
27
+ __exportStar(require("./api-keys/interfaces"), exports);
27
28
  __exportStar(require("./audit-logs/interfaces"), exports);
28
29
  __exportStar(require("./common/exceptions"), exports);
29
30
  __exportStar(require("./common/interfaces"), exports);
@@ -0,0 +1,15 @@
1
+ {
2
+ "object": "api_key",
3
+ "id": "api_key_01H5JQDV7R7ATEYZDEG0W5PRYV",
4
+ "owner": {
5
+ "type": "organization",
6
+ "id": "org_01EHT88Z8J8795GZNQ4ZP1J81T"
7
+ },
8
+ "name": "New API Key",
9
+ "obfuscated_value": "sk_…9789",
10
+ "value": "sk_live_abc123xyz789",
11
+ "last_used_at": null,
12
+ "permissions": ["read", "write"],
13
+ "created_at": "2023-07-20T02:07:19.911Z",
14
+ "updated_at": "2023-07-20T02:07:19.911Z"
15
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "object": "list",
3
+ "data": [
4
+ {
5
+ "object": "api_key",
6
+ "id": "api_key_01H5JQDV7R7ATEYZDEG0W5PRYS",
7
+ "owner": {
8
+ "type": "organization",
9
+ "id": "org_01EHT88Z8J8795GZNQ4ZP1J81T"
10
+ },
11
+ "name": "Production Key",
12
+ "obfuscated_value": "sk_…PRYS",
13
+ "last_used_at": "2023-07-20T10:30:00.000Z",
14
+ "permissions": ["read", "write"],
15
+ "created_at": "2023-07-18T02:07:19.911Z",
16
+ "updated_at": "2023-07-18T02:07:19.911Z"
17
+ },
18
+ {
19
+ "object": "api_key",
20
+ "id": "api_key_01H5JQDV7R7ATEYZDEG0W5PRYT",
21
+ "owner": {
22
+ "type": "organization",
23
+ "id": "org_01EHT88Z8J8795GZNQ4ZP1J81T"
24
+ },
25
+ "name": "Development Key",
26
+ "obfuscated_value": "sk_…PRYT",
27
+ "last_used_at": null,
28
+ "permissions": ["read"],
29
+ "created_at": "2023-07-19T02:07:19.911Z",
30
+ "updated_at": "2023-07-19T02:07:19.911Z"
31
+ }
32
+ ],
33
+ "list_metadata": {
34
+ "before": null,
35
+ "after": "api_key_01H5JQDV7R7ATEYZDEG0W5PRYT"
36
+ }
37
+ }
@@ -5,6 +5,7 @@ import { FeatureFlag } from '../feature-flags/interfaces/feature-flag.interface'
5
5
  import { RoleList } from '../roles/interfaces';
6
6
  import { ListOrganizationRolesOptions } from './interfaces/list-organization-roles-options.interface';
7
7
  import { ListOrganizationFeatureFlagsOptions } from './interfaces/list-organization-feature-flags-options.interface';
8
+ import { ApiKey, ListOrganizationApiKeysOptions, CreateOrganizationApiKeyOptions, CreateOrganizationApiKeyRequestOptions, CreatedApiKey } from '../api-keys/interfaces';
8
9
  export declare class Organizations {
9
10
  private readonly workos;
10
11
  constructor(workos: WorkOS);
@@ -16,4 +17,6 @@ export declare class Organizations {
16
17
  updateOrganization(options: UpdateOrganizationOptions): Promise<Organization>;
17
18
  listOrganizationRoles(options: ListOrganizationRolesOptions): Promise<RoleList>;
18
19
  listOrganizationFeatureFlags(options: ListOrganizationFeatureFlagsOptions): Promise<AutoPaginatable<FeatureFlag>>;
20
+ listOrganizationApiKeys(options: ListOrganizationApiKeysOptions): Promise<AutoPaginatable<ApiKey>>;
21
+ createOrganizationApiKey(options: CreateOrganizationApiKeyOptions, requestOptions?: CreateOrganizationApiKeyRequestOptions): Promise<CreatedApiKey>;
19
22
  }
@@ -26,6 +26,7 @@ const serializers_1 = require("./serializers");
26
26
  const fetch_and_deserialize_1 = require("../common/utils/fetch-and-deserialize");
27
27
  const role_serializer_1 = require("../roles/serializers/role.serializer");
28
28
  const serializers_2 = require("../feature-flags/serializers");
29
+ const serializers_3 = require("../api-keys/serializers");
29
30
  class Organizations {
30
31
  constructor(workos) {
31
32
  this.workos = workos;
@@ -81,5 +82,18 @@ class Organizations {
81
82
  return new pagination_1.AutoPaginatable(yield (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/organizations/${organizationId}/feature-flags`, serializers_2.deserializeFeatureFlag, paginationOptions), (params) => (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/organizations/${organizationId}/feature-flags`, serializers_2.deserializeFeatureFlag, params), paginationOptions);
82
83
  });
83
84
  }
85
+ listOrganizationApiKeys(options) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ const { organizationId } = options, paginationOptions = __rest(options, ["organizationId"]);
88
+ return new pagination_1.AutoPaginatable(yield (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/organizations/${organizationId}/api_keys`, serializers_3.deserializeApiKey, paginationOptions), (params) => (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/organizations/${organizationId}/api_keys`, serializers_3.deserializeApiKey, params), paginationOptions);
89
+ });
90
+ }
91
+ createOrganizationApiKey(options, requestOptions = {}) {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ const { organizationId } = options;
94
+ const { data } = yield this.workos.post(`/organizations/${organizationId}/api_keys`, (0, serializers_3.serializeCreateOrganizationApiKeyOptions)(options), requestOptions);
95
+ return (0, serializers_3.deserializeCreatedApiKey)(data);
96
+ });
97
+ }
84
98
  }
85
99
  exports.Organizations = Organizations;
@@ -22,6 +22,8 @@ const get_organization_json_1 = __importDefault(require("./fixtures/get-organiza
22
22
  const list_organizations_json_1 = __importDefault(require("./fixtures/list-organizations.json"));
23
23
  const list_organization_roles_json_1 = __importDefault(require("./fixtures/list-organization-roles.json"));
24
24
  const list_organization_feature_flags_json_1 = __importDefault(require("./fixtures/list-organization-feature-flags.json"));
25
+ const list_organization_api_keys_json_1 = __importDefault(require("./fixtures/list-organization-api-keys.json"));
26
+ const create_organization_api_key_json_1 = __importDefault(require("./fixtures/create-organization-api-key.json"));
25
27
  const update_organization_json_1 = __importDefault(require("./fixtures/update-organization.json"));
26
28
  const set_stripe_customer_id_json_1 = __importDefault(require("./fixtures/set-stripe-customer-id.json"));
27
29
  const set_stripe_customer_id_disabled_json_1 = __importDefault(require("./fixtures/set-stripe-customer-id-disabled.json"));
@@ -451,4 +453,122 @@ describe('Organizations', () => {
451
453
  }));
452
454
  });
453
455
  });
456
+ describe('listOrganizationApiKeys', () => {
457
+ it('returns API keys for the organization', () => __awaiter(void 0, void 0, void 0, function* () {
458
+ (0, test_utils_1.fetchOnce)(list_organization_api_keys_json_1.default);
459
+ const { data, object, listMetadata } = yield workos.organizations.listOrganizationApiKeys({
460
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
461
+ });
462
+ expect((0, test_utils_1.fetchURL)()).toContain('/organizations/org_01EHT88Z8J8795GZNQ4ZP1J81T/api_keys');
463
+ expect(object).toEqual('list');
464
+ expect(listMetadata).toEqual({
465
+ before: null,
466
+ after: 'api_key_01H5JQDV7R7ATEYZDEG0W5PRYT',
467
+ });
468
+ expect(data).toHaveLength(2);
469
+ expect(data[0]).toEqual({
470
+ object: 'api_key',
471
+ id: 'api_key_01H5JQDV7R7ATEYZDEG0W5PRYS',
472
+ owner: {
473
+ type: 'organization',
474
+ id: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
475
+ },
476
+ name: 'Production Key',
477
+ obfuscatedValue: 'sk_…PRYS',
478
+ lastUsedAt: '2023-07-20T10:30:00.000Z',
479
+ permissions: ['read', 'write'],
480
+ createdAt: '2023-07-18T02:07:19.911Z',
481
+ updatedAt: '2023-07-18T02:07:19.911Z',
482
+ });
483
+ }));
484
+ describe('with the limit option', () => {
485
+ it('forms the proper request to the API', () => __awaiter(void 0, void 0, void 0, function* () {
486
+ (0, test_utils_1.fetchOnce)(list_organization_api_keys_json_1.default);
487
+ const { data } = yield workos.organizations.listOrganizationApiKeys({
488
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
489
+ limit: 10,
490
+ });
491
+ expect((0, test_utils_1.fetchSearchParams)()).toEqual({
492
+ limit: '10',
493
+ order: 'desc',
494
+ });
495
+ expect((0, test_utils_1.fetchURL)()).toContain('/organizations/org_01EHT88Z8J8795GZNQ4ZP1J81T/api_keys');
496
+ expect(data).toHaveLength(2);
497
+ }));
498
+ });
499
+ describe('with the before option', () => {
500
+ it('forms the proper request to the API', () => __awaiter(void 0, void 0, void 0, function* () {
501
+ (0, test_utils_1.fetchOnce)(list_organization_api_keys_json_1.default);
502
+ const { data } = yield workos.organizations.listOrganizationApiKeys({
503
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
504
+ before: 'api_key_before_id',
505
+ });
506
+ expect((0, test_utils_1.fetchSearchParams)()).toEqual({
507
+ before: 'api_key_before_id',
508
+ order: 'desc',
509
+ });
510
+ expect((0, test_utils_1.fetchURL)()).toContain('/organizations/org_01EHT88Z8J8795GZNQ4ZP1J81T/api_keys');
511
+ expect(data).toHaveLength(2);
512
+ }));
513
+ });
514
+ describe('with the after option', () => {
515
+ it('forms the proper request to the API', () => __awaiter(void 0, void 0, void 0, function* () {
516
+ (0, test_utils_1.fetchOnce)(list_organization_api_keys_json_1.default);
517
+ const { data } = yield workos.organizations.listOrganizationApiKeys({
518
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
519
+ after: 'api_key_after_id',
520
+ });
521
+ expect((0, test_utils_1.fetchSearchParams)()).toEqual({
522
+ after: 'api_key_after_id',
523
+ order: 'desc',
524
+ });
525
+ expect((0, test_utils_1.fetchURL)()).toContain('/organizations/org_01EHT88Z8J8795GZNQ4ZP1J81T/api_keys');
526
+ expect(data).toHaveLength(2);
527
+ }));
528
+ });
529
+ });
530
+ describe('createOrganizationApiKey', () => {
531
+ it('creates an API key for the organization', () => __awaiter(void 0, void 0, void 0, function* () {
532
+ (0, test_utils_1.fetchOnce)(create_organization_api_key_json_1.default, { status: 201 });
533
+ const apiKey = yield workos.organizations.createOrganizationApiKey({
534
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
535
+ name: 'New API Key',
536
+ permissions: ['read', 'write'],
537
+ });
538
+ expect((0, test_utils_1.fetchURL)()).toContain('/organizations/org_01EHT88Z8J8795GZNQ4ZP1J81T/api_keys');
539
+ expect((0, test_utils_1.fetchBody)()).toEqual({
540
+ name: 'New API Key',
541
+ permissions: ['read', 'write'],
542
+ });
543
+ expect(apiKey).toEqual({
544
+ object: 'api_key',
545
+ id: 'api_key_01H5JQDV7R7ATEYZDEG0W5PRYV',
546
+ owner: {
547
+ type: 'organization',
548
+ id: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
549
+ },
550
+ name: 'New API Key',
551
+ obfuscatedValue: 'sk_…9789',
552
+ value: 'sk_live_abc123xyz789',
553
+ lastUsedAt: null,
554
+ permissions: ['read', 'write'],
555
+ createdAt: '2023-07-20T02:07:19.911Z',
556
+ updatedAt: '2023-07-20T02:07:19.911Z',
557
+ });
558
+ }));
559
+ describe('with an idempotency key', () => {
560
+ it('includes an idempotency key with request', () => __awaiter(void 0, void 0, void 0, function* () {
561
+ (0, test_utils_1.fetchOnce)(create_organization_api_key_json_1.default, { status: 201 });
562
+ yield workos.organizations.createOrganizationApiKey({
563
+ organizationId: 'org_01EHT88Z8J8795GZNQ4ZP1J81T',
564
+ name: 'New API Key',
565
+ }, {
566
+ idempotencyKey: 'the-idempotency-key',
567
+ });
568
+ expect((0, test_utils_1.fetchHeaders)()).toMatchObject({
569
+ 'Idempotency-Key': 'the-idempotency-key',
570
+ });
571
+ }));
572
+ });
573
+ });
454
574
  });
package/lib/workos.js CHANGED
@@ -35,7 +35,7 @@ const actions_1 = require("./actions/actions");
35
35
  const vault_1 = require("./vault/vault");
36
36
  const conflict_exception_1 = require("./common/exceptions/conflict.exception");
37
37
  const parse_error_1 = require("./common/exceptions/parse-error");
38
- const VERSION = '7.79.3';
38
+ const VERSION = '7.80.0';
39
39
  const DEFAULT_HOSTNAME = 'api.workos.com';
40
40
  const HEADER_AUTHORIZATION = 'Authorization';
41
41
  const HEADER_IDEMPOTENCY_KEY = 'Idempotency-Key';
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.79.3",
2
+ "version": "7.80.0",
3
3
  "name": "@workos-inc/node",
4
4
  "author": "WorkOS",
5
5
  "description": "A Node wrapper for the WorkOS API",