From 1c9a917b5afcef0826bff2d935941f31374faa46 Mon Sep 17 00:00:00 2001 From: "Garen J. Torikian" Date: Tue, 2 Jun 2026 12:42:53 -0400 Subject: [PATCH] feat(node): own Widgets via oagen Co-Authored-By: Claude Opus 4.6 (1M context) --- .oagen-manifest.json | 16 +++++++-- .../widget-session-token-response.json | 3 ++ .../fixtures/widget-session-token.json | 5 +++ .../create-token-options.interface.ts | 12 +++++++ src/widgets/interfaces/index.ts | 7 +++- ...widget-session-token-response.interface.ts | 10 ++++++ .../widget-session-token-scopes.interface.ts | 13 +++++++ .../widget-session-token.interface.ts | 18 ++++++++++ src/widgets/serializers/index.ts | 4 +++ ...idget-session-token-response.serializer.ts | 12 +++++++ .../widget-session-token.serializer.ts | 14 ++++++++ src/widgets/widgets.ts | 34 +++++++++++-------- 12 files changed, 130 insertions(+), 18 deletions(-) create mode 100644 src/widgets/fixtures/widget-session-token-response.json create mode 100644 src/widgets/fixtures/widget-session-token.json create mode 100644 src/widgets/interfaces/create-token-options.interface.ts create mode 100644 src/widgets/interfaces/widget-session-token-response.interface.ts create mode 100644 src/widgets/interfaces/widget-session-token-scopes.interface.ts create mode 100644 src/widgets/interfaces/widget-session-token.interface.ts create mode 100644 src/widgets/serializers/index.ts create mode 100644 src/widgets/serializers/widget-session-token-response.serializer.ts create mode 100644 src/widgets/serializers/widget-session-token.serializer.ts diff --git a/.oagen-manifest.json b/.oagen-manifest.json index 88961e02b..ba29803e3 100644 --- a/.oagen-manifest.json +++ b/.oagen-manifest.json @@ -1,7 +1,7 @@ { "version": 2, "language": "node", - "generatedAt": "2026-05-27T21:09:46.992Z", + "generatedAt": "2026-06-01T17:59:24.986Z", "files": [ "src/api-keys/interfaces/create-validation-options.interface.ts", "src/api-keys/interfaces/delete-api-key-options.interface.ts", @@ -195,7 +195,19 @@ "src/webhooks/serializers/update-webhook-endpoint.serializer.ts", "src/webhooks/serializers/webhook-endpoint.serializer.ts", "src/webhooks/webhooks.spec.ts", - "src/webhooks/webhooks.ts" + "src/webhooks/webhooks.ts", + "src/widgets/fixtures/widget-session-token-response.json", + "src/widgets/fixtures/widget-session-token.json", + "src/widgets/interfaces/create-token-options.interface.ts", + "src/widgets/interfaces/index.ts", + "src/widgets/interfaces/widget-session-token-response.interface.ts", + "src/widgets/interfaces/widget-session-token-scopes.interface.ts", + "src/widgets/interfaces/widget-session-token.interface.ts", + "src/widgets/serializers/index.ts", + "src/widgets/serializers/widget-session-token-response.serializer.ts", + "src/widgets/serializers/widget-session-token.serializer.ts", + "src/widgets/widgets.spec.ts", + "src/widgets/widgets.ts" ], "operations": {} } diff --git a/src/widgets/fixtures/widget-session-token-response.json b/src/widgets/fixtures/widget-session-token-response.json new file mode 100644 index 000000000..0a78c2fde --- /dev/null +++ b/src/widgets/fixtures/widget-session-token-response.json @@ -0,0 +1,3 @@ +{ + "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6InNlc3Npb24..." +} diff --git a/src/widgets/fixtures/widget-session-token.json b/src/widgets/fixtures/widget-session-token.json new file mode 100644 index 000000000..687824574 --- /dev/null +++ b/src/widgets/fixtures/widget-session-token.json @@ -0,0 +1,5 @@ +{ + "organization_id": "org_01EHZNVPK3SFK441A1RGBFSHRT", + "user_id": "user_01E4ZCR3C56J083X43JQXF3JK5", + "scopes": ["widgets:users-table:manage"] +} diff --git a/src/widgets/interfaces/create-token-options.interface.ts b/src/widgets/interfaces/create-token-options.interface.ts new file mode 100644 index 000000000..1c41421e5 --- /dev/null +++ b/src/widgets/interfaces/create-token-options.interface.ts @@ -0,0 +1,12 @@ +// This file is auto-generated by oagen. Do not edit. + +import type { WidgetSessionTokenScopes } from './widget-session-token-scopes.interface'; + +export interface CreateTokenOptions { + /** The ID of the organization to scope the widget session to. */ + organizationId: string; + /** The ID of the user to issue the widget session token for. */ + userId?: string; + /** The scopes to grant the widget session. */ + scopes?: WidgetSessionTokenScopes[]; +} diff --git a/src/widgets/interfaces/index.ts b/src/widgets/interfaces/index.ts index 3be797ef8..e09345386 100644 --- a/src/widgets/interfaces/index.ts +++ b/src/widgets/interfaces/index.ts @@ -1 +1,6 @@ -export * from './get-token'; +// This file is auto-generated by oagen. Do not edit. + +export * from './create-token-options.interface'; +export * from './widget-session-token-response.interface'; +export * from './widget-session-token-scopes.interface'; +export * from './widget-session-token.interface'; diff --git a/src/widgets/interfaces/widget-session-token-response.interface.ts b/src/widgets/interfaces/widget-session-token-response.interface.ts new file mode 100644 index 000000000..919707b8a --- /dev/null +++ b/src/widgets/interfaces/widget-session-token-response.interface.ts @@ -0,0 +1,10 @@ +// This file is auto-generated by oagen. Do not edit. + +export interface WidgetSessionTokenResponse { + /** The widget session token. */ + token: string; +} + +export interface WidgetSessionTokenResponseWire { + token: string; +} diff --git a/src/widgets/interfaces/widget-session-token-scopes.interface.ts b/src/widgets/interfaces/widget-session-token-scopes.interface.ts new file mode 100644 index 000000000..b0437888b --- /dev/null +++ b/src/widgets/interfaces/widget-session-token-scopes.interface.ts @@ -0,0 +1,13 @@ +// This file is auto-generated by oagen. Do not edit. + +export const WidgetSessionTokenScopes = { + WidgetsUsersTableManage: 'widgets:users-table:manage', + WidgetsDomainVerificationManage: 'widgets:domain-verification:manage', + WidgetsSSOManage: 'widgets:sso:manage', + WidgetsApiKeysManage: 'widgets:api-keys:manage', + WidgetsDsyncManage: 'widgets:dsync:manage', + WidgetsAuditLogStreamingManage: 'widgets:audit-log-streaming:manage', +} as const; + +export type WidgetSessionTokenScopes = + (typeof WidgetSessionTokenScopes)[keyof typeof WidgetSessionTokenScopes]; diff --git a/src/widgets/interfaces/widget-session-token.interface.ts b/src/widgets/interfaces/widget-session-token.interface.ts new file mode 100644 index 000000000..25a644145 --- /dev/null +++ b/src/widgets/interfaces/widget-session-token.interface.ts @@ -0,0 +1,18 @@ +// This file is auto-generated by oagen. Do not edit. + +import type { WidgetSessionTokenScopes } from './widget-session-token-scopes.interface'; + +export interface GetTokenOptions { + /** The ID of the organization to scope the widget session to. */ + organizationId: string; + /** The ID of the user to issue the widget session token for. */ + userId?: string; + /** The scopes to grant the widget session. */ + scopes?: WidgetSessionTokenScopes[]; +} + +export interface SerializedGetTokenOptions { + organization_id: string; + user_id?: string; + scopes?: WidgetSessionTokenScopes[]; +} diff --git a/src/widgets/serializers/index.ts b/src/widgets/serializers/index.ts new file mode 100644 index 000000000..411889667 --- /dev/null +++ b/src/widgets/serializers/index.ts @@ -0,0 +1,4 @@ +// This file is auto-generated by oagen. Do not edit. + +export * from './widget-session-token.serializer'; +export * from './widget-session-token-response.serializer'; diff --git a/src/widgets/serializers/widget-session-token-response.serializer.ts b/src/widgets/serializers/widget-session-token-response.serializer.ts new file mode 100644 index 000000000..1c44bc813 --- /dev/null +++ b/src/widgets/serializers/widget-session-token-response.serializer.ts @@ -0,0 +1,12 @@ +// This file is auto-generated by oagen. Do not edit. + +import type { + WidgetSessionTokenResponse, + WidgetSessionTokenResponseWire, +} from '../interfaces/widget-session-token-response.interface'; + +export const deserializeWidgetSessionTokenResponse = ( + response: WidgetSessionTokenResponseWire, +): WidgetSessionTokenResponse => ({ + token: response.token, +}); diff --git a/src/widgets/serializers/widget-session-token.serializer.ts b/src/widgets/serializers/widget-session-token.serializer.ts new file mode 100644 index 000000000..2c8fcb9e2 --- /dev/null +++ b/src/widgets/serializers/widget-session-token.serializer.ts @@ -0,0 +1,14 @@ +// This file is auto-generated by oagen. Do not edit. + +import type { + GetTokenOptions, + SerializedGetTokenOptions, +} from '../interfaces/widget-session-token.interface'; + +export const serializeGetTokenOptions = ( + model: GetTokenOptions, +): SerializedGetTokenOptions => ({ + organization_id: model.organizationId, + user_id: model.userId, + scopes: model.scopes, +}); diff --git a/src/widgets/widgets.ts b/src/widgets/widgets.ts index 066a25313..1b9593f34 100644 --- a/src/widgets/widgets.ts +++ b/src/widgets/widgets.ts @@ -1,12 +1,14 @@ -import { WorkOS } from '../workos'; -import { - deserializeGetTokenResponse, - GetTokenOptions, - GetTokenResponse, - GetTokenResponseResponse, - SerializedGetTokenOptions, - serializeGetTokenOptions, -} from './interfaces/get-token'; +// This file is auto-generated by oagen. Do not edit. + +import type { WorkOS } from '../workos'; +import type { CreateTokenOptions } from './interfaces/create-token-options.interface'; +import type { + WidgetSessionTokenResponse, + WidgetSessionTokenResponseWire, +} from './interfaces/widget-session-token-response.interface'; +import type { SerializedGetTokenOptions } from './interfaces/widget-session-token.interface'; +import { deserializeWidgetSessionTokenResponse } from './serializers/widget-session-token-response.serializer'; +import { serializeGetTokenOptions } from './serializers/widget-session-token.serializer'; export class Widgets { constructor(private readonly workos: WorkOS) {} @@ -15,18 +17,20 @@ export class Widgets { * Generate a widget token * * Generate a widget token scoped to an organization and user with the specified scopes. - * @param payload - Object containing organizationId. - * @returns {Promise} + * @param options - The request options. + * @returns {Promise} * @throws {BadRequestException} 400 * @throws {NotFoundException} 404 * @throws {UnprocessableEntityException} 422 */ - async createToken(payload: GetTokenOptions): Promise { + async createToken( + options: CreateTokenOptions, + ): Promise { + const payload = options; const { data } = await this.workos.post< - GetTokenResponseResponse, + WidgetSessionTokenResponseWire, SerializedGetTokenOptions >('/widgets/token', serializeGetTokenOptions(payload)); - - return deserializeGetTokenResponse(data); + return deserializeWidgetSessionTokenResponse(data); } }