@seamapi/http 0.2.0 → 0.3.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 (79) hide show
  1. package/dist/connect.cjs +33 -1
  2. package/dist/connect.cjs.map +1 -1
  3. package/dist/connect.d.cts +170 -127
  4. package/lib/seam/connect/client.d.ts +3 -3
  5. package/lib/seam/connect/client.js +1 -0
  6. package/lib/seam/connect/client.js.map +1 -1
  7. package/lib/seam/connect/index.d.ts +2 -0
  8. package/lib/seam/connect/index.js +2 -0
  9. package/lib/seam/connect/index.js.map +1 -1
  10. package/lib/seam/connect/options.d.ts +4 -2
  11. package/lib/seam/connect/options.js.map +1 -1
  12. package/lib/seam/connect/parse-options.js +6 -0
  13. package/lib/seam/connect/parse-options.js.map +1 -1
  14. package/lib/seam/connect/routes/access-codes-unmanaged.d.ts +7 -7
  15. package/lib/seam/connect/routes/access-codes-unmanaged.js.map +1 -1
  16. package/lib/seam/connect/routes/access-codes.d.ts +10 -10
  17. package/lib/seam/connect/routes/access-codes.js.map +1 -1
  18. package/lib/seam/connect/routes/acs-access-groups.d.ts +11 -11
  19. package/lib/seam/connect/routes/acs-access-groups.js.map +1 -1
  20. package/lib/seam/connect/routes/acs-credentials.d.ts +6 -6
  21. package/lib/seam/connect/routes/acs-credentials.js.map +1 -1
  22. package/lib/seam/connect/routes/acs-systems.d.ts +4 -4
  23. package/lib/seam/connect/routes/acs-systems.js.map +1 -1
  24. package/lib/seam/connect/routes/acs-users.d.ts +11 -11
  25. package/lib/seam/connect/routes/acs-users.js.map +1 -1
  26. package/lib/seam/connect/routes/action-attempts.d.ts +4 -4
  27. package/lib/seam/connect/routes/action-attempts.js.map +1 -1
  28. package/lib/seam/connect/routes/client-sessions.d.ts +8 -8
  29. package/lib/seam/connect/routes/client-sessions.js.map +1 -1
  30. package/lib/seam/connect/routes/connect-webviews.d.ts +6 -6
  31. package/lib/seam/connect/routes/connect-webviews.js.map +1 -1
  32. package/lib/seam/connect/routes/connected-accounts.d.ts +3 -3
  33. package/lib/seam/connect/routes/connected-accounts.js.map +1 -1
  34. package/lib/seam/connect/routes/devices-unmanaged.d.ts +5 -5
  35. package/lib/seam/connect/routes/devices-unmanaged.js.map +1 -1
  36. package/lib/seam/connect/routes/devices.d.ts +8 -8
  37. package/lib/seam/connect/routes/devices.js.map +1 -1
  38. package/lib/seam/connect/routes/events.d.ts +4 -4
  39. package/lib/seam/connect/routes/events.js.map +1 -1
  40. package/lib/seam/connect/routes/locks.d.ts +6 -6
  41. package/lib/seam/connect/routes/locks.js.map +1 -1
  42. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.d.ts +7 -7
  43. package/lib/seam/connect/routes/noise-sensors-noise-thresholds.js.map +1 -1
  44. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.d.ts +7 -7
  45. package/lib/seam/connect/routes/thermostats-climate-setting-schedules.js.map +1 -1
  46. package/lib/seam/connect/routes/thermostats.d.ts +10 -10
  47. package/lib/seam/connect/routes/thermostats.js.map +1 -1
  48. package/lib/seam/connect/routes/webhooks.d.ts +4 -4
  49. package/lib/seam/connect/routes/webhooks.js.map +1 -1
  50. package/lib/seam/connect/routes/workspaces.d.ts +1 -1
  51. package/lib/seam/connect/routes/workspaces.js.map +1 -1
  52. package/lib/version.d.ts +2 -0
  53. package/lib/version.js +3 -0
  54. package/lib/version.js.map +1 -0
  55. package/package.json +6 -2
  56. package/src/lib/seam/connect/client.ts +4 -3
  57. package/src/lib/seam/connect/index.ts +2 -0
  58. package/src/lib/seam/connect/options.ts +3 -2
  59. package/src/lib/seam/connect/parse-options.ts +8 -0
  60. package/src/lib/seam/connect/routes/access-codes-unmanaged.ts +7 -7
  61. package/src/lib/seam/connect/routes/access-codes.ts +10 -10
  62. package/src/lib/seam/connect/routes/acs-access-groups.ts +12 -11
  63. package/src/lib/seam/connect/routes/acs-credentials.ts +6 -6
  64. package/src/lib/seam/connect/routes/acs-systems.ts +4 -4
  65. package/src/lib/seam/connect/routes/acs-users.ts +13 -11
  66. package/src/lib/seam/connect/routes/action-attempts.ts +4 -4
  67. package/src/lib/seam/connect/routes/client-sessions.ts +8 -8
  68. package/src/lib/seam/connect/routes/connect-webviews.ts +7 -6
  69. package/src/lib/seam/connect/routes/connected-accounts.ts +3 -3
  70. package/src/lib/seam/connect/routes/devices-unmanaged.ts +6 -5
  71. package/src/lib/seam/connect/routes/devices.ts +10 -8
  72. package/src/lib/seam/connect/routes/events.ts +4 -4
  73. package/src/lib/seam/connect/routes/locks.ts +6 -6
  74. package/src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts +7 -7
  75. package/src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts +7 -7
  76. package/src/lib/seam/connect/routes/thermostats.ts +10 -10
  77. package/src/lib/seam/connect/routes/webhooks.ts +4 -4
  78. package/src/lib/seam/connect/routes/workspaces.ts +1 -1
  79. package/src/lib/version.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/seam/connect/options.ts","../src/lib/seam/connect/auth.ts","../src/lib/seam/connect/client.ts","../src/lib/params-serializer.ts","../src/lib/seam/connect/parse-options.ts","../src/lib/seam/connect/routes/client-sessions.ts","../src/lib/seam/connect/routes/access-codes-unmanaged.ts","../src/lib/seam/connect/routes/access-codes.ts","../src/lib/seam/connect/routes/acs-access-groups.ts","../src/lib/seam/connect/routes/acs-credentials.ts","../src/lib/seam/connect/routes/acs-systems.ts","../src/lib/seam/connect/routes/acs-users.ts","../src/lib/seam/connect/routes/acs.ts","../src/lib/seam/connect/routes/action-attempts.ts","../src/lib/seam/connect/routes/connect-webviews.ts","../src/lib/seam/connect/routes/connected-accounts.ts","../src/lib/seam/connect/routes/devices-unmanaged.ts","../src/lib/seam/connect/routes/devices.ts","../src/lib/seam/connect/routes/events.ts","../src/lib/seam/connect/routes/locks.ts","../src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts","../src/lib/seam/connect/routes/noise-sensors.ts","../src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts","../src/lib/seam/connect/routes/thermostats.ts","../src/lib/seam/connect/routes/webhooks.ts","../src/lib/seam/connect/routes/workspaces.ts","../src/lib/seam/connect/seam-http.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client, ClientOptions } from './client.js'\n\nexport type SeamHttpOptions =\n | SeamHttpOptionsFromEnv\n | SeamHttpOptionsWithClient\n | SeamHttpOptionsWithApiKey\n | SeamHttpOptionsWithClientSessionToken\n\ninterface SeamHttpCommonOptions extends ClientOptions {\n endpoint?: string\n}\n\nexport type SeamHttpFromPublishableKeyOptions = SeamHttpCommonOptions\n\nexport type SeamHttpOptionsFromEnv = SeamHttpCommonOptions\n\nexport interface SeamHttpOptionsWithClient {\n client: Client\n}\n\nexport const isSeamHttpOptionsWithClient = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithClient => {\n if (!('client' in options)) return false\n if (options.client == null) return false\n\n const keys = Object.keys(options).filter((k) => k !== 'client')\n if (keys.length > 0) {\n throw new SeamHttpInvalidOptionsError(\n `The client option cannot be used with any other option, but received: ${keys.join(\n ', ',\n )}`,\n )\n }\n\n return true\n}\n\nexport interface SeamHttpOptionsWithApiKey extends SeamHttpCommonOptions {\n apiKey: string\n}\n\nexport const isSeamHttpOptionsWithApiKey = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithApiKey => {\n if (!('apiKey' in options)) return false\n if (options.apiKey == null) return false\n\n if ('clientSessionToken' in options && options.clientSessionToken != null) {\n throw new SeamHttpInvalidOptionsError(\n 'The clientSessionToken option cannot be used with the apiKey option',\n )\n }\n\n return true\n}\n\nexport interface SeamHttpOptionsWithClientSessionToken\n extends SeamHttpCommonOptions {\n clientSessionToken: string\n}\n\nexport const isSeamHttpOptionsWithClientSessionToken = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithClientSessionToken => {\n if (!('clientSessionToken' in options)) return false\n if (options.clientSessionToken == null) return false\n\n if ('apiKey' in options && options.apiKey != null) {\n throw new SeamHttpInvalidOptionsError(\n 'The clientSessionToken option cannot be used with the apiKey option',\n )\n }\n\n return true\n}\n\nexport class SeamHttpInvalidOptionsError extends Error {\n constructor(message: string) {\n super(`SeamHttp received invalid options: ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n","import {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClientSessionToken,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClientSessionToken,\n} from './options.js'\nimport type { Options } from './parse-options.js'\n\ntype Headers = Record<string, string>\n\nexport const getAuthHeaders = (options: Options): Headers => {\n if ('publishableKey' in options) {\n return getAuthHeadersForPublishableKey(options.publishableKey)\n }\n\n if (isSeamHttpOptionsWithApiKey(options)) {\n return getAuthHeadersForApiKey(options)\n }\n\n if (isSeamHttpOptionsWithClientSessionToken(options)) {\n return getAuthHeadersForClientSessionToken(options)\n }\n\n throw new SeamHttpInvalidOptionsError(\n 'Must specify an apiKey, clientSessionToken, or publishableKey',\n )\n}\n\nconst getAuthHeadersForApiKey = ({\n apiKey,\n}: SeamHttpOptionsWithApiKey): Headers => {\n if (isClientSessionToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Client Session Token cannot be used as an apiKey',\n )\n }\n\n if (isJwt(apiKey)) {\n throw new SeamHttpInvalidTokenError('A JWT cannot be used as an apiKey')\n }\n\n if (isAccessToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as an apiKey',\n )\n }\n\n if (isPublishableKey(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Publishable Key cannot be used as an apiKey',\n )\n }\n\n if (!isSeamToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid apiKey format, expected token to start with ${tokenPrefix}`,\n )\n }\n\n return {\n authorization: `Bearer ${apiKey}`,\n }\n}\n\nconst getAuthHeadersForClientSessionToken = ({\n clientSessionToken,\n}: SeamHttpOptionsWithClientSessionToken): Headers => {\n if (isJwt(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'A JWT cannot be used as a clientSessionToken',\n )\n }\n\n if (isAccessToken(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as a clientSessionToken',\n )\n }\n\n if (isPublishableKey(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'A Publishable Key cannot be used as a clientSessionToken',\n )\n }\n\n if (!isClientSessionToken(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid clientSessionToken format, expected token to start with ${clientSessionTokenPrefix}`,\n )\n }\n\n return {\n authorization: `Bearer ${clientSessionToken}`,\n 'client-session-token': clientSessionToken,\n }\n}\n\nconst getAuthHeadersForPublishableKey = (publishableKey: string): Headers => {\n if (isJwt(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A JWT cannot be used as a publishableKey',\n )\n }\n\n if (isAccessToken(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as a publishableKey',\n )\n }\n\n if (isClientSessionToken(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Client Session Token Key cannot be used as a publishableKey',\n )\n }\n\n if (!isPublishableKey(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid publishableKey format, expected token to start with ${publishableKeyTokenPrefix}`,\n )\n }\n\n return {\n 'seam-publishable-key': publishableKey,\n }\n}\n\nexport class SeamHttpInvalidTokenError extends Error {\n constructor(message: string) {\n super(`SeamHttp received an invalid token: ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nexport const warnOnInsecureuserIdentifierKey = (\n userIdentifierKey: string,\n): void => {\n if (isEmail(userIdentifierKey)) {\n // eslint-disable-next-line no-console\n console.warn(\n ...[\n 'Using an email for the userIdentifierKey is insecure and may return an error in the future!',\n 'This is insecure because an email is common knowledge or easily guessed.',\n 'Use something with sufficient entropy known only to the owner of the client session.',\n 'For help choosing a user identifier key see',\n 'https://docs.seam.co/latest/seam-components/overview/get-started-with-client-side-components#3-select-a-user-identifier-key',\n ],\n )\n }\n}\n\nconst tokenPrefix = 'seam_'\n\nconst clientSessionTokenPrefix = 'seam_cst'\n\nconst publishableKeyTokenPrefix = 'seam_pk'\n\nconst isClientSessionToken = (token: string): boolean =>\n token.startsWith(clientSessionTokenPrefix)\n\nconst isAccessToken = (token: string): boolean => token.startsWith('seam_at')\n\nconst isJwt = (token: string): boolean => token.startsWith('ey')\n\nconst isSeamToken = (token: string): boolean => token.startsWith(tokenPrefix)\n\nconst isPublishableKey = (token: string): boolean =>\n token.startsWith(publishableKeyTokenPrefix)\n\n// SOURCE: https://stackoverflow.com/a/46181\nconst isEmail = (value: string): boolean =>\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)\n","import axios, { type Axios, type AxiosRequestConfig } from 'axios'\nimport axiosRetry, { type AxiosRetry, exponentialDelay } from 'axios-retry'\n\nimport { paramsSerializer } from 'lib/params-serializer.js'\n\nexport type Client = Axios\n\nexport interface ClientOptions {\n axiosOptions?: AxiosRequestConfig\n axiosRetryOptions?: AxiosRetryConfig\n client?: Client\n}\n\ntype AxiosRetryConfig = Parameters<AxiosRetry>[1]\n\nexport const createClient = (options: ClientOptions): Axios => {\n if (options.client != null) return options.client\n\n const client = axios.create({\n paramsSerializer,\n ...options.axiosOptions,\n })\n\n axiosRetry(client, {\n retries: 2,\n retryDelay: exponentialDelay,\n ...options.axiosRetryOptions,\n })\n\n return client\n}\n","import type { CustomParamsSerializer } from 'axios'\n\nexport const paramsSerializer: CustomParamsSerializer = (params) => {\n const searchParams = new URLSearchParams()\n\n for (const [name, value] of Object.entries(params)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n if (value.length === 0) searchParams.set(name, '')\n if (value.length === 1 && value[0] === '') {\n throw new UnserializableParamError(\n name,\n `is a single element array containing the empty string which is unsupported because it serializes to the empty array`,\n )\n }\n for (const v of value) {\n throwIfUnserializable(name, v)\n searchParams.append(name, v)\n }\n continue\n }\n\n throwIfUnserializable(name, value)\n searchParams.set(name, value)\n }\n\n searchParams.sort()\n return searchParams.toString()\n}\n\nconst throwIfUnserializable = (k: string, v: unknown): void => {\n if (v == null) {\n throw new UnserializableParamError(k, `is ${v} or contains ${v}`)\n }\n\n if (typeof v === 'function') {\n throw new UnserializableParamError(\n k,\n 'is a function or contains a function',\n )\n }\n\n if (typeof v === 'object') {\n throw new UnserializableParamError(k, 'is an object or contains an object')\n }\n}\n\nexport class UnserializableParamError extends Error {\n constructor(name: string, message: string) {\n super(`Could not serialize parameter: '${name}' ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n","import { getAuthHeaders } from './auth.js'\nimport type { ClientOptions } from './client.js'\nimport {\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpOptions,\n} from './options.js'\n\nconst defaultEndpoint = 'https://connect.getseam.com'\n\nexport type Options = SeamHttpOptions & { publishableKey?: string }\n\nexport const parseOptions = (\n apiKeyOrOptions: string | Options,\n): ClientOptions => {\n const options = getNormalizedOptions(apiKeyOrOptions)\n\n if (isSeamHttpOptionsWithClient(options)) return options\n\n return {\n axiosOptions: {\n baseURL: options.endpoint ?? getEndpointFromEnv() ?? defaultEndpoint,\n withCredentials: isSeamHttpOptionsWithClientSessionToken(options),\n ...options.axiosOptions,\n headers: {\n ...getAuthHeaders(options),\n ...options.axiosOptions?.headers,\n },\n },\n axiosRetryOptions: {\n ...options.axiosRetryOptions,\n },\n }\n}\n\nconst getNormalizedOptions = (\n apiKeyOrOptions: string | Options,\n): SeamHttpOptions => {\n const options =\n typeof apiKeyOrOptions === 'string'\n ? { apiKey: apiKeyOrOptions }\n : apiKeyOrOptions\n\n if (isSeamHttpOptionsWithClient(options)) return options\n\n const apiKey =\n 'apiKey' in options ? options.apiKey : getApiKeyFromEnv(options)\n\n return {\n ...options,\n ...(apiKey != null ? { apiKey } : {}),\n }\n}\n\nconst getApiKeyFromEnv = (\n options: SeamHttpOptions,\n): string | null | undefined => {\n if ('clientSessionToken' in options && options.clientSessionToken != null) {\n return null\n }\n return globalThis.process?.env?.SEAM_API_KEY\n}\n\nconst getEndpointFromEnv = (): string | null | undefined => {\n return (\n globalThis.process?.env?.SEAM_ENDPOINT ??\n globalThis.process?.env?.SEAM_API_URL\n )\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nexport class SeamHttpClientSessions {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpClientSessions> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpClientSessions.fromClientSessionToken(token, options)\n }\n\n async create(\n body: ClientSessionsCreateBody,\n ): Promise<ClientSessionsCreateResponse['client_session']> {\n const { data } = await this.client.request<ClientSessionsCreateResponse>({\n url: '/client_sessions/create',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async delete(body: ClientSessionsDeleteBody): Promise<void> {\n await this.client.request<ClientSessionsDeleteResponse>({\n url: '/client_sessions/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: ClientSessionsGetBody,\n ): Promise<ClientSessionsGetResponse['client_session']> {\n const { data } = await this.client.request<ClientSessionsGetResponse>({\n url: '/client_sessions/get',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async getOrCreate(\n body: ClientSessionsGetOrCreateBody,\n ): Promise<ClientSessionsGetOrCreateResponse['client_session']> {\n const { data } =\n await this.client.request<ClientSessionsGetOrCreateResponse>({\n url: '/client_sessions/get_or_create',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async grantAccess(\n body: ClientSessionsGrantAccessBody,\n ): Promise<ClientSessionsGrantAccessResponse['client_session']> {\n const { data } =\n await this.client.request<ClientSessionsGrantAccessResponse>({\n url: '/client_sessions/grant_access',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async list(\n body: ClientSessionsListBody,\n ): Promise<ClientSessionsListResponse['client_sessions']> {\n const { data } = await this.client.request<ClientSessionsListResponse>({\n url: '/client_sessions/list',\n method: 'post',\n data: body,\n })\n return data.client_sessions\n }\n}\n\nexport type ClientSessionsCreateBody =\n RouteRequestBody<'/client_sessions/create'>\n\nexport type ClientSessionsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/create'>>\n>\n\nexport type ClientSessionsDeleteBody =\n RouteRequestBody<'/client_sessions/delete'>\n\nexport type ClientSessionsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/delete'>>\n>\n\nexport type ClientSessionsGetBody = RouteRequestBody<'/client_sessions/get'>\n\nexport type ClientSessionsGetResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/get'>>\n>\n\nexport type ClientSessionsGetOrCreateBody =\n RouteRequestBody<'/client_sessions/get_or_create'>\n\nexport type ClientSessionsGetOrCreateResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/get_or_create'>>\n>\n\nexport type ClientSessionsGrantAccessBody =\n RouteRequestBody<'/client_sessions/grant_access'>\n\nexport type ClientSessionsGrantAccessResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/grant_access'>>\n>\n\nexport type ClientSessionsListBody = RouteRequestBody<'/client_sessions/list'>\n\nexport type ClientSessionsListResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAccessCodesUnmanaged {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAccessCodesUnmanaged> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAccessCodesUnmanaged.fromClientSessionToken(token, options)\n }\n\n async convertToManaged(\n body: AccessCodesUnmanagedConvertToManagedBody,\n ): Promise<void> {\n await this.client.request<AccessCodesUnmanagedConvertToManagedResponse>({\n url: '/access_codes/unmanaged/convert_to_managed',\n method: 'post',\n data: body,\n })\n }\n\n async delete(body: AccessCodesUnmanagedDeleteBody): Promise<void> {\n await this.client.request<AccessCodesUnmanagedDeleteResponse>({\n url: '/access_codes/unmanaged/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: AccessCodesUnmanagedGetBody,\n ): Promise<AccessCodesUnmanagedGetResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesUnmanagedGetResponse>(\n {\n url: '/access_codes/unmanaged/get',\n method: 'post',\n data: body,\n },\n )\n return data.access_code\n }\n\n async list(\n body: AccessCodesUnmanagedListBody,\n ): Promise<AccessCodesUnmanagedListResponse['access_codes']> {\n const { data } =\n await this.client.request<AccessCodesUnmanagedListResponse>({\n url: '/access_codes/unmanaged/list',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async update(body: AccessCodesUnmanagedUpdateBody): Promise<void> {\n await this.client.request<AccessCodesUnmanagedUpdateResponse>({\n url: '/access_codes/unmanaged/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AccessCodesUnmanagedConvertToManagedBody =\n RouteRequestBody<'/access_codes/unmanaged/convert_to_managed'>\n\nexport type AccessCodesUnmanagedConvertToManagedResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/convert_to_managed'>>\n>\n\nexport type AccessCodesUnmanagedDeleteBody =\n RouteRequestBody<'/access_codes/unmanaged/delete'>\n\nexport type AccessCodesUnmanagedDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/delete'>>\n>\n\nexport type AccessCodesUnmanagedGetBody =\n RouteRequestBody<'/access_codes/unmanaged/get'>\n\nexport type AccessCodesUnmanagedGetResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/get'>>\n>\n\nexport type AccessCodesUnmanagedListBody =\n RouteRequestBody<'/access_codes/unmanaged/list'>\n\nexport type AccessCodesUnmanagedListResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/list'>>\n>\n\nexport type AccessCodesUnmanagedUpdateBody =\n RouteRequestBody<'/access_codes/unmanaged/update'>\n\nexport type AccessCodesUnmanagedUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js'\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAccessCodes {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAccessCodes> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAccessCodes.fromClientSessionToken(token, options)\n }\n\n get unmanaged(): SeamHttpAccessCodesUnmanaged {\n return SeamHttpAccessCodesUnmanaged.fromClient(this.client)\n }\n\n async create(\n body: AccessCodesCreateBody,\n ): Promise<AccessCodesCreateResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesCreateResponse>({\n url: '/access_codes/create',\n method: 'post',\n data: body,\n })\n return data.access_code\n }\n\n async createMultiple(\n body: AccessCodesCreateMultipleBody,\n ): Promise<AccessCodesCreateMultipleResponse['access_codes']> {\n const { data } =\n await this.client.request<AccessCodesCreateMultipleResponse>({\n url: '/access_codes/create_multiple',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async delete(body: AccessCodesDeleteBody): Promise<void> {\n await this.client.request<AccessCodesDeleteResponse>({\n url: '/access_codes/delete',\n method: 'post',\n data: body,\n })\n }\n\n async generateCode(\n body: AccessCodesGenerateCodeBody,\n ): Promise<AccessCodesGenerateCodeResponse['generated_code']> {\n const { data } = await this.client.request<AccessCodesGenerateCodeResponse>(\n {\n url: '/access_codes/generate_code',\n method: 'post',\n data: body,\n },\n )\n return data.generated_code\n }\n\n async get(\n body: AccessCodesGetBody,\n ): Promise<AccessCodesGetResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesGetResponse>({\n url: '/access_codes/get',\n method: 'post',\n data: body,\n })\n return data.access_code\n }\n\n async list(\n body: AccessCodesListBody,\n ): Promise<AccessCodesListResponse['access_codes']> {\n const { data } = await this.client.request<AccessCodesListResponse>({\n url: '/access_codes/list',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async pullBackupAccessCode(\n body: AccessCodesPullBackupAccessCodeBody,\n ): Promise<AccessCodesPullBackupAccessCodeResponse['backup_access_code']> {\n const { data } =\n await this.client.request<AccessCodesPullBackupAccessCodeResponse>({\n url: '/access_codes/pull_backup_access_code',\n method: 'post',\n data: body,\n })\n return data.backup_access_code\n }\n\n async update(body: AccessCodesUpdateBody): Promise<void> {\n await this.client.request<AccessCodesUpdateResponse>({\n url: '/access_codes/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AccessCodesCreateBody = RouteRequestBody<'/access_codes/create'>\n\nexport type AccessCodesCreateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/create'>>\n>\n\nexport type AccessCodesCreateMultipleBody =\n RouteRequestBody<'/access_codes/create_multiple'>\n\nexport type AccessCodesCreateMultipleResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/create_multiple'>>\n>\n\nexport type AccessCodesDeleteBody = RouteRequestBody<'/access_codes/delete'>\n\nexport type AccessCodesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/delete'>>\n>\n\nexport type AccessCodesGenerateCodeBody =\n RouteRequestBody<'/access_codes/generate_code'>\n\nexport type AccessCodesGenerateCodeResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/generate_code'>>\n>\n\nexport type AccessCodesGetBody = RouteRequestBody<'/access_codes/get'>\n\nexport type AccessCodesGetResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/get'>>\n>\n\nexport type AccessCodesListBody = RouteRequestBody<'/access_codes/list'>\n\nexport type AccessCodesListResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/list'>>\n>\n\nexport type AccessCodesPullBackupAccessCodeBody =\n RouteRequestBody<'/access_codes/pull_backup_access_code'>\n\nexport type AccessCodesPullBackupAccessCodeResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/pull_backup_access_code'>>\n>\n\nexport type AccessCodesUpdateBody = RouteRequestBody<'/access_codes/update'>\n\nexport type AccessCodesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsAccessGroups {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsAccessGroups> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsAccessGroups.fromClientSessionToken(token, options)\n }\n\n async addUser(body: AcsAccessGroupsAddUserBody): Promise<void> {\n await this.client.request<AcsAccessGroupsAddUserResponse>({\n url: '/acs/access_groups/add_user',\n method: 'post',\n data: body,\n })\n }\n\n async create(\n body: AcsAccessGroupsCreateBody,\n ): Promise<AcsAccessGroupsCreateResponse['acs_access_group']> {\n const { data } = await this.client.request<AcsAccessGroupsCreateResponse>({\n url: '/acs/access_groups/create',\n method: 'post',\n data: body,\n })\n return data.acs_access_group\n }\n\n async delete(body: AcsAccessGroupsDeleteBody): Promise<void> {\n await this.client.request<AcsAccessGroupsDeleteResponse>({\n url: '/acs/access_groups/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: AcsAccessGroupsGetBody,\n ): Promise<AcsAccessGroupsGetResponse['acs_access_group']> {\n const { data } = await this.client.request<AcsAccessGroupsGetResponse>({\n url: '/acs/access_groups/get',\n method: 'post',\n data: body,\n })\n return data.acs_access_group\n }\n\n async list(\n body: AcsAccessGroupsListBody,\n ): Promise<AcsAccessGroupsListResponse['acs_access_groups']> {\n const { data } = await this.client.request<AcsAccessGroupsListResponse>({\n url: '/acs/access_groups/list',\n method: 'post',\n data: body,\n })\n return data.acs_access_groups\n }\n\n async listUsers(\n body: AcsAccessGroupsListUsersBody,\n ): Promise<AcsAccessGroupsListUsersResponse['acs_users']> {\n const { data } =\n await this.client.request<AcsAccessGroupsListUsersResponse>({\n url: '/acs/access_groups/list_users',\n method: 'post',\n data: body,\n })\n return data.acs_users\n }\n\n async removeUser(body: AcsAccessGroupsRemoveUserBody): Promise<void> {\n await this.client.request<AcsAccessGroupsRemoveUserResponse>({\n url: '/acs/access_groups/remove_user',\n method: 'post',\n data: body,\n })\n }\n\n async update(body: AcsAccessGroupsUpdateBody): Promise<void> {\n await this.client.request<AcsAccessGroupsUpdateResponse>({\n url: '/acs/access_groups/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AcsAccessGroupsAddUserBody =\n RouteRequestBody<'/acs/access_groups/add_user'>\n\nexport type AcsAccessGroupsAddUserResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/add_user'>>\n>\n\nexport type AcsAccessGroupsCreateBody =\n RouteRequestBody<'/acs/access_groups/create'>\n\nexport type AcsAccessGroupsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/create'>>\n>\n\nexport type AcsAccessGroupsDeleteBody =\n RouteRequestBody<'/acs/access_groups/delete'>\n\nexport type AcsAccessGroupsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/delete'>>\n>\n\nexport type AcsAccessGroupsGetBody = RouteRequestBody<'/acs/access_groups/get'>\n\nexport type AcsAccessGroupsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/get'>>\n>\n\nexport type AcsAccessGroupsListBody =\n RouteRequestBody<'/acs/access_groups/list'>\n\nexport type AcsAccessGroupsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/list'>>\n>\n\nexport type AcsAccessGroupsListUsersBody =\n RouteRequestBody<'/acs/access_groups/list_users'>\n\nexport type AcsAccessGroupsListUsersResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/list_users'>>\n>\n\nexport type AcsAccessGroupsRemoveUserBody =\n RouteRequestBody<'/acs/access_groups/remove_user'>\n\nexport type AcsAccessGroupsRemoveUserResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/remove_user'>>\n>\n\nexport type AcsAccessGroupsUpdateBody =\n RouteRequestBody<'/acs/access_groups/update'>\n\nexport type AcsAccessGroupsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsCredentials {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsCredentials> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsCredentials.fromClientSessionToken(token, options)\n }\n\n async create(\n body: AcsCredentialsCreateBody,\n ): Promise<AcsCredentialsCreateResponse['acs_credential']> {\n const { data } = await this.client.request<AcsCredentialsCreateResponse>({\n url: '/acs/credentials/create',\n method: 'post',\n data: body,\n })\n return data.acs_credential\n }\n\n async delete(body: AcsCredentialsDeleteBody): Promise<void> {\n await this.client.request<AcsCredentialsDeleteResponse>({\n url: '/acs/credentials/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: AcsCredentialsGetBody,\n ): Promise<AcsCredentialsGetResponse['acs_credential']> {\n const { data } = await this.client.request<AcsCredentialsGetResponse>({\n url: '/acs/credentials/get',\n method: 'post',\n data: body,\n })\n return data.acs_credential\n }\n\n async list(\n body: AcsCredentialsListBody,\n ): Promise<AcsCredentialsListResponse['acs_credentials']> {\n const { data } = await this.client.request<AcsCredentialsListResponse>({\n url: '/acs/credentials/list',\n method: 'post',\n data: body,\n })\n return data.acs_credentials\n }\n}\n\nexport type AcsCredentialsCreateBody =\n RouteRequestBody<'/acs/credentials/create'>\n\nexport type AcsCredentialsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/create'>>\n>\n\nexport type AcsCredentialsDeleteBody =\n RouteRequestBody<'/acs/credentials/delete'>\n\nexport type AcsCredentialsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/delete'>>\n>\n\nexport type AcsCredentialsGetBody = RouteRequestBody<'/acs/credentials/get'>\n\nexport type AcsCredentialsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/get'>>\n>\n\nexport type AcsCredentialsListBody = RouteRequestBody<'/acs/credentials/list'>\n\nexport type AcsCredentialsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsSystems {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsSystems> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsSystems.fromClientSessionToken(token, options)\n }\n\n async get(\n body: AcsSystemsGetBody,\n ): Promise<AcsSystemsGetResponse['acs_system']> {\n const { data } = await this.client.request<AcsSystemsGetResponse>({\n url: '/acs/systems/get',\n method: 'post',\n data: body,\n })\n return data.acs_system\n }\n\n async list(\n body: AcsSystemsListBody,\n ): Promise<AcsSystemsListResponse['acs_systems']> {\n const { data } = await this.client.request<AcsSystemsListResponse>({\n url: '/acs/systems/list',\n method: 'post',\n data: body,\n })\n return data.acs_systems\n }\n}\n\nexport type AcsSystemsGetBody = RouteRequestBody<'/acs/systems/get'>\n\nexport type AcsSystemsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/systems/get'>>\n>\n\nexport type AcsSystemsListBody = RouteRequestBody<'/acs/systems/list'>\n\nexport type AcsSystemsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/systems/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsUsers {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsUsers> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsUsers.fromClientSessionToken(token, options)\n }\n\n async addToAccessGroup(body: AcsUsersAddToAccessGroupBody): Promise<void> {\n await this.client.request<AcsUsersAddToAccessGroupResponse>({\n url: '/acs/users/add_to_access_group',\n method: 'post',\n data: body,\n })\n }\n\n async create(\n body: AcsUsersCreateBody,\n ): Promise<AcsUsersCreateResponse['acs_user']> {\n const { data } = await this.client.request<AcsUsersCreateResponse>({\n url: '/acs/users/create',\n method: 'post',\n data: body,\n })\n return data.acs_user\n }\n\n async delete(body: AcsUsersDeleteBody): Promise<void> {\n await this.client.request<AcsUsersDeleteResponse>({\n url: '/acs/users/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(body: AcsUsersGetBody): Promise<AcsUsersGetResponse['acs_user']> {\n const { data } = await this.client.request<AcsUsersGetResponse>({\n url: '/acs/users/get',\n method: 'post',\n data: body,\n })\n return data.acs_user\n }\n\n async list(\n body: AcsUsersListBody,\n ): Promise<AcsUsersListResponse['acs_users']> {\n const { data } = await this.client.request<AcsUsersListResponse>({\n url: '/acs/users/list',\n method: 'post',\n data: body,\n })\n return data.acs_users\n }\n\n async removeFromAccessGroup(\n body: AcsUsersRemoveFromAccessGroupBody,\n ): Promise<void> {\n await this.client.request<AcsUsersRemoveFromAccessGroupResponse>({\n url: '/acs/users/remove_from_access_group',\n method: 'post',\n data: body,\n })\n }\n\n async suspend(body: AcsUsersSuspendBody): Promise<void> {\n await this.client.request<AcsUsersSuspendResponse>({\n url: '/acs/users/suspend',\n method: 'post',\n data: body,\n })\n }\n\n async unsuspend(body: AcsUsersUnsuspendBody): Promise<void> {\n await this.client.request<AcsUsersUnsuspendResponse>({\n url: '/acs/users/unsuspend',\n method: 'post',\n data: body,\n })\n }\n\n async update(body: AcsUsersUpdateBody): Promise<void> {\n await this.client.request<AcsUsersUpdateResponse>({\n url: '/acs/users/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AcsUsersAddToAccessGroupBody =\n RouteRequestBody<'/acs/users/add_to_access_group'>\n\nexport type AcsUsersAddToAccessGroupResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/add_to_access_group'>>\n>\n\nexport type AcsUsersCreateBody = RouteRequestBody<'/acs/users/create'>\n\nexport type AcsUsersCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/create'>>\n>\n\nexport type AcsUsersDeleteBody = RouteRequestBody<'/acs/users/delete'>\n\nexport type AcsUsersDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/delete'>>\n>\n\nexport type AcsUsersGetBody = RouteRequestBody<'/acs/users/get'>\n\nexport type AcsUsersGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/get'>>\n>\n\nexport type AcsUsersListBody = RouteRequestBody<'/acs/users/list'>\n\nexport type AcsUsersListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/list'>>\n>\n\nexport type AcsUsersRemoveFromAccessGroupBody =\n RouteRequestBody<'/acs/users/remove_from_access_group'>\n\nexport type AcsUsersRemoveFromAccessGroupResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/remove_from_access_group'>>\n>\n\nexport type AcsUsersSuspendBody = RouteRequestBody<'/acs/users/suspend'>\n\nexport type AcsUsersSuspendResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/suspend'>>\n>\n\nexport type AcsUsersUnsuspendBody = RouteRequestBody<'/acs/users/unsuspend'>\n\nexport type AcsUsersUnsuspendResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/unsuspend'>>\n>\n\nexport type AcsUsersUpdateBody = RouteRequestBody<'/acs/users/update'>\n\nexport type AcsUsersUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpAcsAccessGroups } from './acs-access-groups.js'\nimport { SeamHttpAcsCredentials } from './acs-credentials.js'\nimport { SeamHttpAcsSystems } from './acs-systems.js'\nimport { SeamHttpAcsUsers } from './acs-users.js'\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcs {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcs> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcs.fromClientSessionToken(token, options)\n }\n\n get accessGroups(): SeamHttpAcsAccessGroups {\n return SeamHttpAcsAccessGroups.fromClient(this.client)\n }\n\n get credentials(): SeamHttpAcsCredentials {\n return SeamHttpAcsCredentials.fromClient(this.client)\n }\n\n get systems(): SeamHttpAcsSystems {\n return SeamHttpAcsSystems.fromClient(this.client)\n }\n\n get users(): SeamHttpAcsUsers {\n return SeamHttpAcsUsers.fromClient(this.client)\n }\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpActionAttempts {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpActionAttempts> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpActionAttempts.fromClientSessionToken(token, options)\n }\n\n async get(\n body: ActionAttemptsGetBody,\n ): Promise<ActionAttemptsGetResponse['action_attempt']> {\n const { data } = await this.client.request<ActionAttemptsGetResponse>({\n url: '/action_attempts/get',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n\n async list(\n body: ActionAttemptsListBody,\n ): Promise<ActionAttemptsListResponse['action_attempts']> {\n const { data } = await this.client.request<ActionAttemptsListResponse>({\n url: '/action_attempts/list',\n method: 'post',\n data: body,\n })\n return data.action_attempts\n }\n}\n\nexport type ActionAttemptsGetBody = RouteRequestBody<'/action_attempts/get'>\n\nexport type ActionAttemptsGetResponse = SetNonNullable<\n Required<RouteResponse<'/action_attempts/get'>>\n>\n\nexport type ActionAttemptsListBody = RouteRequestBody<'/action_attempts/list'>\n\nexport type ActionAttemptsListResponse = SetNonNullable<\n Required<RouteResponse<'/action_attempts/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpConnectWebviews {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpConnectWebviews> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpConnectWebviews.fromClientSessionToken(token, options)\n }\n\n async create(\n body: ConnectWebviewsCreateBody,\n ): Promise<ConnectWebviewsCreateResponse['connect_webview']> {\n const { data } = await this.client.request<ConnectWebviewsCreateResponse>({\n url: '/connect_webviews/create',\n method: 'post',\n data: body,\n })\n return data.connect_webview\n }\n\n async delete(body: ConnectWebviewsDeleteBody): Promise<void> {\n await this.client.request<ConnectWebviewsDeleteResponse>({\n url: '/connect_webviews/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: ConnectWebviewsGetBody,\n ): Promise<ConnectWebviewsGetResponse['connect_webview']> {\n const { data } = await this.client.request<ConnectWebviewsGetResponse>({\n url: '/connect_webviews/get',\n method: 'post',\n data: body,\n })\n return data.connect_webview\n }\n\n async list(\n body: ConnectWebviewsListBody,\n ): Promise<ConnectWebviewsListResponse['connect_webviews']> {\n const { data } = await this.client.request<ConnectWebviewsListResponse>({\n url: '/connect_webviews/list',\n method: 'post',\n data: body,\n })\n return data.connect_webviews\n }\n\n async view(params?: ConnectWebviewsViewParams): Promise<void> {\n await this.client.request<ConnectWebviewsViewResponse>({\n url: '/connect_webviews/view',\n method: 'get',\n params,\n })\n }\n}\n\nexport type ConnectWebviewsCreateBody =\n RouteRequestBody<'/connect_webviews/create'>\n\nexport type ConnectWebviewsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/create'>>\n>\n\nexport type ConnectWebviewsDeleteBody =\n RouteRequestBody<'/connect_webviews/delete'>\n\nexport type ConnectWebviewsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/delete'>>\n>\n\nexport type ConnectWebviewsGetBody = RouteRequestBody<'/connect_webviews/get'>\n\nexport type ConnectWebviewsGetResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/get'>>\n>\n\nexport type ConnectWebviewsListBody = RouteRequestBody<'/connect_webviews/list'>\n\nexport type ConnectWebviewsListResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/list'>>\n>\n\nexport type ConnectWebviewsViewParams =\n RouteRequestParams<'/connect_webviews/view'>\n\nexport type ConnectWebviewsViewResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/view'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpConnectedAccounts {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpConnectedAccounts> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpConnectedAccounts.fromClientSessionToken(token, options)\n }\n\n async delete(body: ConnectedAccountsDeleteBody): Promise<void> {\n await this.client.request<ConnectedAccountsDeleteResponse>({\n url: '/connected_accounts/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: ConnectedAccountsGetBody,\n ): Promise<ConnectedAccountsGetResponse['connected_account']> {\n const { data } = await this.client.request<ConnectedAccountsGetResponse>({\n url: '/connected_accounts/get',\n method: 'post',\n data: body,\n })\n return data.connected_account\n }\n\n async list(\n params?: ConnectedAccountsListParams,\n ): Promise<ConnectedAccountsListResponse['connected_accounts']> {\n const { data } = await this.client.request<ConnectedAccountsListResponse>({\n url: '/connected_accounts/list',\n method: 'get',\n params,\n })\n return data.connected_accounts\n }\n}\n\nexport type ConnectedAccountsDeleteBody =\n RouteRequestBody<'/connected_accounts/delete'>\n\nexport type ConnectedAccountsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/delete'>>\n>\n\nexport type ConnectedAccountsGetBody =\n RouteRequestBody<'/connected_accounts/get'>\n\nexport type ConnectedAccountsGetResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/get'>>\n>\n\nexport type ConnectedAccountsListParams =\n RouteRequestParams<'/connected_accounts/list'>\n\nexport type ConnectedAccountsListResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpDevicesUnmanaged {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpDevicesUnmanaged> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpDevicesUnmanaged.fromClientSessionToken(token, options)\n }\n\n async get(\n body: DevicesUnmanagedGetBody,\n ): Promise<DevicesUnmanagedGetResponse['device']> {\n const { data } = await this.client.request<DevicesUnmanagedGetResponse>({\n url: '/devices/unmanaged/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(\n body: DevicesUnmanagedListBody,\n ): Promise<DevicesUnmanagedListResponse['devices']> {\n const { data } = await this.client.request<DevicesUnmanagedListResponse>({\n url: '/devices/unmanaged/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async update(body: DevicesUnmanagedUpdateBody): Promise<void> {\n await this.client.request<DevicesUnmanagedUpdateResponse>({\n url: '/devices/unmanaged/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type DevicesUnmanagedGetBody = RouteRequestBody<'/devices/unmanaged/get'>\n\nexport type DevicesUnmanagedGetResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/get'>>\n>\n\nexport type DevicesUnmanagedListBody =\n RouteRequestBody<'/devices/unmanaged/list'>\n\nexport type DevicesUnmanagedListResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/list'>>\n>\n\nexport type DevicesUnmanagedUpdateBody =\n RouteRequestBody<'/devices/unmanaged/update'>\n\nexport type DevicesUnmanagedUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpDevicesUnmanaged } from './devices-unmanaged.js'\n\nexport class SeamHttpDevices {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpDevices> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpDevices.fromClientSessionToken(token, options)\n }\n\n get unmanaged(): SeamHttpDevicesUnmanaged {\n return SeamHttpDevicesUnmanaged.fromClient(this.client)\n }\n\n async delete(body: DevicesDeleteBody): Promise<void> {\n await this.client.request<DevicesDeleteResponse>({\n url: '/devices/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(body: DevicesGetBody): Promise<DevicesGetResponse['device']> {\n const { data } = await this.client.request<DevicesGetResponse>({\n url: '/devices/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(body: DevicesListBody): Promise<DevicesListResponse['devices']> {\n const { data } = await this.client.request<DevicesListResponse>({\n url: '/devices/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async listDeviceProviders(\n body: DevicesListDeviceProvidersBody,\n ): Promise<DevicesListDeviceProvidersResponse['device_providers']> {\n const { data } =\n await this.client.request<DevicesListDeviceProvidersResponse>({\n url: '/devices/list_device_providers',\n method: 'post',\n data: body,\n })\n return data.device_providers\n }\n\n async update(body: DevicesUpdateBody): Promise<void> {\n await this.client.request<DevicesUpdateResponse>({\n url: '/devices/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type DevicesDeleteBody = RouteRequestBody<'/devices/delete'>\n\nexport type DevicesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/devices/delete'>>\n>\n\nexport type DevicesGetBody = RouteRequestBody<'/devices/get'>\n\nexport type DevicesGetResponse = SetNonNullable<\n Required<RouteResponse<'/devices/get'>>\n>\n\nexport type DevicesListBody = RouteRequestBody<'/devices/list'>\n\nexport type DevicesListResponse = SetNonNullable<\n Required<RouteResponse<'/devices/list'>>\n>\n\nexport type DevicesListDeviceProvidersBody =\n RouteRequestBody<'/devices/list_device_providers'>\n\nexport type DevicesListDeviceProvidersResponse = SetNonNullable<\n Required<RouteResponse<'/devices/list_device_providers'>>\n>\n\nexport type DevicesUpdateBody = RouteRequestBody<'/devices/update'>\n\nexport type DevicesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/devices/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpEvents {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpEvents> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpEvents.fromClientSessionToken(token, options)\n }\n\n async get(body: EventsGetBody): Promise<EventsGetResponse['event']> {\n const { data } = await this.client.request<EventsGetResponse>({\n url: '/events/get',\n method: 'post',\n data: body,\n })\n return data.event\n }\n\n async list(body: EventsListBody): Promise<EventsListResponse['events']> {\n const { data } = await this.client.request<EventsListResponse>({\n url: '/events/list',\n method: 'post',\n data: body,\n })\n return data.events\n }\n}\n\nexport type EventsGetBody = RouteRequestBody<'/events/get'>\n\nexport type EventsGetResponse = SetNonNullable<\n Required<RouteResponse<'/events/get'>>\n>\n\nexport type EventsListBody = RouteRequestBody<'/events/list'>\n\nexport type EventsListResponse = SetNonNullable<\n Required<RouteResponse<'/events/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpLocks {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpLocks> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpLocks.fromClientSessionToken(token, options)\n }\n\n async get(body: LocksGetBody): Promise<LocksGetResponse['device']> {\n const { data } = await this.client.request<LocksGetResponse>({\n url: '/locks/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(body: LocksListBody): Promise<LocksListResponse['devices']> {\n const { data } = await this.client.request<LocksListResponse>({\n url: '/locks/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async lockDoor(\n body: LocksLockDoorBody,\n ): Promise<LocksLockDoorResponse['action_attempt']> {\n const { data } = await this.client.request<LocksLockDoorResponse>({\n url: '/locks/lock_door',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n\n async unlockDoor(\n body: LocksUnlockDoorBody,\n ): Promise<LocksUnlockDoorResponse['action_attempt']> {\n const { data } = await this.client.request<LocksUnlockDoorResponse>({\n url: '/locks/unlock_door',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n}\n\nexport type LocksGetBody = RouteRequestBody<'/locks/get'>\n\nexport type LocksGetResponse = SetNonNullable<\n Required<RouteResponse<'/locks/get'>>\n>\n\nexport type LocksListBody = RouteRequestBody<'/locks/list'>\n\nexport type LocksListResponse = SetNonNullable<\n Required<RouteResponse<'/locks/list'>>\n>\n\nexport type LocksLockDoorBody = RouteRequestBody<'/locks/lock_door'>\n\nexport type LocksLockDoorResponse = SetNonNullable<\n Required<RouteResponse<'/locks/lock_door'>>\n>\n\nexport type LocksUnlockDoorBody = RouteRequestBody<'/locks/unlock_door'>\n\nexport type LocksUnlockDoorResponse = SetNonNullable<\n Required<RouteResponse<'/locks/unlock_door'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpNoiseSensorsNoiseThresholds {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpNoiseSensorsNoiseThresholds> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpNoiseSensorsNoiseThresholds.fromClientSessionToken(\n token,\n options,\n )\n }\n\n async create(body: NoiseSensorsNoiseThresholdsCreateBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsCreateResponse>({\n url: '/noise_sensors/noise_thresholds/create',\n method: 'post',\n data: body,\n })\n }\n\n async delete(body: NoiseSensorsNoiseThresholdsDeleteBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsDeleteResponse>({\n url: '/noise_sensors/noise_thresholds/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: NoiseSensorsNoiseThresholdsGetBody,\n ): Promise<NoiseSensorsNoiseThresholdsGetResponse['noise_threshold']> {\n const { data } =\n await this.client.request<NoiseSensorsNoiseThresholdsGetResponse>({\n url: '/noise_sensors/noise_thresholds/get',\n method: 'post',\n data: body,\n })\n return data.noise_threshold\n }\n\n async list(\n body: NoiseSensorsNoiseThresholdsListBody,\n ): Promise<NoiseSensorsNoiseThresholdsListResponse['noise_thresholds']> {\n const { data } =\n await this.client.request<NoiseSensorsNoiseThresholdsListResponse>({\n url: '/noise_sensors/noise_thresholds/list',\n method: 'post',\n data: body,\n })\n return data.noise_thresholds\n }\n\n async update(body: NoiseSensorsNoiseThresholdsUpdateBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsUpdateResponse>({\n url: '/noise_sensors/noise_thresholds/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type NoiseSensorsNoiseThresholdsCreateBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/create'>\n\nexport type NoiseSensorsNoiseThresholdsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/create'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsDeleteBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/delete'>\n\nexport type NoiseSensorsNoiseThresholdsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/delete'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsGetBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/get'>\n\nexport type NoiseSensorsNoiseThresholdsGetResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/get'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsListBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/list'>\n\nexport type NoiseSensorsNoiseThresholdsListResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/list'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsUpdateBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/update'>\n\nexport type NoiseSensorsNoiseThresholdsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpNoiseSensorsNoiseThresholds } from './noise-sensors-noise-thresholds.js'\n\nexport class SeamHttpNoiseSensors {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpNoiseSensors> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpNoiseSensors.fromClientSessionToken(token, options)\n }\n\n get noiseThresholds(): SeamHttpNoiseSensorsNoiseThresholds {\n return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client)\n }\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpThermostatsClimateSettingSchedules {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpThermostatsClimateSettingSchedules> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpThermostatsClimateSettingSchedules.fromClientSessionToken(\n token,\n options,\n )\n }\n\n async create(\n body: ThermostatsClimateSettingSchedulesCreateBody,\n ): Promise<\n ThermostatsClimateSettingSchedulesCreateResponse['climate_setting_schedule']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesCreateResponse>(\n {\n url: '/thermostats/climate_setting_schedules/create',\n method: 'post',\n data: body,\n },\n )\n return data.climate_setting_schedule\n }\n\n async delete(\n body: ThermostatsClimateSettingSchedulesDeleteBody,\n ): Promise<void> {\n await this.client.request<ThermostatsClimateSettingSchedulesDeleteResponse>(\n {\n url: '/thermostats/climate_setting_schedules/delete',\n method: 'post',\n data: body,\n },\n )\n }\n\n async get(\n body: ThermostatsClimateSettingSchedulesGetBody,\n ): Promise<\n ThermostatsClimateSettingSchedulesGetResponse['climate_setting_schedule']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesGetResponse>({\n url: '/thermostats/climate_setting_schedules/get',\n method: 'post',\n data: body,\n })\n return data.climate_setting_schedule\n }\n\n async list(\n body: ThermostatsClimateSettingSchedulesListBody,\n ): Promise<\n ThermostatsClimateSettingSchedulesListResponse['climate_setting_schedules']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesListResponse>(\n {\n url: '/thermostats/climate_setting_schedules/list',\n method: 'post',\n data: body,\n },\n )\n return data.climate_setting_schedules\n }\n\n async update(\n body: ThermostatsClimateSettingSchedulesUpdateBody,\n ): Promise<void> {\n await this.client.request<ThermostatsClimateSettingSchedulesUpdateResponse>(\n {\n url: '/thermostats/climate_setting_schedules/update',\n method: 'post',\n data: body,\n },\n )\n }\n}\n\nexport type ThermostatsClimateSettingSchedulesCreateBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/create'>\n\nexport type ThermostatsClimateSettingSchedulesCreateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/create'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesDeleteBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/delete'>\n\nexport type ThermostatsClimateSettingSchedulesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/delete'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesGetBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/get'>\n\nexport type ThermostatsClimateSettingSchedulesGetResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/get'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesListBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/list'>\n\nexport type ThermostatsClimateSettingSchedulesListResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/list'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesUpdateBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/update'>\n\nexport type ThermostatsClimateSettingSchedulesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpThermostatsClimateSettingSchedules } from './thermostats-climate-setting-schedules.js'\n\nexport class SeamHttpThermostats {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpThermostats> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpThermostats.fromClientSessionToken(token, options)\n }\n\n get climateSettingSchedules(): SeamHttpThermostatsClimateSettingSchedules {\n return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client)\n }\n\n async cool(body: ThermostatsCoolBody): Promise<void> {\n await this.client.request<ThermostatsCoolResponse>({\n url: '/thermostats/cool',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body: ThermostatsGetBody,\n ): Promise<ThermostatsGetResponse['thermostat']> {\n const { data } = await this.client.request<ThermostatsGetResponse>({\n url: '/thermostats/get',\n method: 'post',\n data: body,\n })\n return data.thermostat\n }\n\n async heat(body: ThermostatsHeatBody): Promise<void> {\n await this.client.request<ThermostatsHeatResponse>({\n url: '/thermostats/heat',\n method: 'post',\n data: body,\n })\n }\n\n async heatCool(body: ThermostatsHeatCoolBody): Promise<void> {\n await this.client.request<ThermostatsHeatCoolResponse>({\n url: '/thermostats/heat_cool',\n method: 'post',\n data: body,\n })\n }\n\n async list(\n body: ThermostatsListBody,\n ): Promise<ThermostatsListResponse['thermostats']> {\n const { data } = await this.client.request<ThermostatsListResponse>({\n url: '/thermostats/list',\n method: 'post',\n data: body,\n })\n return data.thermostats\n }\n\n async off(body: ThermostatsOffBody): Promise<void> {\n await this.client.request<ThermostatsOffResponse>({\n url: '/thermostats/off',\n method: 'post',\n data: body,\n })\n }\n\n async setFanMode(body: ThermostatsSetFanModeBody): Promise<void> {\n await this.client.request<ThermostatsSetFanModeResponse>({\n url: '/thermostats/set_fan_mode',\n method: 'post',\n data: body,\n })\n }\n\n async update(body: ThermostatsUpdateBody): Promise<void> {\n await this.client.request<ThermostatsUpdateResponse>({\n url: '/thermostats/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type ThermostatsCoolBody = RouteRequestBody<'/thermostats/cool'>\n\nexport type ThermostatsCoolResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/cool'>>\n>\n\nexport type ThermostatsGetBody = RouteRequestBody<'/thermostats/get'>\n\nexport type ThermostatsGetResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/get'>>\n>\n\nexport type ThermostatsHeatBody = RouteRequestBody<'/thermostats/heat'>\n\nexport type ThermostatsHeatResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/heat'>>\n>\n\nexport type ThermostatsHeatCoolBody = RouteRequestBody<'/thermostats/heat_cool'>\n\nexport type ThermostatsHeatCoolResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/heat_cool'>>\n>\n\nexport type ThermostatsListBody = RouteRequestBody<'/thermostats/list'>\n\nexport type ThermostatsListResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/list'>>\n>\n\nexport type ThermostatsOffBody = RouteRequestBody<'/thermostats/off'>\n\nexport type ThermostatsOffResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/off'>>\n>\n\nexport type ThermostatsSetFanModeBody =\n RouteRequestBody<'/thermostats/set_fan_mode'>\n\nexport type ThermostatsSetFanModeResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/set_fan_mode'>>\n>\n\nexport type ThermostatsUpdateBody = RouteRequestBody<'/thermostats/update'>\n\nexport type ThermostatsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpWebhooks {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpWebhooks> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpWebhooks.fromClientSessionToken(token, options)\n }\n\n async create(\n body: WebhooksCreateBody,\n ): Promise<WebhooksCreateResponse['webhook']> {\n const { data } = await this.client.request<WebhooksCreateResponse>({\n url: '/webhooks/create',\n method: 'post',\n data: body,\n })\n return data.webhook\n }\n\n async delete(body: WebhooksDeleteBody): Promise<void> {\n await this.client.request<WebhooksDeleteResponse>({\n url: '/webhooks/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(body: WebhooksGetBody): Promise<WebhooksGetResponse['webhook']> {\n const { data } = await this.client.request<WebhooksGetResponse>({\n url: '/webhooks/get',\n method: 'post',\n data: body,\n })\n return data.webhook\n }\n\n async list(\n params?: WebhooksListParams,\n ): Promise<WebhooksListResponse['webhooks']> {\n const { data } = await this.client.request<WebhooksListResponse>({\n url: '/webhooks/list',\n method: 'get',\n params,\n })\n return data.webhooks\n }\n}\n\nexport type WebhooksCreateBody = RouteRequestBody<'/webhooks/create'>\n\nexport type WebhooksCreateResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/create'>>\n>\n\nexport type WebhooksDeleteBody = RouteRequestBody<'/webhooks/delete'>\n\nexport type WebhooksDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/delete'>>\n>\n\nexport type WebhooksGetBody = RouteRequestBody<'/webhooks/get'>\n\nexport type WebhooksGetResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/get'>>\n>\n\nexport type WebhooksListParams = RouteRequestParams<'/webhooks/list'>\n\nexport type WebhooksListResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpWorkspaces {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpWorkspaces> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpWorkspaces.fromClientSessionToken(token, options)\n }\n\n async get(\n params?: WorkspacesGetParams,\n ): Promise<WorkspacesGetResponse['workspace']> {\n const { data } = await this.client.request<WorkspacesGetResponse>({\n url: '/workspaces/get',\n method: 'get',\n params,\n })\n return data.workspace\n }\n\n async list(\n params?: WorkspacesListParams,\n ): Promise<WorkspacesListResponse['workspaces']> {\n const { data } = await this.client.request<WorkspacesListResponse>({\n url: '/workspaces/list',\n method: 'get',\n params,\n })\n return data.workspaces\n }\n\n async resetSandbox(body: WorkspacesResetSandboxBody): Promise<void> {\n await this.client.request<WorkspacesResetSandboxResponse>({\n url: '/workspaces/reset_sandbox',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type WorkspacesGetParams = RouteRequestParams<'/workspaces/get'>\n\nexport type WorkspacesGetResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/get'>>\n>\n\nexport type WorkspacesListParams = RouteRequestParams<'/workspaces/list'>\n\nexport type WorkspacesListResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/list'>>\n>\n\nexport type WorkspacesResetSandboxBody =\n RouteRequestBody<'/workspaces/reset_sandbox'>\n\nexport type WorkspacesResetSandboxResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/reset_sandbox'>>\n>\n","import { warnOnInsecureuserIdentifierKey } from './auth.js'\nimport { type Client, createClient } from './client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from './options.js'\nimport { parseOptions } from './parse-options.js'\nimport {\n SeamHttpAccessCodes,\n SeamHttpAcs,\n SeamHttpActionAttempts,\n SeamHttpClientSessions,\n SeamHttpConnectedAccounts,\n SeamHttpConnectWebviews,\n SeamHttpDevices,\n SeamHttpEvents,\n SeamHttpLocks,\n SeamHttpNoiseSensors,\n SeamHttpThermostats,\n SeamHttpWebhooks,\n SeamHttpWorkspaces,\n} from './routes/index.js'\n\nexport class SeamHttp {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttp {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttp {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttp {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttp> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttp.fromClientSessionToken(token, options)\n }\n\n get accessCodes(): SeamHttpAccessCodes {\n return SeamHttpAccessCodes.fromClient(this.client)\n }\n\n get acs(): SeamHttpAcs {\n return SeamHttpAcs.fromClient(this.client)\n }\n\n get actionAttempts(): SeamHttpActionAttempts {\n return SeamHttpActionAttempts.fromClient(this.client)\n }\n\n get clientSessions(): SeamHttpClientSessions {\n return SeamHttpClientSessions.fromClient(this.client)\n }\n\n get connectedAccounts(): SeamHttpConnectedAccounts {\n return SeamHttpConnectedAccounts.fromClient(this.client)\n }\n\n get connectWebviews(): SeamHttpConnectWebviews {\n return SeamHttpConnectWebviews.fromClient(this.client)\n }\n\n get devices(): SeamHttpDevices {\n return SeamHttpDevices.fromClient(this.client)\n }\n\n get events(): SeamHttpEvents {\n return SeamHttpEvents.fromClient(this.client)\n }\n\n get locks(): SeamHttpLocks {\n return SeamHttpLocks.fromClient(this.client)\n }\n\n get noiseSensors(): SeamHttpNoiseSensors {\n return SeamHttpNoiseSensors.fromClient(this.client)\n }\n\n get thermostats(): SeamHttpThermostats {\n return SeamHttpThermostats.fromClient(this.client)\n }\n\n get webhooks(): SeamHttpWebhooks {\n return SeamHttpWebhooks.fromClient(this.client)\n }\n\n get workspaces(): SeamHttpWorkspaces {\n return SeamHttpWorkspaces.fromClient(this.client)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/seam/connect/options.ts","../src/lib/seam/connect/auth.ts","../src/lib/seam/connect/client.ts","../src/lib/params-serializer.ts","../src/lib/version.ts","../src/lib/seam/connect/parse-options.ts","../src/lib/seam/connect/routes/client-sessions.ts","../src/lib/seam/connect/routes/access-codes-unmanaged.ts","../src/lib/seam/connect/routes/access-codes.ts","../src/lib/seam/connect/routes/acs-access-groups.ts","../src/lib/seam/connect/routes/acs-credentials.ts","../src/lib/seam/connect/routes/acs-systems.ts","../src/lib/seam/connect/routes/acs-users.ts","../src/lib/seam/connect/routes/acs.ts","../src/lib/seam/connect/routes/action-attempts.ts","../src/lib/seam/connect/routes/connect-webviews.ts","../src/lib/seam/connect/routes/connected-accounts.ts","../src/lib/seam/connect/routes/devices-unmanaged.ts","../src/lib/seam/connect/routes/devices.ts","../src/lib/seam/connect/routes/events.ts","../src/lib/seam/connect/routes/locks.ts","../src/lib/seam/connect/routes/noise-sensors-noise-thresholds.ts","../src/lib/seam/connect/routes/noise-sensors.ts","../src/lib/seam/connect/routes/thermostats-climate-setting-schedules.ts","../src/lib/seam/connect/routes/thermostats.ts","../src/lib/seam/connect/routes/webhooks.ts","../src/lib/seam/connect/routes/workspaces.ts","../src/lib/seam/connect/seam-http.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Client, ClientOptions } from './client.js'\n\nexport type SeamHttpOptions =\n | SeamHttpOptionsFromEnv\n | SeamHttpOptionsWithClient\n | SeamHttpOptionsWithApiKey\n | SeamHttpOptionsWithClientSessionToken\n\ninterface SeamHttpCommonOptions extends ClientOptions {\n endpoint?: string\n}\n\nexport interface SeamHttpFromPublishableKeyOptions\n extends SeamHttpCommonOptions {}\n\nexport interface SeamHttpOptionsFromEnv extends SeamHttpCommonOptions {}\n\nexport interface SeamHttpOptionsWithClient {\n client: Client\n}\n\nexport const isSeamHttpOptionsWithClient = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithClient => {\n if (!('client' in options)) return false\n if (options.client == null) return false\n\n const keys = Object.keys(options).filter((k) => k !== 'client')\n if (keys.length > 0) {\n throw new SeamHttpInvalidOptionsError(\n `The client option cannot be used with any other option, but received: ${keys.join(\n ', ',\n )}`,\n )\n }\n\n return true\n}\n\nexport interface SeamHttpOptionsWithApiKey extends SeamHttpCommonOptions {\n apiKey: string\n}\n\nexport const isSeamHttpOptionsWithApiKey = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithApiKey => {\n if (!('apiKey' in options)) return false\n if (options.apiKey == null) return false\n\n if ('clientSessionToken' in options && options.clientSessionToken != null) {\n throw new SeamHttpInvalidOptionsError(\n 'The clientSessionToken option cannot be used with the apiKey option',\n )\n }\n\n return true\n}\n\nexport interface SeamHttpOptionsWithClientSessionToken\n extends SeamHttpCommonOptions {\n clientSessionToken: string\n}\n\nexport const isSeamHttpOptionsWithClientSessionToken = (\n options: SeamHttpOptions,\n): options is SeamHttpOptionsWithClientSessionToken => {\n if (!('clientSessionToken' in options)) return false\n if (options.clientSessionToken == null) return false\n\n if ('apiKey' in options && options.apiKey != null) {\n throw new SeamHttpInvalidOptionsError(\n 'The clientSessionToken option cannot be used with the apiKey option',\n )\n }\n\n return true\n}\n\nexport class SeamHttpInvalidOptionsError extends Error {\n constructor(message: string) {\n super(`SeamHttp received invalid options: ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n","import {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClientSessionToken,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClientSessionToken,\n} from './options.js'\nimport type { Options } from './parse-options.js'\n\ntype Headers = Record<string, string>\n\nexport const getAuthHeaders = (options: Options): Headers => {\n if ('publishableKey' in options) {\n return getAuthHeadersForPublishableKey(options.publishableKey)\n }\n\n if (isSeamHttpOptionsWithApiKey(options)) {\n return getAuthHeadersForApiKey(options)\n }\n\n if (isSeamHttpOptionsWithClientSessionToken(options)) {\n return getAuthHeadersForClientSessionToken(options)\n }\n\n throw new SeamHttpInvalidOptionsError(\n 'Must specify an apiKey, clientSessionToken, or publishableKey',\n )\n}\n\nconst getAuthHeadersForApiKey = ({\n apiKey,\n}: SeamHttpOptionsWithApiKey): Headers => {\n if (isClientSessionToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Client Session Token cannot be used as an apiKey',\n )\n }\n\n if (isJwt(apiKey)) {\n throw new SeamHttpInvalidTokenError('A JWT cannot be used as an apiKey')\n }\n\n if (isAccessToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as an apiKey',\n )\n }\n\n if (isPublishableKey(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Publishable Key cannot be used as an apiKey',\n )\n }\n\n if (!isSeamToken(apiKey)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid apiKey format, expected token to start with ${tokenPrefix}`,\n )\n }\n\n return {\n authorization: `Bearer ${apiKey}`,\n }\n}\n\nconst getAuthHeadersForClientSessionToken = ({\n clientSessionToken,\n}: SeamHttpOptionsWithClientSessionToken): Headers => {\n if (isJwt(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'A JWT cannot be used as a clientSessionToken',\n )\n }\n\n if (isAccessToken(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as a clientSessionToken',\n )\n }\n\n if (isPublishableKey(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n 'A Publishable Key cannot be used as a clientSessionToken',\n )\n }\n\n if (!isClientSessionToken(clientSessionToken)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid clientSessionToken format, expected token to start with ${clientSessionTokenPrefix}`,\n )\n }\n\n return {\n authorization: `Bearer ${clientSessionToken}`,\n 'client-session-token': clientSessionToken,\n }\n}\n\nconst getAuthHeadersForPublishableKey = (publishableKey: string): Headers => {\n if (isJwt(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A JWT cannot be used as a publishableKey',\n )\n }\n\n if (isAccessToken(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'An Access Token cannot be used as a publishableKey',\n )\n }\n\n if (isClientSessionToken(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n 'A Client Session Token Key cannot be used as a publishableKey',\n )\n }\n\n if (!isPublishableKey(publishableKey)) {\n throw new SeamHttpInvalidTokenError(\n `Unknown or invalid publishableKey format, expected token to start with ${publishableKeyTokenPrefix}`,\n )\n }\n\n return {\n 'seam-publishable-key': publishableKey,\n }\n}\n\nexport class SeamHttpInvalidTokenError extends Error {\n constructor(message: string) {\n super(`SeamHttp received an invalid token: ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nexport const warnOnInsecureuserIdentifierKey = (\n userIdentifierKey: string,\n): void => {\n if (isEmail(userIdentifierKey)) {\n // eslint-disable-next-line no-console\n console.warn(\n ...[\n 'Using an email for the userIdentifierKey is insecure and may return an error in the future!',\n 'This is insecure because an email is common knowledge or easily guessed.',\n 'Use something with sufficient entropy known only to the owner of the client session.',\n 'For help choosing a user identifier key see',\n 'https://docs.seam.co/latest/seam-components/overview/get-started-with-client-side-components#3-select-a-user-identifier-key',\n ],\n )\n }\n}\n\nconst tokenPrefix = 'seam_'\n\nconst clientSessionTokenPrefix = 'seam_cst'\n\nconst publishableKeyTokenPrefix = 'seam_pk'\n\nconst isClientSessionToken = (token: string): boolean =>\n token.startsWith(clientSessionTokenPrefix)\n\nconst isAccessToken = (token: string): boolean => token.startsWith('seam_at')\n\nconst isJwt = (token: string): boolean => token.startsWith('ey')\n\nconst isSeamToken = (token: string): boolean => token.startsWith(tokenPrefix)\n\nconst isPublishableKey = (token: string): boolean =>\n token.startsWith(publishableKeyTokenPrefix)\n\n// SOURCE: https://stackoverflow.com/a/46181\nconst isEmail = (value: string): boolean =>\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value)\n","import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios'\nimport axiosRetry, { type AxiosRetry, exponentialDelay } from 'axios-retry'\n\nimport { paramsSerializer } from 'lib/params-serializer.js'\n\nexport type Client = AxiosInstance\n\nexport interface ClientOptions {\n axiosOptions?: AxiosRequestConfig\n axiosRetryOptions?: AxiosRetryConfig\n client?: Client\n}\n\ntype AxiosRetryConfig = Parameters<AxiosRetry>[1]\n\nexport const createClient = (options: ClientOptions): AxiosInstance => {\n if (options.client != null) return options.client\n\n const client = axios.create({\n paramsSerializer,\n ...options.axiosOptions,\n })\n\n // @ts-expect-error https://github.com/softonic/axios-retry/issues/159\n axiosRetry(client, {\n retries: 2,\n retryDelay: exponentialDelay,\n ...options.axiosRetryOptions,\n })\n\n return client\n}\n","import type { CustomParamsSerializer } from 'axios'\n\nexport const paramsSerializer: CustomParamsSerializer = (params) => {\n const searchParams = new URLSearchParams()\n\n for (const [name, value] of Object.entries(params)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n if (value.length === 0) searchParams.set(name, '')\n if (value.length === 1 && value[0] === '') {\n throw new UnserializableParamError(\n name,\n `is a single element array containing the empty string which is unsupported because it serializes to the empty array`,\n )\n }\n for (const v of value) {\n throwIfUnserializable(name, v)\n searchParams.append(name, v)\n }\n continue\n }\n\n throwIfUnserializable(name, value)\n searchParams.set(name, value)\n }\n\n searchParams.sort()\n return searchParams.toString()\n}\n\nconst throwIfUnserializable = (k: string, v: unknown): void => {\n if (v == null) {\n throw new UnserializableParamError(k, `is ${v} or contains ${v}`)\n }\n\n if (typeof v === 'function') {\n throw new UnserializableParamError(\n k,\n 'is a function or contains a function',\n )\n }\n\n if (typeof v === 'object') {\n throw new UnserializableParamError(k, 'is an object or contains an object')\n }\n}\n\nexport class UnserializableParamError extends Error {\n constructor(name: string, message: string) {\n super(`Could not serialize parameter: '${name}' ${message}`)\n this.name = this.constructor.name\n Error.captureStackTrace(this, this.constructor)\n }\n}\n","const seamapiJavascriptHttpVersion = null\n\nexport default seamapiJavascriptHttpVersion\n","import version from 'lib/version.js'\n\nimport { getAuthHeaders } from './auth.js'\nimport type { ClientOptions } from './client.js'\nimport {\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpOptions,\n} from './options.js'\n\nconst defaultEndpoint = 'https://connect.getseam.com'\n\nconst sdkHeaders = {\n 'seam-sdk-name': 'seamapi/javascript-http',\n 'seam-sdk-version': version,\n}\n\nexport type Options = SeamHttpOptions & { publishableKey?: string }\n\nexport const parseOptions = (\n apiKeyOrOptions: string | Options,\n): ClientOptions => {\n const options = getNormalizedOptions(apiKeyOrOptions)\n\n if (isSeamHttpOptionsWithClient(options)) return options\n\n return {\n axiosOptions: {\n baseURL: options.endpoint ?? getEndpointFromEnv() ?? defaultEndpoint,\n withCredentials: isSeamHttpOptionsWithClientSessionToken(options),\n ...options.axiosOptions,\n headers: {\n ...getAuthHeaders(options),\n ...options.axiosOptions?.headers,\n ...sdkHeaders,\n },\n },\n axiosRetryOptions: {\n ...options.axiosRetryOptions,\n },\n }\n}\n\nconst getNormalizedOptions = (\n apiKeyOrOptions: string | Options,\n): SeamHttpOptions => {\n const options =\n typeof apiKeyOrOptions === 'string'\n ? { apiKey: apiKeyOrOptions }\n : apiKeyOrOptions\n\n if (isSeamHttpOptionsWithClient(options)) return options\n\n const apiKey =\n 'apiKey' in options ? options.apiKey : getApiKeyFromEnv(options)\n\n return {\n ...options,\n ...(apiKey != null ? { apiKey } : {}),\n }\n}\n\nconst getApiKeyFromEnv = (\n options: SeamHttpOptions,\n): string | null | undefined => {\n if ('clientSessionToken' in options && options.clientSessionToken != null) {\n return null\n }\n return globalThis.process?.env?.SEAM_API_KEY\n}\n\nconst getEndpointFromEnv = (): string | null | undefined => {\n return (\n globalThis.process?.env?.SEAM_ENDPOINT ??\n globalThis.process?.env?.SEAM_API_URL\n )\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nexport class SeamHttpClientSessions {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpClientSessions {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpClientSessions(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpClientSessions> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpClientSessions.fromClientSessionToken(token, options)\n }\n\n async create(\n body?: ClientSessionsCreateBody,\n ): Promise<ClientSessionsCreateResponse['client_session']> {\n const { data } = await this.client.request<ClientSessionsCreateResponse>({\n url: '/client_sessions/create',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async delete(body?: ClientSessionsDeleteBody): Promise<void> {\n await this.client.request<ClientSessionsDeleteResponse>({\n url: '/client_sessions/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: ClientSessionsGetParams,\n ): Promise<ClientSessionsGetResponse['client_session']> {\n const { data } = await this.client.request<ClientSessionsGetResponse>({\n url: '/client_sessions/get',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async getOrCreate(\n body?: ClientSessionsGetOrCreateBody,\n ): Promise<ClientSessionsGetOrCreateResponse['client_session']> {\n const { data } =\n await this.client.request<ClientSessionsGetOrCreateResponse>({\n url: '/client_sessions/get_or_create',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async grantAccess(\n body?: ClientSessionsGrantAccessBody,\n ): Promise<ClientSessionsGrantAccessResponse['client_session']> {\n const { data } =\n await this.client.request<ClientSessionsGrantAccessResponse>({\n url: '/client_sessions/grant_access',\n method: 'post',\n data: body,\n })\n return data.client_session\n }\n\n async list(\n body?: ClientSessionsListParams,\n ): Promise<ClientSessionsListResponse['client_sessions']> {\n const { data } = await this.client.request<ClientSessionsListResponse>({\n url: '/client_sessions/list',\n method: 'post',\n data: body,\n })\n return data.client_sessions\n }\n}\n\nexport type ClientSessionsCreateBody =\n RouteRequestBody<'/client_sessions/create'>\n\nexport type ClientSessionsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/create'>>\n>\n\nexport type ClientSessionsDeleteBody =\n RouteRequestBody<'/client_sessions/delete'>\n\nexport type ClientSessionsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/delete'>>\n>\n\nexport type ClientSessionsGetParams = RouteRequestBody<'/client_sessions/get'>\n\nexport type ClientSessionsGetResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/get'>>\n>\n\nexport type ClientSessionsGetOrCreateBody =\n RouteRequestBody<'/client_sessions/get_or_create'>\n\nexport type ClientSessionsGetOrCreateResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/get_or_create'>>\n>\n\nexport type ClientSessionsGrantAccessBody =\n RouteRequestBody<'/client_sessions/grant_access'>\n\nexport type ClientSessionsGrantAccessResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/grant_access'>>\n>\n\nexport type ClientSessionsListParams = RouteRequestBody<'/client_sessions/list'>\n\nexport type ClientSessionsListResponse = SetNonNullable<\n Required<RouteResponse<'/client_sessions/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAccessCodesUnmanaged {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAccessCodesUnmanaged {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAccessCodesUnmanaged(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAccessCodesUnmanaged> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAccessCodesUnmanaged.fromClientSessionToken(token, options)\n }\n\n async convertToManaged(\n body?: AccessCodesUnmanagedConvertToManagedBody,\n ): Promise<void> {\n await this.client.request<AccessCodesUnmanagedConvertToManagedResponse>({\n url: '/access_codes/unmanaged/convert_to_managed',\n method: 'post',\n data: body,\n })\n }\n\n async delete(body?: AccessCodesUnmanagedDeleteBody): Promise<void> {\n await this.client.request<AccessCodesUnmanagedDeleteResponse>({\n url: '/access_codes/unmanaged/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: AccessCodesUnmanagedGetParams,\n ): Promise<AccessCodesUnmanagedGetResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesUnmanagedGetResponse>(\n {\n url: '/access_codes/unmanaged/get',\n method: 'post',\n data: body,\n },\n )\n return data.access_code\n }\n\n async list(\n body?: AccessCodesUnmanagedListParams,\n ): Promise<AccessCodesUnmanagedListResponse['access_codes']> {\n const { data } =\n await this.client.request<AccessCodesUnmanagedListResponse>({\n url: '/access_codes/unmanaged/list',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async update(body?: AccessCodesUnmanagedUpdateBody): Promise<void> {\n await this.client.request<AccessCodesUnmanagedUpdateResponse>({\n url: '/access_codes/unmanaged/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AccessCodesUnmanagedConvertToManagedBody =\n RouteRequestBody<'/access_codes/unmanaged/convert_to_managed'>\n\nexport type AccessCodesUnmanagedConvertToManagedResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/convert_to_managed'>>\n>\n\nexport type AccessCodesUnmanagedDeleteBody =\n RouteRequestBody<'/access_codes/unmanaged/delete'>\n\nexport type AccessCodesUnmanagedDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/delete'>>\n>\n\nexport type AccessCodesUnmanagedGetParams =\n RouteRequestBody<'/access_codes/unmanaged/get'>\n\nexport type AccessCodesUnmanagedGetResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/get'>>\n>\n\nexport type AccessCodesUnmanagedListParams =\n RouteRequestBody<'/access_codes/unmanaged/list'>\n\nexport type AccessCodesUnmanagedListResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/list'>>\n>\n\nexport type AccessCodesUnmanagedUpdateBody =\n RouteRequestBody<'/access_codes/unmanaged/update'>\n\nexport type AccessCodesUnmanagedUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/unmanaged/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpAccessCodesUnmanaged } from './access-codes-unmanaged.js'\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAccessCodes {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAccessCodes {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAccessCodes(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAccessCodes> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAccessCodes.fromClientSessionToken(token, options)\n }\n\n get unmanaged(): SeamHttpAccessCodesUnmanaged {\n return SeamHttpAccessCodesUnmanaged.fromClient(this.client)\n }\n\n async create(\n body?: AccessCodesCreateBody,\n ): Promise<AccessCodesCreateResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesCreateResponse>({\n url: '/access_codes/create',\n method: 'post',\n data: body,\n })\n return data.access_code\n }\n\n async createMultiple(\n body?: AccessCodesCreateMultipleBody,\n ): Promise<AccessCodesCreateMultipleResponse['access_codes']> {\n const { data } =\n await this.client.request<AccessCodesCreateMultipleResponse>({\n url: '/access_codes/create_multiple',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async delete(body?: AccessCodesDeleteBody): Promise<void> {\n await this.client.request<AccessCodesDeleteResponse>({\n url: '/access_codes/delete',\n method: 'post',\n data: body,\n })\n }\n\n async generateCode(\n body?: AccessCodesGenerateCodeBody,\n ): Promise<AccessCodesGenerateCodeResponse['generated_code']> {\n const { data } = await this.client.request<AccessCodesGenerateCodeResponse>(\n {\n url: '/access_codes/generate_code',\n method: 'post',\n data: body,\n },\n )\n return data.generated_code\n }\n\n async get(\n body?: AccessCodesGetParams,\n ): Promise<AccessCodesGetResponse['access_code']> {\n const { data } = await this.client.request<AccessCodesGetResponse>({\n url: '/access_codes/get',\n method: 'post',\n data: body,\n })\n return data.access_code\n }\n\n async list(\n body?: AccessCodesListParams,\n ): Promise<AccessCodesListResponse['access_codes']> {\n const { data } = await this.client.request<AccessCodesListResponse>({\n url: '/access_codes/list',\n method: 'post',\n data: body,\n })\n return data.access_codes\n }\n\n async pullBackupAccessCode(\n body?: AccessCodesPullBackupAccessCodeBody,\n ): Promise<AccessCodesPullBackupAccessCodeResponse['backup_access_code']> {\n const { data } =\n await this.client.request<AccessCodesPullBackupAccessCodeResponse>({\n url: '/access_codes/pull_backup_access_code',\n method: 'post',\n data: body,\n })\n return data.backup_access_code\n }\n\n async update(body?: AccessCodesUpdateBody): Promise<void> {\n await this.client.request<AccessCodesUpdateResponse>({\n url: '/access_codes/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AccessCodesCreateBody = RouteRequestBody<'/access_codes/create'>\n\nexport type AccessCodesCreateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/create'>>\n>\n\nexport type AccessCodesCreateMultipleBody =\n RouteRequestBody<'/access_codes/create_multiple'>\n\nexport type AccessCodesCreateMultipleResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/create_multiple'>>\n>\n\nexport type AccessCodesDeleteBody = RouteRequestBody<'/access_codes/delete'>\n\nexport type AccessCodesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/delete'>>\n>\n\nexport type AccessCodesGenerateCodeBody =\n RouteRequestBody<'/access_codes/generate_code'>\n\nexport type AccessCodesGenerateCodeResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/generate_code'>>\n>\n\nexport type AccessCodesGetParams = RouteRequestBody<'/access_codes/get'>\n\nexport type AccessCodesGetResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/get'>>\n>\n\nexport type AccessCodesListParams = RouteRequestBody<'/access_codes/list'>\n\nexport type AccessCodesListResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/list'>>\n>\n\nexport type AccessCodesPullBackupAccessCodeBody =\n RouteRequestBody<'/access_codes/pull_backup_access_code'>\n\nexport type AccessCodesPullBackupAccessCodeResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/pull_backup_access_code'>>\n>\n\nexport type AccessCodesUpdateBody = RouteRequestBody<'/access_codes/update'>\n\nexport type AccessCodesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/access_codes/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsAccessGroups {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsAccessGroups {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsAccessGroups(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsAccessGroups> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsAccessGroups.fromClientSessionToken(token, options)\n }\n\n async addUser(body?: AcsAccessGroupsAddUserBody): Promise<void> {\n await this.client.request<AcsAccessGroupsAddUserResponse>({\n url: '/acs/access_groups/add_user',\n method: 'post',\n data: body,\n })\n }\n\n async create(\n body?: AcsAccessGroupsCreateBody,\n ): Promise<AcsAccessGroupsCreateResponse['acs_access_group']> {\n const { data } = await this.client.request<AcsAccessGroupsCreateResponse>({\n url: '/acs/access_groups/create',\n method: 'post',\n data: body,\n })\n return data.acs_access_group\n }\n\n async delete(body?: AcsAccessGroupsDeleteBody): Promise<void> {\n await this.client.request<AcsAccessGroupsDeleteResponse>({\n url: '/acs/access_groups/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: AcsAccessGroupsGetParams,\n ): Promise<AcsAccessGroupsGetResponse['acs_access_group']> {\n const { data } = await this.client.request<AcsAccessGroupsGetResponse>({\n url: '/acs/access_groups/get',\n method: 'post',\n data: body,\n })\n return data.acs_access_group\n }\n\n async list(\n body?: AcsAccessGroupsListParams,\n ): Promise<AcsAccessGroupsListResponse['acs_access_groups']> {\n const { data } = await this.client.request<AcsAccessGroupsListResponse>({\n url: '/acs/access_groups/list',\n method: 'post',\n data: body,\n })\n return data.acs_access_groups\n }\n\n async listUsers(\n body?: AcsAccessGroupsListUsersParams,\n ): Promise<AcsAccessGroupsListUsersResponse['acs_users']> {\n const { data } =\n await this.client.request<AcsAccessGroupsListUsersResponse>({\n url: '/acs/access_groups/list_users',\n method: 'post',\n data: body,\n })\n return data.acs_users\n }\n\n async removeUser(body?: AcsAccessGroupsRemoveUserBody): Promise<void> {\n await this.client.request<AcsAccessGroupsRemoveUserResponse>({\n url: '/acs/access_groups/remove_user',\n method: 'post',\n data: body,\n })\n }\n\n async update(body?: AcsAccessGroupsUpdateBody): Promise<void> {\n await this.client.request<AcsAccessGroupsUpdateResponse>({\n url: '/acs/access_groups/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AcsAccessGroupsAddUserBody =\n RouteRequestBody<'/acs/access_groups/add_user'>\n\nexport type AcsAccessGroupsAddUserResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/add_user'>>\n>\n\nexport type AcsAccessGroupsCreateBody =\n RouteRequestBody<'/acs/access_groups/create'>\n\nexport type AcsAccessGroupsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/create'>>\n>\n\nexport type AcsAccessGroupsDeleteBody =\n RouteRequestBody<'/acs/access_groups/delete'>\n\nexport type AcsAccessGroupsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/delete'>>\n>\n\nexport type AcsAccessGroupsGetParams =\n RouteRequestBody<'/acs/access_groups/get'>\n\nexport type AcsAccessGroupsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/get'>>\n>\n\nexport type AcsAccessGroupsListParams =\n RouteRequestBody<'/acs/access_groups/list'>\n\nexport type AcsAccessGroupsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/list'>>\n>\n\nexport type AcsAccessGroupsListUsersParams =\n RouteRequestBody<'/acs/access_groups/list_users'>\n\nexport type AcsAccessGroupsListUsersResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/list_users'>>\n>\n\nexport type AcsAccessGroupsRemoveUserBody =\n RouteRequestBody<'/acs/access_groups/remove_user'>\n\nexport type AcsAccessGroupsRemoveUserResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/remove_user'>>\n>\n\nexport type AcsAccessGroupsUpdateBody =\n RouteRequestBody<'/acs/access_groups/update'>\n\nexport type AcsAccessGroupsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/access_groups/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsCredentials {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsCredentials {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsCredentials(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsCredentials> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsCredentials.fromClientSessionToken(token, options)\n }\n\n async create(\n body?: AcsCredentialsCreateBody,\n ): Promise<AcsCredentialsCreateResponse['acs_credential']> {\n const { data } = await this.client.request<AcsCredentialsCreateResponse>({\n url: '/acs/credentials/create',\n method: 'post',\n data: body,\n })\n return data.acs_credential\n }\n\n async delete(body?: AcsCredentialsDeleteBody): Promise<void> {\n await this.client.request<AcsCredentialsDeleteResponse>({\n url: '/acs/credentials/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: AcsCredentialsGetParams,\n ): Promise<AcsCredentialsGetResponse['acs_credential']> {\n const { data } = await this.client.request<AcsCredentialsGetResponse>({\n url: '/acs/credentials/get',\n method: 'post',\n data: body,\n })\n return data.acs_credential\n }\n\n async list(\n body?: AcsCredentialsListParams,\n ): Promise<AcsCredentialsListResponse['acs_credentials']> {\n const { data } = await this.client.request<AcsCredentialsListResponse>({\n url: '/acs/credentials/list',\n method: 'post',\n data: body,\n })\n return data.acs_credentials\n }\n}\n\nexport type AcsCredentialsCreateBody =\n RouteRequestBody<'/acs/credentials/create'>\n\nexport type AcsCredentialsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/create'>>\n>\n\nexport type AcsCredentialsDeleteBody =\n RouteRequestBody<'/acs/credentials/delete'>\n\nexport type AcsCredentialsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/delete'>>\n>\n\nexport type AcsCredentialsGetParams = RouteRequestBody<'/acs/credentials/get'>\n\nexport type AcsCredentialsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/get'>>\n>\n\nexport type AcsCredentialsListParams = RouteRequestBody<'/acs/credentials/list'>\n\nexport type AcsCredentialsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/credentials/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsSystems {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsSystems {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsSystems(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsSystems> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsSystems.fromClientSessionToken(token, options)\n }\n\n async get(\n body?: AcsSystemsGetParams,\n ): Promise<AcsSystemsGetResponse['acs_system']> {\n const { data } = await this.client.request<AcsSystemsGetResponse>({\n url: '/acs/systems/get',\n method: 'post',\n data: body,\n })\n return data.acs_system\n }\n\n async list(\n body?: AcsSystemsListParams,\n ): Promise<AcsSystemsListResponse['acs_systems']> {\n const { data } = await this.client.request<AcsSystemsListResponse>({\n url: '/acs/systems/list',\n method: 'post',\n data: body,\n })\n return data.acs_systems\n }\n}\n\nexport type AcsSystemsGetParams = RouteRequestBody<'/acs/systems/get'>\n\nexport type AcsSystemsGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/systems/get'>>\n>\n\nexport type AcsSystemsListParams = RouteRequestBody<'/acs/systems/list'>\n\nexport type AcsSystemsListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/systems/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcsUsers {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcsUsers {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcsUsers(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcsUsers> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcsUsers.fromClientSessionToken(token, options)\n }\n\n async addToAccessGroup(body?: AcsUsersAddToAccessGroupBody): Promise<void> {\n await this.client.request<AcsUsersAddToAccessGroupResponse>({\n url: '/acs/users/add_to_access_group',\n method: 'post',\n data: body,\n })\n }\n\n async create(\n body?: AcsUsersCreateBody,\n ): Promise<AcsUsersCreateResponse['acs_user']> {\n const { data } = await this.client.request<AcsUsersCreateResponse>({\n url: '/acs/users/create',\n method: 'post',\n data: body,\n })\n return data.acs_user\n }\n\n async delete(body?: AcsUsersDeleteBody): Promise<void> {\n await this.client.request<AcsUsersDeleteResponse>({\n url: '/acs/users/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: AcsUsersGetParams,\n ): Promise<AcsUsersGetResponse['acs_user']> {\n const { data } = await this.client.request<AcsUsersGetResponse>({\n url: '/acs/users/get',\n method: 'post',\n data: body,\n })\n return data.acs_user\n }\n\n async list(\n body?: AcsUsersListParams,\n ): Promise<AcsUsersListResponse['acs_users']> {\n const { data } = await this.client.request<AcsUsersListResponse>({\n url: '/acs/users/list',\n method: 'post',\n data: body,\n })\n return data.acs_users\n }\n\n async removeFromAccessGroup(\n body?: AcsUsersRemoveFromAccessGroupBody,\n ): Promise<void> {\n await this.client.request<AcsUsersRemoveFromAccessGroupResponse>({\n url: '/acs/users/remove_from_access_group',\n method: 'post',\n data: body,\n })\n }\n\n async suspend(body?: AcsUsersSuspendBody): Promise<void> {\n await this.client.request<AcsUsersSuspendResponse>({\n url: '/acs/users/suspend',\n method: 'post',\n data: body,\n })\n }\n\n async unsuspend(body?: AcsUsersUnsuspendBody): Promise<void> {\n await this.client.request<AcsUsersUnsuspendResponse>({\n url: '/acs/users/unsuspend',\n method: 'post',\n data: body,\n })\n }\n\n async update(body?: AcsUsersUpdateBody): Promise<void> {\n await this.client.request<AcsUsersUpdateResponse>({\n url: '/acs/users/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type AcsUsersAddToAccessGroupBody =\n RouteRequestBody<'/acs/users/add_to_access_group'>\n\nexport type AcsUsersAddToAccessGroupResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/add_to_access_group'>>\n>\n\nexport type AcsUsersCreateBody = RouteRequestBody<'/acs/users/create'>\n\nexport type AcsUsersCreateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/create'>>\n>\n\nexport type AcsUsersDeleteBody = RouteRequestBody<'/acs/users/delete'>\n\nexport type AcsUsersDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/delete'>>\n>\n\nexport type AcsUsersGetParams = RouteRequestBody<'/acs/users/get'>\n\nexport type AcsUsersGetResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/get'>>\n>\n\nexport type AcsUsersListParams = RouteRequestBody<'/acs/users/list'>\n\nexport type AcsUsersListResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/list'>>\n>\n\nexport type AcsUsersRemoveFromAccessGroupBody =\n RouteRequestBody<'/acs/users/remove_from_access_group'>\n\nexport type AcsUsersRemoveFromAccessGroupResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/remove_from_access_group'>>\n>\n\nexport type AcsUsersSuspendBody = RouteRequestBody<'/acs/users/suspend'>\n\nexport type AcsUsersSuspendResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/suspend'>>\n>\n\nexport type AcsUsersUnsuspendBody = RouteRequestBody<'/acs/users/unsuspend'>\n\nexport type AcsUsersUnsuspendResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/unsuspend'>>\n>\n\nexport type AcsUsersUpdateBody = RouteRequestBody<'/acs/users/update'>\n\nexport type AcsUsersUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/acs/users/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpAcsAccessGroups } from './acs-access-groups.js'\nimport { SeamHttpAcsCredentials } from './acs-credentials.js'\nimport { SeamHttpAcsSystems } from './acs-systems.js'\nimport { SeamHttpAcsUsers } from './acs-users.js'\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpAcs {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpAcs {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpAcs(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpAcs> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpAcs.fromClientSessionToken(token, options)\n }\n\n get accessGroups(): SeamHttpAcsAccessGroups {\n return SeamHttpAcsAccessGroups.fromClient(this.client)\n }\n\n get credentials(): SeamHttpAcsCredentials {\n return SeamHttpAcsCredentials.fromClient(this.client)\n }\n\n get systems(): SeamHttpAcsSystems {\n return SeamHttpAcsSystems.fromClient(this.client)\n }\n\n get users(): SeamHttpAcsUsers {\n return SeamHttpAcsUsers.fromClient(this.client)\n }\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpActionAttempts {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpActionAttempts {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpActionAttempts(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpActionAttempts> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpActionAttempts.fromClientSessionToken(token, options)\n }\n\n async get(\n body?: ActionAttemptsGetParams,\n ): Promise<ActionAttemptsGetResponse['action_attempt']> {\n const { data } = await this.client.request<ActionAttemptsGetResponse>({\n url: '/action_attempts/get',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n\n async list(\n body?: ActionAttemptsListParams,\n ): Promise<ActionAttemptsListResponse['action_attempts']> {\n const { data } = await this.client.request<ActionAttemptsListResponse>({\n url: '/action_attempts/list',\n method: 'post',\n data: body,\n })\n return data.action_attempts\n }\n}\n\nexport type ActionAttemptsGetParams = RouteRequestBody<'/action_attempts/get'>\n\nexport type ActionAttemptsGetResponse = SetNonNullable<\n Required<RouteResponse<'/action_attempts/get'>>\n>\n\nexport type ActionAttemptsListParams = RouteRequestBody<'/action_attempts/list'>\n\nexport type ActionAttemptsListResponse = SetNonNullable<\n Required<RouteResponse<'/action_attempts/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpConnectWebviews {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpConnectWebviews {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpConnectWebviews(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpConnectWebviews> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpConnectWebviews.fromClientSessionToken(token, options)\n }\n\n async create(\n body?: ConnectWebviewsCreateBody,\n ): Promise<ConnectWebviewsCreateResponse['connect_webview']> {\n const { data } = await this.client.request<ConnectWebviewsCreateResponse>({\n url: '/connect_webviews/create',\n method: 'post',\n data: body,\n })\n return data.connect_webview\n }\n\n async delete(body?: ConnectWebviewsDeleteBody): Promise<void> {\n await this.client.request<ConnectWebviewsDeleteResponse>({\n url: '/connect_webviews/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: ConnectWebviewsGetParams,\n ): Promise<ConnectWebviewsGetResponse['connect_webview']> {\n const { data } = await this.client.request<ConnectWebviewsGetResponse>({\n url: '/connect_webviews/get',\n method: 'post',\n data: body,\n })\n return data.connect_webview\n }\n\n async list(\n body?: ConnectWebviewsListParams,\n ): Promise<ConnectWebviewsListResponse['connect_webviews']> {\n const { data } = await this.client.request<ConnectWebviewsListResponse>({\n url: '/connect_webviews/list',\n method: 'post',\n data: body,\n })\n return data.connect_webviews\n }\n\n async view(params?: ConnectWebviewsViewParams): Promise<void> {\n await this.client.request<ConnectWebviewsViewResponse>({\n url: '/connect_webviews/view',\n method: 'get',\n params,\n })\n }\n}\n\nexport type ConnectWebviewsCreateBody =\n RouteRequestBody<'/connect_webviews/create'>\n\nexport type ConnectWebviewsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/create'>>\n>\n\nexport type ConnectWebviewsDeleteBody =\n RouteRequestBody<'/connect_webviews/delete'>\n\nexport type ConnectWebviewsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/delete'>>\n>\n\nexport type ConnectWebviewsGetParams = RouteRequestBody<'/connect_webviews/get'>\n\nexport type ConnectWebviewsGetResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/get'>>\n>\n\nexport type ConnectWebviewsListParams =\n RouteRequestBody<'/connect_webviews/list'>\n\nexport type ConnectWebviewsListResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/list'>>\n>\n\nexport type ConnectWebviewsViewParams =\n RouteRequestParams<'/connect_webviews/view'>\n\nexport type ConnectWebviewsViewResponse = SetNonNullable<\n Required<RouteResponse<'/connect_webviews/view'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpConnectedAccounts {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpConnectedAccounts {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpConnectedAccounts(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpConnectedAccounts> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpConnectedAccounts.fromClientSessionToken(token, options)\n }\n\n async delete(body?: ConnectedAccountsDeleteBody): Promise<void> {\n await this.client.request<ConnectedAccountsDeleteResponse>({\n url: '/connected_accounts/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: ConnectedAccountsGetParams,\n ): Promise<ConnectedAccountsGetResponse['connected_account']> {\n const { data } = await this.client.request<ConnectedAccountsGetResponse>({\n url: '/connected_accounts/get',\n method: 'post',\n data: body,\n })\n return data.connected_account\n }\n\n async list(\n params?: ConnectedAccountsListParams,\n ): Promise<ConnectedAccountsListResponse['connected_accounts']> {\n const { data } = await this.client.request<ConnectedAccountsListResponse>({\n url: '/connected_accounts/list',\n method: 'get',\n params,\n })\n return data.connected_accounts\n }\n}\n\nexport type ConnectedAccountsDeleteBody =\n RouteRequestBody<'/connected_accounts/delete'>\n\nexport type ConnectedAccountsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/delete'>>\n>\n\nexport type ConnectedAccountsGetParams =\n RouteRequestBody<'/connected_accounts/get'>\n\nexport type ConnectedAccountsGetResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/get'>>\n>\n\nexport type ConnectedAccountsListParams =\n RouteRequestParams<'/connected_accounts/list'>\n\nexport type ConnectedAccountsListResponse = SetNonNullable<\n Required<RouteResponse<'/connected_accounts/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpDevicesUnmanaged {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpDevicesUnmanaged {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpDevicesUnmanaged(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpDevicesUnmanaged> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpDevicesUnmanaged.fromClientSessionToken(token, options)\n }\n\n async get(\n body?: DevicesUnmanagedGetParams,\n ): Promise<DevicesUnmanagedGetResponse['device']> {\n const { data } = await this.client.request<DevicesUnmanagedGetResponse>({\n url: '/devices/unmanaged/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(\n body?: DevicesUnmanagedListParams,\n ): Promise<DevicesUnmanagedListResponse['devices']> {\n const { data } = await this.client.request<DevicesUnmanagedListResponse>({\n url: '/devices/unmanaged/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async update(body?: DevicesUnmanagedUpdateBody): Promise<void> {\n await this.client.request<DevicesUnmanagedUpdateResponse>({\n url: '/devices/unmanaged/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type DevicesUnmanagedGetParams =\n RouteRequestBody<'/devices/unmanaged/get'>\n\nexport type DevicesUnmanagedGetResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/get'>>\n>\n\nexport type DevicesUnmanagedListParams =\n RouteRequestBody<'/devices/unmanaged/list'>\n\nexport type DevicesUnmanagedListResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/list'>>\n>\n\nexport type DevicesUnmanagedUpdateBody =\n RouteRequestBody<'/devices/unmanaged/update'>\n\nexport type DevicesUnmanagedUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/devices/unmanaged/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpDevicesUnmanaged } from './devices-unmanaged.js'\n\nexport class SeamHttpDevices {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpDevices {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpDevices(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpDevices> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpDevices.fromClientSessionToken(token, options)\n }\n\n get unmanaged(): SeamHttpDevicesUnmanaged {\n return SeamHttpDevicesUnmanaged.fromClient(this.client)\n }\n\n async delete(body?: DevicesDeleteBody): Promise<void> {\n await this.client.request<DevicesDeleteResponse>({\n url: '/devices/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(body?: DevicesGetParams): Promise<DevicesGetResponse['device']> {\n const { data } = await this.client.request<DevicesGetResponse>({\n url: '/devices/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(\n body?: DevicesListParams,\n ): Promise<DevicesListResponse['devices']> {\n const { data } = await this.client.request<DevicesListResponse>({\n url: '/devices/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async listDeviceProviders(\n body?: DevicesListDeviceProvidersParams,\n ): Promise<DevicesListDeviceProvidersResponse['device_providers']> {\n const { data } =\n await this.client.request<DevicesListDeviceProvidersResponse>({\n url: '/devices/list_device_providers',\n method: 'post',\n data: body,\n })\n return data.device_providers\n }\n\n async update(body?: DevicesUpdateBody): Promise<void> {\n await this.client.request<DevicesUpdateResponse>({\n url: '/devices/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type DevicesDeleteBody = RouteRequestBody<'/devices/delete'>\n\nexport type DevicesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/devices/delete'>>\n>\n\nexport type DevicesGetParams = RouteRequestBody<'/devices/get'>\n\nexport type DevicesGetResponse = SetNonNullable<\n Required<RouteResponse<'/devices/get'>>\n>\n\nexport type DevicesListParams = RouteRequestBody<'/devices/list'>\n\nexport type DevicesListResponse = SetNonNullable<\n Required<RouteResponse<'/devices/list'>>\n>\n\nexport type DevicesListDeviceProvidersParams =\n RouteRequestBody<'/devices/list_device_providers'>\n\nexport type DevicesListDeviceProvidersResponse = SetNonNullable<\n Required<RouteResponse<'/devices/list_device_providers'>>\n>\n\nexport type DevicesUpdateBody = RouteRequestBody<'/devices/update'>\n\nexport type DevicesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/devices/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpEvents {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpEvents {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpEvents(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpEvents> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpEvents.fromClientSessionToken(token, options)\n }\n\n async get(body?: EventsGetParams): Promise<EventsGetResponse['event']> {\n const { data } = await this.client.request<EventsGetResponse>({\n url: '/events/get',\n method: 'post',\n data: body,\n })\n return data.event\n }\n\n async list(body?: EventsListParams): Promise<EventsListResponse['events']> {\n const { data } = await this.client.request<EventsListResponse>({\n url: '/events/list',\n method: 'post',\n data: body,\n })\n return data.events\n }\n}\n\nexport type EventsGetParams = RouteRequestBody<'/events/get'>\n\nexport type EventsGetResponse = SetNonNullable<\n Required<RouteResponse<'/events/get'>>\n>\n\nexport type EventsListParams = RouteRequestBody<'/events/list'>\n\nexport type EventsListResponse = SetNonNullable<\n Required<RouteResponse<'/events/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpLocks {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpLocks {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpLocks(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpLocks> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpLocks.fromClientSessionToken(token, options)\n }\n\n async get(body?: LocksGetParams): Promise<LocksGetResponse['device']> {\n const { data } = await this.client.request<LocksGetResponse>({\n url: '/locks/get',\n method: 'post',\n data: body,\n })\n return data.device\n }\n\n async list(body?: LocksListParams): Promise<LocksListResponse['devices']> {\n const { data } = await this.client.request<LocksListResponse>({\n url: '/locks/list',\n method: 'post',\n data: body,\n })\n return data.devices\n }\n\n async lockDoor(\n body?: LocksLockDoorBody,\n ): Promise<LocksLockDoorResponse['action_attempt']> {\n const { data } = await this.client.request<LocksLockDoorResponse>({\n url: '/locks/lock_door',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n\n async unlockDoor(\n body?: LocksUnlockDoorBody,\n ): Promise<LocksUnlockDoorResponse['action_attempt']> {\n const { data } = await this.client.request<LocksUnlockDoorResponse>({\n url: '/locks/unlock_door',\n method: 'post',\n data: body,\n })\n return data.action_attempt\n }\n}\n\nexport type LocksGetParams = RouteRequestBody<'/locks/get'>\n\nexport type LocksGetResponse = SetNonNullable<\n Required<RouteResponse<'/locks/get'>>\n>\n\nexport type LocksListParams = RouteRequestBody<'/locks/list'>\n\nexport type LocksListResponse = SetNonNullable<\n Required<RouteResponse<'/locks/list'>>\n>\n\nexport type LocksLockDoorBody = RouteRequestBody<'/locks/lock_door'>\n\nexport type LocksLockDoorResponse = SetNonNullable<\n Required<RouteResponse<'/locks/lock_door'>>\n>\n\nexport type LocksUnlockDoorBody = RouteRequestBody<'/locks/unlock_door'>\n\nexport type LocksUnlockDoorResponse = SetNonNullable<\n Required<RouteResponse<'/locks/unlock_door'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpNoiseSensorsNoiseThresholds {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpNoiseSensorsNoiseThresholds {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpNoiseSensorsNoiseThresholds(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpNoiseSensorsNoiseThresholds> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpNoiseSensorsNoiseThresholds.fromClientSessionToken(\n token,\n options,\n )\n }\n\n async create(body?: NoiseSensorsNoiseThresholdsCreateBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsCreateResponse>({\n url: '/noise_sensors/noise_thresholds/create',\n method: 'post',\n data: body,\n })\n }\n\n async delete(body?: NoiseSensorsNoiseThresholdsDeleteBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsDeleteResponse>({\n url: '/noise_sensors/noise_thresholds/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: NoiseSensorsNoiseThresholdsGetParams,\n ): Promise<NoiseSensorsNoiseThresholdsGetResponse['noise_threshold']> {\n const { data } =\n await this.client.request<NoiseSensorsNoiseThresholdsGetResponse>({\n url: '/noise_sensors/noise_thresholds/get',\n method: 'post',\n data: body,\n })\n return data.noise_threshold\n }\n\n async list(\n body?: NoiseSensorsNoiseThresholdsListParams,\n ): Promise<NoiseSensorsNoiseThresholdsListResponse['noise_thresholds']> {\n const { data } =\n await this.client.request<NoiseSensorsNoiseThresholdsListResponse>({\n url: '/noise_sensors/noise_thresholds/list',\n method: 'post',\n data: body,\n })\n return data.noise_thresholds\n }\n\n async update(body?: NoiseSensorsNoiseThresholdsUpdateBody): Promise<void> {\n await this.client.request<NoiseSensorsNoiseThresholdsUpdateResponse>({\n url: '/noise_sensors/noise_thresholds/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type NoiseSensorsNoiseThresholdsCreateBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/create'>\n\nexport type NoiseSensorsNoiseThresholdsCreateResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/create'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsDeleteBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/delete'>\n\nexport type NoiseSensorsNoiseThresholdsDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/delete'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsGetParams =\n RouteRequestBody<'/noise_sensors/noise_thresholds/get'>\n\nexport type NoiseSensorsNoiseThresholdsGetResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/get'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsListParams =\n RouteRequestBody<'/noise_sensors/noise_thresholds/list'>\n\nexport type NoiseSensorsNoiseThresholdsListResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/list'>>\n>\n\nexport type NoiseSensorsNoiseThresholdsUpdateBody =\n RouteRequestBody<'/noise_sensors/noise_thresholds/update'>\n\nexport type NoiseSensorsNoiseThresholdsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/noise_sensors/noise_thresholds/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpNoiseSensorsNoiseThresholds } from './noise-sensors-noise-thresholds.js'\n\nexport class SeamHttpNoiseSensors {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpNoiseSensors {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpNoiseSensors(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpNoiseSensors> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpNoiseSensors.fromClientSessionToken(token, options)\n }\n\n get noiseThresholds(): SeamHttpNoiseSensorsNoiseThresholds {\n return SeamHttpNoiseSensorsNoiseThresholds.fromClient(this.client)\n }\n}\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpThermostatsClimateSettingSchedules {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpThermostatsClimateSettingSchedules {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpThermostatsClimateSettingSchedules(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpThermostatsClimateSettingSchedules> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpThermostatsClimateSettingSchedules.fromClientSessionToken(\n token,\n options,\n )\n }\n\n async create(\n body?: ThermostatsClimateSettingSchedulesCreateBody,\n ): Promise<\n ThermostatsClimateSettingSchedulesCreateResponse['climate_setting_schedule']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesCreateResponse>(\n {\n url: '/thermostats/climate_setting_schedules/create',\n method: 'post',\n data: body,\n },\n )\n return data.climate_setting_schedule\n }\n\n async delete(\n body?: ThermostatsClimateSettingSchedulesDeleteBody,\n ): Promise<void> {\n await this.client.request<ThermostatsClimateSettingSchedulesDeleteResponse>(\n {\n url: '/thermostats/climate_setting_schedules/delete',\n method: 'post',\n data: body,\n },\n )\n }\n\n async get(\n body?: ThermostatsClimateSettingSchedulesGetParams,\n ): Promise<\n ThermostatsClimateSettingSchedulesGetResponse['climate_setting_schedule']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesGetResponse>({\n url: '/thermostats/climate_setting_schedules/get',\n method: 'post',\n data: body,\n })\n return data.climate_setting_schedule\n }\n\n async list(\n body?: ThermostatsClimateSettingSchedulesListParams,\n ): Promise<\n ThermostatsClimateSettingSchedulesListResponse['climate_setting_schedules']\n > {\n const { data } =\n await this.client.request<ThermostatsClimateSettingSchedulesListResponse>(\n {\n url: '/thermostats/climate_setting_schedules/list',\n method: 'post',\n data: body,\n },\n )\n return data.climate_setting_schedules\n }\n\n async update(\n body?: ThermostatsClimateSettingSchedulesUpdateBody,\n ): Promise<void> {\n await this.client.request<ThermostatsClimateSettingSchedulesUpdateResponse>(\n {\n url: '/thermostats/climate_setting_schedules/update',\n method: 'post',\n data: body,\n },\n )\n }\n}\n\nexport type ThermostatsClimateSettingSchedulesCreateBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/create'>\n\nexport type ThermostatsClimateSettingSchedulesCreateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/create'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesDeleteBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/delete'>\n\nexport type ThermostatsClimateSettingSchedulesDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/delete'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesGetParams =\n RouteRequestBody<'/thermostats/climate_setting_schedules/get'>\n\nexport type ThermostatsClimateSettingSchedulesGetResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/get'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesListParams =\n RouteRequestBody<'/thermostats/climate_setting_schedules/list'>\n\nexport type ThermostatsClimateSettingSchedulesListResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/list'>>\n>\n\nexport type ThermostatsClimateSettingSchedulesUpdateBody =\n RouteRequestBody<'/thermostats/climate_setting_schedules/update'>\n\nexport type ThermostatsClimateSettingSchedulesUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/climate_setting_schedules/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type { RouteRequestBody, RouteResponse } from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\nimport { SeamHttpThermostatsClimateSettingSchedules } from './thermostats-climate-setting-schedules.js'\n\nexport class SeamHttpThermostats {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpThermostats {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpThermostats(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpThermostats> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpThermostats.fromClientSessionToken(token, options)\n }\n\n get climateSettingSchedules(): SeamHttpThermostatsClimateSettingSchedules {\n return SeamHttpThermostatsClimateSettingSchedules.fromClient(this.client)\n }\n\n async cool(body?: ThermostatsCoolBody): Promise<void> {\n await this.client.request<ThermostatsCoolResponse>({\n url: '/thermostats/cool',\n method: 'post',\n data: body,\n })\n }\n\n async get(\n body?: ThermostatsGetParams,\n ): Promise<ThermostatsGetResponse['thermostat']> {\n const { data } = await this.client.request<ThermostatsGetResponse>({\n url: '/thermostats/get',\n method: 'post',\n data: body,\n })\n return data.thermostat\n }\n\n async heat(body?: ThermostatsHeatBody): Promise<void> {\n await this.client.request<ThermostatsHeatResponse>({\n url: '/thermostats/heat',\n method: 'post',\n data: body,\n })\n }\n\n async heatCool(body?: ThermostatsHeatCoolBody): Promise<void> {\n await this.client.request<ThermostatsHeatCoolResponse>({\n url: '/thermostats/heat_cool',\n method: 'post',\n data: body,\n })\n }\n\n async list(\n body?: ThermostatsListParams,\n ): Promise<ThermostatsListResponse['thermostats']> {\n const { data } = await this.client.request<ThermostatsListResponse>({\n url: '/thermostats/list',\n method: 'post',\n data: body,\n })\n return data.thermostats\n }\n\n async off(body?: ThermostatsOffBody): Promise<void> {\n await this.client.request<ThermostatsOffResponse>({\n url: '/thermostats/off',\n method: 'post',\n data: body,\n })\n }\n\n async setFanMode(body?: ThermostatsSetFanModeBody): Promise<void> {\n await this.client.request<ThermostatsSetFanModeResponse>({\n url: '/thermostats/set_fan_mode',\n method: 'post',\n data: body,\n })\n }\n\n async update(body?: ThermostatsUpdateBody): Promise<void> {\n await this.client.request<ThermostatsUpdateResponse>({\n url: '/thermostats/update',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type ThermostatsCoolBody = RouteRequestBody<'/thermostats/cool'>\n\nexport type ThermostatsCoolResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/cool'>>\n>\n\nexport type ThermostatsGetParams = RouteRequestBody<'/thermostats/get'>\n\nexport type ThermostatsGetResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/get'>>\n>\n\nexport type ThermostatsHeatBody = RouteRequestBody<'/thermostats/heat'>\n\nexport type ThermostatsHeatResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/heat'>>\n>\n\nexport type ThermostatsHeatCoolBody = RouteRequestBody<'/thermostats/heat_cool'>\n\nexport type ThermostatsHeatCoolResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/heat_cool'>>\n>\n\nexport type ThermostatsListParams = RouteRequestBody<'/thermostats/list'>\n\nexport type ThermostatsListResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/list'>>\n>\n\nexport type ThermostatsOffBody = RouteRequestBody<'/thermostats/off'>\n\nexport type ThermostatsOffResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/off'>>\n>\n\nexport type ThermostatsSetFanModeBody =\n RouteRequestBody<'/thermostats/set_fan_mode'>\n\nexport type ThermostatsSetFanModeResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/set_fan_mode'>>\n>\n\nexport type ThermostatsUpdateBody = RouteRequestBody<'/thermostats/update'>\n\nexport type ThermostatsUpdateResponse = SetNonNullable<\n Required<RouteResponse<'/thermostats/update'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpWebhooks {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpWebhooks {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpWebhooks(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpWebhooks> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpWebhooks.fromClientSessionToken(token, options)\n }\n\n async create(\n body?: WebhooksCreateBody,\n ): Promise<WebhooksCreateResponse['webhook']> {\n const { data } = await this.client.request<WebhooksCreateResponse>({\n url: '/webhooks/create',\n method: 'post',\n data: body,\n })\n return data.webhook\n }\n\n async delete(body?: WebhooksDeleteBody): Promise<void> {\n await this.client.request<WebhooksDeleteResponse>({\n url: '/webhooks/delete',\n method: 'post',\n data: body,\n })\n }\n\n async get(body?: WebhooksGetParams): Promise<WebhooksGetResponse['webhook']> {\n const { data } = await this.client.request<WebhooksGetResponse>({\n url: '/webhooks/get',\n method: 'post',\n data: body,\n })\n return data.webhook\n }\n\n async list(\n params?: WebhooksListParams,\n ): Promise<WebhooksListResponse['webhooks']> {\n const { data } = await this.client.request<WebhooksListResponse>({\n url: '/webhooks/list',\n method: 'get',\n params,\n })\n return data.webhooks\n }\n}\n\nexport type WebhooksCreateBody = RouteRequestBody<'/webhooks/create'>\n\nexport type WebhooksCreateResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/create'>>\n>\n\nexport type WebhooksDeleteBody = RouteRequestBody<'/webhooks/delete'>\n\nexport type WebhooksDeleteResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/delete'>>\n>\n\nexport type WebhooksGetParams = RouteRequestBody<'/webhooks/get'>\n\nexport type WebhooksGetResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/get'>>\n>\n\nexport type WebhooksListParams = RouteRequestParams<'/webhooks/list'>\n\nexport type WebhooksListResponse = SetNonNullable<\n Required<RouteResponse<'/webhooks/list'>>\n>\n","/*\n * Automatically generated by generate-routes.ts.\n * Do not edit this file or add other files to this directory.\n */\n\nimport type {\n RouteRequestBody,\n RouteRequestParams,\n RouteResponse,\n} from '@seamapi/types/connect'\nimport type { SetNonNullable } from 'type-fest'\n\nimport { warnOnInsecureuserIdentifierKey } from 'lib/seam/connect/auth.js'\nimport { type Client, createClient } from 'lib/seam/connect/client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from 'lib/seam/connect/options.js'\nimport { parseOptions } from 'lib/seam/connect/parse-options.js'\n\nimport { SeamHttpClientSessions } from './client-sessions.js'\n\nexport class SeamHttpWorkspaces {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttpWorkspaces {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttpWorkspaces(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttpWorkspaces> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttpWorkspaces.fromClientSessionToken(token, options)\n }\n\n async get(\n params?: WorkspacesGetParams,\n ): Promise<WorkspacesGetResponse['workspace']> {\n const { data } = await this.client.request<WorkspacesGetResponse>({\n url: '/workspaces/get',\n method: 'get',\n params,\n })\n return data.workspace\n }\n\n async list(\n params?: WorkspacesListParams,\n ): Promise<WorkspacesListResponse['workspaces']> {\n const { data } = await this.client.request<WorkspacesListResponse>({\n url: '/workspaces/list',\n method: 'get',\n params,\n })\n return data.workspaces\n }\n\n async resetSandbox(body?: WorkspacesResetSandboxBody): Promise<void> {\n await this.client.request<WorkspacesResetSandboxResponse>({\n url: '/workspaces/reset_sandbox',\n method: 'post',\n data: body,\n })\n }\n}\n\nexport type WorkspacesGetParams = RouteRequestParams<'/workspaces/get'>\n\nexport type WorkspacesGetResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/get'>>\n>\n\nexport type WorkspacesListParams = RouteRequestParams<'/workspaces/list'>\n\nexport type WorkspacesListResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/list'>>\n>\n\nexport type WorkspacesResetSandboxBody =\n RouteRequestBody<'/workspaces/reset_sandbox'>\n\nexport type WorkspacesResetSandboxResponse = SetNonNullable<\n Required<RouteResponse<'/workspaces/reset_sandbox'>>\n>\n","import { warnOnInsecureuserIdentifierKey } from './auth.js'\nimport { type Client, createClient } from './client.js'\nimport {\n isSeamHttpOptionsWithApiKey,\n isSeamHttpOptionsWithClient,\n isSeamHttpOptionsWithClientSessionToken,\n type SeamHttpFromPublishableKeyOptions,\n SeamHttpInvalidOptionsError,\n type SeamHttpOptions,\n type SeamHttpOptionsWithApiKey,\n type SeamHttpOptionsWithClient,\n type SeamHttpOptionsWithClientSessionToken,\n} from './options.js'\nimport { parseOptions } from './parse-options.js'\nimport {\n SeamHttpAccessCodes,\n SeamHttpAcs,\n SeamHttpActionAttempts,\n SeamHttpClientSessions,\n SeamHttpConnectedAccounts,\n SeamHttpConnectWebviews,\n SeamHttpDevices,\n SeamHttpEvents,\n SeamHttpLocks,\n SeamHttpNoiseSensors,\n SeamHttpThermostats,\n SeamHttpWebhooks,\n SeamHttpWorkspaces,\n} from './routes/index.js'\n\nexport class SeamHttp {\n client: Client\n\n constructor(apiKeyOrOptions: string | SeamHttpOptions = {}) {\n const clientOptions = parseOptions(apiKeyOrOptions)\n this.client = createClient(clientOptions)\n }\n\n static fromClient(\n client: SeamHttpOptionsWithClient['client'],\n options: Omit<SeamHttpOptionsWithClient, 'client'> = {},\n ): SeamHttp {\n const constructorOptions = { ...options, client }\n if (!isSeamHttpOptionsWithClient(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing client')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static fromApiKey(\n apiKey: SeamHttpOptionsWithApiKey['apiKey'],\n options: Omit<SeamHttpOptionsWithApiKey, 'apiKey'> = {},\n ): SeamHttp {\n const constructorOptions = { ...options, apiKey }\n if (!isSeamHttpOptionsWithApiKey(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing apiKey')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static fromClientSessionToken(\n clientSessionToken: SeamHttpOptionsWithClientSessionToken['clientSessionToken'],\n options: Omit<\n SeamHttpOptionsWithClientSessionToken,\n 'clientSessionToken'\n > = {},\n ): SeamHttp {\n const constructorOptions = { ...options, clientSessionToken }\n if (!isSeamHttpOptionsWithClientSessionToken(constructorOptions)) {\n throw new SeamHttpInvalidOptionsError('Missing clientSessionToken')\n }\n return new SeamHttp(constructorOptions)\n }\n\n static async fromPublishableKey(\n publishableKey: string,\n userIdentifierKey: string,\n options: SeamHttpFromPublishableKeyOptions = {},\n ): Promise<SeamHttp> {\n warnOnInsecureuserIdentifierKey(userIdentifierKey)\n const clientOptions = parseOptions({ ...options, publishableKey })\n const client = createClient(clientOptions)\n const clientSessions = SeamHttpClientSessions.fromClient(client)\n const { token } = await clientSessions.getOrCreate({\n user_identifier_key: userIdentifierKey,\n })\n return SeamHttp.fromClientSessionToken(token, options)\n }\n\n get accessCodes(): SeamHttpAccessCodes {\n return SeamHttpAccessCodes.fromClient(this.client)\n }\n\n get acs(): SeamHttpAcs {\n return SeamHttpAcs.fromClient(this.client)\n }\n\n get actionAttempts(): SeamHttpActionAttempts {\n return SeamHttpActionAttempts.fromClient(this.client)\n }\n\n get clientSessions(): SeamHttpClientSessions {\n return SeamHttpClientSessions.fromClient(this.client)\n }\n\n get connectedAccounts(): SeamHttpConnectedAccounts {\n return SeamHttpConnectedAccounts.fromClient(this.client)\n }\n\n get connectWebviews(): SeamHttpConnectWebviews {\n return SeamHttpConnectWebviews.fromClient(this.client)\n }\n\n get devices(): SeamHttpDevices {\n return SeamHttpDevices.fromClient(this.client)\n }\n\n get events(): SeamHttpEvents {\n return SeamHttpEvents.fromClient(this.client)\n }\n\n get locks(): SeamHttpLocks {\n return SeamHttpLocks.fromClient(this.client)\n }\n\n get noiseSensors(): SeamHttpNoiseSensors {\n return SeamHttpNoiseSensors.fromClient(this.client)\n }\n\n get thermostats(): SeamHttpThermostats {\n return SeamHttpThermostats.fromClient(this.client)\n }\n\n get webhooks(): SeamHttpWebhooks {\n return SeamHttpWebhooks.fromClient(this.client)\n }\n\n get workspaces(): SeamHttpWorkspaces {\n return SeamHttpWorkspaces.fromClient(this.client)\n }\n}\n"]}