diff --git a/package-lock.json b/package-lock.json index 75510c7a..c0c5c96b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@seamapi/blueprint": "^0.51.1", "@seamapi/fake-seam-connect": "^1.77.0", "@seamapi/smith": "^0.5.2", - "@seamapi/types": "1.578.0", + "@seamapi/types": "1.585.0", "@swc/core": "^1.11.29", "@types/jsonwebtoken": "^9.0.6", "@types/node": "^22.15.21", @@ -49,7 +49,7 @@ "npm": ">=10.1.0" }, "peerDependencies": { - "@seamapi/types": "^1.578.0" + "@seamapi/types": "^1.585.0" }, "peerDependenciesMeta": { "@seamapi/types": { @@ -1371,9 +1371,9 @@ } }, "node_modules/@seamapi/types": { - "version": "1.578.0", - "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.578.0.tgz", - "integrity": "sha512-hTHkXKg27iN7d+d+H5ivXvVzlwcPXQE4uC0nD7K3tOMDQGU7rq2S7Q/LmGG1v39WEanitlKJyDPaom/rt/FNrw==", + "version": "1.585.0", + "resolved": "https://registry.npmjs.org/@seamapi/types/-/types-1.585.0.tgz", + "integrity": "sha512-Nxzw4vBtne74FH0Lb7InIZVLufS/yAX5JWuYD48vbnT/nYlZZGLOvepyl3SAYuPIv5msewEy55cLCGVuiwa6Jw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index cf98fdcf..3e29e4aa 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "npm": ">=10.1.0" }, "peerDependencies": { - "@seamapi/types": "^1.578.0" + "@seamapi/types": "^1.585.0" }, "peerDependenciesMeta": { "@seamapi/types": { @@ -102,7 +102,7 @@ "@seamapi/blueprint": "^0.51.1", "@seamapi/fake-seam-connect": "^1.77.0", "@seamapi/smith": "^0.5.2", - "@seamapi/types": "1.578.0", + "@seamapi/types": "1.585.0", "@swc/core": "^1.11.29", "@types/jsonwebtoken": "^9.0.6", "@types/node": "^22.15.21", diff --git a/src/lib/seam/connect/routes/access-grants/access-grants.ts b/src/lib/seam/connect/routes/access-grants/access-grants.ts index bc87e022..f78b253d 100644 --- a/src/lib/seam/connect/routes/access-grants/access-grants.ts +++ b/src/lib/seam/connect/routes/access-grants/access-grants.ts @@ -40,6 +40,8 @@ import { SeamHttpRequest } from 'lib/seam/connect/seam-http-request.js' import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' import type { SetNonNullable } from 'lib/types.js' +import { SeamHttpAccessGrantsUnmanaged } from './unmanaged/index.js' + export class SeamHttpAccessGrants { client: Client readonly defaults: Required @@ -167,6 +169,10 @@ export class SeamHttpAccessGrants { await clientSessions.get() } + get unmanaged(): SeamHttpAccessGrantsUnmanaged { + return SeamHttpAccessGrantsUnmanaged.fromClient(this.client, this.defaults) + } + create( parameters?: AccessGrantsCreateParameters, options: AccessGrantsCreateOptions = {}, diff --git a/src/lib/seam/connect/routes/access-grants/index.ts b/src/lib/seam/connect/routes/access-grants/index.ts index afe09729..cd215bae 100644 --- a/src/lib/seam/connect/routes/access-grants/index.ts +++ b/src/lib/seam/connect/routes/access-grants/index.ts @@ -4,3 +4,4 @@ */ export * from './access-grants.js' +export * from './unmanaged/index.js' diff --git a/src/lib/seam/connect/routes/access-grants/unmanaged/index.ts b/src/lib/seam/connect/routes/access-grants/unmanaged/index.ts new file mode 100644 index 00000000..bab8a37e --- /dev/null +++ b/src/lib/seam/connect/routes/access-grants/unmanaged/index.ts @@ -0,0 +1,6 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +export * from './unmanaged.js' diff --git a/src/lib/seam/connect/routes/access-grants/unmanaged/unmanaged.ts b/src/lib/seam/connect/routes/access-grants/unmanaged/unmanaged.ts new file mode 100644 index 00000000..00248d93 --- /dev/null +++ b/src/lib/seam/connect/routes/access-grants/unmanaged/unmanaged.ts @@ -0,0 +1,236 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect' + +import { seamApiLtsVersion } from 'lib/lts-version.js' +import { + getAuthHeadersForClientSessionToken, + warnOnInsecureuserIdentifierKey, +} from 'lib/seam/connect/auth.js' +import { type Client, createClient } from 'lib/seam/connect/client.js' +import { + isSeamHttpOptionsWithApiKey, + isSeamHttpOptionsWithClient, + isSeamHttpOptionsWithClientSessionToken, + isSeamHttpOptionsWithConsoleSessionToken, + isSeamHttpOptionsWithPersonalAccessToken, + type SeamHttpFromPublishableKeyOptions, + SeamHttpInvalidOptionsError, + type SeamHttpOptions, + type SeamHttpOptionsWithApiKey, + type SeamHttpOptionsWithClient, + type SeamHttpOptionsWithClientSessionToken, + type SeamHttpOptionsWithConsoleSessionToken, + type SeamHttpOptionsWithPersonalAccessToken, + type SeamHttpRequestOptions, +} from 'lib/seam/connect/options.js' +import { + limitToSeamHttpRequestOptions, + parseOptions, +} from 'lib/seam/connect/parse-options.js' +import { SeamHttpClientSessions } from 'lib/seam/connect/routes/client-sessions/index.js' +import { SeamHttpRequest } from 'lib/seam/connect/seam-http-request.js' +import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' +import type { SetNonNullable } from 'lib/types.js' + +export class SeamHttpAccessGrantsUnmanaged { + client: Client + readonly defaults: Required + readonly ltsVersion = seamApiLtsVersion + static ltsVersion = seamApiLtsVersion + + constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { + const options = parseOptions(apiKeyOrOptions) + this.client = 'client' in options ? options.client : createClient(options) + this.defaults = limitToSeamHttpRequestOptions(options) + } + + static fromClient( + client: SeamHttpOptionsWithClient['client'], + options: Omit = {}, + ): SeamHttpAccessGrantsUnmanaged { + const constructorOptions = { ...options, client } + if (!isSeamHttpOptionsWithClient(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing client') + } + return new SeamHttpAccessGrantsUnmanaged(constructorOptions) + } + + static fromApiKey( + apiKey: SeamHttpOptionsWithApiKey['apiKey'], + options: Omit = {}, + ): SeamHttpAccessGrantsUnmanaged { + const constructorOptions = { ...options, apiKey } + if (!isSeamHttpOptionsWithApiKey(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing apiKey') + } + return new SeamHttpAccessGrantsUnmanaged(constructorOptions) + } + + static fromClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + options: Omit< + SeamHttpOptionsWithClientSessionToken, + 'clientSessionToken' + > = {}, + ): SeamHttpAccessGrantsUnmanaged { + const constructorOptions = { ...options, clientSessionToken } + if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing clientSessionToken') + } + return new SeamHttpAccessGrantsUnmanaged(constructorOptions) + } + + static async fromPublishableKey( + publishableKey: string, + userIdentifierKey: string, + options: SeamHttpFromPublishableKeyOptions = {}, + ): Promise { + warnOnInsecureuserIdentifierKey(userIdentifierKey) + const clientOptions = parseOptions({ ...options, publishableKey }) + if (isSeamHttpOptionsWithClient(clientOptions)) { + throw new SeamHttpInvalidOptionsError( + 'The client option cannot be used with SeamHttpAccessGrantsUnmanaged.fromPublishableKey', + ) + } + const client = createClient(clientOptions) + const clientSessions = SeamHttpClientSessions.fromClient(client) + const { token } = await clientSessions.getOrCreate({ + user_identifier_key: userIdentifierKey, + }) + return SeamHttpAccessGrantsUnmanaged.fromClientSessionToken(token, options) + } + + static fromConsoleSessionToken( + consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'], + workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithConsoleSessionToken, + 'consoleSessionToken' | 'workspaceId' + > = {}, + ): SeamHttpAccessGrantsUnmanaged { + const constructorOptions = { ...options, consoleSessionToken, workspaceId } + if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing consoleSessionToken or workspaceId', + ) + } + return new SeamHttpAccessGrantsUnmanaged(constructorOptions) + } + + static fromPersonalAccessToken( + personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'], + workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithPersonalAccessToken, + 'personalAccessToken' | 'workspaceId' + > = {}, + ): SeamHttpAccessGrantsUnmanaged { + const constructorOptions = { ...options, personalAccessToken, workspaceId } + if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing personalAccessToken or workspaceId', + ) + } + return new SeamHttpAccessGrantsUnmanaged(constructorOptions) + } + + createPaginator( + request: SeamHttpRequest, + ): SeamPaginator { + return new SeamPaginator(this, request) + } + + async updateClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + ): Promise { + const { headers } = this.client.defaults + const authHeaders = getAuthHeadersForClientSessionToken({ + clientSessionToken, + }) + for (const key of Object.keys(authHeaders)) { + if (headers[key] == null) { + throw new Error( + 'Cannot update a clientSessionToken on a client created without a clientSessionToken', + ) + } + } + this.client.defaults.headers = { ...headers, ...authHeaders } + const clientSessions = SeamHttpClientSessions.fromClient(this.client) + await clientSessions.get() + } + + get( + parameters?: AccessGrantsUnmanagedGetParameters, + options: AccessGrantsUnmanagedGetOptions = {}, + ): AccessGrantsUnmanagedGetRequest { + return new SeamHttpRequest(this, { + pathname: '/access_grants/unmanaged/get', + method: 'POST', + body: parameters, + responseKey: 'access_grant', + options, + }) + } + + list( + parameters?: AccessGrantsUnmanagedListParameters, + options: AccessGrantsUnmanagedListOptions = {}, + ): AccessGrantsUnmanagedListRequest { + return new SeamHttpRequest(this, { + pathname: '/access_grants/unmanaged/list', + method: 'POST', + body: parameters, + responseKey: 'access_grants', + options, + }) + } +} + +export type AccessGrantsUnmanagedGetParameters = + RouteRequestBody<'/access_grants/unmanaged/get'> + +/** + * @deprecated Use AccessGrantsUnmanagedGetParameters instead. + */ +export type AccessGrantsUnmanagedGetParams = AccessGrantsUnmanagedGetParameters + +/** + * @deprecated Use AccessGrantsUnmanagedGetRequest instead. + */ +export type AccessGrantsUnmanagedGetResponse = SetNonNullable< + Required> +> + +export type AccessGrantsUnmanagedGetRequest = SeamHttpRequest< + AccessGrantsUnmanagedGetResponse, + 'access_grant' +> + +export interface AccessGrantsUnmanagedGetOptions {} + +export type AccessGrantsUnmanagedListParameters = + RouteRequestBody<'/access_grants/unmanaged/list'> + +/** + * @deprecated Use AccessGrantsUnmanagedListParameters instead. + */ +export type AccessGrantsUnmanagedListParams = + AccessGrantsUnmanagedListParameters + +/** + * @deprecated Use AccessGrantsUnmanagedListRequest instead. + */ +export type AccessGrantsUnmanagedListResponse = SetNonNullable< + Required> +> + +export type AccessGrantsUnmanagedListRequest = SeamHttpRequest< + AccessGrantsUnmanagedListResponse, + 'access_grants' +> + +export interface AccessGrantsUnmanagedListOptions {} diff --git a/src/lib/seam/connect/routes/access-methods/access-methods.ts b/src/lib/seam/connect/routes/access-methods/access-methods.ts index cb989123..eb4d31c4 100644 --- a/src/lib/seam/connect/routes/access-methods/access-methods.ts +++ b/src/lib/seam/connect/routes/access-methods/access-methods.ts @@ -36,6 +36,8 @@ import { SeamHttpRequest } from 'lib/seam/connect/seam-http-request.js' import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' import type { SetNonNullable } from 'lib/types.js' +import { SeamHttpAccessMethodsUnmanaged } from './unmanaged/index.js' + export class SeamHttpAccessMethods { client: Client readonly defaults: Required @@ -163,6 +165,10 @@ export class SeamHttpAccessMethods { await clientSessions.get() } + get unmanaged(): SeamHttpAccessMethodsUnmanaged { + return SeamHttpAccessMethodsUnmanaged.fromClient(this.client, this.defaults) + } + delete( parameters?: AccessMethodsDeleteParameters, options: AccessMethodsDeleteOptions = {}, diff --git a/src/lib/seam/connect/routes/access-methods/index.ts b/src/lib/seam/connect/routes/access-methods/index.ts index f339d498..52212c66 100644 --- a/src/lib/seam/connect/routes/access-methods/index.ts +++ b/src/lib/seam/connect/routes/access-methods/index.ts @@ -4,3 +4,4 @@ */ export * from './access-methods.js' +export * from './unmanaged/index.js' diff --git a/src/lib/seam/connect/routes/access-methods/unmanaged/index.ts b/src/lib/seam/connect/routes/access-methods/unmanaged/index.ts new file mode 100644 index 00000000..bab8a37e --- /dev/null +++ b/src/lib/seam/connect/routes/access-methods/unmanaged/index.ts @@ -0,0 +1,6 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +export * from './unmanaged.js' diff --git a/src/lib/seam/connect/routes/access-methods/unmanaged/unmanaged.ts b/src/lib/seam/connect/routes/access-methods/unmanaged/unmanaged.ts new file mode 100644 index 00000000..75f3d398 --- /dev/null +++ b/src/lib/seam/connect/routes/access-methods/unmanaged/unmanaged.ts @@ -0,0 +1,237 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect' + +import { seamApiLtsVersion } from 'lib/lts-version.js' +import { + getAuthHeadersForClientSessionToken, + warnOnInsecureuserIdentifierKey, +} from 'lib/seam/connect/auth.js' +import { type Client, createClient } from 'lib/seam/connect/client.js' +import { + isSeamHttpOptionsWithApiKey, + isSeamHttpOptionsWithClient, + isSeamHttpOptionsWithClientSessionToken, + isSeamHttpOptionsWithConsoleSessionToken, + isSeamHttpOptionsWithPersonalAccessToken, + type SeamHttpFromPublishableKeyOptions, + SeamHttpInvalidOptionsError, + type SeamHttpOptions, + type SeamHttpOptionsWithApiKey, + type SeamHttpOptionsWithClient, + type SeamHttpOptionsWithClientSessionToken, + type SeamHttpOptionsWithConsoleSessionToken, + type SeamHttpOptionsWithPersonalAccessToken, + type SeamHttpRequestOptions, +} from 'lib/seam/connect/options.js' +import { + limitToSeamHttpRequestOptions, + parseOptions, +} from 'lib/seam/connect/parse-options.js' +import { SeamHttpClientSessions } from 'lib/seam/connect/routes/client-sessions/index.js' +import { SeamHttpRequest } from 'lib/seam/connect/seam-http-request.js' +import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' +import type { SetNonNullable } from 'lib/types.js' + +export class SeamHttpAccessMethodsUnmanaged { + client: Client + readonly defaults: Required + readonly ltsVersion = seamApiLtsVersion + static ltsVersion = seamApiLtsVersion + + constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { + const options = parseOptions(apiKeyOrOptions) + this.client = 'client' in options ? options.client : createClient(options) + this.defaults = limitToSeamHttpRequestOptions(options) + } + + static fromClient( + client: SeamHttpOptionsWithClient['client'], + options: Omit = {}, + ): SeamHttpAccessMethodsUnmanaged { + const constructorOptions = { ...options, client } + if (!isSeamHttpOptionsWithClient(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing client') + } + return new SeamHttpAccessMethodsUnmanaged(constructorOptions) + } + + static fromApiKey( + apiKey: SeamHttpOptionsWithApiKey['apiKey'], + options: Omit = {}, + ): SeamHttpAccessMethodsUnmanaged { + const constructorOptions = { ...options, apiKey } + if (!isSeamHttpOptionsWithApiKey(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing apiKey') + } + return new SeamHttpAccessMethodsUnmanaged(constructorOptions) + } + + static fromClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + options: Omit< + SeamHttpOptionsWithClientSessionToken, + 'clientSessionToken' + > = {}, + ): SeamHttpAccessMethodsUnmanaged { + const constructorOptions = { ...options, clientSessionToken } + if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing clientSessionToken') + } + return new SeamHttpAccessMethodsUnmanaged(constructorOptions) + } + + static async fromPublishableKey( + publishableKey: string, + userIdentifierKey: string, + options: SeamHttpFromPublishableKeyOptions = {}, + ): Promise { + warnOnInsecureuserIdentifierKey(userIdentifierKey) + const clientOptions = parseOptions({ ...options, publishableKey }) + if (isSeamHttpOptionsWithClient(clientOptions)) { + throw new SeamHttpInvalidOptionsError( + 'The client option cannot be used with SeamHttpAccessMethodsUnmanaged.fromPublishableKey', + ) + } + const client = createClient(clientOptions) + const clientSessions = SeamHttpClientSessions.fromClient(client) + const { token } = await clientSessions.getOrCreate({ + user_identifier_key: userIdentifierKey, + }) + return SeamHttpAccessMethodsUnmanaged.fromClientSessionToken(token, options) + } + + static fromConsoleSessionToken( + consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'], + workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithConsoleSessionToken, + 'consoleSessionToken' | 'workspaceId' + > = {}, + ): SeamHttpAccessMethodsUnmanaged { + const constructorOptions = { ...options, consoleSessionToken, workspaceId } + if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing consoleSessionToken or workspaceId', + ) + } + return new SeamHttpAccessMethodsUnmanaged(constructorOptions) + } + + static fromPersonalAccessToken( + personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'], + workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithPersonalAccessToken, + 'personalAccessToken' | 'workspaceId' + > = {}, + ): SeamHttpAccessMethodsUnmanaged { + const constructorOptions = { ...options, personalAccessToken, workspaceId } + if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing personalAccessToken or workspaceId', + ) + } + return new SeamHttpAccessMethodsUnmanaged(constructorOptions) + } + + createPaginator( + request: SeamHttpRequest, + ): SeamPaginator { + return new SeamPaginator(this, request) + } + + async updateClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + ): Promise { + const { headers } = this.client.defaults + const authHeaders = getAuthHeadersForClientSessionToken({ + clientSessionToken, + }) + for (const key of Object.keys(authHeaders)) { + if (headers[key] == null) { + throw new Error( + 'Cannot update a clientSessionToken on a client created without a clientSessionToken', + ) + } + } + this.client.defaults.headers = { ...headers, ...authHeaders } + const clientSessions = SeamHttpClientSessions.fromClient(this.client) + await clientSessions.get() + } + + get( + parameters?: AccessMethodsUnmanagedGetParameters, + options: AccessMethodsUnmanagedGetOptions = {}, + ): AccessMethodsUnmanagedGetRequest { + return new SeamHttpRequest(this, { + pathname: '/access_methods/unmanaged/get', + method: 'POST', + body: parameters, + responseKey: 'access_method', + options, + }) + } + + list( + parameters?: AccessMethodsUnmanagedListParameters, + options: AccessMethodsUnmanagedListOptions = {}, + ): AccessMethodsUnmanagedListRequest { + return new SeamHttpRequest(this, { + pathname: '/access_methods/unmanaged/list', + method: 'POST', + body: parameters, + responseKey: 'access_methods', + options, + }) + } +} + +export type AccessMethodsUnmanagedGetParameters = + RouteRequestBody<'/access_methods/unmanaged/get'> + +/** + * @deprecated Use AccessMethodsUnmanagedGetParameters instead. + */ +export type AccessMethodsUnmanagedGetParams = + AccessMethodsUnmanagedGetParameters + +/** + * @deprecated Use AccessMethodsUnmanagedGetRequest instead. + */ +export type AccessMethodsUnmanagedGetResponse = SetNonNullable< + Required> +> + +export type AccessMethodsUnmanagedGetRequest = SeamHttpRequest< + AccessMethodsUnmanagedGetResponse, + 'access_method' +> + +export interface AccessMethodsUnmanagedGetOptions {} + +export type AccessMethodsUnmanagedListParameters = + RouteRequestBody<'/access_methods/unmanaged/list'> + +/** + * @deprecated Use AccessMethodsUnmanagedListParameters instead. + */ +export type AccessMethodsUnmanagedListParams = + AccessMethodsUnmanagedListParameters + +/** + * @deprecated Use AccessMethodsUnmanagedListRequest instead. + */ +export type AccessMethodsUnmanagedListResponse = SetNonNullable< + Required> +> + +export type AccessMethodsUnmanagedListRequest = SeamHttpRequest< + AccessMethodsUnmanagedListResponse, + 'access_methods' +> + +export interface AccessMethodsUnmanagedListOptions {} diff --git a/src/lib/seam/connect/routes/seam-http-endpoints.ts b/src/lib/seam/connect/routes/seam-http-endpoints.ts index c73e788f..80504d1f 100644 --- a/src/lib/seam/connect/routes/seam-http-endpoints.ts +++ b/src/lib/seam/connect/routes/seam-http-endpoints.ts @@ -110,6 +110,15 @@ import { type AccessGrantsUpdateRequest, SeamHttpAccessGrants, } from './access-grants/index.js' +import { + type AccessGrantsUnmanagedGetOptions, + type AccessGrantsUnmanagedGetParameters, + type AccessGrantsUnmanagedGetRequest, + type AccessGrantsUnmanagedListOptions, + type AccessGrantsUnmanagedListParameters, + type AccessGrantsUnmanagedListRequest, + SeamHttpAccessGrantsUnmanaged, +} from './access-grants/unmanaged/index.js' import { type AccessMethodsDeleteOptions, type AccessMethodsDeleteParameters, @@ -128,6 +137,15 @@ import { type AccessMethodsListRequest, SeamHttpAccessMethods, } from './access-methods/index.js' +import { + type AccessMethodsUnmanagedGetOptions, + type AccessMethodsUnmanagedGetParameters, + type AccessMethodsUnmanagedGetRequest, + type AccessMethodsUnmanagedListOptions, + type AccessMethodsUnmanagedListParameters, + type AccessMethodsUnmanagedListRequest, + SeamHttpAccessMethodsUnmanaged, +} from './access-methods/unmanaged/index.js' import { type AcsAccessGroupsAddUserOptions, type AcsAccessGroupsAddUserParameters, @@ -800,6 +818,15 @@ import { type UserIdentitiesUpdateParameters, type UserIdentitiesUpdateRequest, } from './user-identities/index.js' +import { + SeamHttpUserIdentitiesUnmanaged, + type UserIdentitiesUnmanagedGetOptions, + type UserIdentitiesUnmanagedGetParameters, + type UserIdentitiesUnmanagedGetRequest, + type UserIdentitiesUnmanagedListOptions, + type UserIdentitiesUnmanagedListParameters, + type UserIdentitiesUnmanagedListRequest, +} from './user-identities/unmanaged/index.js' import { SeamHttpWebhooks, type WebhooksCreateOptions, @@ -1273,6 +1300,32 @@ export class SeamHttpEndpoints { } } + get '/access_grants/unmanaged/get'(): ( + parameters?: AccessGrantsUnmanagedGetParameters, + options?: AccessGrantsUnmanagedGetOptions, + ) => AccessGrantsUnmanagedGetRequest { + const { client, defaults } = this + return function accessGrantsUnmanagedGet( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpAccessGrantsUnmanaged.fromClient(client, defaults) + return seam.get(...args) + } + } + + get '/access_grants/unmanaged/list'(): ( + parameters?: AccessGrantsUnmanagedListParameters, + options?: AccessGrantsUnmanagedListOptions, + ) => AccessGrantsUnmanagedListRequest { + const { client, defaults } = this + return function accessGrantsUnmanagedList( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpAccessGrantsUnmanaged.fromClient(client, defaults) + return seam.list(...args) + } + } + get '/access_methods/delete'(): ( parameters?: AccessMethodsDeleteParameters, options?: AccessMethodsDeleteOptions, @@ -1338,6 +1391,32 @@ export class SeamHttpEndpoints { } } + get '/access_methods/unmanaged/get'(): ( + parameters?: AccessMethodsUnmanagedGetParameters, + options?: AccessMethodsUnmanagedGetOptions, + ) => AccessMethodsUnmanagedGetRequest { + const { client, defaults } = this + return function accessMethodsUnmanagedGet( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpAccessMethodsUnmanaged.fromClient(client, defaults) + return seam.get(...args) + } + } + + get '/access_methods/unmanaged/list'(): ( + parameters?: AccessMethodsUnmanagedListParameters, + options?: AccessMethodsUnmanagedListOptions, + ) => AccessMethodsUnmanagedListRequest { + const { client, defaults } = this + return function accessMethodsUnmanagedList( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpAccessMethodsUnmanaged.fromClient(client, defaults) + return seam.list(...args) + } + } + get '/acs/access_groups/add_user'(): ( parameters?: AcsAccessGroupsAddUserParameters, options?: AcsAccessGroupsAddUserOptions, @@ -3898,6 +3977,32 @@ export class SeamHttpEndpoints { } } + get '/user_identities/unmanaged/get'(): ( + parameters?: UserIdentitiesUnmanagedGetParameters, + options?: UserIdentitiesUnmanagedGetOptions, + ) => UserIdentitiesUnmanagedGetRequest { + const { client, defaults } = this + return function userIdentitiesUnmanagedGet( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpUserIdentitiesUnmanaged.fromClient(client, defaults) + return seam.get(...args) + } + } + + get '/user_identities/unmanaged/list'(): ( + parameters?: UserIdentitiesUnmanagedListParameters, + options?: UserIdentitiesUnmanagedListOptions, + ) => UserIdentitiesUnmanagedListRequest { + const { client, defaults } = this + return function userIdentitiesUnmanagedList( + ...args: Parameters + ): ReturnType { + const seam = SeamHttpUserIdentitiesUnmanaged.fromClient(client, defaults) + return seam.list(...args) + } + } + get '/webhooks/create'(): ( parameters?: WebhooksCreateParameters, options?: WebhooksCreateOptions, @@ -4163,9 +4268,13 @@ export type SeamHttpEndpointQueryPaths = | '/access_grants/get' | '/access_grants/get_related' | '/access_grants/list' + | '/access_grants/unmanaged/get' + | '/access_grants/unmanaged/list' | '/access_methods/get' | '/access_methods/get_related' | '/access_methods/list' + | '/access_methods/unmanaged/get' + | '/access_methods/unmanaged/list' | '/acs/access_groups/get' | '/acs/access_groups/list' | '/acs/access_groups/list_accessible_entrances' @@ -4242,6 +4351,8 @@ export type SeamHttpEndpointQueryPaths = | '/user_identities/list_acs_users' | '/user_identities/enrollment_automations/get' | '/user_identities/enrollment_automations/list' + | '/user_identities/unmanaged/get' + | '/user_identities/unmanaged/list' | '/webhooks/get' | '/webhooks/list' | '/workspaces/find_anything' diff --git a/src/lib/seam/connect/routes/user-identities/index.ts b/src/lib/seam/connect/routes/user-identities/index.ts index 9712abfa..cd8f04b7 100644 --- a/src/lib/seam/connect/routes/user-identities/index.ts +++ b/src/lib/seam/connect/routes/user-identities/index.ts @@ -4,4 +4,5 @@ */ export * from './enrollment-automations/index.js' +export * from './unmanaged/index.js' export * from './user-identities.js' diff --git a/src/lib/seam/connect/routes/user-identities/unmanaged/index.ts b/src/lib/seam/connect/routes/user-identities/unmanaged/index.ts new file mode 100644 index 00000000..bab8a37e --- /dev/null +++ b/src/lib/seam/connect/routes/user-identities/unmanaged/index.ts @@ -0,0 +1,6 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +export * from './unmanaged.js' diff --git a/src/lib/seam/connect/routes/user-identities/unmanaged/unmanaged.ts b/src/lib/seam/connect/routes/user-identities/unmanaged/unmanaged.ts new file mode 100644 index 00000000..95cd8fd1 --- /dev/null +++ b/src/lib/seam/connect/routes/user-identities/unmanaged/unmanaged.ts @@ -0,0 +1,240 @@ +/* + * Automatically generated by codegen/smith.ts. + * Do not edit this file or add other files to this directory. + */ + +import type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect' + +import { seamApiLtsVersion } from 'lib/lts-version.js' +import { + getAuthHeadersForClientSessionToken, + warnOnInsecureuserIdentifierKey, +} from 'lib/seam/connect/auth.js' +import { type Client, createClient } from 'lib/seam/connect/client.js' +import { + isSeamHttpOptionsWithApiKey, + isSeamHttpOptionsWithClient, + isSeamHttpOptionsWithClientSessionToken, + isSeamHttpOptionsWithConsoleSessionToken, + isSeamHttpOptionsWithPersonalAccessToken, + type SeamHttpFromPublishableKeyOptions, + SeamHttpInvalidOptionsError, + type SeamHttpOptions, + type SeamHttpOptionsWithApiKey, + type SeamHttpOptionsWithClient, + type SeamHttpOptionsWithClientSessionToken, + type SeamHttpOptionsWithConsoleSessionToken, + type SeamHttpOptionsWithPersonalAccessToken, + type SeamHttpRequestOptions, +} from 'lib/seam/connect/options.js' +import { + limitToSeamHttpRequestOptions, + parseOptions, +} from 'lib/seam/connect/parse-options.js' +import { SeamHttpClientSessions } from 'lib/seam/connect/routes/client-sessions/index.js' +import { SeamHttpRequest } from 'lib/seam/connect/seam-http-request.js' +import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' +import type { SetNonNullable } from 'lib/types.js' + +export class SeamHttpUserIdentitiesUnmanaged { + client: Client + readonly defaults: Required + readonly ltsVersion = seamApiLtsVersion + static ltsVersion = seamApiLtsVersion + + constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) { + const options = parseOptions(apiKeyOrOptions) + this.client = 'client' in options ? options.client : createClient(options) + this.defaults = limitToSeamHttpRequestOptions(options) + } + + static fromClient( + client: SeamHttpOptionsWithClient['client'], + options: Omit = {}, + ): SeamHttpUserIdentitiesUnmanaged { + const constructorOptions = { ...options, client } + if (!isSeamHttpOptionsWithClient(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing client') + } + return new SeamHttpUserIdentitiesUnmanaged(constructorOptions) + } + + static fromApiKey( + apiKey: SeamHttpOptionsWithApiKey['apiKey'], + options: Omit = {}, + ): SeamHttpUserIdentitiesUnmanaged { + const constructorOptions = { ...options, apiKey } + if (!isSeamHttpOptionsWithApiKey(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing apiKey') + } + return new SeamHttpUserIdentitiesUnmanaged(constructorOptions) + } + + static fromClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + options: Omit< + SeamHttpOptionsWithClientSessionToken, + 'clientSessionToken' + > = {}, + ): SeamHttpUserIdentitiesUnmanaged { + const constructorOptions = { ...options, clientSessionToken } + if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError('Missing clientSessionToken') + } + return new SeamHttpUserIdentitiesUnmanaged(constructorOptions) + } + + static async fromPublishableKey( + publishableKey: string, + userIdentifierKey: string, + options: SeamHttpFromPublishableKeyOptions = {}, + ): Promise { + warnOnInsecureuserIdentifierKey(userIdentifierKey) + const clientOptions = parseOptions({ ...options, publishableKey }) + if (isSeamHttpOptionsWithClient(clientOptions)) { + throw new SeamHttpInvalidOptionsError( + 'The client option cannot be used with SeamHttpUserIdentitiesUnmanaged.fromPublishableKey', + ) + } + const client = createClient(clientOptions) + const clientSessions = SeamHttpClientSessions.fromClient(client) + const { token } = await clientSessions.getOrCreate({ + user_identifier_key: userIdentifierKey, + }) + return SeamHttpUserIdentitiesUnmanaged.fromClientSessionToken( + token, + options, + ) + } + + static fromConsoleSessionToken( + consoleSessionToken: SeamHttpOptionsWithConsoleSessionToken['consoleSessionToken'], + workspaceId: SeamHttpOptionsWithConsoleSessionToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithConsoleSessionToken, + 'consoleSessionToken' | 'workspaceId' + > = {}, + ): SeamHttpUserIdentitiesUnmanaged { + const constructorOptions = { ...options, consoleSessionToken, workspaceId } + if (!isSeamHttpOptionsWithConsoleSessionToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing consoleSessionToken or workspaceId', + ) + } + return new SeamHttpUserIdentitiesUnmanaged(constructorOptions) + } + + static fromPersonalAccessToken( + personalAccessToken: SeamHttpOptionsWithPersonalAccessToken['personalAccessToken'], + workspaceId: SeamHttpOptionsWithPersonalAccessToken['workspaceId'], + options: Omit< + SeamHttpOptionsWithPersonalAccessToken, + 'personalAccessToken' | 'workspaceId' + > = {}, + ): SeamHttpUserIdentitiesUnmanaged { + const constructorOptions = { ...options, personalAccessToken, workspaceId } + if (!isSeamHttpOptionsWithPersonalAccessToken(constructorOptions)) { + throw new SeamHttpInvalidOptionsError( + 'Missing personalAccessToken or workspaceId', + ) + } + return new SeamHttpUserIdentitiesUnmanaged(constructorOptions) + } + + createPaginator( + request: SeamHttpRequest, + ): SeamPaginator { + return new SeamPaginator(this, request) + } + + async updateClientSessionToken( + clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'], + ): Promise { + const { headers } = this.client.defaults + const authHeaders = getAuthHeadersForClientSessionToken({ + clientSessionToken, + }) + for (const key of Object.keys(authHeaders)) { + if (headers[key] == null) { + throw new Error( + 'Cannot update a clientSessionToken on a client created without a clientSessionToken', + ) + } + } + this.client.defaults.headers = { ...headers, ...authHeaders } + const clientSessions = SeamHttpClientSessions.fromClient(this.client) + await clientSessions.get() + } + + get( + parameters?: UserIdentitiesUnmanagedGetParameters, + options: UserIdentitiesUnmanagedGetOptions = {}, + ): UserIdentitiesUnmanagedGetRequest { + return new SeamHttpRequest(this, { + pathname: '/user_identities/unmanaged/get', + method: 'POST', + body: parameters, + responseKey: 'user_identity', + options, + }) + } + + list( + parameters?: UserIdentitiesUnmanagedListParameters, + options: UserIdentitiesUnmanagedListOptions = {}, + ): UserIdentitiesUnmanagedListRequest { + return new SeamHttpRequest(this, { + pathname: '/user_identities/unmanaged/list', + method: 'POST', + body: parameters, + responseKey: 'user_identities', + options, + }) + } +} + +export type UserIdentitiesUnmanagedGetParameters = + RouteRequestBody<'/user_identities/unmanaged/get'> + +/** + * @deprecated Use UserIdentitiesUnmanagedGetParameters instead. + */ +export type UserIdentitiesUnmanagedGetParams = + UserIdentitiesUnmanagedGetParameters + +/** + * @deprecated Use UserIdentitiesUnmanagedGetRequest instead. + */ +export type UserIdentitiesUnmanagedGetResponse = SetNonNullable< + Required> +> + +export type UserIdentitiesUnmanagedGetRequest = SeamHttpRequest< + UserIdentitiesUnmanagedGetResponse, + 'user_identity' +> + +export interface UserIdentitiesUnmanagedGetOptions {} + +export type UserIdentitiesUnmanagedListParameters = + RouteRequestBody<'/user_identities/unmanaged/list'> + +/** + * @deprecated Use UserIdentitiesUnmanagedListParameters instead. + */ +export type UserIdentitiesUnmanagedListParams = + UserIdentitiesUnmanagedListParameters + +/** + * @deprecated Use UserIdentitiesUnmanagedListRequest instead. + */ +export type UserIdentitiesUnmanagedListResponse = SetNonNullable< + Required> +> + +export type UserIdentitiesUnmanagedListRequest = SeamHttpRequest< + UserIdentitiesUnmanagedListResponse, + 'user_identities' +> + +export interface UserIdentitiesUnmanagedListOptions {} diff --git a/src/lib/seam/connect/routes/user-identities/user-identities.ts b/src/lib/seam/connect/routes/user-identities/user-identities.ts index 51071daf..7157d9fb 100644 --- a/src/lib/seam/connect/routes/user-identities/user-identities.ts +++ b/src/lib/seam/connect/routes/user-identities/user-identities.ts @@ -41,6 +41,7 @@ import { SeamPaginator } from 'lib/seam/connect/seam-paginator.js' import type { SetNonNullable } from 'lib/types.js' import { SeamHttpUserIdentitiesEnrollmentAutomations } from './enrollment-automations/index.js' +import { SeamHttpUserIdentitiesUnmanaged } from './unmanaged/index.js' export class SeamHttpUserIdentities { client: Client @@ -176,6 +177,13 @@ export class SeamHttpUserIdentities { ) } + get unmanaged(): SeamHttpUserIdentitiesUnmanaged { + return SeamHttpUserIdentitiesUnmanaged.fromClient( + this.client, + this.defaults, + ) + } + addAcsUser( parameters?: UserIdentitiesAddAcsUserParameters, options: UserIdentitiesAddAcsUserOptions = {},