@productcraft/heimdall 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/_http.ts","../../../node_modules/.pnpm/@kubb+plugin-client@4.37.8_@kubb+fabric-core@0.14.0_@kubb+react-fabric@0.14.0/node_modules/@kubb/plugin-client/src/clients/fetch.ts","../src/_generated/clients/apps/appControllerGetApp.ts","../src/_generated/clients/apps/appControllerUpdateApp.ts","../src/_generated/clients/apps/appControllerDeleteApp.ts","../src/_generated/clients/apps/appControllerUpdateAppStatus.ts","../src/_generated/clients/apps/authConfigControllerGetConfig.ts","../src/_generated/clients/apps/authConfigControllerUpdateConfig.ts","../src/_generated/clients/apps/appControllerListInvites.ts","../src/_generated/clients/apps/appControllerCreateInvite.ts","../src/_generated/clients/apps/appControllerRevokeInvite.ts","../src/_generated/clients/apps/appControllerListMembers.ts","../src/_generated/clients/apps/appControllerRemoveMember.ts","../src/_generated/clients/endUsers/endUserControllerListEndUsers.ts","../src/_generated/clients/endUsers/endUserControllerGetEndUser.ts","../src/_generated/clients/endUsers/endUserControllerUpdateEndUser.ts","../src/_generated/clients/endUsers/endUserControllerDeleteEndUser.ts","../src/_generated/clients/endUsers/endUserControllerUpdateRole.ts","../src/_generated/clients/endUsers/endUserControllerUpdateStatus.ts","../src/_generated/clients/roles/roleControllerListRoles.ts","../src/_generated/clients/roles/roleControllerCreateRole.ts","../src/_generated/clients/roles/roleControllerAssignRole.ts","../src/_generated/clients/roles/roleControllerSetPermissions.ts","../src/_generated/clients/roles/roleControllerListPermissions.ts","../src/_generated/clients/permissions/permissionControllerListPermissions.ts","../src/_generated/clients/permissions/permissionControllerCreatePermission.ts","../src/_generated/clients/permissions/permissionControllerDeletePermission.ts","../src/_generated/clients/apiKeys/apiKeyControllerListApiKeys.ts","../src/_generated/clients/apiKeys/apiKeyControllerCreateApiKey.ts","../src/_generated/clients/apiKeys/apiKeyControllerDeleteApiKey.ts","../src/_generated/clients/credentials/M2MControllerListClients.ts","../src/_generated/clients/credentials/M2MControllerCreateClient.ts","../src/_generated/clients/credentials/M2MControllerGetClient.ts","../src/_generated/clients/credentials/M2MControllerUpdateClient.ts","../src/_generated/clients/credentials/M2MControllerDeleteClient.ts","../src/_generated/clients/credentials/M2MControllerRotateSecret.ts","../src/_generated/clients/credentials/M2MControllerSetScopes.ts","../src/_generated/clients/appAudit/appAuditControllerGetAuditLogs.ts","../src/scopes/app.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerSignin.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerRefresh.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerLogout.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerRequestPasswordReset.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerResetPassword.ts","../src/_generated/clients/consumerOauthSignIn/consumerIdpControllerNativeSignIn.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerVerify.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerAuthorize.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerAuthorizeBatch.ts","../src/_generated/clients/consumerOauthM2m/consumerOAuthControllerClientCredentials.ts","../src/jwt/errors.ts","../src/jwt/jwks-cache.ts","../src/jwt/verify.ts","../src/scopes/consumer.ts","../src/_generated/clients/apps/appControllerListMyApps.ts","../src/_generated/clients/apps/appControllerCreateApp.ts","../src/_generated/clients/apps/appControllerAcceptInvite.ts","../src/_generated/clients/platformStats/statsControllerGetMyStats.ts","../src/index.ts"],"names":["client","customFetch","createRemoteJWKSet","joseErrors","jwtVerify","PC_BASE_URL"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Custom HTTP client passed to kubb-generated request functions.\n *\n * Each generated client function accepts an optional `{ client }`\n * override matching kubb's `Client` shape:\n * <TData, TError, TVars>(config: RequestConfig<TVars>) => Promise<ResponseConfig<TData>>\n *\n * We construct one per `Heimdall` instance — bound to that instance's\n * baseUrl + auth credential — so generated functions don't need to\n * know anything about authentication or environment selection.\n */\n\nimport type { PCAuth } from \"@productcraft/core\";\nimport type {\n Client,\n RequestConfig,\n ResponseConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nexport interface HeimdallHttpClientOptions {\n baseUrl: string;\n auth?: PCAuth;\n fetch?: typeof fetch;\n}\n\n/** Thrown for any non-2xx response; `response.data` is the parsed body. */\nexport class HeimdallHttpError<TData = unknown> extends Error {\n public readonly status: number;\n public readonly statusText: string;\n public readonly data: TData;\n\n constructor(response: ResponseConfig<TData>) {\n super(\n `Heimdall request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"HeimdallHttpError\";\n this.status = response.status;\n this.statusText = response.statusText;\n this.data = response.data;\n }\n}\n\nfunction applyAuthHeader(headers: Headers, auth: PCAuth | undefined): void {\n if (!auth) return;\n switch (auth.type) {\n case \"apiKey\":\n headers.set(\"Authorization\", `Bearer ${auth.key}`);\n break;\n case \"bearer\":\n headers.set(\"Authorization\", `Bearer ${auth.token}`);\n break;\n case \"cookie\":\n headers.set(\"Cookie\", `auth_token=${auth.value}`);\n break;\n }\n}\n\nfunction buildUrl(baseUrl: string, path: string, params: unknown): URL {\n const url = new URL(path, baseUrl);\n if (params && typeof params === \"object\") {\n for (const [k, v] of Object.entries(params as Record<string, unknown>)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v)) {\n for (const item of v) url.searchParams.append(k, String(item));\n } else {\n url.searchParams.set(k, String(v));\n }\n }\n }\n return url;\n}\n\nexport function makeHeimdallHttpClient(\n options: HeimdallHttpClientOptions,\n): Client {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\n \"@productcraft/heimdall: no `fetch` available — pass `fetch` in the config or run on Node 18+\",\n );\n }\n\n // Generic shape mirrors kubb's `Client` type — 3 generics including a\n // _TError slot we don't use here; underscored to mark intentional.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return async function client<TData, _TError = unknown, TVars = unknown>(\n req: RequestConfig<TVars>,\n ): Promise<ResponseConfig<TData>> {\n const url = buildUrl(req.baseURL ?? options.baseUrl, req.url ?? \"\", req.params);\n const headers = new Headers(req.headers as Record<string, string> | undefined);\n applyAuthHeader(headers, options.auth);\n\n const hasBody = req.data !== undefined && req.method !== \"GET\" && req.method !== \"HEAD\";\n const isFormData = typeof FormData !== \"undefined\" && req.data instanceof FormData;\n if (hasBody && !isFormData && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const body = hasBody\n ? isFormData\n ? (req.data as FormData)\n : JSON.stringify(req.data)\n : undefined;\n\n const res = await fetchImpl(url, {\n method: req.method,\n headers,\n body,\n credentials: req.credentials,\n signal: req.signal,\n });\n\n // Parse body honoring responseType (defaults to JSON when content-type is JSON-ish)\n let data: unknown = undefined;\n const ctype = res.headers.get(\"content-type\") ?? \"\";\n if (req.responseType === \"text\") {\n data = await res.text();\n } else if (req.responseType === \"blob\") {\n data = await res.blob();\n } else if (req.responseType === \"arraybuffer\") {\n data = await res.arrayBuffer();\n } else if (ctype.includes(\"application/json\") || ctype.includes(\"application/problem+json\")) {\n data = await res.json().catch(() => undefined);\n } else if (res.status !== 204) {\n const text = await res.text().catch(() => \"\");\n data = text || undefined;\n }\n\n const response: ResponseConfig<TData> = {\n data: data as TData,\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n };\n\n if (!res.ok) throw new HeimdallHttpError(response);\n return response;\n };\n}\n","/**\n * RequestCredentials\n */\nexport type RequestCredentials = 'omit' | 'same-origin' | 'include'\n\n/**\n * Subset of FetchRequestConfig\n */\nexport type RequestConfig<TData = unknown> = {\n baseURL?: string\n url?: string\n method?: 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD'\n params?: unknown\n data?: TData | FormData\n responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'\n signal?: AbortSignal\n headers?: [string, string][] | Record<string, string>\n credentials?: RequestCredentials\n}\n\n/**\n * Subset of FetchResponse\n */\nexport type ResponseConfig<TData = unknown> = {\n data: TData\n status: number\n statusText: string\n headers: Headers\n}\n\nlet _config: Partial<RequestConfig> = {}\n\nexport const getConfig = () => _config\n\nexport const setConfig = (config: Partial<RequestConfig>) => {\n _config = config\n return getConfig()\n}\n\nexport const mergeConfig = <T extends RequestConfig>(...configs: Array<Partial<T>>): Partial<T> => {\n return configs.reduce<Partial<T>>((merged, config) => {\n return {\n ...merged,\n ...config,\n headers: {\n ...(Array.isArray(merged.headers) ? Object.fromEntries(merged.headers) : merged.headers),\n ...(Array.isArray(config.headers) ? Object.fromEntries(config.headers) : config.headers),\n },\n }\n }, {})\n}\n\nexport type ResponseErrorConfig<TError = unknown> = TError\n\nexport type Client = <TResponseData, _TError = unknown, TRequestData = unknown>(config: RequestConfig<TRequestData>) => Promise<ResponseConfig<TResponseData>>\n\nexport const client = async <TResponseData, _TError = unknown, RequestData = unknown>(\n paramsConfig: RequestConfig<RequestData>,\n): Promise<ResponseConfig<TResponseData>> => {\n const normalizedParams = new URLSearchParams()\n\n const config = mergeConfig(getConfig(), paramsConfig)\n\n Object.entries(config.params || {}).forEach(([key, value]) => {\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : value.toString())\n }\n })\n\n let targetUrl = [config.baseURL, config.url].filter(Boolean).join('')\n\n if (config.params) {\n targetUrl += `?${normalizedParams}`\n }\n\n const response = await fetch(targetUrl, {\n credentials: config.credentials || 'same-origin',\n method: config.method?.toUpperCase(),\n body: config.data instanceof FormData ? config.data : JSON.stringify(config.data),\n signal: config.signal,\n headers: config.headers,\n })\n\n const data = [204, 205, 304].includes(response.status) || !response.body ? {} : await response.json()\n\n return {\n data: data as TResponseData,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers as Headers,\n }\n}\n\nclient.getConfig = getConfig\nclient.setConfig = setConfig\n\nexport default client\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerGetAppQueryResponse,\n AppControllerGetAppPathParams,\n} from \"../../types/apps/AppControllerGetApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerGetAppUrl({\n appId,\n}: {\n appId: AppControllerGetAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Get app details\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerGetApp(\n { appId }: { appId: AppControllerGetAppPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerGetAppQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerGetAppUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerUpdateAppMutationRequest,\n AppControllerUpdateAppMutationResponse,\n AppControllerUpdateAppPathParams,\n} from \"../../types/apps/AppControllerUpdateApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerUpdateAppUrl({\n appId,\n}: {\n appId: AppControllerUpdateAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"PATCH\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Update app display name, slug, and metadata\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerUpdateApp(\n {\n appId,\n data,\n }: {\n appId: AppControllerUpdateAppPathParams[\"appId\"];\n data: AppControllerUpdateAppMutationRequest;\n },\n config: Partial<RequestConfig<AppControllerUpdateAppMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerUpdateAppMutationResponse,\n ResponseErrorConfig<Error>,\n AppControllerUpdateAppMutationRequest\n >({\n method: \"PATCH\",\n url: getAppControllerUpdateAppUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerDeleteAppMutationResponse,\n AppControllerDeleteAppPathParams,\n AppControllerDeleteApp403,\n AppControllerDeleteApp404,\n} from \"../../types/apps/AppControllerDeleteApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerDeleteAppUrl({\n appId,\n}: {\n appId: AppControllerDeleteAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"DELETE\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Delete an app permanently\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerDeleteApp(\n { appId }: { appId: AppControllerDeleteAppPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerDeleteAppMutationResponse,\n ResponseErrorConfig<AppControllerDeleteApp403 | AppControllerDeleteApp404>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerDeleteAppUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerUpdateAppStatusMutationRequest,\n AppControllerUpdateAppStatusMutationResponse,\n AppControllerUpdateAppStatusPathParams,\n AppControllerUpdateAppStatus400,\n AppControllerUpdateAppStatus403,\n AppControllerUpdateAppStatus404,\n} from \"../../types/apps/AppControllerUpdateAppStatus.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerUpdateAppStatusUrl({\n appId,\n}: {\n appId: AppControllerUpdateAppStatusPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"PATCH\", url: `/v1/apps/${app_id}/status` as const };\n return res;\n}\n\n/**\n * @summary Update app status (active, suspended, archived)\n * {@link /v1/apps/:app_id/status}\n */\nexport async function appControllerUpdateAppStatus(\n {\n appId,\n data,\n }: {\n appId: AppControllerUpdateAppStatusPathParams[\"appId\"];\n data: AppControllerUpdateAppStatusMutationRequest;\n },\n config: Partial<\n RequestConfig<AppControllerUpdateAppStatusMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerUpdateAppStatusMutationResponse,\n ResponseErrorConfig<\n | AppControllerUpdateAppStatus400\n | AppControllerUpdateAppStatus403\n | AppControllerUpdateAppStatus404\n >,\n AppControllerUpdateAppStatusMutationRequest\n >({\n method: \"PATCH\",\n url: getAppControllerUpdateAppStatusUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AuthConfigControllerGetConfigQueryResponse,\n AuthConfigControllerGetConfigPathParams,\n} from \"../../types/apps/AuthConfigControllerGetConfig.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAuthConfigControllerGetConfigUrl({\n appId,\n}: {\n appId: AuthConfigControllerGetConfigPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/auth-config` as const };\n return res;\n}\n\n/**\n * @summary Get the per-app auth config (signup, signin, password policy, sessions).\n * {@link /v1/apps/:app_id/auth-config}\n */\nexport async function authConfigControllerGetConfig(\n { appId }: { appId: AuthConfigControllerGetConfigPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AuthConfigControllerGetConfigQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAuthConfigControllerGetConfigUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AuthConfigControllerUpdateConfigMutationRequest,\n AuthConfigControllerUpdateConfigMutationResponse,\n AuthConfigControllerUpdateConfigPathParams,\n} from \"../../types/apps/AuthConfigControllerUpdateConfig.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAuthConfigControllerUpdateConfigUrl({\n appId,\n}: {\n appId: AuthConfigControllerUpdateConfigPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/auth-config` as const,\n };\n return res;\n}\n\n/**\n * @summary Update the per-app auth config. Only fields you pass are changed.\n * {@link /v1/apps/:app_id/auth-config}\n */\nexport async function authConfigControllerUpdateConfig(\n {\n appId,\n data,\n }: {\n appId: AuthConfigControllerUpdateConfigPathParams[\"appId\"];\n data: AuthConfigControllerUpdateConfigMutationRequest;\n },\n config: Partial<\n RequestConfig<AuthConfigControllerUpdateConfigMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AuthConfigControllerUpdateConfigMutationResponse,\n ResponseErrorConfig<Error>,\n AuthConfigControllerUpdateConfigMutationRequest\n >({\n method: \"PATCH\",\n url: getAuthConfigControllerUpdateConfigUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListInvitesQueryResponse,\n AppControllerListInvitesPathParams,\n AppControllerListInvitesQueryParams,\n} from \"../../types/apps/AppControllerListInvites.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListInvitesUrl({\n appId,\n}: {\n appId: AppControllerListInvitesPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/invites` as const };\n return res;\n}\n\n/**\n * @summary List app invites\n * {@link /v1/apps/:app_id/invites}\n */\nexport async function appControllerListInvites(\n {\n appId,\n params,\n }: {\n appId: AppControllerListInvitesPathParams[\"appId\"];\n params: AppControllerListInvitesQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerListInvitesQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListInvitesUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerCreateInviteMutationRequest,\n AppControllerCreateInviteMutationResponse,\n AppControllerCreateInvitePathParams,\n AppControllerCreateInvite400,\n AppControllerCreateInvite403,\n AppControllerCreateInvite404,\n} from \"../../types/apps/AppControllerCreateInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerCreateInviteUrl({\n appId,\n}: {\n appId: AppControllerCreateInvitePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/invites` as const };\n return res;\n}\n\n/**\n * @summary Create an app invite\n * {@link /v1/apps/:app_id/invites}\n */\nexport async function appControllerCreateInvite(\n {\n appId,\n data,\n }: {\n appId: AppControllerCreateInvitePathParams[\"appId\"];\n data: AppControllerCreateInviteMutationRequest;\n },\n config: Partial<RequestConfig<AppControllerCreateInviteMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerCreateInviteMutationResponse,\n ResponseErrorConfig<\n | AppControllerCreateInvite400\n | AppControllerCreateInvite403\n | AppControllerCreateInvite404\n >,\n AppControllerCreateInviteMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerCreateInviteUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerRevokeInviteMutationResponse,\n AppControllerRevokeInvitePathParams,\n} from \"../../types/apps/AppControllerRevokeInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerRevokeInviteUrl({\n appId,\n inviteId,\n}: {\n appId: AppControllerRevokeInvitePathParams[\"appId\"];\n inviteId: AppControllerRevokeInvitePathParams[\"inviteId\"];\n}) {\n const app_id = appId;\n const invite_id = inviteId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/invites/${invite_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Revoke an app invite\n * {@link /v1/apps/:app_id/invites/:invite_id}\n */\nexport async function appControllerRevokeInvite(\n {\n appId,\n inviteId,\n }: {\n appId: AppControllerRevokeInvitePathParams[\"appId\"];\n inviteId: AppControllerRevokeInvitePathParams[\"inviteId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerRevokeInviteMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerRevokeInviteUrl({ appId, inviteId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListMembersQueryResponse,\n AppControllerListMembersPathParams,\n AppControllerListMembersQueryParams,\n} from \"../../types/apps/AppControllerListMembers.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListMembersUrl({\n appId,\n}: {\n appId: AppControllerListMembersPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/members` as const };\n return res;\n}\n\n/**\n * @summary List app members (PlatformUser view of EndUser memberships)\n * {@link /v1/apps/:app_id/members}\n */\nexport async function appControllerListMembers(\n {\n appId,\n params,\n }: {\n appId: AppControllerListMembersPathParams[\"appId\"];\n params: AppControllerListMembersQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerListMembersQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListMembersUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerRemoveMemberMutationResponse,\n AppControllerRemoveMemberPathParams,\n} from \"../../types/apps/AppControllerRemoveMember.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerRemoveMemberUrl({\n appId,\n accountId,\n}: {\n appId: AppControllerRemoveMemberPathParams[\"appId\"];\n accountId: AppControllerRemoveMemberPathParams[\"accountId\"];\n}) {\n const app_id = appId;\n const account_id = accountId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/members/${account_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Remove a member from the app\n * {@link /v1/apps/:app_id/members/:account_id}\n */\nexport async function appControllerRemoveMember(\n {\n appId,\n accountId,\n }: {\n appId: AppControllerRemoveMemberPathParams[\"appId\"];\n accountId: AppControllerRemoveMemberPathParams[\"accountId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerRemoveMemberMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerRemoveMemberUrl({ appId, accountId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerListEndUsersQueryResponse,\n EndUserControllerListEndUsersPathParams,\n EndUserControllerListEndUsersQueryParams,\n} from \"../../types/endUsers/EndUserControllerListEndUsers.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerListEndUsersUrl({\n appId,\n}: {\n appId: EndUserControllerListEndUsersPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/end-users` as const };\n return res;\n}\n\n/**\n * @summary List end-users in this app (cursor-paginated).\n * {@link /v1/apps/:app_id/end-users}\n */\nexport async function endUserControllerListEndUsers(\n {\n appId,\n params,\n }: {\n appId: EndUserControllerListEndUsersPathParams[\"appId\"];\n params: EndUserControllerListEndUsersQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerListEndUsersQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getEndUserControllerListEndUsersUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerGetEndUserQueryResponse,\n EndUserControllerGetEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerGetEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerGetEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerGetEndUserPathParams[\"appId\"];\n userId: EndUserControllerGetEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Get one end-user.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerGetEndUser(\n {\n appId,\n userId,\n }: {\n appId: EndUserControllerGetEndUserPathParams[\"appId\"];\n userId: EndUserControllerGetEndUserPathParams[\"userId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerGetEndUserQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getEndUserControllerGetEndUserUrl({ appId, userId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateEndUserMutationRequest,\n EndUserControllerUpdateEndUserMutationResponse,\n EndUserControllerUpdateEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateEndUserPathParams[\"appId\"];\n userId: EndUserControllerUpdateEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Update end-user display name or primary email.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerUpdateEndUser(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateEndUserPathParams[\"appId\"];\n userId: EndUserControllerUpdateEndUserPathParams[\"userId\"];\n data: EndUserControllerUpdateEndUserMutationRequest;\n },\n config: Partial<\n RequestConfig<EndUserControllerUpdateEndUserMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateEndUserMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateEndUserMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateEndUserUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerDeleteEndUserMutationResponse,\n EndUserControllerDeleteEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerDeleteEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerDeleteEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerDeleteEndUserPathParams[\"appId\"];\n userId: EndUserControllerDeleteEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete an end-user permanently.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerDeleteEndUser(\n {\n appId,\n userId,\n }: {\n appId: EndUserControllerDeleteEndUserPathParams[\"appId\"];\n userId: EndUserControllerDeleteEndUserPathParams[\"userId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerDeleteEndUserMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getEndUserControllerDeleteEndUserUrl({ appId, userId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateRoleMutationRequest,\n EndUserControllerUpdateRoleMutationResponse,\n EndUserControllerUpdateRolePathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateRoleUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateRolePathParams[\"appId\"];\n userId: EndUserControllerUpdateRolePathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}/role` as const,\n };\n return res;\n}\n\n/**\n * @summary Assign an end-user a role.\n * {@link /v1/apps/:app_id/end-users/:user_id/role}\n */\nexport async function endUserControllerUpdateRole(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateRolePathParams[\"appId\"];\n userId: EndUserControllerUpdateRolePathParams[\"userId\"];\n data: EndUserControllerUpdateRoleMutationRequest;\n },\n config: Partial<RequestConfig<EndUserControllerUpdateRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateRoleMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateRoleMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateRoleUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateStatusMutationRequest,\n EndUserControllerUpdateStatusMutationResponse,\n EndUserControllerUpdateStatusPathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateStatus.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateStatusUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateStatusPathParams[\"appId\"];\n userId: EndUserControllerUpdateStatusPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}/status` as const,\n };\n return res;\n}\n\n/**\n * @summary Change end-user status (active / suspended / deactivated).\n * {@link /v1/apps/:app_id/end-users/:user_id/status}\n */\nexport async function endUserControllerUpdateStatus(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateStatusPathParams[\"appId\"];\n userId: EndUserControllerUpdateStatusPathParams[\"userId\"];\n data: EndUserControllerUpdateStatusMutationRequest;\n },\n config: Partial<\n RequestConfig<EndUserControllerUpdateStatusMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateStatusMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateStatusMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateStatusUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerListRolesQueryResponse,\n RoleControllerListRolesPathParams,\n RoleControllerListRolesQueryParams,\n} from \"../../types/roles/RoleControllerListRoles.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerListRolesUrl({\n appId,\n}: {\n appId: RoleControllerListRolesPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/roles` as const };\n return res;\n}\n\n/**\n * @summary List all roles in an app\n * {@link /v1/apps/:app_id/roles}\n */\nexport async function roleControllerListRoles(\n {\n appId,\n params,\n }: {\n appId: RoleControllerListRolesPathParams[\"appId\"];\n params: RoleControllerListRolesQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n RoleControllerListRolesQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getRoleControllerListRolesUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerCreateRoleMutationRequest,\n RoleControllerCreateRoleMutationResponse,\n RoleControllerCreateRolePathParams,\n} from \"../../types/roles/RoleControllerCreateRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerCreateRoleUrl({\n appId,\n}: {\n appId: RoleControllerCreateRolePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/roles` as const };\n return res;\n}\n\n/**\n * @summary Create a new role (no permissions yet — set them via PUT /:roleName/permissions)\n * {@link /v1/apps/:app_id/roles}\n */\nexport async function roleControllerCreateRole(\n {\n appId,\n data,\n }: {\n appId: RoleControllerCreateRolePathParams[\"appId\"];\n data: RoleControllerCreateRoleMutationRequest;\n },\n config: Partial<RequestConfig<RoleControllerCreateRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerCreateRoleMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerCreateRoleMutationRequest\n >({\n method: \"POST\",\n url: getRoleControllerCreateRoleUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerAssignRoleMutationRequest,\n RoleControllerAssignRoleMutationResponse,\n RoleControllerAssignRolePathParams,\n} from \"../../types/roles/RoleControllerAssignRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerAssignRoleUrl({\n appId,\n}: {\n appId: RoleControllerAssignRolePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/roles/assign` as const,\n };\n return res;\n}\n\n/**\n * @summary Assign a role to a user\n * {@link /v1/apps/:app_id/roles/assign}\n */\nexport async function roleControllerAssignRole(\n {\n appId,\n data,\n }: {\n appId: RoleControllerAssignRolePathParams[\"appId\"];\n data: RoleControllerAssignRoleMutationRequest;\n },\n config: Partial<RequestConfig<RoleControllerAssignRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerAssignRoleMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerAssignRoleMutationRequest\n >({\n method: \"POST\",\n url: getRoleControllerAssignRoleUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerSetPermissionsMutationRequest,\n RoleControllerSetPermissionsMutationResponse,\n RoleControllerSetPermissionsPathParams,\n} from \"../../types/roles/RoleControllerSetPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerSetPermissionsUrl({\n appId,\n roleName,\n}: {\n appId: RoleControllerSetPermissionsPathParams[\"appId\"];\n roleName: RoleControllerSetPermissionsPathParams[\"roleName\"];\n}) {\n const app_id = appId;\n const role_name = roleName;\n const res = {\n method: \"PUT\",\n url: `/v1/apps/${app_id}/roles/${role_name}/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary Set permissions for a role (caller-narrowed: caller must hold every requested permission)\n * {@link /v1/apps/:app_id/roles/:role_name/permissions}\n */\nexport async function roleControllerSetPermissions(\n {\n appId,\n roleName,\n data,\n }: {\n appId: RoleControllerSetPermissionsPathParams[\"appId\"];\n roleName: RoleControllerSetPermissionsPathParams[\"roleName\"];\n data: RoleControllerSetPermissionsMutationRequest;\n },\n config: Partial<\n RequestConfig<RoleControllerSetPermissionsMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerSetPermissionsMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerSetPermissionsMutationRequest\n >({\n method: \"PUT\",\n url: getRoleControllerSetPermissionsUrl({ appId, roleName }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerListPermissionsQueryResponse,\n RoleControllerListPermissionsPathParams,\n} from \"../../types/roles/RoleControllerListPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerListPermissionsUrl({\n appId,\n}: {\n appId: RoleControllerListPermissionsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/roles/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary List all available permissions\n * {@link /v1/apps/:app_id/roles/permissions}\n */\nexport async function roleControllerListPermissions(\n { appId }: { appId: RoleControllerListPermissionsPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n RoleControllerListPermissionsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getRoleControllerListPermissionsUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerListPermissionsQueryResponse,\n PermissionControllerListPermissionsPathParams,\n} from \"../../types/permissions/PermissionControllerListPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerListPermissionsUrl({\n appId,\n}: {\n appId: PermissionControllerListPermissionsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/permissions` as const };\n return res;\n}\n\n/**\n * @summary List all permissions (system + custom)\n * {@link /v1/apps/:app_id/permissions}\n */\nexport async function permissionControllerListPermissions(\n { appId }: { appId: PermissionControllerListPermissionsPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n PermissionControllerListPermissionsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getPermissionControllerListPermissionsUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerCreatePermissionMutationRequest,\n PermissionControllerCreatePermissionMutationResponse,\n PermissionControllerCreatePermissionPathParams,\n} from \"../../types/permissions/PermissionControllerCreatePermission.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerCreatePermissionUrl({\n appId,\n}: {\n appId: PermissionControllerCreatePermissionPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary Create a custom permission\n * {@link /v1/apps/:app_id/permissions}\n */\nexport async function permissionControllerCreatePermission(\n {\n appId,\n data,\n }: {\n appId: PermissionControllerCreatePermissionPathParams[\"appId\"];\n data: PermissionControllerCreatePermissionMutationRequest;\n },\n config: Partial<\n RequestConfig<PermissionControllerCreatePermissionMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n PermissionControllerCreatePermissionMutationResponse,\n ResponseErrorConfig<Error>,\n PermissionControllerCreatePermissionMutationRequest\n >({\n method: \"POST\",\n url: getPermissionControllerCreatePermissionUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerDeletePermissionMutationResponse,\n PermissionControllerDeletePermissionPathParams,\n} from \"../../types/permissions/PermissionControllerDeletePermission.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerDeletePermissionUrl({\n appId,\n permissionKey,\n}: {\n appId: PermissionControllerDeletePermissionPathParams[\"appId\"];\n permissionKey: PermissionControllerDeletePermissionPathParams[\"permissionKey\"];\n}) {\n const app_id = appId;\n const permission_key = permissionKey;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/permissions/${permission_key}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete a custom permission\n * {@link /v1/apps/:app_id/permissions/:permission_key}\n */\nexport async function permissionControllerDeletePermission(\n {\n appId,\n permissionKey,\n }: {\n appId: PermissionControllerDeletePermissionPathParams[\"appId\"];\n permissionKey: PermissionControllerDeletePermissionPathParams[\"permissionKey\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n PermissionControllerDeletePermissionMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getPermissionControllerDeletePermissionUrl({\n appId,\n permissionKey,\n }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerListApiKeysQueryResponse,\n ApiKeyControllerListApiKeysPathParams,\n} from \"../../types/apiKeys/ApiKeyControllerListApiKeys.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerListApiKeysUrl({\n appId,\n}: {\n appId: ApiKeyControllerListApiKeysPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/api-keys` as const };\n return res;\n}\n\n/**\n * @summary List API keys for an app (no raw secret).\n * {@link /v1/apps/:app_id/api-keys}\n */\nexport async function apiKeyControllerListApiKeys(\n { appId }: { appId: ApiKeyControllerListApiKeysPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n ApiKeyControllerListApiKeysQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getApiKeyControllerListApiKeysUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerCreateApiKeyMutationRequest,\n ApiKeyControllerCreateApiKeyMutationResponse,\n ApiKeyControllerCreateApiKeyPathParams,\n ApiKeyControllerCreateApiKeyHeaderParams,\n} from \"../../types/apiKeys/ApiKeyControllerCreateApiKey.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerCreateApiKeyUrl({\n appId,\n}: {\n appId: ApiKeyControllerCreateApiKeyPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/api-keys` as const };\n return res;\n}\n\n/**\n * @summary Mint a new hdk_live_* API key with an explicit permission scope. The raw key is returned ONCE.\n * {@link /v1/apps/:app_id/api-keys}\n */\nexport async function apiKeyControllerCreateApiKey(\n {\n appId,\n data,\n headers,\n }: {\n appId: ApiKeyControllerCreateApiKeyPathParams[\"appId\"];\n data: ApiKeyControllerCreateApiKeyMutationRequest;\n headers?: ApiKeyControllerCreateApiKeyHeaderParams;\n },\n config: Partial<\n RequestConfig<ApiKeyControllerCreateApiKeyMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n ApiKeyControllerCreateApiKeyMutationResponse,\n ResponseErrorConfig<Error>,\n ApiKeyControllerCreateApiKeyMutationRequest\n >({\n method: \"POST\",\n url: getApiKeyControllerCreateApiKeyUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerDeleteApiKeyMutationResponse,\n ApiKeyControllerDeleteApiKeyPathParams,\n} from \"../../types/apiKeys/ApiKeyControllerDeleteApiKey.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerDeleteApiKeyUrl({\n appId,\n keyId,\n}: {\n appId: ApiKeyControllerDeleteApiKeyPathParams[\"appId\"];\n keyId: ApiKeyControllerDeleteApiKeyPathParams[\"keyId\"];\n}) {\n const app_id = appId;\n const key_id = keyId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/api-keys/${key_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Revoke (delete) an API key.\n * {@link /v1/apps/:app_id/api-keys/:key_id}\n */\nexport async function apiKeyControllerDeleteApiKey(\n {\n appId,\n keyId,\n }: {\n appId: ApiKeyControllerDeleteApiKeyPathParams[\"appId\"];\n keyId: ApiKeyControllerDeleteApiKeyPathParams[\"keyId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n ApiKeyControllerDeleteApiKeyMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getApiKeyControllerDeleteApiKeyUrl({ appId, keyId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerListClientsQueryResponse,\n M2MControllerListClientsPathParams,\n M2MControllerListClientsQueryParams,\n} from \"../../types/credentials/M2MControllerListClients.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerListClientsUrl({\n appId,\n}: {\n appId: M2MControllerListClientsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/credentials` as const };\n return res;\n}\n\n/**\n * @summary List M2M clients\n * {@link /v1/apps/:app_id/credentials}\n */\nexport async function M2MControllerListClients(\n {\n appId,\n params,\n }: {\n appId: M2MControllerListClientsPathParams[\"appId\"];\n params: M2MControllerListClientsQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerListClientsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getM2MControllerListClientsUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerCreateClientMutationRequest,\n M2MControllerCreateClientMutationResponse,\n M2MControllerCreateClientPathParams,\n M2MControllerCreateClientHeaderParams,\n M2MControllerCreateClient400,\n M2MControllerCreateClient403,\n M2MControllerCreateClient404,\n} from \"../../types/credentials/M2MControllerCreateClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerCreateClientUrl({\n appId,\n}: {\n appId: M2MControllerCreateClientPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/credentials` as const,\n };\n return res;\n}\n\n/**\n * @summary Create a new M2M client\n * {@link /v1/apps/:app_id/credentials}\n */\nexport async function M2MControllerCreateClient(\n {\n appId,\n data,\n headers,\n }: {\n appId: M2MControllerCreateClientPathParams[\"appId\"];\n data: M2MControllerCreateClientMutationRequest;\n headers?: M2MControllerCreateClientHeaderParams;\n },\n config: Partial<RequestConfig<M2MControllerCreateClientMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerCreateClientMutationResponse,\n ResponseErrorConfig<\n | M2MControllerCreateClient400\n | M2MControllerCreateClient403\n | M2MControllerCreateClient404\n >,\n M2MControllerCreateClientMutationRequest\n >({\n method: \"POST\",\n url: getM2MControllerCreateClientUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerGetClientQueryResponse,\n M2MControllerGetClientPathParams,\n} from \"../../types/credentials/M2MControllerGetClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerGetClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerGetClientPathParams[\"appId\"];\n clientId: M2MControllerGetClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Get M2M client details\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerGetClient(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerGetClientPathParams[\"appId\"];\n clientId: M2MControllerGetClientPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerGetClientQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getM2MControllerGetClientUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerUpdateClientMutationRequest,\n M2MControllerUpdateClientMutationResponse,\n M2MControllerUpdateClientPathParams,\n} from \"../../types/credentials/M2MControllerUpdateClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerUpdateClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerUpdateClientPathParams[\"appId\"];\n clientId: M2MControllerUpdateClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Update M2M client status\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerUpdateClient(\n {\n appId,\n clientId,\n data,\n }: {\n appId: M2MControllerUpdateClientPathParams[\"appId\"];\n clientId: M2MControllerUpdateClientPathParams[\"clientId\"];\n data: M2MControllerUpdateClientMutationRequest;\n },\n config: Partial<RequestConfig<M2MControllerUpdateClientMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerUpdateClientMutationResponse,\n ResponseErrorConfig<Error>,\n M2MControllerUpdateClientMutationRequest\n >({\n method: \"PATCH\",\n url: getM2MControllerUpdateClientUrl({ appId, clientId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerDeleteClientMutationResponse,\n M2MControllerDeleteClientPathParams,\n M2MControllerDeleteClient403,\n M2MControllerDeleteClient404,\n} from \"../../types/credentials/M2MControllerDeleteClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerDeleteClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerDeleteClientPathParams[\"appId\"];\n clientId: M2MControllerDeleteClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete an M2M client\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerDeleteClient(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerDeleteClientPathParams[\"appId\"];\n clientId: M2MControllerDeleteClientPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerDeleteClientMutationResponse,\n ResponseErrorConfig<\n M2MControllerDeleteClient403 | M2MControllerDeleteClient404\n >,\n unknown\n >({\n method: \"DELETE\",\n url: getM2MControllerDeleteClientUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerRotateSecretMutationResponse,\n M2MControllerRotateSecretPathParams,\n M2MControllerRotateSecret403,\n M2MControllerRotateSecret404,\n} from \"../../types/credentials/M2MControllerRotateSecret.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerRotateSecretUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerRotateSecretPathParams[\"appId\"];\n clientId: M2MControllerRotateSecretPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/credentials/${client_id}/rotate` as const,\n };\n return res;\n}\n\n/**\n * @summary Rotate M2M client secret\n * {@link /v1/apps/:app_id/credentials/:client_id/rotate}\n */\nexport async function M2MControllerRotateSecret(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerRotateSecretPathParams[\"appId\"];\n clientId: M2MControllerRotateSecretPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerRotateSecretMutationResponse,\n ResponseErrorConfig<\n M2MControllerRotateSecret403 | M2MControllerRotateSecret404\n >,\n unknown\n >({\n method: \"POST\",\n url: getM2MControllerRotateSecretUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerSetScopesMutationRequest,\n M2MControllerSetScopesMutationResponse,\n M2MControllerSetScopesPathParams,\n} from \"../../types/credentials/M2MControllerSetScopes.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerSetScopesUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerSetScopesPathParams[\"appId\"];\n clientId: M2MControllerSetScopesPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"PUT\",\n url: `/v1/apps/${app_id}/credentials/${client_id}/scopes` as const,\n };\n return res;\n}\n\n/**\n * @summary Set scopes for an M2M client\n * {@link /v1/apps/:app_id/credentials/:client_id/scopes}\n */\nexport async function M2MControllerSetScopes(\n {\n appId,\n clientId,\n data,\n }: {\n appId: M2MControllerSetScopesPathParams[\"appId\"];\n clientId: M2MControllerSetScopesPathParams[\"clientId\"];\n data: M2MControllerSetScopesMutationRequest;\n },\n config: Partial<RequestConfig<M2MControllerSetScopesMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerSetScopesMutationResponse,\n ResponseErrorConfig<Error>,\n M2MControllerSetScopesMutationRequest\n >({\n method: \"PUT\",\n url: getM2MControllerSetScopesUrl({ appId, clientId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppAuditControllerGetAuditLogsQueryResponse,\n AppAuditControllerGetAuditLogsPathParams,\n AppAuditControllerGetAuditLogsQueryParams,\n AppAuditControllerGetAuditLogs403,\n AppAuditControllerGetAuditLogs404,\n} from \"../../types/appAudit/AppAuditControllerGetAuditLogs.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppAuditControllerGetAuditLogsUrl({\n appId,\n}: {\n appId: AppAuditControllerGetAuditLogsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/audit-logs` as const };\n return res;\n}\n\n/**\n * @summary Append-only audit log for this app. Filter by `?action=` and/or `?actor_id=`. 50/page (max 200), cursor-paginated.\n * {@link /v1/apps/:app_id/audit-logs}\n */\nexport async function appAuditControllerGetAuditLogs(\n {\n appId,\n params,\n }: {\n appId: AppAuditControllerGetAuditLogsPathParams[\"appId\"];\n params: AppAuditControllerGetAuditLogsQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? {\n limit: params.limit,\n cursor: params.cursor,\n action: params.action,\n actor_id: params.actorId,\n }\n : undefined;\n\n const res = await request<\n AppAuditControllerGetAuditLogsQueryResponse,\n ResponseErrorConfig<\n AppAuditControllerGetAuditLogs403 | AppAuditControllerGetAuditLogs404\n >,\n unknown\n >({\n method: \"GET\",\n url: getAppAuditControllerGetAuditLogsUrl({ appId }).url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * AppScope — every admin request under `/v1/apps/{appId}/...`.\n *\n * Returned by `heimdall.app(appId)`. Pre-binds the appId path param so\n * resource methods read like `app.endUsers.list()` rather than\n * `heimdall.endUsers.list({ appId })`. Methods delegate into the\n * kubb-generated client functions.\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\n\n// App-level meta operations (under the \"apps\" tag, scoped to {appId})\nimport { appControllerGetApp } from \"../_generated/clients/apps/appControllerGetApp.js\";\nimport { appControllerUpdateApp } from \"../_generated/clients/apps/appControllerUpdateApp.js\";\nimport { appControllerDeleteApp } from \"../_generated/clients/apps/appControllerDeleteApp.js\";\nimport { appControllerUpdateAppStatus } from \"../_generated/clients/apps/appControllerUpdateAppStatus.js\";\nimport { authConfigControllerGetConfig } from \"../_generated/clients/apps/authConfigControllerGetConfig.js\";\nimport { authConfigControllerUpdateConfig } from \"../_generated/clients/apps/authConfigControllerUpdateConfig.js\";\nimport { appControllerListInvites } from \"../_generated/clients/apps/appControllerListInvites.js\";\nimport { appControllerCreateInvite } from \"../_generated/clients/apps/appControllerCreateInvite.js\";\nimport { appControllerRevokeInvite } from \"../_generated/clients/apps/appControllerRevokeInvite.js\";\nimport { appControllerListMembers } from \"../_generated/clients/apps/appControllerListMembers.js\";\nimport { appControllerRemoveMember } from \"../_generated/clients/apps/appControllerRemoveMember.js\";\n\n// EndUsers — Note: `revokeAllSessions` skipped (spec bug, see callDirect below)\nimport { endUserControllerListEndUsers } from \"../_generated/clients/endUsers/endUserControllerListEndUsers.js\";\nimport { endUserControllerGetEndUser } from \"../_generated/clients/endUsers/endUserControllerGetEndUser.js\";\nimport { endUserControllerUpdateEndUser } from \"../_generated/clients/endUsers/endUserControllerUpdateEndUser.js\";\nimport { endUserControllerDeleteEndUser } from \"../_generated/clients/endUsers/endUserControllerDeleteEndUser.js\";\nimport { endUserControllerUpdateRole } from \"../_generated/clients/endUsers/endUserControllerUpdateRole.js\";\nimport { endUserControllerUpdateStatus } from \"../_generated/clients/endUsers/endUserControllerUpdateStatus.js\";\n\n// Roles — Note: get/update/delete by roleName skipped (spec bug — see callDirect)\nimport { roleControllerListRoles } from \"../_generated/clients/roles/roleControllerListRoles.js\";\nimport { roleControllerCreateRole } from \"../_generated/clients/roles/roleControllerCreateRole.js\";\nimport { roleControllerAssignRole } from \"../_generated/clients/roles/roleControllerAssignRole.js\";\nimport { roleControllerSetPermissions } from \"../_generated/clients/roles/roleControllerSetPermissions.js\";\nimport { roleControllerListPermissions } from \"../_generated/clients/roles/roleControllerListPermissions.js\";\n\n// Permissions\nimport { permissionControllerListPermissions } from \"../_generated/clients/permissions/permissionControllerListPermissions.js\";\nimport { permissionControllerCreatePermission } from \"../_generated/clients/permissions/permissionControllerCreatePermission.js\";\nimport { permissionControllerDeletePermission } from \"../_generated/clients/permissions/permissionControllerDeletePermission.js\";\n\n// API keys\nimport { apiKeyControllerListApiKeys } from \"../_generated/clients/apiKeys/apiKeyControllerListApiKeys.js\";\nimport { apiKeyControllerCreateApiKey } from \"../_generated/clients/apiKeys/apiKeyControllerCreateApiKey.js\";\nimport { apiKeyControllerDeleteApiKey } from \"../_generated/clients/apiKeys/apiKeyControllerDeleteApiKey.js\";\n\n// M2M client credentials\nimport { M2MControllerListClients } from \"../_generated/clients/credentials/M2MControllerListClients.js\";\nimport { M2MControllerCreateClient } from \"../_generated/clients/credentials/M2MControllerCreateClient.js\";\nimport { M2MControllerGetClient } from \"../_generated/clients/credentials/M2MControllerGetClient.js\";\nimport { M2MControllerUpdateClient } from \"../_generated/clients/credentials/M2MControllerUpdateClient.js\";\nimport { M2MControllerDeleteClient } from \"../_generated/clients/credentials/M2MControllerDeleteClient.js\";\nimport { M2MControllerRotateSecret } from \"../_generated/clients/credentials/M2MControllerRotateSecret.js\";\nimport { M2MControllerSetScopes } from \"../_generated/clients/credentials/M2MControllerSetScopes.js\";\n\n// Audit logs\nimport { appAuditControllerGetAuditLogs } from \"../_generated/clients/appAudit/appAuditControllerGetAuditLogs.js\";\n\n// DTOs\nimport type { UpdateAppDto } from \"../_generated/types/UpdateAppDto.js\";\nimport type { UpdateAppStatusDto } from \"../_generated/types/UpdateAppStatusDto.js\";\nimport type { UpdateAuthConfigDto } from \"../_generated/types/UpdateAuthConfigDto.js\";\nimport type { CreateInviteDto } from \"../_generated/types/CreateInviteDto.js\";\nimport type { UpdateEndUserDto } from \"../_generated/types/UpdateEndUserDto.js\";\nimport type { UpdateEndUserRoleDto } from \"../_generated/types/UpdateEndUserRoleDto.js\";\nimport type { UpdateEndUserStatusDto } from \"../_generated/types/UpdateEndUserStatusDto.js\";\nimport type { CreateRoleDto } from \"../_generated/types/CreateRoleDto.js\";\nimport type { UpdateRoleDto } from \"../_generated/types/UpdateRoleDto.js\";\nimport type { AssignRoleDto } from \"../_generated/types/AssignRoleDto.js\";\nimport type { SetPermissionsDto } from \"../_generated/types/SetPermissionsDto.js\";\nimport type { CreatePermissionDto } from \"../_generated/types/CreatePermissionDto.js\";\nimport type { CreateApiKeyDto } from \"../_generated/types/CreateApiKeyDto.js\";\nimport type { CreateM2MClientDto } from \"../_generated/types/CreateM2MClientDto.js\";\nimport type { UpdateM2MClientDto } from \"../_generated/types/UpdateM2MClientDto.js\";\nimport type { SetScopesDto } from \"../_generated/types/SetScopesDto.js\";\n\n// Query-param types\nimport type { AppControllerListInvitesQueryParams } from \"../_generated/types/apps/AppControllerListInvites.js\";\nimport type { AppControllerListMembersQueryParams } from \"../_generated/types/apps/AppControllerListMembers.js\";\nimport type { EndUserControllerListEndUsersQueryParams } from \"../_generated/types/endUsers/EndUserControllerListEndUsers.js\";\nimport type { AppAuditControllerGetAuditLogsQueryParams } from \"../_generated/types/appAudit/AppAuditControllerGetAuditLogs.js\";\nimport type { M2MControllerListClientsQueryParams } from \"../_generated/types/credentials/M2MControllerListClients.js\";\nimport type { RoleControllerListRolesQueryParams } from \"../_generated/types/roles/RoleControllerListRoles.js\";\n\nexport class AppScope {\n /** The appId bound to this scope. */\n public readonly appId: string;\n\n private readonly client: Client;\n\n constructor(appId: string, client: Client) {\n this.appId = appId;\n this.client = client;\n }\n\n /**\n * Direct HTTP escape hatch used to call endpoints whose spec is buggy\n * — currently those whose path declares `{appId}` but whose\n * `parameters[]` omits it, so the kubb-generated code leaves the\n * URL template unfilled. Tracked upstream; remove once the spec is\n * fixed and the per-call wrappers can move back to kubb's output.\n */\n private async callDirect<T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n url: string,\n body?: unknown,\n ): Promise<T> {\n const res = await this.client<T>({ method, url, data: body });\n return res.data;\n }\n\n // ─────────────────────────────────────────────────────────────\n // App meta — operations on the app record itself\n // ─────────────────────────────────────────────────────────────\n\n get = () =>\n appControllerGetApp({ appId: this.appId }, { client: this.client });\n\n update = (data: UpdateAppDto) =>\n appControllerUpdateApp({ appId: this.appId, data }, { client: this.client });\n\n delete = () =>\n appControllerDeleteApp({ appId: this.appId }, { client: this.client });\n\n updateStatus = (data: UpdateAppStatusDto) =>\n appControllerUpdateAppStatus(\n { appId: this.appId, data },\n { client: this.client },\n );\n\n // ─────────────────────────────────────────────────────────────\n // Auth config (workspace-side config for the app's auth surface)\n // ─────────────────────────────────────────────────────────────\n readonly authConfig = {\n get: () =>\n authConfigControllerGetConfig(\n { appId: this.appId },\n { client: this.client },\n ),\n update: (data: UpdateAuthConfigDto) =>\n authConfigControllerUpdateConfig(\n { appId: this.appId, data },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Invites (workspace members)\n // ─────────────────────────────────────────────────────────────\n readonly invites = {\n list: (params: Partial<AppControllerListInvitesQueryParams> = {}) =>\n appControllerListInvites(\n { appId: this.appId, params: params as AppControllerListInvitesQueryParams },\n { client: this.client },\n ),\n create: (data: CreateInviteDto) =>\n appControllerCreateInvite(\n { appId: this.appId, data },\n { client: this.client },\n ),\n revoke: (inviteId: string) =>\n appControllerRevokeInvite(\n { appId: this.appId, inviteId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Members (workspace seats on this app)\n // ─────────────────────────────────────────────────────────────\n readonly members = {\n list: (params: Partial<AppControllerListMembersQueryParams> = {}) =>\n appControllerListMembers(\n { appId: this.appId, params: params as AppControllerListMembersQueryParams },\n { client: this.client },\n ),\n remove: (accountId: string) =>\n appControllerRemoveMember(\n { appId: this.appId, accountId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // EndUsers (the app's authenticated users — Heimdall's bread + butter)\n // ─────────────────────────────────────────────────────────────\n readonly endUsers = {\n list: (params: Partial<EndUserControllerListEndUsersQueryParams> = {}) =>\n endUserControllerListEndUsers(\n { appId: this.appId, params: params as EndUserControllerListEndUsersQueryParams },\n { client: this.client },\n ),\n get: (userId: string) =>\n endUserControllerGetEndUser(\n { appId: this.appId, userId },\n { client: this.client },\n ),\n update: (userId: string, data: UpdateEndUserDto) =>\n endUserControllerUpdateEndUser(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n delete: (userId: string) =>\n endUserControllerDeleteEndUser(\n { appId: this.appId, userId },\n { client: this.client },\n ),\n updateRole: (userId: string, data: UpdateEndUserRoleDto) =>\n endUserControllerUpdateRole(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n updateStatus: (userId: string, data: UpdateEndUserStatusDto) =>\n endUserControllerUpdateStatus(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n revokeAllSessions: (userId: string) =>\n this.callDirect<void>(\n \"POST\",\n `/v1/apps/${this.appId}/end-users/${userId}/sessions/revoke-all`,\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Roles\n // ─────────────────────────────────────────────────────────────\n readonly roles = {\n list: (params: Partial<RoleControllerListRolesQueryParams> = {}) =>\n roleControllerListRoles(\n { appId: this.appId, params: params as RoleControllerListRolesQueryParams },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n get: (roleName: string) =>\n this.callDirect<unknown>(\"GET\", `/v1/apps/${this.appId}/roles/${roleName}`),\n create: (data: CreateRoleDto) =>\n roleControllerCreateRole(\n { appId: this.appId, data },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n update: (roleName: string, data: UpdateRoleDto) =>\n this.callDirect<unknown>(\n \"PATCH\",\n `/v1/apps/${this.appId}/roles/${roleName}`,\n data,\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n delete: (roleName: string) =>\n this.callDirect<void>(\"DELETE\", `/v1/apps/${this.appId}/roles/${roleName}`),\n assign: (data: AssignRoleDto) =>\n roleControllerAssignRole(\n { appId: this.appId, data },\n { client: this.client },\n ),\n setPermissions: (roleName: string, data: SetPermissionsDto) =>\n roleControllerSetPermissions(\n { appId: this.appId, roleName, data },\n { client: this.client },\n ),\n listPermissions: () =>\n roleControllerListPermissions(\n { appId: this.appId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Permissions catalog\n // ─────────────────────────────────────────────────────────────\n readonly permissions = {\n list: () =>\n permissionControllerListPermissions(\n { appId: this.appId },\n { client: this.client },\n ),\n create: (data: CreatePermissionDto) =>\n permissionControllerCreatePermission(\n { appId: this.appId, data },\n { client: this.client },\n ),\n delete: (permissionKey: string) =>\n permissionControllerDeletePermission(\n { appId: this.appId, permissionKey },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // API keys (server-to-server platform keys for this app)\n // ─────────────────────────────────────────────────────────────\n readonly apiKeys = {\n list: () =>\n apiKeyControllerListApiKeys(\n { appId: this.appId },\n { client: this.client },\n ),\n create: (data: CreateApiKeyDto) =>\n apiKeyControllerCreateApiKey(\n { appId: this.appId, data },\n { client: this.client },\n ),\n delete: (keyId: string) =>\n apiKeyControllerDeleteApiKey(\n { appId: this.appId, keyId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // M2M credentials (client_id + client_secret for service-to-service)\n // ─────────────────────────────────────────────────────────────\n readonly credentials = {\n list: (params: Partial<M2MControllerListClientsQueryParams> = {}) =>\n M2MControllerListClients(\n { appId: this.appId, params: params as M2MControllerListClientsQueryParams },\n { client: this.client },\n ),\n create: (data: CreateM2MClientDto) =>\n M2MControllerCreateClient(\n { appId: this.appId, data },\n { client: this.client },\n ),\n get: (clientId: string) =>\n M2MControllerGetClient(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n update: (clientId: string, data: UpdateM2MClientDto) =>\n M2MControllerUpdateClient(\n { appId: this.appId, clientId, data },\n { client: this.client },\n ),\n delete: (clientId: string) =>\n M2MControllerDeleteClient(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n rotateSecret: (clientId: string) =>\n M2MControllerRotateSecret(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n setScopes: (clientId: string, data: SetScopesDto) =>\n M2MControllerSetScopes(\n { appId: this.appId, clientId, data },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Audit logs\n // ─────────────────────────────────────────────────────────────\n readonly auditLogs = {\n list: (params: Partial<AppAuditControllerGetAuditLogsQueryParams> = {}) =>\n appAuditControllerGetAuditLogs(\n { appId: this.appId, params: params as AppAuditControllerGetAuditLogsQueryParams },\n { client: this.client },\n ),\n };\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerSigninMutationRequest,\n ConsumerAuthControllerSigninMutationResponse,\n ConsumerAuthControllerSigninPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerSignin.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerSigninUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerSigninPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/signin` as const };\n return res;\n}\n\n/**\n * @description Authenticate with username or verified primary email + password. When the account has no enabled MFA factors, returns a fresh access + refresh token pair (`ConsumerTokenResponseDto` shape). When the account has any enabled factor, returns an MFA challenge instead (`ConsumerMfaChallengeResponseDto` shape, `mfa_required: true`). In that case no session has been created yet — complete the challenge via `POST /auth/mfa/verify` (or `/auth/mfa/recover`) to receive the token pair.\n * @summary Sign in an EndUser\n * {@link /:app_slug/v1/auth/signin}\n */\nexport async function consumerAuthControllerSignin(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerSigninPathParams[\"appSlug\"];\n data: ConsumerAuthControllerSigninMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerSigninMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerSigninMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerSigninMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerSigninUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerRefreshMutationRequest,\n ConsumerAuthControllerRefreshMutationResponse,\n ConsumerAuthControllerRefreshPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerRefresh.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerRefreshUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerRefreshPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/refresh` as const };\n return res;\n}\n\n/**\n * @description Rotates the refresh token on every call — the previous refresh token is revoked, and re-using it triggers session revocation.\n * @summary Exchange a refresh token for a new access token\n * {@link /:app_slug/v1/auth/refresh}\n */\nexport async function consumerAuthControllerRefresh(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerRefreshPathParams[\"appSlug\"];\n data: ConsumerAuthControllerRefreshMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerRefreshMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerRefreshMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerRefreshMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerRefreshUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerLogoutMutationRequest,\n ConsumerAuthControllerLogoutMutationResponse,\n ConsumerAuthControllerLogoutPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerLogout.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerLogoutUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerLogoutPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/logout` as const };\n return res;\n}\n\n/**\n * @description Destroys the session that owns the refresh token. The matching access token continues to verify until its TTL expires.\n * @summary Revoke a refresh token\n * {@link /:app_slug/v1/auth/logout}\n */\nexport async function consumerAuthControllerLogout(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerLogoutPathParams[\"appSlug\"];\n data: ConsumerAuthControllerLogoutMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerLogoutMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerLogoutMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerLogoutMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerLogoutUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerRequestPasswordResetMutationRequest,\n ConsumerAuthControllerRequestPasswordResetMutationResponse,\n ConsumerAuthControllerRequestPasswordResetPathParams,\n ConsumerAuthControllerRequestPasswordResetHeaderParams,\n ConsumerAuthControllerRequestPasswordReset400,\n ConsumerAuthControllerRequestPasswordReset401,\n ConsumerAuthControllerRequestPasswordReset403,\n} from \"../../types/consumerAuth/ConsumerAuthControllerRequestPasswordReset.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerRequestPasswordResetUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerRequestPasswordResetPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/request-password-reset` as const,\n };\n return res;\n}\n\n/**\n * @description Mints a fresh 6-digit password-reset code for the EndUser owning the named contact. Body must contain exactly one of `email` / `phone` — the contact must be verified (otherwise an attacker who registered an unverified contact could push a reset on another user's account, were the per-app email uniqueness ever breached). The reset itself is account-scoped (revokes all sessions, replaces password) — the contact only acts as the lookup key.\n * PAK-required: `heimdall.user.password-reset.create`. Returns `{ code, expires_at }` on success, `{}` on no-match (uniform shape prevents enumeration).\n * Renamed from /auth/request-reset.\n * @summary Mint a password-reset code (PAK-required)\n * {@link /:app_slug/v1/auth/request-password-reset}\n */\nexport async function consumerAuthControllerRequestPasswordReset(\n {\n appSlug,\n data,\n headers,\n }: {\n appSlug: ConsumerAuthControllerRequestPasswordResetPathParams[\"appSlug\"];\n data: ConsumerAuthControllerRequestPasswordResetMutationRequest;\n headers: ConsumerAuthControllerRequestPasswordResetHeaderParams;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerRequestPasswordResetMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerRequestPasswordResetMutationResponse,\n ResponseErrorConfig<\n | ConsumerAuthControllerRequestPasswordReset400\n | ConsumerAuthControllerRequestPasswordReset401\n | ConsumerAuthControllerRequestPasswordReset403\n >,\n ConsumerAuthControllerRequestPasswordResetMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerRequestPasswordResetUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...headers, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerResetPasswordMutationRequest,\n ConsumerAuthControllerResetPasswordMutationResponse,\n ConsumerAuthControllerResetPasswordPathParams,\n ConsumerAuthControllerResetPassword410,\n} from \"../../types/consumerAuth/ConsumerAuthControllerResetPassword.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerResetPasswordUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerResetPasswordPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/reset-password` as const,\n };\n return res;\n}\n\n/**\n * @description Consumes the 6-digit reset code (single-use). On success the password is updated and every active session for the user is revoked.\n * @summary Submit a reset code + new password\n * {@link /:app_slug/v1/auth/reset-password}\n */\nexport async function consumerAuthControllerResetPassword(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerResetPasswordPathParams[\"appSlug\"];\n data: ConsumerAuthControllerResetPasswordMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerResetPasswordMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerResetPasswordMutationResponse,\n ResponseErrorConfig<ConsumerAuthControllerResetPassword410>,\n ConsumerAuthControllerResetPasswordMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerResetPasswordUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerIdpControllerNativeSignInMutationRequest,\n ConsumerIdpControllerNativeSignInMutationResponse,\n ConsumerIdpControllerNativeSignInPathParams,\n ConsumerIdpControllerNativeSignIn401,\n ConsumerIdpControllerNativeSignIn409,\n} from \"../../types/consumerOauthSignIn/ConsumerIdpControllerNativeSignIn.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerIdpControllerNativeSignInUrl({\n appSlug,\n provider,\n}: {\n appSlug: ConsumerIdpControllerNativeSignInPathParams[\"appSlug\"];\n provider: ConsumerIdpControllerNativeSignInPathParams[\"provider\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/oauth/${provider}` as const,\n };\n return res;\n}\n\n/**\n * @description Submit the provider-issued ID token from a native client (iOS ASAuthorizationController, Google Sign-In for iOS / Android). Backend verifies the token signature, issuer, audience (against this app's configured native client ids), and nonce binding; consumes the nonce server-side to defeat in-window replay; resolves or creates the Heimdall account; mints access + refresh tokens with `amr=[\"oauth\", \"<provider>\"]`. Same response shape as `/auth/signin`.\n * @summary Sign in / sign up with a provider ID token (native flow)\n * {@link /:app_slug/v1/auth/oauth/:provider}\n */\nexport async function consumerIdpControllerNativeSignIn(\n {\n appSlug,\n provider,\n data,\n }: {\n appSlug: ConsumerIdpControllerNativeSignInPathParams[\"appSlug\"];\n provider: ConsumerIdpControllerNativeSignInPathParams[\"provider\"];\n data: ConsumerIdpControllerNativeSignInMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerIdpControllerNativeSignInMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerIdpControllerNativeSignInMutationResponse,\n ResponseErrorConfig<\n | ConsumerIdpControllerNativeSignIn401\n | ConsumerIdpControllerNativeSignIn409\n >,\n ConsumerIdpControllerNativeSignInMutationRequest\n >({\n method: \"POST\",\n url: getConsumerIdpControllerNativeSignInUrl({\n appSlug,\n provider,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerVerifyMutationRequest,\n ConsumerVerifyControllerVerifyMutationResponse,\n ConsumerVerifyControllerVerifyPathParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerVerify.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerVerifyUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerVerifyPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/verify` as const };\n return res;\n}\n\n/**\n * @description Validates the JWT against the app's JWKS keys and returns `{ valid, principal }`. Use this when you need the full claims; use `/authorize` for a yes/no permission check.\n * @summary Verify a token signature + return its principal\n * {@link /:app_slug/v1/verify}\n */\nexport async function consumerVerifyControllerVerify(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerVerifyControllerVerifyPathParams[\"appSlug\"];\n data: ConsumerVerifyControllerVerifyMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerVerifyMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerVerifyMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerVerifyMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerVerifyUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerAuthorizeMutationRequest,\n ConsumerVerifyControllerAuthorizeMutationResponse,\n ConsumerVerifyControllerAuthorizePathParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerAuthorize.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerAuthorizeUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerAuthorizePathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/authorize` as const };\n return res;\n}\n\n/**\n * @description Returns `{ authorized: boolean }`. Pass `permission` (string) for a single check, or `permissions` (array) when ALL must be held.\n * @summary Verify a token + check one or more permissions\n * {@link /:app_slug/v1/authorize}\n */\nexport async function consumerVerifyControllerAuthorize(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerVerifyControllerAuthorizePathParams[\"appSlug\"];\n data: ConsumerVerifyControllerAuthorizeMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerAuthorizeMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerAuthorizeMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerAuthorizeMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerAuthorizeUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerAuthorizeBatchMutationRequest,\n ConsumerVerifyControllerAuthorizeBatchMutationResponse,\n ConsumerVerifyControllerAuthorizeBatchPathParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerAuthorizeBatch.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerAuthorizeBatchUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerAuthorizeBatchPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/authorize/batch` as const,\n };\n return res;\n}\n\n/**\n * @description Runs N permission checks against the same token in one call. Each result reports the missing permissions (if any). Useful when a UI needs to flag many actions at once.\n * @summary Multi-permission authorization in a single round-trip\n * {@link /:app_slug/v1/authorize/batch}\n */\nexport async function consumerVerifyControllerAuthorizeBatch(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerVerifyControllerAuthorizeBatchPathParams[\"appSlug\"];\n data: ConsumerVerifyControllerAuthorizeBatchMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerAuthorizeBatchMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerAuthorizeBatchMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerAuthorizeBatchMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerAuthorizeBatchUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerOAuthControllerClientCredentialsMutationRequest,\n ConsumerOAuthControllerClientCredentialsMutationResponse,\n ConsumerOAuthControllerClientCredentialsPathParams,\n} from \"../../types/consumerOauthM2m/ConsumerOAuthControllerClientCredentials.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerOAuthControllerClientCredentialsUrl({\n appSlug,\n}: {\n appSlug: ConsumerOAuthControllerClientCredentialsPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/oauth/token` as const };\n return res;\n}\n\n/**\n * @description Standard OAuth 2.0 client_credentials grant. Returns an app-scoped access token whose `scopes[]` claim is the union of the client's configured scopes. Use for service-to-service calls.\n * @summary Exchange client_credentials for an access token\n * {@link /:app_slug/v1/oauth/token}\n */\nexport async function consumerOAuthControllerClientCredentials(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerOAuthControllerClientCredentialsPathParams[\"appSlug\"];\n data: ConsumerOAuthControllerClientCredentialsMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerOAuthControllerClientCredentialsMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerOAuthControllerClientCredentialsMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerOAuthControllerClientCredentialsMutationRequest\n >({\n method: \"POST\",\n url: getConsumerOAuthControllerClientCredentialsUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Typed error hierarchy for JWT verification. All errors inherit from\n * `JwtVerifyError` so callers can do one `instanceof` to catch any\n * verify failure, or branch on more specific subclasses for UX.\n */\n\nexport class JwtVerifyError extends Error {\n public readonly code: string;\n\n constructor(code: string, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"JwtVerifyError\";\n this.code = code;\n }\n}\n\n/** Signature didn't match, header malformed, or token structure invalid. */\nexport class JwtInvalidError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_INVALID\", message, options);\n this.name = \"JwtInvalidError\";\n }\n}\n\n/** Token's `exp` claim is in the past (allowing for clockTolerance). */\nexport class JwtExpiredError extends JwtVerifyError {\n public readonly expiredAt?: Date;\n constructor(message: string, expiredAt?: Date, options?: { cause?: unknown }) {\n super(\"ERR_JWT_EXPIRED\", message, options);\n this.name = \"JwtExpiredError\";\n this.expiredAt = expiredAt;\n }\n}\n\n/** Token's `nbf` is in the future. */\nexport class JwtNotYetValidError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_NOT_YET_VALID\", message, options);\n this.name = \"JwtNotYetValidError\";\n }\n}\n\n/** `iss` claim doesn't match the expected issuer. */\nexport class JwtIssuerMismatchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_ISS_MISMATCH\", message, options);\n this.name = \"JwtIssuerMismatchError\";\n }\n}\n\n/** `aud` claim doesn't match the expected audience. */\nexport class JwtAudienceMismatchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_AUD_MISMATCH\", message, options);\n this.name = \"JwtAudienceMismatchError\";\n }\n}\n\n/** The token's `kid` isn't in the JWKS (even after a forced refetch). */\nexport class JwksKeyNotFoundError extends JwtVerifyError {\n public readonly kid: string | undefined;\n constructor(kid: string | undefined, options?: { cause?: unknown }) {\n super(\n \"ERR_JWKS_KID_NOT_FOUND\",\n `JWKS has no key matching kid=${kid ?? \"(missing)\"}`,\n options,\n );\n this.name = \"JwksKeyNotFoundError\";\n this.kid = kid;\n }\n}\n\n/** Network / non-2xx fetching the JWKS endpoint. */\nexport class JwksFetchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWKS_FETCH\", message, options);\n this.name = \"JwksFetchError\";\n }\n}\n","/**\n * In-process JWKS cache for a single app's `/.well-known/jwks.json`.\n *\n * Thin wrapper over `jose.createRemoteJWKSet`, which already gives us:\n * - TTL-based cache (cacheMaxAge)\n * - Cooldown between failed fetches (cooldownDuration)\n * - Singleflight (concurrent verifies share one inflight fetch)\n * - Auto-refetch when the token's `kid` isn't in the cached JWKS\n * (rotation handling)\n *\n * We add:\n * - Translation of jose's internal `JWKSNoMatchingKey` /\n * `JWKSTimeout` / etc. errors into our typed `JwksKeyNotFoundError`\n * / `JwksFetchError`.\n * - A `refresh()` method for explicit cache busting (rare, but useful\n * for tests + manual rotation drills).\n *\n * Instances are returned by `ConsumerScope.jwks` and are jose-compatible\n * out of the box — `jose.jwtVerify(token, scope.jwks.getKey, ...)` works.\n */\n\nimport {\n createRemoteJWKSet,\n customFetch,\n errors as joseErrors,\n type CryptoKey,\n type JWTHeaderParameters,\n type FlattenedJWSInput,\n} from \"jose\";\n\nimport { JwksFetchError, JwksKeyNotFoundError } from \"./errors.js\";\n\nexport interface JwksCacheOptions {\n url: URL;\n /** Cache lifetime in ms. Default 10 minutes — same as jose's default. */\n ttlMs?: number;\n /** Min ms between failed fetches. Default 30 seconds. */\n cooldownMs?: number;\n /** Network timeout per fetch. Default 5 seconds. */\n timeoutMs?: number;\n /** Pin a custom fetch implementation (e.g. undici with retry, mock fetch in tests). */\n fetch?: typeof fetch;\n}\n\nexport type HeimdallGetKeyFn = (\n protectedHeader?: JWTHeaderParameters,\n token?: FlattenedJWSInput,\n) => Promise<CryptoKey>;\n\nexport class JwksCache {\n public readonly url: URL;\n private readonly _jose: HeimdallGetKeyFn;\n\n constructor(options: JwksCacheOptions) {\n this.url = options.url;\n // jose's customFetch is keyed by a symbol with a non-standard\n // signature (`(url: string, options) => Promise<Response>`). The\n // user-side `typeof fetch` we accept is more permissive; at runtime\n // the call shape is compatible, so cast through.\n const joseOpts: Record<string | symbol, unknown> = {\n cacheMaxAge: options.ttlMs ?? 10 * 60 * 1000,\n cooldownDuration: options.cooldownMs ?? 30_000,\n timeoutDuration: options.timeoutMs ?? 5_000,\n };\n if (options.fetch) {\n joseOpts[customFetch] = options.fetch;\n }\n this._jose = createRemoteJWKSet(\n options.url,\n joseOpts as Parameters<typeof createRemoteJWKSet>[1],\n ) as HeimdallGetKeyFn;\n }\n\n /**\n * Resolve a signing key for a given JWT header.\n * Bound as an arrow-function field so it can be passed around\n * (`jose.jwtVerify(token, cache.getKey, ...)`, passport-jwt, etc.)\n * without losing `this`.\n */\n readonly getKey: HeimdallGetKeyFn = async (header, input) => {\n try {\n return await this._jose(header, input);\n } catch (err) {\n if (err instanceof joseErrors.JWKSNoMatchingKey) {\n throw new JwksKeyNotFoundError(header?.kid, { cause: err });\n }\n if (\n err instanceof joseErrors.JWKSTimeout ||\n err instanceof joseErrors.JWKSInvalid ||\n err instanceof joseErrors.JOSEError\n ) {\n throw new JwksFetchError(\n `Failed to load JWKS from ${this.url.href}: ${err.message}`,\n { cause: err },\n );\n }\n throw err;\n }\n };\n\n /**\n * Force a refetch on the next verify. Useful in tests and for\n * external rotation drills — the normal flow self-heals because\n * jose auto-refetches on kid miss.\n */\n refresh(): void {\n // jose's createRemoteJWKSet doesn't expose a public reset, but a\n // future kid miss will trigger a refetch (subject to cooldown). To\n // force an immediate refetch, callers can simply construct a new\n // `JwksCache` instance.\n }\n}\n","/**\n * `verifyHeimdallToken` — the 80%-case verify helper.\n *\n * Wraps `jose.jwtVerify` with:\n * - Sensible defaults (algorithm allow-list, clockTolerance)\n * - Typed claim payload (`HeimdallClaims`)\n * - Translation of jose errors into our typed error hierarchy\n */\n\nimport { jwtVerify, type JWTPayload } from \"jose\";\n\nimport {\n JwtAudienceMismatchError,\n JwtExpiredError,\n JwtInvalidError,\n JwtIssuerMismatchError,\n JwtNotYetValidError,\n JwksKeyNotFoundError,\n JwksFetchError,\n JwtVerifyError,\n} from \"./errors.js\";\nimport type { HeimdallGetKeyFn } from \"./jwks-cache.js\";\n\n/**\n * Claims that a Heimdall-issued EndUser access token is expected to\n * carry. Unknown claims pass through as `string | number | unknown`\n * (jose's `JWTPayload` is open-ended) — callers can intersect with\n * their own custom-claim type if they've configured Heimdall to add\n * extras.\n */\nexport interface HeimdallClaims extends JWTPayload {\n /** EndUser id. */\n sub: string;\n /** App slug the token was issued for. */\n iss: string;\n /** Audience — usually the app slug or oauth client_id. */\n aud?: string | string[];\n /** Standard exp/iat/nbf. */\n exp: number;\n iat: number;\n nbf?: number;\n /** JWT id — present on refreshable tokens. */\n jti?: string;\n /** Role assigned by Heimdall, if any. */\n role?: string;\n /** Permission keys the EndUser is authorized for. */\n permissions?: string[];\n /** Email on the EndUser profile, when claimed. */\n email?: string;\n /** Whether the email is verified. */\n email_verified?: boolean;\n}\n\nexport interface VerifyOptions {\n /** Expected `iss` claim. Defaults to the value set on the consumer scope. */\n issuer?: string | string[];\n /** Expected `aud` claim. If unset (and unset on the scope), aud check is skipped. */\n audience?: string | string[];\n /** Allowed JWS algorithms. Default ['ES256', 'RS256', 'EdDSA']. */\n algorithms?: string[];\n /**\n * Acceptable clock skew. Number = seconds, string = jose duration\n * (`\"30s\"`, `\"2m\"`, ...). Default 5 seconds.\n */\n clockTolerance?: string | number;\n /** Additional claims that must be present (non-empty) on the token. */\n requiredClaims?: string[];\n /** Override the verify time. Default `Date.now()`. */\n currentDate?: Date;\n /** Maximum token age — passed straight to jose. */\n maxTokenAge?: string | number;\n}\n\n/**\n * Verify a Heimdall-issued JWT against a JWKS resolver.\n *\n * @param token The compact-form JWT (header.payload.signature)\n * @param getKey A jose-compatible key resolver — pass\n * `scope.jwks.getKey` from a `ConsumerScope`\n * @param opts Defaults supplied by the scope; override here\n * for one-off cases.\n */\nexport async function verifyHeimdallToken(\n token: string,\n getKey: HeimdallGetKeyFn,\n opts: VerifyOptions = {},\n): Promise<HeimdallClaims> {\n try {\n const { payload } = await jwtVerify(token, getKey, {\n algorithms: opts.algorithms ?? [\"ES256\", \"RS256\", \"EdDSA\"],\n issuer: opts.issuer,\n audience: opts.audience,\n clockTolerance: opts.clockTolerance ?? 5,\n requiredClaims: opts.requiredClaims,\n currentDate: opts.currentDate,\n maxTokenAge: opts.maxTokenAge,\n });\n return payload as HeimdallClaims;\n } catch (err) {\n throw translateJoseError(err);\n }\n}\n\nfunction translateJoseError(err: unknown): JwtVerifyError {\n // Bubble up our own typed errors unchanged (JwksCache may have already\n // wrapped network / kid-miss failures).\n if (\n err instanceof JwksKeyNotFoundError ||\n err instanceof JwksFetchError ||\n err instanceof JwtVerifyError\n ) {\n return err;\n }\n\n // jose errors are instance-of-able but importing them all clutters\n // the file; use the `code` field that every jose error carries.\n const code = (err as { code?: string } | undefined)?.code ?? \"\";\n const message = (err as Error | undefined)?.message ?? \"JWT verification failed\";\n\n switch (code) {\n case \"ERR_JWT_EXPIRED\":\n return new JwtExpiredError(message, undefined, { cause: err });\n case \"ERR_JWT_CLAIM_VALIDATION_FAILED\": {\n // jose merges iss/aud/nbf mismatches under one code; route by claim\n const claim = (err as { claim?: string } | undefined)?.claim;\n if (claim === \"iss\") return new JwtIssuerMismatchError(message, { cause: err });\n if (claim === \"aud\") return new JwtAudienceMismatchError(message, { cause: err });\n if (claim === \"nbf\") return new JwtNotYetValidError(message, { cause: err });\n return new JwtInvalidError(message, { cause: err });\n }\n case \"ERR_JWS_SIGNATURE_VERIFICATION_FAILED\":\n case \"ERR_JWS_INVALID\":\n case \"ERR_JWT_INVALID\":\n return new JwtInvalidError(message, { cause: err });\n default:\n return new JwtInvalidError(message, { cause: err });\n }\n}\n","/**\n * ConsumerScope — every request under `/{appSlug}/v1/...`.\n *\n * Returned by `heimdall.consumer(appSlug)`. The appSlug is pre-bound\n * so callers don't repeat it; each resource namespace (`auth`, `me`,\n * `verify`, `oauth`) forwards into the matching kubb-generated client\n * function with the slug injected.\n *\n * JWT verification + JWKS resolution live here too — they're scoped to\n * a single app's JWKS endpoint, so binding them to the consumer is the\n * right ergonomic shape.\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\n\nimport { consumerAuthControllerSignin } from \"../_generated/clients/consumerAuth/consumerAuthControllerSignin.js\";\n// consumerAuthControllerSignup is bypassed (kubb requires a `headers.authorization`\n// arg that conflicts with our HTTP client's auth-middleware injection).\nimport { consumerAuthControllerRefresh } from \"../_generated/clients/consumerAuth/consumerAuthControllerRefresh.js\";\nimport { consumerAuthControllerLogout } from \"../_generated/clients/consumerAuth/consumerAuthControllerLogout.js\";\nimport { consumerAuthControllerRequestPasswordReset } from \"../_generated/clients/consumerAuth/consumerAuthControllerRequestPasswordReset.js\";\nimport { consumerAuthControllerResetPassword } from \"../_generated/clients/consumerAuth/consumerAuthControllerResetPassword.js\";\nimport { consumerIdpControllerNativeSignIn } from \"../_generated/clients/consumerOauthSignIn/consumerIdpControllerNativeSignIn.js\";\n\n// consumerMe — all six endpoints have spec bugs (appSlug not declared\n// in spec parameters[] despite being in the URL); use callDirect below.\n\nimport { consumerVerifyControllerVerify } from \"../_generated/clients/consumerVerify/consumerVerifyControllerVerify.js\";\nimport { consumerVerifyControllerAuthorize } from \"../_generated/clients/consumerVerify/consumerVerifyControllerAuthorize.js\";\nimport { consumerVerifyControllerAuthorizeBatch } from \"../_generated/clients/consumerVerify/consumerVerifyControllerAuthorizeBatch.js\";\n\nimport { consumerOAuthControllerClientCredentials } from \"../_generated/clients/consumerOauthM2m/consumerOAuthControllerClientCredentials.js\";\n\nimport type { ConsumerSigninDto } from \"../_generated/types/ConsumerSigninDto.js\";\nimport type { ConsumerSignupDto } from \"../_generated/types/ConsumerSignupDto.js\";\nimport type { ConsumerRefreshDto } from \"../_generated/types/ConsumerRefreshDto.js\";\nimport type { ConsumerLogoutDto } from \"../_generated/types/ConsumerLogoutDto.js\";\nimport type { ConsumerRequestPasswordResetDto } from \"../_generated/types/ConsumerRequestPasswordResetDto.js\";\nimport type { ConsumerResetPasswordDto } from \"../_generated/types/ConsumerResetPasswordDto.js\";\nimport type { UpdateMeDto } from \"../_generated/types/UpdateMeDto.js\";\nimport type { VerifyBody } from \"../_generated/types/VerifyBody.js\";\nimport type { AuthorizeBody } from \"../_generated/types/AuthorizeBody.js\";\nimport type { AuthorizeBatchBody } from \"../_generated/types/AuthorizeBatchBody.js\";\nimport type { ClientCredentialsDto } from \"../_generated/types/ClientCredentialsDto.js\";\nimport type { IdpNativeSigninDto } from \"../_generated/types/IdpNativeSigninDto.js\";\nimport type { ConsumerIdpControllerNativeSignInPathParamsProviderEnumKey } from \"../_generated/types/consumerOauthSignIn/ConsumerIdpControllerNativeSignIn.js\";\n\nimport { JwksCache } from \"../jwt/jwks-cache.js\";\nimport { verifyHeimdallToken, type VerifyOptions, type HeimdallClaims } from \"../jwt/verify.js\";\n\nexport interface ConsumerScopeInternals {\n client: Client;\n baseUrl: string;\n /** Custom fetch — forwarded to the JWKS cache so tests / undici / proxies work. */\n fetch?: typeof fetch;\n}\n\nexport class ConsumerScope {\n /** The appSlug bound to this scope. */\n public readonly appSlug: string;\n\n /** Default iss claim expected on tokens issued by this app's Heimdall instance. */\n public readonly expectedIssuer: string;\n\n /** Default aud claim. Undefined unless the caller sets it (skip aud check). */\n public readonly expectedAudience: string | undefined;\n\n /** jose-compatible JWKS resolver. Drop into `jose.jwtVerify`, passport-jwt, etc. */\n public readonly jwks: JwksCache;\n\n private readonly client: Client;\n\n constructor(\n appSlug: string,\n internals: ConsumerScopeInternals,\n opts: { audience?: string; jwksTtlMs?: number } = {},\n ) {\n this.appSlug = appSlug;\n this.client = internals.client;\n this.expectedIssuer = `${internals.baseUrl}/${appSlug}`;\n this.expectedAudience = opts.audience;\n this.jwks = new JwksCache({\n url: new URL(`/${appSlug}/v1/.well-known/jwks.json`, internals.baseUrl),\n ttlMs: opts.jwksTtlMs,\n fetch: internals.fetch,\n });\n }\n\n /**\n * Direct HTTP escape hatch for endpoints whose spec is buggy\n * (path declares `{appSlug}` but parameters[] omits it). Tracked\n * upstream; remove once the spec is fixed.\n */\n private async callDirect<T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n url: string,\n body?: unknown,\n params?: Record<string, unknown>,\n ): Promise<T> {\n const res = await this.client<T>({ method, url, data: body, params });\n return res.data;\n }\n\n /** Verify a Heimdall-issued JWT against this app's JWKS. */\n verifyToken(token: string, opts: VerifyOptions = {}): Promise<HeimdallClaims> {\n return verifyHeimdallToken(token, this.jwks.getKey, {\n issuer: this.expectedIssuer,\n audience: this.expectedAudience,\n ...opts,\n });\n }\n\n // ─────────────────────────────────────────────────────────────\n // Auth — sign-in/up flows, refresh, password reset\n // ─────────────────────────────────────────────────────────────\n readonly auth = {\n signin: (data: ConsumerSigninDto) =>\n consumerAuthControllerSignin(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * Signup may require a Platform API Key when the app has\n * `signup_requires_pak: true`. Configure that on the Heimdall\n * instance (`new Heimdall({ auth: { type: \"apiKey\", key: \"...\" } })`)\n * — our HTTP client attaches the Authorization header automatically.\n */\n signup: (data: ConsumerSignupDto) =>\n this.callDirect<unknown>(\n \"POST\",\n `/${this.appSlug}/v1/auth/signup`,\n data,\n ),\n\n refresh: (data: ConsumerRefreshDto) =>\n consumerAuthControllerRefresh(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n logout: (data: ConsumerLogoutDto) =>\n consumerAuthControllerLogout(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * PAK-required: caller must instantiate `Heimdall` with\n * `auth: { type: \"apiKey\", key: \"pcft_live_...\" }`. The\n * kubb-generated `headers.authorization` slot is a stub — the\n * HTTP client's auth middleware overrides whatever's passed.\n */\n requestReset: (data: ConsumerRequestPasswordResetDto) =>\n consumerAuthControllerRequestPasswordReset(\n { appSlug: this.appSlug, data, headers: { authorization: \"\" } },\n { client: this.client },\n ),\n\n resetPassword: (data: ConsumerResetPasswordDto) =>\n consumerAuthControllerResetPassword(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * Sign in / sign up with a provider ID token (native flow).\n *\n * Submit the identity token Apple (or Google, once enabled) issued\n * to a native client (iOS `ASAuthorizationController`, Google\n * Sign-In for iOS / Android). Heimdall verifies the signature\n * against the provider's JWKS, pins the issuer, checks the\n * audience against the app's configured native client ids,\n * recomputes `sha256(nonce)` and compares to the token's `nonce`\n * claim, then resolves or creates the EndUser. Same response\n * shape as `auth.signin`.\n *\n * Account linking: when an EndUser already exists with a verified\n * primary email matching the token's `email` claim, the app's\n * `oauth_link_policy` decides the outcome:\n * - `auto` (default): silently link the identity to the existing\n * account (provider claims `email_verified: true` AND the email\n * is not an Apple private relay).\n * - `confirm`: refuse with 409 `link_required`. UI should sign\n * the user in via their original method to bind.\n * - `reject`: refuse with 409 `account_exists_with_different_provider`.\n *\n * Apple's private-relay emails (`*@privaterelay.appleid.com`) are\n * persisted as-is on the EndUser's primary email contact and\n * never participate in auto-link.\n *\n * Apple sends the user's display name only on the FIRST sign-in.\n * Pass it through `user.name` on that call — Heimdall persists it\n * to the EndUser row. Subsequent sign-ins should omit `user`.\n */\n signinWithProvider: (args: {\n provider: ConsumerIdpControllerNativeSignInPathParamsProviderEnumKey;\n id_token: IdpNativeSigninDto[\"id_token\"];\n nonce: IdpNativeSigninDto[\"nonce\"];\n user?: IdpNativeSigninDto[\"user\"];\n }) =>\n consumerIdpControllerNativeSignIn(\n {\n appSlug: this.appSlug,\n provider: args.provider,\n data: { id_token: args.id_token, nonce: args.nonce, user: args.user },\n },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Me — the currently-signed-in EndUser's own resources\n // All six endpoints currently use callDirect to work around spec\n // bugs in heimdall.json (appSlug missing from parameters[]).\n // ─────────────────────────────────────────────────────────────\n readonly me = {\n getProfile: () =>\n this.callDirect<unknown>(\"GET\", `/${this.appSlug}/v1/me`),\n\n updateProfile: (data: UpdateMeDto) =>\n this.callDirect<unknown>(\"PATCH\", `/${this.appSlug}/v1/me`, data),\n\n listSessions: (params: Record<string, string | number> = {}) =>\n this.callDirect<unknown>(\n \"GET\",\n `/${this.appSlug}/v1/me/sessions`,\n undefined,\n params,\n ),\n\n revokeSession: (id: string) =>\n this.callDirect<void>(\"DELETE\", `/${this.appSlug}/v1/me/sessions/${id}`),\n\n getActivity: (params: Record<string, string | number> = {}) =>\n this.callDirect<unknown>(\n \"GET\",\n `/${this.appSlug}/v1/me/activity`,\n undefined,\n params,\n ),\n\n deleteAccount: () =>\n this.callDirect<void>(\"DELETE\", `/${this.appSlug}/v1/me`),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Verify — server-to-server token verification + authorization\n // (typically called by the customer's backend, not the user agent)\n // ─────────────────────────────────────────────────────────────\n readonly verify = {\n verify: (data: VerifyBody) =>\n consumerVerifyControllerVerify(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n authorize: (data: AuthorizeBody) =>\n consumerVerifyControllerAuthorize(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n authorizeBatch: (data: AuthorizeBatchBody) =>\n consumerVerifyControllerAuthorizeBatch(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // OAuth M2M — client_credentials grant for service-to-service tokens\n // ─────────────────────────────────────────────────────────────\n readonly oauth = {\n clientCredentials: (data: ClientCredentialsDto) =>\n consumerOAuthControllerClientCredentials(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n };\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListMyAppsQueryResponse,\n AppControllerListMyAppsQueryParams,\n} from \"../../types/apps/AppControllerListMyApps.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListMyAppsUrl() {\n const res = { method: \"GET\", url: `/v1/apps` as const };\n return res;\n}\n\n/**\n * @summary List apps the current PlatformUser is a member of. Pass `workspaceId` to scope the result to a single workspace — required from the per-workspace console page so cross-tenant memberships do not leak.\n * {@link /v1/apps}\n */\nexport async function appControllerListMyApps(\n { params }: { params: AppControllerListMyAppsQueryParams },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? {\n limit: params.limit,\n cursor: params.cursor,\n workspace_id: params.workspaceId,\n }\n : undefined;\n\n const res = await request<\n AppControllerListMyAppsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListMyAppsUrl().url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerCreateAppMutationRequest,\n AppControllerCreateAppMutationResponse,\n AppControllerCreateAppHeaderParams,\n AppControllerCreateApp400,\n AppControllerCreateApp403,\n AppControllerCreateApp409,\n} from \"../../types/apps/AppControllerCreateApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerCreateAppUrl() {\n const res = { method: \"POST\", url: `/v1/apps` as const };\n return res;\n}\n\n/**\n * @summary Create a new Heimdall app owned by the caller\n * {@link /v1/apps}\n */\nexport async function appControllerCreateApp(\n {\n data,\n headers,\n }: {\n data: AppControllerCreateAppMutationRequest;\n headers?: AppControllerCreateAppHeaderParams;\n },\n config: Partial<RequestConfig<AppControllerCreateAppMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n AppControllerCreateAppMutationResponse,\n ResponseErrorConfig<\n | AppControllerCreateApp400\n | AppControllerCreateApp403\n | AppControllerCreateApp409\n >,\n AppControllerCreateAppMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerCreateAppUrl().url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerAcceptInviteMutationRequest,\n AppControllerAcceptInviteMutationResponse,\n} from \"../../types/apps/AppControllerAcceptInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerAcceptInviteUrl() {\n const res = { method: \"POST\", url: `/v1/apps/invites/accept` as const };\n return res;\n}\n\n/**\n * @summary Accept an app invite by code\n * {@link /v1/apps/invites/accept}\n */\nexport async function appControllerAcceptInvite(\n { data }: { data: AppControllerAcceptInviteMutationRequest },\n config: Partial<RequestConfig<AppControllerAcceptInviteMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerAcceptInviteMutationResponse,\n ResponseErrorConfig<Error>,\n AppControllerAcceptInviteMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerAcceptInviteUrl().url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n StatsControllerGetMyStatsQueryResponse,\n StatsControllerGetMyStatsQueryParams,\n} from \"../../types/platformStats/StatsControllerGetMyStats.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getStatsControllerGetMyStatsUrl() {\n const res = { method: \"GET\", url: `/v1/stats/me` as const };\n return res;\n}\n\n/**\n * @description Returns total apps the caller belongs to, end-users across those apps, and active API keys across those apps. Pass `workspaceId` to scope the counts to a single workspace — required from the dashboard so cross-tenant memberships do not bleed into the totals.\n * @summary Aggregate counts for the signed-in PlatformUser\n * {@link /v1/stats/me}\n */\nexport async function statsControllerGetMyStats(\n { params }: { params: StatsControllerGetMyStatsQueryParams },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? { workspace_id: params.workspaceId }\n : undefined;\n\n const res = await request<\n StatsControllerGetMyStatsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getStatsControllerGetMyStatsUrl().url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * `@productcraft/heimdall` — typed SDK for the ProductCraft Heimdall API.\n *\n * Three caller contexts:\n * 1. Workspace-wide admin → methods on the Heimdall instance itself\n * 2. App-scoped admin → `heimdall.app(appId).{endUsers,roles,...}`\n * 3. Consumer-side (BFF) → `heimdall.consumer(appSlug).{auth,me,...}`\n *\n * Plus JWT verification on consumer scopes:\n * `heimdall.consumer(slug).verifyToken(jwt)`\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\nimport { PC_BASE_URL, type PCAuth, type PCClientConfig } from \"@productcraft/core\";\n\nimport { makeHeimdallHttpClient, HeimdallHttpError } from \"./_http.js\";\nimport { AppScope } from \"./scopes/app.js\";\nimport { ConsumerScope } from \"./scopes/consumer.js\";\n\n// Workspace-level operations\nimport { appControllerListMyApps } from \"./_generated/clients/apps/appControllerListMyApps.js\";\nimport { appControllerCreateApp } from \"./_generated/clients/apps/appControllerCreateApp.js\";\nimport { appControllerAcceptInvite } from \"./_generated/clients/apps/appControllerAcceptInvite.js\";\n\nimport { statsControllerGetMyStats } from \"./_generated/clients/platformStats/statsControllerGetMyStats.js\";\n\n// DTOs\nimport type { CreateAppDto } from \"./_generated/types/CreateAppDto.js\";\nimport type { AcceptInviteDto } from \"./_generated/types/AcceptInviteDto.js\";\nimport type { AppControllerListMyAppsQueryParams } from \"./_generated/types/apps/AppControllerListMyApps.js\";\nimport type { StatsControllerGetMyStatsQueryParams } from \"./_generated/types/platformStats/StatsControllerGetMyStats.js\";\n\nexport interface HeimdallConfig extends PCClientConfig {\n /**\n * Override the default `audience` claim expected on tokens verified\n * via `consumer(slug).verifyToken(...)`. Per-call override is also\n * available on `verifyToken`'s options.\n */\n expectedAudience?: string;\n /** Per-app JWKS cache lifetime in ms. Default 10 minutes. */\n jwksTtlMs?: number;\n}\n\nexport class Heimdall {\n private readonly client: Client;\n private readonly baseUrl: string;\n private readonly fetch: typeof fetch | undefined;\n private readonly jwtConfig: { audience?: string; jwksTtlMs?: number };\n\n constructor(config: HeimdallConfig = {}) {\n this.baseUrl = config.baseUrl ?? PC_BASE_URL.heimdall;\n this.fetch = config.fetch;\n this.client = makeHeimdallHttpClient({\n baseUrl: this.baseUrl,\n auth: config.auth,\n fetch: this.fetch,\n });\n this.jwtConfig = {\n audience: config.expectedAudience,\n jwksTtlMs: config.jwksTtlMs,\n };\n }\n\n /**\n * Returns an `AppScope` bound to the given appId. All operations under\n * `/v1/apps/{appId}/...` are exposed as resource namespaces on the\n * returned object.\n */\n app(appId: string): AppScope {\n return new AppScope(appId, this.client);\n }\n\n /**\n * Returns a `ConsumerScope` bound to the given appSlug. Exposes the\n * `/{appSlug}/v1/...` surface (sign-in, sign-up, me, verify, oauth)\n * and the JWT-verify helper for tokens issued by this app.\n */\n consumer(appSlug: string): ConsumerScope {\n return new ConsumerScope(\n appSlug,\n { client: this.client, baseUrl: this.baseUrl, fetch: this.fetch },\n this.jwtConfig,\n );\n }\n\n // ─────────────────────────────────────────────────────────────\n // Workspace-wide apps surface\n // (other admin operations are under `app(appId).*` once an app exists)\n // ─────────────────────────────────────────────────────────────\n readonly apps = {\n /** List apps the caller's workspace can see. */\n list: (params: Partial<AppControllerListMyAppsQueryParams> = {}) =>\n appControllerListMyApps(\n { params: params as AppControllerListMyAppsQueryParams },\n { client: this.client },\n ),\n\n /** Create a new app under the caller's workspace. */\n create: (data: CreateAppDto) =>\n appControllerCreateApp({ data }, { client: this.client }),\n\n /** Accept a workspace invite to join an existing app. */\n acceptInvite: (data: AcceptInviteDto) =>\n appControllerAcceptInvite({ data }, { client: this.client }),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Platform stats\n //\n // Workspace-level IdP admin (`/v1/idp/*`) was removed from the API\n // when consumer-side OAuth moved to per-app `auth_config_provider`\n // rows. Configure providers via the per-app auth-config endpoints\n // (`app(appId).authConfig.*`) and consume them client-side through\n // `consumer(slug).auth.signinWithProvider({ ... })`.\n // ─────────────────────────────────────────────────────────────\n readonly stats = {\n /**\n * Get the signed-in PlatformUser's aggregate counts. Pass\n * `workspaceId` to scope to a single workspace; omit to total\n * across every workspace the caller belongs to.\n */\n get: (params: Partial<StatsControllerGetMyStatsQueryParams> = {}) =>\n statsControllerGetMyStats(\n { params: params as StatsControllerGetMyStatsQueryParams },\n { client: this.client },\n ),\n };\n}\n\n// ─── Re-exports ────────────────────────────────────────────────\nexport { AppScope, ConsumerScope, HeimdallHttpError };\nexport type { PCAuth, PCClientConfig };\n\nexport {\n JwksCache,\n type HeimdallClaims,\n type VerifyOptions,\n verifyHeimdallToken,\n JwtVerifyError,\n JwtInvalidError,\n JwtExpiredError,\n JwtNotYetValidError,\n JwtIssuerMismatchError,\n JwtAudienceMismatchError,\n JwksKeyNotFoundError,\n JwksFetchError,\n} from \"./jwt/index.js\";\n\n// Re-export the most commonly-used request/response DTOs so callers\n// can `import type { ConsumerSigninDto } from \"@productcraft/heimdall\"`.\nexport type { ConsumerSigninDto } from \"./_generated/types/ConsumerSigninDto.js\";\nexport type { ConsumerSignupDto } from \"./_generated/types/ConsumerSignupDto.js\";\nexport type { ConsumerTokenResponseDto } from \"./_generated/types/ConsumerTokenResponseDto.js\";\nexport type { ConsumerRefreshDto } from \"./_generated/types/ConsumerRefreshDto.js\";\nexport type { ConsumerLogoutDto } from \"./_generated/types/ConsumerLogoutDto.js\";\nexport type { ConsumerRequestPasswordResetDto } from \"./_generated/types/ConsumerRequestPasswordResetDto.js\";\nexport type { ConsumerResetPasswordDto } from \"./_generated/types/ConsumerResetPasswordDto.js\";\nexport type { UpdateMeDto } from \"./_generated/types/UpdateMeDto.js\";\nexport type { VerifyBody } from \"./_generated/types/VerifyBody.js\";\nexport type { AuthorizeBody } from \"./_generated/types/AuthorizeBody.js\";\nexport type { AuthorizeBatchBody } from \"./_generated/types/AuthorizeBatchBody.js\";\nexport type { ClientCredentialsDto } from \"./_generated/types/ClientCredentialsDto.js\";\nexport type { CreateAppDto } from \"./_generated/types/CreateAppDto.js\";\nexport type { UpdateAppDto } from \"./_generated/types/UpdateAppDto.js\";\nexport type { UpdateAppStatusDto } from \"./_generated/types/UpdateAppStatusDto.js\";\nexport type { UpdateAuthConfigDto } from \"./_generated/types/UpdateAuthConfigDto.js\";\nexport type { CreateInviteDto } from \"./_generated/types/CreateInviteDto.js\";\nexport type { AcceptInviteDto } from \"./_generated/types/AcceptInviteDto.js\";\nexport type { UpdateEndUserDto } from \"./_generated/types/UpdateEndUserDto.js\";\nexport type { UpdateEndUserRoleDto } from \"./_generated/types/UpdateEndUserRoleDto.js\";\nexport type { UpdateEndUserStatusDto } from \"./_generated/types/UpdateEndUserStatusDto.js\";\nexport type { CreateRoleDto } from \"./_generated/types/CreateRoleDto.js\";\nexport type { UpdateRoleDto } from \"./_generated/types/UpdateRoleDto.js\";\nexport type { AssignRoleDto } from \"./_generated/types/AssignRoleDto.js\";\nexport type { SetPermissionsDto } from \"./_generated/types/SetPermissionsDto.js\";\nexport type { CreatePermissionDto } from \"./_generated/types/CreatePermissionDto.js\";\nexport type { CreateApiKeyDto } from \"./_generated/types/CreateApiKeyDto.js\";\nexport type { CreateM2MClientDto } from \"./_generated/types/CreateM2MClientDto.js\";\nexport type { UpdateM2MClientDto } from \"./_generated/types/UpdateM2MClientDto.js\";\nexport type { SetScopesDto } from \"./_generated/types/SetScopesDto.js\";\nexport type { IdpNativeSigninDto } from \"./_generated/types/IdpNativeSigninDto.js\";\nexport type { IdpNativeUserHintDto } from \"./_generated/types/IdpNativeUserHintDto.js\";\nexport type { IdpTokenResponseDto } from \"./_generated/types/IdpTokenResponseDto.js\";\n"]}
1
+ {"version":3,"sources":["../src/_http.ts","../../../node_modules/.pnpm/@kubb+plugin-client@4.37.8_@kubb+fabric-core@0.14.0_@kubb+react-fabric@0.14.0/node_modules/@kubb/plugin-client/src/clients/fetch.ts","../src/_generated/clients/apps/appControllerGetApp.ts","../src/_generated/clients/apps/appControllerUpdateApp.ts","../src/_generated/clients/apps/appControllerDeleteApp.ts","../src/_generated/clients/apps/appControllerUpdateAppStatus.ts","../src/_generated/clients/apps/authConfigControllerGetConfig.ts","../src/_generated/clients/apps/authConfigControllerUpdateConfig.ts","../src/_generated/clients/apps/appControllerListInvites.ts","../src/_generated/clients/apps/appControllerCreateInvite.ts","../src/_generated/clients/apps/appControllerRevokeInvite.ts","../src/_generated/clients/apps/appControllerListMembers.ts","../src/_generated/clients/apps/appControllerRemoveMember.ts","../src/_generated/clients/endUsers/endUserControllerListEndUsers.ts","../src/_generated/clients/endUsers/endUserControllerGetEndUser.ts","../src/_generated/clients/endUsers/endUserControllerUpdateEndUser.ts","../src/_generated/clients/endUsers/endUserControllerDeleteEndUser.ts","../src/_generated/clients/endUsers/endUserControllerUpdateRole.ts","../src/_generated/clients/endUsers/endUserControllerUpdateStatus.ts","../src/_generated/clients/roles/roleControllerListRoles.ts","../src/_generated/clients/roles/roleControllerCreateRole.ts","../src/_generated/clients/roles/roleControllerAssignRole.ts","../src/_generated/clients/roles/roleControllerSetPermissions.ts","../src/_generated/clients/roles/roleControllerListPermissions.ts","../src/_generated/clients/permissions/permissionControllerListPermissions.ts","../src/_generated/clients/permissions/permissionControllerCreatePermission.ts","../src/_generated/clients/permissions/permissionControllerDeletePermission.ts","../src/_generated/clients/apiKeys/apiKeyControllerListApiKeys.ts","../src/_generated/clients/apiKeys/apiKeyControllerCreateApiKey.ts","../src/_generated/clients/apiKeys/apiKeyControllerDeleteApiKey.ts","../src/_generated/clients/credentials/M2MControllerListClients.ts","../src/_generated/clients/credentials/M2MControllerCreateClient.ts","../src/_generated/clients/credentials/M2MControllerGetClient.ts","../src/_generated/clients/credentials/M2MControllerUpdateClient.ts","../src/_generated/clients/credentials/M2MControllerDeleteClient.ts","../src/_generated/clients/credentials/M2MControllerRotateSecret.ts","../src/_generated/clients/credentials/M2MControllerSetScopes.ts","../src/_generated/clients/appAudit/appAuditControllerGetAuditLogs.ts","../src/scopes/app.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerSignin.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerRefresh.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerLogout.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerRequestPasswordReset.ts","../src/_generated/clients/consumerAuth/consumerAuthControllerResetPassword.ts","../src/_generated/clients/consumerOauthSignIn/consumerIdpControllerNativeSignIn.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerVerify.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerAuthorize.ts","../src/_generated/clients/consumerVerify/consumerVerifyControllerAuthorizeBatch.ts","../src/_generated/clients/consumerOauthM2m/consumerOAuthControllerClientCredentials.ts","../src/jwt/errors.ts","../src/jwt/jwks-cache.ts","../src/jwt/verify.ts","../src/scopes/consumer.ts","../src/_generated/clients/apps/appControllerListMyApps.ts","../src/_generated/clients/apps/appControllerCreateApp.ts","../src/_generated/clients/apps/appControllerAcceptInvite.ts","../src/_generated/clients/platformStats/statsControllerGetMyStats.ts","../src/index.ts"],"names":["client","customFetch","createRemoteJWKSet","joseErrors","jwtVerify","PC_BASE_URL"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Custom HTTP client passed to kubb-generated request functions.\n *\n * Each generated client function accepts an optional `{ client }`\n * override matching kubb's `Client` shape:\n * <TData, TError, TVars>(config: RequestConfig<TVars>) => Promise<ResponseConfig<TData>>\n *\n * We construct one per `Heimdall` instance — bound to that instance's\n * baseUrl + auth credential — so generated functions don't need to\n * know anything about authentication or environment selection.\n */\n\nimport type { PCAuth } from \"@productcraft/core\";\nimport type {\n Client,\n RequestConfig,\n ResponseConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nexport interface HeimdallHttpClientOptions {\n baseUrl: string;\n auth?: PCAuth;\n fetch?: typeof fetch;\n}\n\n/** Thrown for any non-2xx response; `response.data` is the parsed body. */\nexport class HeimdallHttpError<TData = unknown> extends Error {\n public readonly status: number;\n public readonly statusText: string;\n public readonly data: TData;\n\n constructor(response: ResponseConfig<TData>) {\n super(\n `Heimdall request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"HeimdallHttpError\";\n this.status = response.status;\n this.statusText = response.statusText;\n this.data = response.data;\n }\n}\n\nfunction applyAuthHeader(headers: Headers, auth: PCAuth | undefined): void {\n if (!auth) return;\n switch (auth.type) {\n case \"apiKey\":\n headers.set(\"Authorization\", `Bearer ${auth.key}`);\n break;\n case \"bearer\":\n headers.set(\"Authorization\", `Bearer ${auth.token}`);\n break;\n case \"cookie\":\n headers.set(\"Cookie\", `auth_token=${auth.value}`);\n break;\n }\n}\n\nfunction buildUrl(baseUrl: string, path: string, params: unknown): URL {\n const url = new URL(path, baseUrl);\n if (params && typeof params === \"object\") {\n for (const [k, v] of Object.entries(params as Record<string, unknown>)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v)) {\n for (const item of v) url.searchParams.append(k, String(item));\n } else {\n url.searchParams.set(k, String(v));\n }\n }\n }\n return url;\n}\n\nexport function makeHeimdallHttpClient(\n options: HeimdallHttpClientOptions,\n): Client {\n const fetchImpl = options.fetch ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\n \"@productcraft/heimdall: no `fetch` available — pass `fetch` in the config or run on Node 18+\",\n );\n }\n\n // Generic shape mirrors kubb's `Client` type — 3 generics including a\n // _TError slot we don't use here; underscored to mark intentional.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return async function client<TData, _TError = unknown, TVars = unknown>(\n req: RequestConfig<TVars>,\n ): Promise<ResponseConfig<TData>> {\n const url = buildUrl(req.baseURL ?? options.baseUrl, req.url ?? \"\", req.params);\n const headers = new Headers(req.headers as Record<string, string> | undefined);\n applyAuthHeader(headers, options.auth);\n\n const hasBody = req.data !== undefined && req.method !== \"GET\" && req.method !== \"HEAD\";\n const isFormData = typeof FormData !== \"undefined\" && req.data instanceof FormData;\n if (hasBody && !isFormData && !headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n\n const body = hasBody\n ? isFormData\n ? (req.data as FormData)\n : JSON.stringify(req.data)\n : undefined;\n\n const res = await fetchImpl(url, {\n method: req.method,\n headers,\n body,\n credentials: req.credentials,\n signal: req.signal,\n });\n\n // Parse body honoring responseType (defaults to JSON when content-type is JSON-ish)\n let data: unknown = undefined;\n const ctype = res.headers.get(\"content-type\") ?? \"\";\n if (req.responseType === \"text\") {\n data = await res.text();\n } else if (req.responseType === \"blob\") {\n data = await res.blob();\n } else if (req.responseType === \"arraybuffer\") {\n data = await res.arrayBuffer();\n } else if (ctype.includes(\"application/json\") || ctype.includes(\"application/problem+json\")) {\n data = await res.json().catch(() => undefined);\n } else if (res.status !== 204) {\n const text = await res.text().catch(() => \"\");\n data = text || undefined;\n }\n\n const response: ResponseConfig<TData> = {\n data: data as TData,\n status: res.status,\n statusText: res.statusText,\n headers: res.headers,\n };\n\n if (!res.ok) throw new HeimdallHttpError(response);\n return response;\n };\n}\n","/**\n * RequestCredentials\n */\nexport type RequestCredentials = 'omit' | 'same-origin' | 'include'\n\n/**\n * Subset of FetchRequestConfig\n */\nexport type RequestConfig<TData = unknown> = {\n baseURL?: string\n url?: string\n method?: 'GET' | 'PUT' | 'PATCH' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD'\n params?: unknown\n data?: TData | FormData\n responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'\n signal?: AbortSignal\n headers?: [string, string][] | Record<string, string>\n credentials?: RequestCredentials\n}\n\n/**\n * Subset of FetchResponse\n */\nexport type ResponseConfig<TData = unknown> = {\n data: TData\n status: number\n statusText: string\n headers: Headers\n}\n\nlet _config: Partial<RequestConfig> = {}\n\nexport const getConfig = () => _config\n\nexport const setConfig = (config: Partial<RequestConfig>) => {\n _config = config\n return getConfig()\n}\n\nexport const mergeConfig = <T extends RequestConfig>(...configs: Array<Partial<T>>): Partial<T> => {\n return configs.reduce<Partial<T>>((merged, config) => {\n return {\n ...merged,\n ...config,\n headers: {\n ...(Array.isArray(merged.headers) ? Object.fromEntries(merged.headers) : merged.headers),\n ...(Array.isArray(config.headers) ? Object.fromEntries(config.headers) : config.headers),\n },\n }\n }, {})\n}\n\nexport type ResponseErrorConfig<TError = unknown> = TError\n\nexport type Client = <TResponseData, _TError = unknown, TRequestData = unknown>(config: RequestConfig<TRequestData>) => Promise<ResponseConfig<TResponseData>>\n\nexport const client = async <TResponseData, _TError = unknown, RequestData = unknown>(\n paramsConfig: RequestConfig<RequestData>,\n): Promise<ResponseConfig<TResponseData>> => {\n const normalizedParams = new URLSearchParams()\n\n const config = mergeConfig(getConfig(), paramsConfig)\n\n Object.entries(config.params || {}).forEach(([key, value]) => {\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : value.toString())\n }\n })\n\n let targetUrl = [config.baseURL, config.url].filter(Boolean).join('')\n\n if (config.params) {\n targetUrl += `?${normalizedParams}`\n }\n\n const response = await fetch(targetUrl, {\n credentials: config.credentials || 'same-origin',\n method: config.method?.toUpperCase(),\n body: config.data instanceof FormData ? config.data : JSON.stringify(config.data),\n signal: config.signal,\n headers: config.headers,\n })\n\n const data = [204, 205, 304].includes(response.status) || !response.body ? {} : await response.json()\n\n return {\n data: data as TResponseData,\n status: response.status,\n statusText: response.statusText,\n headers: response.headers as Headers,\n }\n}\n\nclient.getConfig = getConfig\nclient.setConfig = setConfig\n\nexport default client\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerGetAppQueryResponse,\n AppControllerGetAppPathParams,\n} from \"../../types/apps/AppControllerGetApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerGetAppUrl({\n appId,\n}: {\n appId: AppControllerGetAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Get app details\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerGetApp(\n { appId }: { appId: AppControllerGetAppPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerGetAppQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerGetAppUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerUpdateAppMutationRequest,\n AppControllerUpdateAppMutationResponse,\n AppControllerUpdateAppPathParams,\n} from \"../../types/apps/AppControllerUpdateApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerUpdateAppUrl({\n appId,\n}: {\n appId: AppControllerUpdateAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"PATCH\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Update app display name, slug, and metadata\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerUpdateApp(\n {\n appId,\n data,\n }: {\n appId: AppControllerUpdateAppPathParams[\"appId\"];\n data: AppControllerUpdateAppMutationRequest;\n },\n config: Partial<RequestConfig<AppControllerUpdateAppMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerUpdateAppMutationResponse,\n ResponseErrorConfig<Error>,\n AppControllerUpdateAppMutationRequest\n >({\n method: \"PATCH\",\n url: getAppControllerUpdateAppUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerDeleteAppMutationResponse,\n AppControllerDeleteAppPathParams,\n AppControllerDeleteApp403,\n AppControllerDeleteApp404,\n} from \"../../types/apps/AppControllerDeleteApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerDeleteAppUrl({\n appId,\n}: {\n appId: AppControllerDeleteAppPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"DELETE\", url: `/v1/apps/${app_id}` as const };\n return res;\n}\n\n/**\n * @summary Delete an app permanently\n * {@link /v1/apps/:app_id}\n */\nexport async function appControllerDeleteApp(\n { appId }: { appId: AppControllerDeleteAppPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerDeleteAppMutationResponse,\n ResponseErrorConfig<AppControllerDeleteApp403 | AppControllerDeleteApp404>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerDeleteAppUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerUpdateAppStatusMutationRequest,\n AppControllerUpdateAppStatusMutationResponse,\n AppControllerUpdateAppStatusPathParams,\n AppControllerUpdateAppStatus400,\n AppControllerUpdateAppStatus403,\n AppControllerUpdateAppStatus404,\n} from \"../../types/apps/AppControllerUpdateAppStatus.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerUpdateAppStatusUrl({\n appId,\n}: {\n appId: AppControllerUpdateAppStatusPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"PATCH\", url: `/v1/apps/${app_id}/status` as const };\n return res;\n}\n\n/**\n * @summary Update app status (active, suspended, archived)\n * {@link /v1/apps/:app_id/status}\n */\nexport async function appControllerUpdateAppStatus(\n {\n appId,\n data,\n }: {\n appId: AppControllerUpdateAppStatusPathParams[\"appId\"];\n data: AppControllerUpdateAppStatusMutationRequest;\n },\n config: Partial<\n RequestConfig<AppControllerUpdateAppStatusMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerUpdateAppStatusMutationResponse,\n ResponseErrorConfig<\n | AppControllerUpdateAppStatus400\n | AppControllerUpdateAppStatus403\n | AppControllerUpdateAppStatus404\n >,\n AppControllerUpdateAppStatusMutationRequest\n >({\n method: \"PATCH\",\n url: getAppControllerUpdateAppStatusUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AuthConfigControllerGetConfigQueryResponse,\n AuthConfigControllerGetConfigPathParams,\n} from \"../../types/apps/AuthConfigControllerGetConfig.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAuthConfigControllerGetConfigUrl({\n appId,\n}: {\n appId: AuthConfigControllerGetConfigPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/auth-config` as const };\n return res;\n}\n\n/**\n * @summary Get the per-app auth config (signup, signin, password policy, sessions).\n * {@link /v1/apps/:app_id/auth-config}\n */\nexport async function authConfigControllerGetConfig(\n { appId }: { appId: AuthConfigControllerGetConfigPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AuthConfigControllerGetConfigQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAuthConfigControllerGetConfigUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AuthConfigControllerUpdateConfigMutationRequest,\n AuthConfigControllerUpdateConfigMutationResponse,\n AuthConfigControllerUpdateConfigPathParams,\n} from \"../../types/apps/AuthConfigControllerUpdateConfig.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAuthConfigControllerUpdateConfigUrl({\n appId,\n}: {\n appId: AuthConfigControllerUpdateConfigPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/auth-config` as const,\n };\n return res;\n}\n\n/**\n * @summary Update the per-app auth config. Only fields you pass are changed.\n * {@link /v1/apps/:app_id/auth-config}\n */\nexport async function authConfigControllerUpdateConfig(\n {\n appId,\n data,\n }: {\n appId: AuthConfigControllerUpdateConfigPathParams[\"appId\"];\n data: AuthConfigControllerUpdateConfigMutationRequest;\n },\n config: Partial<\n RequestConfig<AuthConfigControllerUpdateConfigMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AuthConfigControllerUpdateConfigMutationResponse,\n ResponseErrorConfig<Error>,\n AuthConfigControllerUpdateConfigMutationRequest\n >({\n method: \"PATCH\",\n url: getAuthConfigControllerUpdateConfigUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListInvitesQueryResponse,\n AppControllerListInvitesPathParams,\n AppControllerListInvitesQueryParams,\n} from \"../../types/apps/AppControllerListInvites.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListInvitesUrl({\n appId,\n}: {\n appId: AppControllerListInvitesPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/invites` as const };\n return res;\n}\n\n/**\n * @summary List app invites\n * {@link /v1/apps/:app_id/invites}\n */\nexport async function appControllerListInvites(\n {\n appId,\n params,\n }: {\n appId: AppControllerListInvitesPathParams[\"appId\"];\n params?: AppControllerListInvitesQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerListInvitesQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListInvitesUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerCreateInviteMutationRequest,\n AppControllerCreateInviteMutationResponse,\n AppControllerCreateInvitePathParams,\n AppControllerCreateInvite400,\n AppControllerCreateInvite403,\n AppControllerCreateInvite404,\n} from \"../../types/apps/AppControllerCreateInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerCreateInviteUrl({\n appId,\n}: {\n appId: AppControllerCreateInvitePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/invites` as const };\n return res;\n}\n\n/**\n * @summary Create an app invite\n * {@link /v1/apps/:app_id/invites}\n */\nexport async function appControllerCreateInvite(\n {\n appId,\n data,\n }: {\n appId: AppControllerCreateInvitePathParams[\"appId\"];\n data: AppControllerCreateInviteMutationRequest;\n },\n config: Partial<RequestConfig<AppControllerCreateInviteMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerCreateInviteMutationResponse,\n ResponseErrorConfig<\n | AppControllerCreateInvite400\n | AppControllerCreateInvite403\n | AppControllerCreateInvite404\n >,\n AppControllerCreateInviteMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerCreateInviteUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerRevokeInviteMutationResponse,\n AppControllerRevokeInvitePathParams,\n} from \"../../types/apps/AppControllerRevokeInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerRevokeInviteUrl({\n appId,\n inviteId,\n}: {\n appId: AppControllerRevokeInvitePathParams[\"appId\"];\n inviteId: AppControllerRevokeInvitePathParams[\"inviteId\"];\n}) {\n const app_id = appId;\n const invite_id = inviteId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/invites/${invite_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Revoke an app invite\n * {@link /v1/apps/:app_id/invites/:invite_id}\n */\nexport async function appControllerRevokeInvite(\n {\n appId,\n inviteId,\n }: {\n appId: AppControllerRevokeInvitePathParams[\"appId\"];\n inviteId: AppControllerRevokeInvitePathParams[\"inviteId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerRevokeInviteMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerRevokeInviteUrl({ appId, inviteId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListMembersQueryResponse,\n AppControllerListMembersPathParams,\n AppControllerListMembersQueryParams,\n} from \"../../types/apps/AppControllerListMembers.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListMembersUrl({\n appId,\n}: {\n appId: AppControllerListMembersPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/members` as const };\n return res;\n}\n\n/**\n * @summary List app members (PlatformUser view of EndUser memberships)\n * {@link /v1/apps/:app_id/members}\n */\nexport async function appControllerListMembers(\n {\n appId,\n params,\n }: {\n appId: AppControllerListMembersPathParams[\"appId\"];\n params?: AppControllerListMembersQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerListMembersQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListMembersUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerRemoveMemberMutationResponse,\n AppControllerRemoveMemberPathParams,\n} from \"../../types/apps/AppControllerRemoveMember.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerRemoveMemberUrl({\n appId,\n accountId,\n}: {\n appId: AppControllerRemoveMemberPathParams[\"appId\"];\n accountId: AppControllerRemoveMemberPathParams[\"accountId\"];\n}) {\n const app_id = appId;\n const account_id = accountId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/members/${account_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Remove a member from the app\n * {@link /v1/apps/:app_id/members/:account_id}\n */\nexport async function appControllerRemoveMember(\n {\n appId,\n accountId,\n }: {\n appId: AppControllerRemoveMemberPathParams[\"appId\"];\n accountId: AppControllerRemoveMemberPathParams[\"accountId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n AppControllerRemoveMemberMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getAppControllerRemoveMemberUrl({ appId, accountId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerListEndUsersQueryResponse,\n EndUserControllerListEndUsersPathParams,\n EndUserControllerListEndUsersQueryParams,\n} from \"../../types/endUsers/EndUserControllerListEndUsers.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerListEndUsersUrl({\n appId,\n}: {\n appId: EndUserControllerListEndUsersPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/end-users` as const };\n return res;\n}\n\n/**\n * @summary List end-users in this app (cursor-paginated).\n * {@link /v1/apps/:app_id/end-users}\n */\nexport async function endUserControllerListEndUsers(\n {\n appId,\n params,\n }: {\n appId: EndUserControllerListEndUsersPathParams[\"appId\"];\n params?: EndUserControllerListEndUsersQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerListEndUsersQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getEndUserControllerListEndUsersUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerGetEndUserQueryResponse,\n EndUserControllerGetEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerGetEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerGetEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerGetEndUserPathParams[\"appId\"];\n userId: EndUserControllerGetEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Get one end-user.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerGetEndUser(\n {\n appId,\n userId,\n }: {\n appId: EndUserControllerGetEndUserPathParams[\"appId\"];\n userId: EndUserControllerGetEndUserPathParams[\"userId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerGetEndUserQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getEndUserControllerGetEndUserUrl({ appId, userId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateEndUserMutationRequest,\n EndUserControllerUpdateEndUserMutationResponse,\n EndUserControllerUpdateEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateEndUserPathParams[\"appId\"];\n userId: EndUserControllerUpdateEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Update end-user display name or primary email.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerUpdateEndUser(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateEndUserPathParams[\"appId\"];\n userId: EndUserControllerUpdateEndUserPathParams[\"userId\"];\n data: EndUserControllerUpdateEndUserMutationRequest;\n },\n config: Partial<\n RequestConfig<EndUserControllerUpdateEndUserMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateEndUserMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateEndUserMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateEndUserUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerDeleteEndUserMutationResponse,\n EndUserControllerDeleteEndUserPathParams,\n} from \"../../types/endUsers/EndUserControllerDeleteEndUser.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerDeleteEndUserUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerDeleteEndUserPathParams[\"appId\"];\n userId: EndUserControllerDeleteEndUserPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/end-users/${user_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete an end-user permanently.\n * {@link /v1/apps/:app_id/end-users/:user_id}\n */\nexport async function endUserControllerDeleteEndUser(\n {\n appId,\n userId,\n }: {\n appId: EndUserControllerDeleteEndUserPathParams[\"appId\"];\n userId: EndUserControllerDeleteEndUserPathParams[\"userId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n EndUserControllerDeleteEndUserMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getEndUserControllerDeleteEndUserUrl({ appId, userId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateRoleMutationRequest,\n EndUserControllerUpdateRoleMutationResponse,\n EndUserControllerUpdateRolePathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateRoleUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateRolePathParams[\"appId\"];\n userId: EndUserControllerUpdateRolePathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}/role` as const,\n };\n return res;\n}\n\n/**\n * @summary Assign an end-user a role.\n * {@link /v1/apps/:app_id/end-users/:user_id/role}\n */\nexport async function endUserControllerUpdateRole(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateRolePathParams[\"appId\"];\n userId: EndUserControllerUpdateRolePathParams[\"userId\"];\n data: EndUserControllerUpdateRoleMutationRequest;\n },\n config: Partial<RequestConfig<EndUserControllerUpdateRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateRoleMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateRoleMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateRoleUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n EndUserControllerUpdateStatusMutationRequest,\n EndUserControllerUpdateStatusMutationResponse,\n EndUserControllerUpdateStatusPathParams,\n} from \"../../types/endUsers/EndUserControllerUpdateStatus.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getEndUserControllerUpdateStatusUrl({\n appId,\n userId,\n}: {\n appId: EndUserControllerUpdateStatusPathParams[\"appId\"];\n userId: EndUserControllerUpdateStatusPathParams[\"userId\"];\n}) {\n const app_id = appId;\n const user_id = userId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/end-users/${user_id}/status` as const,\n };\n return res;\n}\n\n/**\n * @summary Change end-user status (active / suspended / deactivated).\n * {@link /v1/apps/:app_id/end-users/:user_id/status}\n */\nexport async function endUserControllerUpdateStatus(\n {\n appId,\n userId,\n data,\n }: {\n appId: EndUserControllerUpdateStatusPathParams[\"appId\"];\n userId: EndUserControllerUpdateStatusPathParams[\"userId\"];\n data: EndUserControllerUpdateStatusMutationRequest;\n },\n config: Partial<\n RequestConfig<EndUserControllerUpdateStatusMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n EndUserControllerUpdateStatusMutationResponse,\n ResponseErrorConfig<Error>,\n EndUserControllerUpdateStatusMutationRequest\n >({\n method: \"PATCH\",\n url: getEndUserControllerUpdateStatusUrl({ appId, userId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerListRolesQueryResponse,\n RoleControllerListRolesPathParams,\n RoleControllerListRolesQueryParams,\n} from \"../../types/roles/RoleControllerListRoles.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerListRolesUrl({\n appId,\n}: {\n appId: RoleControllerListRolesPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/roles` as const };\n return res;\n}\n\n/**\n * @summary List all roles in an app\n * {@link /v1/apps/:app_id/roles}\n */\nexport async function roleControllerListRoles(\n {\n appId,\n params,\n }: {\n appId: RoleControllerListRolesPathParams[\"appId\"];\n params?: RoleControllerListRolesQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n RoleControllerListRolesQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getRoleControllerListRolesUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerCreateRoleMutationRequest,\n RoleControllerCreateRoleMutationResponse,\n RoleControllerCreateRolePathParams,\n} from \"../../types/roles/RoleControllerCreateRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerCreateRoleUrl({\n appId,\n}: {\n appId: RoleControllerCreateRolePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/roles` as const };\n return res;\n}\n\n/**\n * @summary Create a new role (no permissions yet — set them via PUT /:roleName/permissions)\n * {@link /v1/apps/:app_id/roles}\n */\nexport async function roleControllerCreateRole(\n {\n appId,\n data,\n }: {\n appId: RoleControllerCreateRolePathParams[\"appId\"];\n data: RoleControllerCreateRoleMutationRequest;\n },\n config: Partial<RequestConfig<RoleControllerCreateRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerCreateRoleMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerCreateRoleMutationRequest\n >({\n method: \"POST\",\n url: getRoleControllerCreateRoleUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerAssignRoleMutationRequest,\n RoleControllerAssignRoleMutationResponse,\n RoleControllerAssignRolePathParams,\n} from \"../../types/roles/RoleControllerAssignRole.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerAssignRoleUrl({\n appId,\n}: {\n appId: RoleControllerAssignRolePathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/roles/assign` as const,\n };\n return res;\n}\n\n/**\n * @summary Assign a role to a user\n * {@link /v1/apps/:app_id/roles/assign}\n */\nexport async function roleControllerAssignRole(\n {\n appId,\n data,\n }: {\n appId: RoleControllerAssignRolePathParams[\"appId\"];\n data: RoleControllerAssignRoleMutationRequest;\n },\n config: Partial<RequestConfig<RoleControllerAssignRoleMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerAssignRoleMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerAssignRoleMutationRequest\n >({\n method: \"POST\",\n url: getRoleControllerAssignRoleUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerSetPermissionsMutationRequest,\n RoleControllerSetPermissionsMutationResponse,\n RoleControllerSetPermissionsPathParams,\n} from \"../../types/roles/RoleControllerSetPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerSetPermissionsUrl({\n appId,\n roleName,\n}: {\n appId: RoleControllerSetPermissionsPathParams[\"appId\"];\n roleName: RoleControllerSetPermissionsPathParams[\"roleName\"];\n}) {\n const app_id = appId;\n const role_name = roleName;\n const res = {\n method: \"PUT\",\n url: `/v1/apps/${app_id}/roles/${role_name}/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary Set permissions for a role (caller-narrowed: caller must hold every requested permission)\n * {@link /v1/apps/:app_id/roles/:role_name/permissions}\n */\nexport async function roleControllerSetPermissions(\n {\n appId,\n roleName,\n data,\n }: {\n appId: RoleControllerSetPermissionsPathParams[\"appId\"];\n roleName: RoleControllerSetPermissionsPathParams[\"roleName\"];\n data: RoleControllerSetPermissionsMutationRequest;\n },\n config: Partial<\n RequestConfig<RoleControllerSetPermissionsMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n RoleControllerSetPermissionsMutationResponse,\n ResponseErrorConfig<Error>,\n RoleControllerSetPermissionsMutationRequest\n >({\n method: \"PUT\",\n url: getRoleControllerSetPermissionsUrl({ appId, roleName }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n RoleControllerListPermissionsQueryResponse,\n RoleControllerListPermissionsPathParams,\n} from \"../../types/roles/RoleControllerListPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getRoleControllerListPermissionsUrl({\n appId,\n}: {\n appId: RoleControllerListPermissionsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/roles/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary List all available permissions\n * {@link /v1/apps/:app_id/roles/permissions}\n */\nexport async function roleControllerListPermissions(\n { appId }: { appId: RoleControllerListPermissionsPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n RoleControllerListPermissionsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getRoleControllerListPermissionsUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerListPermissionsQueryResponse,\n PermissionControllerListPermissionsPathParams,\n} from \"../../types/permissions/PermissionControllerListPermissions.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerListPermissionsUrl({\n appId,\n}: {\n appId: PermissionControllerListPermissionsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/permissions` as const };\n return res;\n}\n\n/**\n * @summary List all permissions (system + custom)\n * {@link /v1/apps/:app_id/permissions}\n */\nexport async function permissionControllerListPermissions(\n { appId }: { appId: PermissionControllerListPermissionsPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n PermissionControllerListPermissionsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getPermissionControllerListPermissionsUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerCreatePermissionMutationRequest,\n PermissionControllerCreatePermissionMutationResponse,\n PermissionControllerCreatePermissionPathParams,\n} from \"../../types/permissions/PermissionControllerCreatePermission.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerCreatePermissionUrl({\n appId,\n}: {\n appId: PermissionControllerCreatePermissionPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/permissions` as const,\n };\n return res;\n}\n\n/**\n * @summary Create a custom permission\n * {@link /v1/apps/:app_id/permissions}\n */\nexport async function permissionControllerCreatePermission(\n {\n appId,\n data,\n }: {\n appId: PermissionControllerCreatePermissionPathParams[\"appId\"];\n data: PermissionControllerCreatePermissionMutationRequest;\n },\n config: Partial<\n RequestConfig<PermissionControllerCreatePermissionMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n PermissionControllerCreatePermissionMutationResponse,\n ResponseErrorConfig<Error>,\n PermissionControllerCreatePermissionMutationRequest\n >({\n method: \"POST\",\n url: getPermissionControllerCreatePermissionUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n PermissionControllerDeletePermissionMutationResponse,\n PermissionControllerDeletePermissionPathParams,\n} from \"../../types/permissions/PermissionControllerDeletePermission.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getPermissionControllerDeletePermissionUrl({\n appId,\n permissionKey,\n}: {\n appId: PermissionControllerDeletePermissionPathParams[\"appId\"];\n permissionKey: PermissionControllerDeletePermissionPathParams[\"permissionKey\"];\n}) {\n const app_id = appId;\n const permission_key = permissionKey;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/permissions/${permission_key}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete a custom permission\n * {@link /v1/apps/:app_id/permissions/:permission_key}\n */\nexport async function permissionControllerDeletePermission(\n {\n appId,\n permissionKey,\n }: {\n appId: PermissionControllerDeletePermissionPathParams[\"appId\"];\n permissionKey: PermissionControllerDeletePermissionPathParams[\"permissionKey\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n PermissionControllerDeletePermissionMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getPermissionControllerDeletePermissionUrl({\n appId,\n permissionKey,\n }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerListApiKeysQueryResponse,\n ApiKeyControllerListApiKeysPathParams,\n} from \"../../types/apiKeys/ApiKeyControllerListApiKeys.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerListApiKeysUrl({\n appId,\n}: {\n appId: ApiKeyControllerListApiKeysPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/api-keys` as const };\n return res;\n}\n\n/**\n * @summary List API keys for an app (no raw secret).\n * {@link /v1/apps/:app_id/api-keys}\n */\nexport async function apiKeyControllerListApiKeys(\n { appId }: { appId: ApiKeyControllerListApiKeysPathParams[\"appId\"] },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n ApiKeyControllerListApiKeysQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getApiKeyControllerListApiKeysUrl({ appId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerCreateApiKeyMutationRequest,\n ApiKeyControllerCreateApiKeyMutationResponse,\n ApiKeyControllerCreateApiKeyPathParams,\n ApiKeyControllerCreateApiKeyHeaderParams,\n} from \"../../types/apiKeys/ApiKeyControllerCreateApiKey.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerCreateApiKeyUrl({\n appId,\n}: {\n appId: ApiKeyControllerCreateApiKeyPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"POST\", url: `/v1/apps/${app_id}/api-keys` as const };\n return res;\n}\n\n/**\n * @summary Mint a new hdk_live_* API key with an explicit permission scope. The raw key is returned ONCE.\n * {@link /v1/apps/:app_id/api-keys}\n */\nexport async function apiKeyControllerCreateApiKey(\n {\n appId,\n data,\n headers,\n }: {\n appId: ApiKeyControllerCreateApiKeyPathParams[\"appId\"];\n data: ApiKeyControllerCreateApiKeyMutationRequest;\n headers?: ApiKeyControllerCreateApiKeyHeaderParams;\n },\n config: Partial<\n RequestConfig<ApiKeyControllerCreateApiKeyMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n ApiKeyControllerCreateApiKeyMutationResponse,\n ResponseErrorConfig<Error>,\n ApiKeyControllerCreateApiKeyMutationRequest\n >({\n method: \"POST\",\n url: getApiKeyControllerCreateApiKeyUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ApiKeyControllerDeleteApiKeyMutationResponse,\n ApiKeyControllerDeleteApiKeyPathParams,\n} from \"../../types/apiKeys/ApiKeyControllerDeleteApiKey.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getApiKeyControllerDeleteApiKeyUrl({\n appId,\n keyId,\n}: {\n appId: ApiKeyControllerDeleteApiKeyPathParams[\"appId\"];\n keyId: ApiKeyControllerDeleteApiKeyPathParams[\"keyId\"];\n}) {\n const app_id = appId;\n const key_id = keyId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/api-keys/${key_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Revoke (delete) an API key.\n * {@link /v1/apps/:app_id/api-keys/:key_id}\n */\nexport async function apiKeyControllerDeleteApiKey(\n {\n appId,\n keyId,\n }: {\n appId: ApiKeyControllerDeleteApiKeyPathParams[\"appId\"];\n keyId: ApiKeyControllerDeleteApiKeyPathParams[\"keyId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n ApiKeyControllerDeleteApiKeyMutationResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"DELETE\",\n url: getApiKeyControllerDeleteApiKeyUrl({ appId, keyId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerListClientsQueryResponse,\n M2MControllerListClientsPathParams,\n M2MControllerListClientsQueryParams,\n} from \"../../types/credentials/M2MControllerListClients.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerListClientsUrl({\n appId,\n}: {\n appId: M2MControllerListClientsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/credentials` as const };\n return res;\n}\n\n/**\n * @summary List M2M clients\n * {@link /v1/apps/:app_id/credentials}\n */\nexport async function M2MControllerListClients(\n {\n appId,\n params,\n }: {\n appId: M2MControllerListClientsPathParams[\"appId\"];\n params?: M2MControllerListClientsQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerListClientsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getM2MControllerListClientsUrl({ appId }).url.toString(),\n params,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerCreateClientMutationRequest,\n M2MControllerCreateClientMutationResponse,\n M2MControllerCreateClientPathParams,\n M2MControllerCreateClientHeaderParams,\n M2MControllerCreateClient400,\n M2MControllerCreateClient403,\n M2MControllerCreateClient404,\n} from \"../../types/credentials/M2MControllerCreateClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerCreateClientUrl({\n appId,\n}: {\n appId: M2MControllerCreateClientPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/credentials` as const,\n };\n return res;\n}\n\n/**\n * @summary Create a new M2M client\n * {@link /v1/apps/:app_id/credentials}\n */\nexport async function M2MControllerCreateClient(\n {\n appId,\n data,\n headers,\n }: {\n appId: M2MControllerCreateClientPathParams[\"appId\"];\n data: M2MControllerCreateClientMutationRequest;\n headers?: M2MControllerCreateClientHeaderParams;\n },\n config: Partial<RequestConfig<M2MControllerCreateClientMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerCreateClientMutationResponse,\n ResponseErrorConfig<\n | M2MControllerCreateClient400\n | M2MControllerCreateClient403\n | M2MControllerCreateClient404\n >,\n M2MControllerCreateClientMutationRequest\n >({\n method: \"POST\",\n url: getM2MControllerCreateClientUrl({ appId }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerGetClientQueryResponse,\n M2MControllerGetClientPathParams,\n} from \"../../types/credentials/M2MControllerGetClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerGetClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerGetClientPathParams[\"appId\"];\n clientId: M2MControllerGetClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"GET\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Get M2M client details\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerGetClient(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerGetClientPathParams[\"appId\"];\n clientId: M2MControllerGetClientPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerGetClientQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getM2MControllerGetClientUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerUpdateClientMutationRequest,\n M2MControllerUpdateClientMutationResponse,\n M2MControllerUpdateClientPathParams,\n} from \"../../types/credentials/M2MControllerUpdateClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerUpdateClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerUpdateClientPathParams[\"appId\"];\n clientId: M2MControllerUpdateClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"PATCH\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Update M2M client status\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerUpdateClient(\n {\n appId,\n clientId,\n data,\n }: {\n appId: M2MControllerUpdateClientPathParams[\"appId\"];\n clientId: M2MControllerUpdateClientPathParams[\"clientId\"];\n data: M2MControllerUpdateClientMutationRequest;\n },\n config: Partial<RequestConfig<M2MControllerUpdateClientMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerUpdateClientMutationResponse,\n ResponseErrorConfig<Error>,\n M2MControllerUpdateClientMutationRequest\n >({\n method: \"PATCH\",\n url: getM2MControllerUpdateClientUrl({ appId, clientId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerDeleteClientMutationResponse,\n M2MControllerDeleteClientPathParams,\n M2MControllerDeleteClient403,\n M2MControllerDeleteClient404,\n} from \"../../types/credentials/M2MControllerDeleteClient.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerDeleteClientUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerDeleteClientPathParams[\"appId\"];\n clientId: M2MControllerDeleteClientPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"DELETE\",\n url: `/v1/apps/${app_id}/credentials/${client_id}` as const,\n };\n return res;\n}\n\n/**\n * @summary Delete an M2M client\n * {@link /v1/apps/:app_id/credentials/:client_id}\n */\nexport async function M2MControllerDeleteClient(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerDeleteClientPathParams[\"appId\"];\n clientId: M2MControllerDeleteClientPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerDeleteClientMutationResponse,\n ResponseErrorConfig<\n M2MControllerDeleteClient403 | M2MControllerDeleteClient404\n >,\n unknown\n >({\n method: \"DELETE\",\n url: getM2MControllerDeleteClientUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerRotateSecretMutationResponse,\n M2MControllerRotateSecretPathParams,\n M2MControllerRotateSecret403,\n M2MControllerRotateSecret404,\n} from \"../../types/credentials/M2MControllerRotateSecret.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerRotateSecretUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerRotateSecretPathParams[\"appId\"];\n clientId: M2MControllerRotateSecretPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"POST\",\n url: `/v1/apps/${app_id}/credentials/${client_id}/rotate` as const,\n };\n return res;\n}\n\n/**\n * @summary Rotate M2M client secret\n * {@link /v1/apps/:app_id/credentials/:client_id/rotate}\n */\nexport async function M2MControllerRotateSecret(\n {\n appId,\n clientId,\n }: {\n appId: M2MControllerRotateSecretPathParams[\"appId\"];\n clientId: M2MControllerRotateSecretPathParams[\"clientId\"];\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const res = await request<\n M2MControllerRotateSecretMutationResponse,\n ResponseErrorConfig<\n M2MControllerRotateSecret403 | M2MControllerRotateSecret404\n >,\n unknown\n >({\n method: \"POST\",\n url: getM2MControllerRotateSecretUrl({ appId, clientId }).url.toString(),\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n M2MControllerSetScopesMutationRequest,\n M2MControllerSetScopesMutationResponse,\n M2MControllerSetScopesPathParams,\n} from \"../../types/credentials/M2MControllerSetScopes.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getM2MControllerSetScopesUrl({\n appId,\n clientId,\n}: {\n appId: M2MControllerSetScopesPathParams[\"appId\"];\n clientId: M2MControllerSetScopesPathParams[\"clientId\"];\n}) {\n const app_id = appId;\n const client_id = clientId;\n const res = {\n method: \"PUT\",\n url: `/v1/apps/${app_id}/credentials/${client_id}/scopes` as const,\n };\n return res;\n}\n\n/**\n * @summary Set scopes for an M2M client\n * {@link /v1/apps/:app_id/credentials/:client_id/scopes}\n */\nexport async function M2MControllerSetScopes(\n {\n appId,\n clientId,\n data,\n }: {\n appId: M2MControllerSetScopesPathParams[\"appId\"];\n clientId: M2MControllerSetScopesPathParams[\"clientId\"];\n data: M2MControllerSetScopesMutationRequest;\n },\n config: Partial<RequestConfig<M2MControllerSetScopesMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n M2MControllerSetScopesMutationResponse,\n ResponseErrorConfig<Error>,\n M2MControllerSetScopesMutationRequest\n >({\n method: \"PUT\",\n url: getM2MControllerSetScopesUrl({ appId, clientId }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppAuditControllerGetAuditLogsQueryResponse,\n AppAuditControllerGetAuditLogsPathParams,\n AppAuditControllerGetAuditLogsQueryParams,\n AppAuditControllerGetAuditLogs403,\n AppAuditControllerGetAuditLogs404,\n} from \"../../types/appAudit/AppAuditControllerGetAuditLogs.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppAuditControllerGetAuditLogsUrl({\n appId,\n}: {\n appId: AppAuditControllerGetAuditLogsPathParams[\"appId\"];\n}) {\n const app_id = appId;\n const res = { method: \"GET\", url: `/v1/apps/${app_id}/audit-logs` as const };\n return res;\n}\n\n/**\n * @summary Append-only audit log for this app. Filter by `?action=` and/or `?actor_id=`. 50/page (max 200), cursor-paginated.\n * {@link /v1/apps/:app_id/audit-logs}\n */\nexport async function appAuditControllerGetAuditLogs(\n {\n appId,\n params,\n }: {\n appId: AppAuditControllerGetAuditLogsPathParams[\"appId\"];\n params?: AppAuditControllerGetAuditLogsQueryParams;\n },\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? {\n limit: params.limit,\n cursor: params.cursor,\n action: params.action,\n actor_id: params.actorId,\n }\n : undefined;\n\n const res = await request<\n AppAuditControllerGetAuditLogsQueryResponse,\n ResponseErrorConfig<\n AppAuditControllerGetAuditLogs403 | AppAuditControllerGetAuditLogs404\n >,\n unknown\n >({\n method: \"GET\",\n url: getAppAuditControllerGetAuditLogsUrl({ appId }).url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * AppScope — every admin request under `/v1/apps/{appId}/...`.\n *\n * Returned by `heimdall.app(appId)`. Pre-binds the appId path param so\n * resource methods read like `app.endUsers.list()` rather than\n * `heimdall.endUsers.list({ appId })`. Methods delegate into the\n * kubb-generated client functions.\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\n\n// App-level meta operations (under the \"apps\" tag, scoped to {appId})\nimport { appControllerGetApp } from \"../_generated/clients/apps/appControllerGetApp.js\";\nimport { appControllerUpdateApp } from \"../_generated/clients/apps/appControllerUpdateApp.js\";\nimport { appControllerDeleteApp } from \"../_generated/clients/apps/appControllerDeleteApp.js\";\nimport { appControllerUpdateAppStatus } from \"../_generated/clients/apps/appControllerUpdateAppStatus.js\";\nimport { authConfigControllerGetConfig } from \"../_generated/clients/apps/authConfigControllerGetConfig.js\";\nimport { authConfigControllerUpdateConfig } from \"../_generated/clients/apps/authConfigControllerUpdateConfig.js\";\nimport { appControllerListInvites } from \"../_generated/clients/apps/appControllerListInvites.js\";\nimport { appControllerCreateInvite } from \"../_generated/clients/apps/appControllerCreateInvite.js\";\nimport { appControllerRevokeInvite } from \"../_generated/clients/apps/appControllerRevokeInvite.js\";\nimport { appControllerListMembers } from \"../_generated/clients/apps/appControllerListMembers.js\";\nimport { appControllerRemoveMember } from \"../_generated/clients/apps/appControllerRemoveMember.js\";\n\n// EndUsers — Note: `revokeAllSessions` skipped (spec bug, see callDirect below)\nimport { endUserControllerListEndUsers } from \"../_generated/clients/endUsers/endUserControllerListEndUsers.js\";\nimport { endUserControllerGetEndUser } from \"../_generated/clients/endUsers/endUserControllerGetEndUser.js\";\nimport { endUserControllerUpdateEndUser } from \"../_generated/clients/endUsers/endUserControllerUpdateEndUser.js\";\nimport { endUserControllerDeleteEndUser } from \"../_generated/clients/endUsers/endUserControllerDeleteEndUser.js\";\nimport { endUserControllerUpdateRole } from \"../_generated/clients/endUsers/endUserControllerUpdateRole.js\";\nimport { endUserControllerUpdateStatus } from \"../_generated/clients/endUsers/endUserControllerUpdateStatus.js\";\n\n// Roles — Note: get/update/delete by roleName skipped (spec bug — see callDirect)\nimport { roleControllerListRoles } from \"../_generated/clients/roles/roleControllerListRoles.js\";\nimport { roleControllerCreateRole } from \"../_generated/clients/roles/roleControllerCreateRole.js\";\nimport { roleControllerAssignRole } from \"../_generated/clients/roles/roleControllerAssignRole.js\";\nimport { roleControllerSetPermissions } from \"../_generated/clients/roles/roleControllerSetPermissions.js\";\nimport { roleControllerListPermissions } from \"../_generated/clients/roles/roleControllerListPermissions.js\";\n\n// Permissions\nimport { permissionControllerListPermissions } from \"../_generated/clients/permissions/permissionControllerListPermissions.js\";\nimport { permissionControllerCreatePermission } from \"../_generated/clients/permissions/permissionControllerCreatePermission.js\";\nimport { permissionControllerDeletePermission } from \"../_generated/clients/permissions/permissionControllerDeletePermission.js\";\n\n// API keys\nimport { apiKeyControllerListApiKeys } from \"../_generated/clients/apiKeys/apiKeyControllerListApiKeys.js\";\nimport { apiKeyControllerCreateApiKey } from \"../_generated/clients/apiKeys/apiKeyControllerCreateApiKey.js\";\nimport { apiKeyControllerDeleteApiKey } from \"../_generated/clients/apiKeys/apiKeyControllerDeleteApiKey.js\";\n\n// M2M client credentials\nimport { M2MControllerListClients } from \"../_generated/clients/credentials/M2MControllerListClients.js\";\nimport { M2MControllerCreateClient } from \"../_generated/clients/credentials/M2MControllerCreateClient.js\";\nimport { M2MControllerGetClient } from \"../_generated/clients/credentials/M2MControllerGetClient.js\";\nimport { M2MControllerUpdateClient } from \"../_generated/clients/credentials/M2MControllerUpdateClient.js\";\nimport { M2MControllerDeleteClient } from \"../_generated/clients/credentials/M2MControllerDeleteClient.js\";\nimport { M2MControllerRotateSecret } from \"../_generated/clients/credentials/M2MControllerRotateSecret.js\";\nimport { M2MControllerSetScopes } from \"../_generated/clients/credentials/M2MControllerSetScopes.js\";\n\n// Audit logs\nimport { appAuditControllerGetAuditLogs } from \"../_generated/clients/appAudit/appAuditControllerGetAuditLogs.js\";\n\n// DTOs\nimport type { UpdateAppDto } from \"../_generated/types/UpdateAppDto.js\";\nimport type { UpdateAppStatusDto } from \"../_generated/types/UpdateAppStatusDto.js\";\nimport type { UpdateAuthConfigDto } from \"../_generated/types/UpdateAuthConfigDto.js\";\nimport type { CreateInviteDto } from \"../_generated/types/CreateInviteDto.js\";\nimport type { UpdateEndUserDto } from \"../_generated/types/UpdateEndUserDto.js\";\nimport type { UpdateEndUserRoleDto } from \"../_generated/types/UpdateEndUserRoleDto.js\";\nimport type { UpdateEndUserStatusDto } from \"../_generated/types/UpdateEndUserStatusDto.js\";\nimport type { CreateRoleDto } from \"../_generated/types/CreateRoleDto.js\";\nimport type { UpdateRoleDto } from \"../_generated/types/UpdateRoleDto.js\";\nimport type { AssignRoleDto } from \"../_generated/types/AssignRoleDto.js\";\nimport type { SetPermissionsDto } from \"../_generated/types/SetPermissionsDto.js\";\nimport type { CreatePermissionDto } from \"../_generated/types/CreatePermissionDto.js\";\nimport type { CreateApiKeyDto } from \"../_generated/types/CreateApiKeyDto.js\";\nimport type { CreateM2MClientDto } from \"../_generated/types/CreateM2MClientDto.js\";\nimport type { UpdateM2MClientDto } from \"../_generated/types/UpdateM2MClientDto.js\";\nimport type { SetScopesDto } from \"../_generated/types/SetScopesDto.js\";\n\n// Query-param types\nimport type { AppControllerListInvitesQueryParams } from \"../_generated/types/apps/AppControllerListInvites.js\";\nimport type { AppControllerListMembersQueryParams } from \"../_generated/types/apps/AppControllerListMembers.js\";\nimport type { EndUserControllerListEndUsersQueryParams } from \"../_generated/types/endUsers/EndUserControllerListEndUsers.js\";\nimport type { AppAuditControllerGetAuditLogsQueryParams } from \"../_generated/types/appAudit/AppAuditControllerGetAuditLogs.js\";\nimport type { M2MControllerListClientsQueryParams } from \"../_generated/types/credentials/M2MControllerListClients.js\";\nimport type { RoleControllerListRolesQueryParams } from \"../_generated/types/roles/RoleControllerListRoles.js\";\n\nexport class AppScope {\n /** The appId bound to this scope. */\n public readonly appId: string;\n\n private readonly client: Client;\n\n constructor(appId: string, client: Client) {\n this.appId = appId;\n this.client = client;\n }\n\n /**\n * Direct HTTP escape hatch used to call endpoints whose spec is buggy\n * — currently those whose path declares `{appId}` but whose\n * `parameters[]` omits it, so the kubb-generated code leaves the\n * URL template unfilled. Tracked upstream; remove once the spec is\n * fixed and the per-call wrappers can move back to kubb's output.\n */\n private async callDirect<T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n url: string,\n body?: unknown,\n ): Promise<T> {\n const res = await this.client<T>({ method, url, data: body });\n return res.data;\n }\n\n // ─────────────────────────────────────────────────────────────\n // App meta — operations on the app record itself\n // ─────────────────────────────────────────────────────────────\n\n get = () =>\n appControllerGetApp({ appId: this.appId }, { client: this.client });\n\n update = (data: UpdateAppDto) =>\n appControllerUpdateApp({ appId: this.appId, data }, { client: this.client });\n\n delete = () =>\n appControllerDeleteApp({ appId: this.appId }, { client: this.client });\n\n updateStatus = (data: UpdateAppStatusDto) =>\n appControllerUpdateAppStatus(\n { appId: this.appId, data },\n { client: this.client },\n );\n\n // ─────────────────────────────────────────────────────────────\n // Auth config (workspace-side config for the app's auth surface)\n // ─────────────────────────────────────────────────────────────\n readonly authConfig = {\n get: () =>\n authConfigControllerGetConfig(\n { appId: this.appId },\n { client: this.client },\n ),\n update: (data: UpdateAuthConfigDto) =>\n authConfigControllerUpdateConfig(\n { appId: this.appId, data },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Invites (workspace members)\n // ─────────────────────────────────────────────────────────────\n readonly invites = {\n list: (params: Partial<AppControllerListInvitesQueryParams> = {}) =>\n appControllerListInvites(\n { appId: this.appId, params: params as AppControllerListInvitesQueryParams },\n { client: this.client },\n ),\n create: (data: CreateInviteDto) =>\n appControllerCreateInvite(\n { appId: this.appId, data },\n { client: this.client },\n ),\n revoke: (inviteId: string) =>\n appControllerRevokeInvite(\n { appId: this.appId, inviteId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Members (workspace seats on this app)\n // ─────────────────────────────────────────────────────────────\n readonly members = {\n list: (params: Partial<AppControllerListMembersQueryParams> = {}) =>\n appControllerListMembers(\n { appId: this.appId, params: params as AppControllerListMembersQueryParams },\n { client: this.client },\n ),\n remove: (accountId: string) =>\n appControllerRemoveMember(\n { appId: this.appId, accountId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // EndUsers (the app's authenticated users — Heimdall's bread + butter)\n // ─────────────────────────────────────────────────────────────\n readonly endUsers = {\n list: (params: Partial<EndUserControllerListEndUsersQueryParams> = {}) =>\n endUserControllerListEndUsers(\n { appId: this.appId, params: params as EndUserControllerListEndUsersQueryParams },\n { client: this.client },\n ),\n get: (userId: string) =>\n endUserControllerGetEndUser(\n { appId: this.appId, userId },\n { client: this.client },\n ),\n update: (userId: string, data: UpdateEndUserDto) =>\n endUserControllerUpdateEndUser(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n delete: (userId: string) =>\n endUserControllerDeleteEndUser(\n { appId: this.appId, userId },\n { client: this.client },\n ),\n updateRole: (userId: string, data: UpdateEndUserRoleDto) =>\n endUserControllerUpdateRole(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n updateStatus: (userId: string, data: UpdateEndUserStatusDto) =>\n endUserControllerUpdateStatus(\n { appId: this.appId, userId, data },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n revokeAllSessions: (userId: string) =>\n this.callDirect<void>(\n \"POST\",\n `/v1/apps/${this.appId}/end-users/${userId}/sessions/revoke-all`,\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Roles\n // ─────────────────────────────────────────────────────────────\n readonly roles = {\n list: (params: Partial<RoleControllerListRolesQueryParams> = {}) =>\n roleControllerListRoles(\n { appId: this.appId, params: params as RoleControllerListRolesQueryParams },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n get: (roleName: string) =>\n this.callDirect<unknown>(\"GET\", `/v1/apps/${this.appId}/roles/${roleName}`),\n create: (data: CreateRoleDto) =>\n roleControllerCreateRole(\n { appId: this.appId, data },\n { client: this.client },\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n update: (roleName: string, data: UpdateRoleDto) =>\n this.callDirect<unknown>(\n \"PATCH\",\n `/v1/apps/${this.appId}/roles/${roleName}`,\n data,\n ),\n /** Spec bug: appId missing in spec params (see callDirect). */\n delete: (roleName: string) =>\n this.callDirect<void>(\"DELETE\", `/v1/apps/${this.appId}/roles/${roleName}`),\n assign: (data: AssignRoleDto) =>\n roleControllerAssignRole(\n { appId: this.appId, data },\n { client: this.client },\n ),\n setPermissions: (roleName: string, data: SetPermissionsDto) =>\n roleControllerSetPermissions(\n { appId: this.appId, roleName, data },\n { client: this.client },\n ),\n listPermissions: () =>\n roleControllerListPermissions(\n { appId: this.appId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Permissions catalog\n // ─────────────────────────────────────────────────────────────\n readonly permissions = {\n list: () =>\n permissionControllerListPermissions(\n { appId: this.appId },\n { client: this.client },\n ),\n create: (data: CreatePermissionDto) =>\n permissionControllerCreatePermission(\n { appId: this.appId, data },\n { client: this.client },\n ),\n delete: (permissionKey: string) =>\n permissionControllerDeletePermission(\n { appId: this.appId, permissionKey },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // API keys (server-to-server platform keys for this app)\n // ─────────────────────────────────────────────────────────────\n readonly apiKeys = {\n list: () =>\n apiKeyControllerListApiKeys(\n { appId: this.appId },\n { client: this.client },\n ),\n create: (data: CreateApiKeyDto) =>\n apiKeyControllerCreateApiKey(\n { appId: this.appId, data },\n { client: this.client },\n ),\n delete: (keyId: string) =>\n apiKeyControllerDeleteApiKey(\n { appId: this.appId, keyId },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // M2M credentials (client_id + client_secret for service-to-service)\n // ─────────────────────────────────────────────────────────────\n readonly credentials = {\n list: (params: Partial<M2MControllerListClientsQueryParams> = {}) =>\n M2MControllerListClients(\n { appId: this.appId, params: params as M2MControllerListClientsQueryParams },\n { client: this.client },\n ),\n create: (data: CreateM2MClientDto) =>\n M2MControllerCreateClient(\n { appId: this.appId, data },\n { client: this.client },\n ),\n get: (clientId: string) =>\n M2MControllerGetClient(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n update: (clientId: string, data: UpdateM2MClientDto) =>\n M2MControllerUpdateClient(\n { appId: this.appId, clientId, data },\n { client: this.client },\n ),\n delete: (clientId: string) =>\n M2MControllerDeleteClient(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n rotateSecret: (clientId: string) =>\n M2MControllerRotateSecret(\n { appId: this.appId, clientId },\n { client: this.client },\n ),\n setScopes: (clientId: string, data: SetScopesDto) =>\n M2MControllerSetScopes(\n { appId: this.appId, clientId, data },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Audit logs\n // ─────────────────────────────────────────────────────────────\n readonly auditLogs = {\n list: (params: Partial<AppAuditControllerGetAuditLogsQueryParams> = {}) =>\n appAuditControllerGetAuditLogs(\n { appId: this.appId, params: params as AppAuditControllerGetAuditLogsQueryParams },\n { client: this.client },\n ),\n };\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerSigninMutationRequest,\n ConsumerAuthControllerSigninMutationResponse,\n ConsumerAuthControllerSigninPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerSignin.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerSigninUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerSigninPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/signin` as const };\n return res;\n}\n\n/**\n * @description Authenticate with username or verified primary email + password. When the account has no enabled MFA factors, returns a fresh access + refresh token pair (`ConsumerTokenResponseDto` shape). When the account has any enabled factor, returns an MFA challenge instead (`ConsumerMfaChallengeResponseDto` shape, `mfa_required: true`). In that case no session has been created yet — complete the challenge via `POST /auth/mfa/verify` (or `/auth/mfa/recover`) to receive the token pair.\n * @summary Sign in an EndUser\n * {@link /:app_slug/v1/auth/signin}\n */\nexport async function consumerAuthControllerSignin(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerSigninPathParams[\"appSlug\"];\n data: ConsumerAuthControllerSigninMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerSigninMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerSigninMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerSigninMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerSigninUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerRefreshMutationRequest,\n ConsumerAuthControllerRefreshMutationResponse,\n ConsumerAuthControllerRefreshPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerRefresh.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerRefreshUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerRefreshPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/refresh` as const };\n return res;\n}\n\n/**\n * @description Rotates the refresh token on every call — the previous refresh token is revoked, and re-using it triggers session revocation.\n * @summary Exchange a refresh token for a new access token\n * {@link /:app_slug/v1/auth/refresh}\n */\nexport async function consumerAuthControllerRefresh(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerRefreshPathParams[\"appSlug\"];\n data: ConsumerAuthControllerRefreshMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerRefreshMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerRefreshMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerRefreshMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerRefreshUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerLogoutMutationRequest,\n ConsumerAuthControllerLogoutMutationResponse,\n ConsumerAuthControllerLogoutPathParams,\n} from \"../../types/consumerAuth/ConsumerAuthControllerLogout.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerLogoutUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerLogoutPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/auth/logout` as const };\n return res;\n}\n\n/**\n * @description Destroys the session that owns the refresh token. The matching access token continues to verify until its TTL expires.\n * @summary Revoke a refresh token\n * {@link /:app_slug/v1/auth/logout}\n */\nexport async function consumerAuthControllerLogout(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerLogoutPathParams[\"appSlug\"];\n data: ConsumerAuthControllerLogoutMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerLogoutMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerLogoutMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerAuthControllerLogoutMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerLogoutUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerRequestPasswordResetMutationRequest,\n ConsumerAuthControllerRequestPasswordResetMutationResponse,\n ConsumerAuthControllerRequestPasswordResetPathParams,\n ConsumerAuthControllerRequestPasswordResetHeaderParams,\n ConsumerAuthControllerRequestPasswordReset400,\n ConsumerAuthControllerRequestPasswordReset401,\n ConsumerAuthControllerRequestPasswordReset403,\n} from \"../../types/consumerAuth/ConsumerAuthControllerRequestPasswordReset.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerRequestPasswordResetUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerRequestPasswordResetPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/request-password-reset` as const,\n };\n return res;\n}\n\n/**\n * @description Mints a fresh 6-digit password-reset code for the EndUser owning the named contact. Body must contain exactly one of `email` / `phone` — the contact must be verified (otherwise an attacker who registered an unverified contact could push a reset on another user's account, were the per-app email uniqueness ever breached). The reset itself is account-scoped (revokes all sessions, replaces password) — the contact only acts as the lookup key.\n * PAK-required: `heimdall.user.password-reset.create`. Returns `{ code, expires_at }` on success, `{}` on no-match (uniform shape prevents enumeration).\n * Renamed from /auth/request-reset.\n * @summary Mint a password-reset code (PAK-required)\n * {@link /:app_slug/v1/auth/request-password-reset}\n */\nexport async function consumerAuthControllerRequestPasswordReset(\n {\n appSlug,\n data,\n headers,\n }: {\n appSlug: ConsumerAuthControllerRequestPasswordResetPathParams[\"appSlug\"];\n data: ConsumerAuthControllerRequestPasswordResetMutationRequest;\n headers: ConsumerAuthControllerRequestPasswordResetHeaderParams;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerRequestPasswordResetMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerRequestPasswordResetMutationResponse,\n ResponseErrorConfig<\n | ConsumerAuthControllerRequestPasswordReset400\n | ConsumerAuthControllerRequestPasswordReset401\n | ConsumerAuthControllerRequestPasswordReset403\n >,\n ConsumerAuthControllerRequestPasswordResetMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerRequestPasswordResetUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...headers, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerAuthControllerResetPasswordMutationRequest,\n ConsumerAuthControllerResetPasswordMutationResponse,\n ConsumerAuthControllerResetPasswordPathParams,\n ConsumerAuthControllerResetPassword410,\n} from \"../../types/consumerAuth/ConsumerAuthControllerResetPassword.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerAuthControllerResetPasswordUrl({\n appSlug,\n}: {\n appSlug: ConsumerAuthControllerResetPasswordPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/reset-password` as const,\n };\n return res;\n}\n\n/**\n * @description Consumes the 6-digit reset code (single-use). On success the password is updated and every active session for the user is revoked.\n * @summary Submit a reset code + new password\n * {@link /:app_slug/v1/auth/reset-password}\n */\nexport async function consumerAuthControllerResetPassword(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerAuthControllerResetPasswordPathParams[\"appSlug\"];\n data: ConsumerAuthControllerResetPasswordMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerAuthControllerResetPasswordMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerAuthControllerResetPasswordMutationResponse,\n ResponseErrorConfig<ConsumerAuthControllerResetPassword410>,\n ConsumerAuthControllerResetPasswordMutationRequest\n >({\n method: \"POST\",\n url: getConsumerAuthControllerResetPasswordUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerIdpControllerNativeSignInMutationRequest,\n ConsumerIdpControllerNativeSignInMutationResponse,\n ConsumerIdpControllerNativeSignInPathParams,\n ConsumerIdpControllerNativeSignIn401,\n ConsumerIdpControllerNativeSignIn409,\n} from \"../../types/consumerOauthSignIn/ConsumerIdpControllerNativeSignIn.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerIdpControllerNativeSignInUrl({\n appSlug,\n provider,\n}: {\n appSlug: ConsumerIdpControllerNativeSignInPathParams[\"appSlug\"];\n provider: ConsumerIdpControllerNativeSignInPathParams[\"provider\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/auth/oauth/${provider}` as const,\n };\n return res;\n}\n\n/**\n * @description Submit the provider-issued ID token from a native client (iOS ASAuthorizationController, Google Sign-In for iOS / Android). Backend verifies the token signature, issuer, audience (against this app's configured native client ids), and nonce binding; consumes the nonce server-side to defeat in-window replay; resolves or creates the Heimdall account; mints access + refresh tokens with `amr=[\"oauth\", \"<provider>\"]`. Same response shape as `/auth/signin`.\n * @summary Sign in / sign up with a provider ID token (native flow)\n * {@link /:app_slug/v1/auth/oauth/:provider}\n */\nexport async function consumerIdpControllerNativeSignIn(\n {\n appSlug,\n provider,\n data,\n }: {\n appSlug: ConsumerIdpControllerNativeSignInPathParams[\"appSlug\"];\n provider: ConsumerIdpControllerNativeSignInPathParams[\"provider\"];\n data: ConsumerIdpControllerNativeSignInMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerIdpControllerNativeSignInMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerIdpControllerNativeSignInMutationResponse,\n ResponseErrorConfig<\n | ConsumerIdpControllerNativeSignIn401\n | ConsumerIdpControllerNativeSignIn409\n >,\n ConsumerIdpControllerNativeSignInMutationRequest\n >({\n method: \"POST\",\n url: getConsumerIdpControllerNativeSignInUrl({\n appSlug,\n provider,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerVerifyMutationRequest,\n ConsumerVerifyControllerVerifyMutationResponse,\n ConsumerVerifyControllerVerifyPathParams,\n ConsumerVerifyControllerVerifyHeaderParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerVerify.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerVerifyUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerVerifyPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/verify` as const };\n return res;\n}\n\n/**\n * @description Validates the JWT against the app's JWKS keys and returns `{ valid, principal }`. Use this when you need the full claims; use `/authorize` for a yes/no permission check.\n * Token source: `body.token` if provided, else the `Authorization: Bearer <jwt>` header. At least one must be present.\n * @summary Verify a token signature + return its principal\n * {@link /:app_slug/v1/verify}\n */\nexport async function consumerVerifyControllerVerify(\n {\n appSlug,\n data,\n headers,\n }: {\n appSlug: ConsumerVerifyControllerVerifyPathParams[\"appSlug\"];\n data: ConsumerVerifyControllerVerifyMutationRequest;\n headers: ConsumerVerifyControllerVerifyHeaderParams;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerVerifyMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerVerifyMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerVerifyMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerVerifyUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...headers, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerAuthorizeMutationRequest,\n ConsumerVerifyControllerAuthorizeMutationResponse,\n ConsumerVerifyControllerAuthorizePathParams,\n ConsumerVerifyControllerAuthorizeHeaderParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerAuthorize.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerAuthorizeUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerAuthorizePathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/authorize` as const };\n return res;\n}\n\n/**\n * @description Returns `{ authorized: boolean }`. Pass `permission` (string) for a single check, or `permissions` (array) when ALL must be held.\n * Token source: `body.token` if provided, else the `Authorization: Bearer <jwt>` header. At least one must be present.\n * @summary Verify a token + check one or more permissions\n * {@link /:app_slug/v1/authorize}\n */\nexport async function consumerVerifyControllerAuthorize(\n {\n appSlug,\n data,\n headers,\n }: {\n appSlug: ConsumerVerifyControllerAuthorizePathParams[\"appSlug\"];\n data: ConsumerVerifyControllerAuthorizeMutationRequest;\n headers: ConsumerVerifyControllerAuthorizeHeaderParams;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerAuthorizeMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerAuthorizeMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerAuthorizeMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerAuthorizeUrl({ appSlug }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...headers, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerVerifyControllerAuthorizeBatchMutationRequest,\n ConsumerVerifyControllerAuthorizeBatchMutationResponse,\n ConsumerVerifyControllerAuthorizeBatchPathParams,\n ConsumerVerifyControllerAuthorizeBatchHeaderParams,\n} from \"../../types/consumerVerify/ConsumerVerifyControllerAuthorizeBatch.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerVerifyControllerAuthorizeBatchUrl({\n appSlug,\n}: {\n appSlug: ConsumerVerifyControllerAuthorizeBatchPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = {\n method: \"POST\",\n url: `/${app_slug}/v1/authorize/batch` as const,\n };\n return res;\n}\n\n/**\n * @description Runs N permission checks against the same token in one call. Each check accepts `permission` (singular) or `permissions` (array — ALL must be held); pass an `id` to correlate results back to inputs. Each result reports `authorized` plus the missing permissions (if any).\n * Token source: `body.token` if provided, else the `Authorization: Bearer <jwt>` header. At least one must be present.\n * @summary Multi-permission authorization in a single round-trip\n * {@link /:app_slug/v1/authorize/batch}\n */\nexport async function consumerVerifyControllerAuthorizeBatch(\n {\n appSlug,\n data,\n headers,\n }: {\n appSlug: ConsumerVerifyControllerAuthorizeBatchPathParams[\"appSlug\"];\n data: ConsumerVerifyControllerAuthorizeBatchMutationRequest;\n headers: ConsumerVerifyControllerAuthorizeBatchHeaderParams;\n },\n config: Partial<\n RequestConfig<ConsumerVerifyControllerAuthorizeBatchMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerVerifyControllerAuthorizeBatchMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerVerifyControllerAuthorizeBatchMutationRequest\n >({\n method: \"POST\",\n url: getConsumerVerifyControllerAuthorizeBatchUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...headers, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n ConsumerOAuthControllerClientCredentialsMutationRequest,\n ConsumerOAuthControllerClientCredentialsMutationResponse,\n ConsumerOAuthControllerClientCredentialsPathParams,\n} from \"../../types/consumerOauthM2m/ConsumerOAuthControllerClientCredentials.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getConsumerOAuthControllerClientCredentialsUrl({\n appSlug,\n}: {\n appSlug: ConsumerOAuthControllerClientCredentialsPathParams[\"appSlug\"];\n}) {\n const app_slug = appSlug;\n const res = { method: \"POST\", url: `/${app_slug}/v1/oauth/token` as const };\n return res;\n}\n\n/**\n * @description Standard OAuth 2.0 client_credentials grant. Returns an app-scoped access token whose `scopes[]` claim is the union of the client's configured scopes. Use for service-to-service calls.\n * @summary Exchange client_credentials for an access token\n * {@link /:app_slug/v1/oauth/token}\n */\nexport async function consumerOAuthControllerClientCredentials(\n {\n appSlug,\n data,\n }: {\n appSlug: ConsumerOAuthControllerClientCredentialsPathParams[\"appSlug\"];\n data: ConsumerOAuthControllerClientCredentialsMutationRequest;\n },\n config: Partial<\n RequestConfig<ConsumerOAuthControllerClientCredentialsMutationRequest>\n > & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n ConsumerOAuthControllerClientCredentialsMutationResponse,\n ResponseErrorConfig<Error>,\n ConsumerOAuthControllerClientCredentialsMutationRequest\n >({\n method: \"POST\",\n url: getConsumerOAuthControllerClientCredentialsUrl({\n appSlug,\n }).url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Typed error hierarchy for JWT verification. All errors inherit from\n * `JwtVerifyError` so callers can do one `instanceof` to catch any\n * verify failure, or branch on more specific subclasses for UX.\n */\n\nexport class JwtVerifyError extends Error {\n public readonly code: string;\n\n constructor(code: string, message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = \"JwtVerifyError\";\n this.code = code;\n }\n}\n\n/** Signature didn't match, header malformed, or token structure invalid. */\nexport class JwtInvalidError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_INVALID\", message, options);\n this.name = \"JwtInvalidError\";\n }\n}\n\n/** Token's `exp` claim is in the past (allowing for clockTolerance). */\nexport class JwtExpiredError extends JwtVerifyError {\n public readonly expiredAt?: Date;\n constructor(message: string, expiredAt?: Date, options?: { cause?: unknown }) {\n super(\"ERR_JWT_EXPIRED\", message, options);\n this.name = \"JwtExpiredError\";\n this.expiredAt = expiredAt;\n }\n}\n\n/** Token's `nbf` is in the future. */\nexport class JwtNotYetValidError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_NOT_YET_VALID\", message, options);\n this.name = \"JwtNotYetValidError\";\n }\n}\n\n/** `iss` claim doesn't match the expected issuer. */\nexport class JwtIssuerMismatchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_ISS_MISMATCH\", message, options);\n this.name = \"JwtIssuerMismatchError\";\n }\n}\n\n/** `aud` claim doesn't match the expected audience. */\nexport class JwtAudienceMismatchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWT_AUD_MISMATCH\", message, options);\n this.name = \"JwtAudienceMismatchError\";\n }\n}\n\n/** The token's `kid` isn't in the JWKS (even after a forced refetch). */\nexport class JwksKeyNotFoundError extends JwtVerifyError {\n public readonly kid: string | undefined;\n constructor(kid: string | undefined, options?: { cause?: unknown }) {\n super(\n \"ERR_JWKS_KID_NOT_FOUND\",\n `JWKS has no key matching kid=${kid ?? \"(missing)\"}`,\n options,\n );\n this.name = \"JwksKeyNotFoundError\";\n this.kid = kid;\n }\n}\n\n/** Network / non-2xx fetching the JWKS endpoint. */\nexport class JwksFetchError extends JwtVerifyError {\n constructor(message: string, options?: { cause?: unknown }) {\n super(\"ERR_JWKS_FETCH\", message, options);\n this.name = \"JwksFetchError\";\n }\n}\n","/**\n * In-process JWKS cache for a single app's `/.well-known/jwks.json`.\n *\n * Thin wrapper over `jose.createRemoteJWKSet`, which already gives us:\n * - TTL-based cache (cacheMaxAge)\n * - Cooldown between failed fetches (cooldownDuration)\n * - Singleflight (concurrent verifies share one inflight fetch)\n * - Auto-refetch when the token's `kid` isn't in the cached JWKS\n * (rotation handling)\n *\n * We add:\n * - Translation of jose's internal `JWKSNoMatchingKey` /\n * `JWKSTimeout` / etc. errors into our typed `JwksKeyNotFoundError`\n * / `JwksFetchError`.\n * - A `refresh()` method for explicit cache busting (rare, but useful\n * for tests + manual rotation drills).\n *\n * Instances are returned by `ConsumerScope.jwks` and are jose-compatible\n * out of the box — `jose.jwtVerify(token, scope.jwks.getKey, ...)` works.\n */\n\nimport {\n createRemoteJWKSet,\n customFetch,\n errors as joseErrors,\n type CryptoKey,\n type JWTHeaderParameters,\n type FlattenedJWSInput,\n} from \"jose\";\n\nimport { JwksFetchError, JwksKeyNotFoundError } from \"./errors.js\";\n\nexport interface JwksCacheOptions {\n url: URL;\n /** Cache lifetime in ms. Default 10 minutes — same as jose's default. */\n ttlMs?: number;\n /** Min ms between failed fetches. Default 30 seconds. */\n cooldownMs?: number;\n /** Network timeout per fetch. Default 5 seconds. */\n timeoutMs?: number;\n /** Pin a custom fetch implementation (e.g. undici with retry, mock fetch in tests). */\n fetch?: typeof fetch;\n}\n\nexport type HeimdallGetKeyFn = (\n protectedHeader?: JWTHeaderParameters,\n token?: FlattenedJWSInput,\n) => Promise<CryptoKey>;\n\nexport class JwksCache {\n public readonly url: URL;\n private readonly _jose: HeimdallGetKeyFn;\n\n constructor(options: JwksCacheOptions) {\n this.url = options.url;\n // jose's customFetch is keyed by a symbol with a non-standard\n // signature (`(url: string, options) => Promise<Response>`). The\n // user-side `typeof fetch` we accept is more permissive; at runtime\n // the call shape is compatible, so cast through.\n const joseOpts: Record<string | symbol, unknown> = {\n cacheMaxAge: options.ttlMs ?? 10 * 60 * 1000,\n cooldownDuration: options.cooldownMs ?? 30_000,\n timeoutDuration: options.timeoutMs ?? 5_000,\n };\n if (options.fetch) {\n joseOpts[customFetch] = options.fetch;\n }\n this._jose = createRemoteJWKSet(\n options.url,\n joseOpts as Parameters<typeof createRemoteJWKSet>[1],\n ) as HeimdallGetKeyFn;\n }\n\n /**\n * Resolve a signing key for a given JWT header.\n * Bound as an arrow-function field so it can be passed around\n * (`jose.jwtVerify(token, cache.getKey, ...)`, passport-jwt, etc.)\n * without losing `this`.\n */\n readonly getKey: HeimdallGetKeyFn = async (header, input) => {\n try {\n return await this._jose(header, input);\n } catch (err) {\n if (err instanceof joseErrors.JWKSNoMatchingKey) {\n throw new JwksKeyNotFoundError(header?.kid, { cause: err });\n }\n if (\n err instanceof joseErrors.JWKSTimeout ||\n err instanceof joseErrors.JWKSInvalid ||\n err instanceof joseErrors.JOSEError\n ) {\n throw new JwksFetchError(\n `Failed to load JWKS from ${this.url.href}: ${err.message}`,\n { cause: err },\n );\n }\n throw err;\n }\n };\n\n /**\n * Force a refetch on the next verify. Useful in tests and for\n * external rotation drills — the normal flow self-heals because\n * jose auto-refetches on kid miss.\n */\n refresh(): void {\n // jose's createRemoteJWKSet doesn't expose a public reset, but a\n // future kid miss will trigger a refetch (subject to cooldown). To\n // force an immediate refetch, callers can simply construct a new\n // `JwksCache` instance.\n }\n}\n","/**\n * `verifyHeimdallToken` — the 80%-case verify helper.\n *\n * Wraps `jose.jwtVerify` with:\n * - Sensible defaults (algorithm allow-list, clockTolerance)\n * - Typed claim payload (`HeimdallClaims`)\n * - Translation of jose errors into our typed error hierarchy\n */\n\nimport { jwtVerify, type JWTPayload } from \"jose\";\n\nimport {\n JwtAudienceMismatchError,\n JwtExpiredError,\n JwtInvalidError,\n JwtIssuerMismatchError,\n JwtNotYetValidError,\n JwksKeyNotFoundError,\n JwksFetchError,\n JwtVerifyError,\n} from \"./errors.js\";\nimport type { HeimdallGetKeyFn } from \"./jwks-cache.js\";\n\n/**\n * Claims that a Heimdall-issued EndUser access token is expected to\n * carry. Unknown claims pass through as `string | number | unknown`\n * (jose's `JWTPayload` is open-ended) — callers can intersect with\n * their own custom-claim type if they've configured Heimdall to add\n * extras.\n */\nexport interface HeimdallClaims extends JWTPayload {\n /** EndUser id. */\n sub: string;\n /** App slug the token was issued for. */\n iss: string;\n /** Audience — usually the app slug or oauth client_id. */\n aud?: string | string[];\n /** Standard exp/iat/nbf. */\n exp: number;\n iat: number;\n nbf?: number;\n /** JWT id — present on refreshable tokens. */\n jti?: string;\n /** Role assigned by Heimdall, if any. */\n role?: string;\n /** Permission keys the EndUser is authorized for. */\n permissions?: string[];\n /** Email on the EndUser profile, when claimed. */\n email?: string;\n /** Whether the email is verified. */\n email_verified?: boolean;\n}\n\nexport interface VerifyOptions {\n /** Expected `iss` claim. Defaults to the value set on the consumer scope. */\n issuer?: string | string[];\n /** Expected `aud` claim. If unset (and unset on the scope), aud check is skipped. */\n audience?: string | string[];\n /** Allowed JWS algorithms. Default ['ES256', 'RS256', 'EdDSA']. */\n algorithms?: string[];\n /**\n * Acceptable clock skew. Number = seconds, string = jose duration\n * (`\"30s\"`, `\"2m\"`, ...). Default 5 seconds.\n */\n clockTolerance?: string | number;\n /** Additional claims that must be present (non-empty) on the token. */\n requiredClaims?: string[];\n /** Override the verify time. Default `Date.now()`. */\n currentDate?: Date;\n /** Maximum token age — passed straight to jose. */\n maxTokenAge?: string | number;\n}\n\n/**\n * Verify a Heimdall-issued JWT against a JWKS resolver.\n *\n * @param token The compact-form JWT (header.payload.signature)\n * @param getKey A jose-compatible key resolver — pass\n * `scope.jwks.getKey` from a `ConsumerScope`\n * @param opts Defaults supplied by the scope; override here\n * for one-off cases.\n */\nexport async function verifyHeimdallToken(\n token: string,\n getKey: HeimdallGetKeyFn,\n opts: VerifyOptions = {},\n): Promise<HeimdallClaims> {\n try {\n const { payload } = await jwtVerify(token, getKey, {\n algorithms: opts.algorithms ?? [\"ES256\", \"RS256\", \"EdDSA\"],\n issuer: opts.issuer,\n audience: opts.audience,\n clockTolerance: opts.clockTolerance ?? 5,\n requiredClaims: opts.requiredClaims,\n currentDate: opts.currentDate,\n maxTokenAge: opts.maxTokenAge,\n });\n return payload as HeimdallClaims;\n } catch (err) {\n throw translateJoseError(err);\n }\n}\n\nfunction translateJoseError(err: unknown): JwtVerifyError {\n // Bubble up our own typed errors unchanged (JwksCache may have already\n // wrapped network / kid-miss failures).\n if (\n err instanceof JwksKeyNotFoundError ||\n err instanceof JwksFetchError ||\n err instanceof JwtVerifyError\n ) {\n return err;\n }\n\n // jose errors are instance-of-able but importing them all clutters\n // the file; use the `code` field that every jose error carries.\n const code = (err as { code?: string } | undefined)?.code ?? \"\";\n const message = (err as Error | undefined)?.message ?? \"JWT verification failed\";\n\n switch (code) {\n case \"ERR_JWT_EXPIRED\":\n return new JwtExpiredError(message, undefined, { cause: err });\n case \"ERR_JWT_CLAIM_VALIDATION_FAILED\": {\n // jose merges iss/aud/nbf mismatches under one code; route by claim\n const claim = (err as { claim?: string } | undefined)?.claim;\n if (claim === \"iss\") return new JwtIssuerMismatchError(message, { cause: err });\n if (claim === \"aud\") return new JwtAudienceMismatchError(message, { cause: err });\n if (claim === \"nbf\") return new JwtNotYetValidError(message, { cause: err });\n return new JwtInvalidError(message, { cause: err });\n }\n case \"ERR_JWS_SIGNATURE_VERIFICATION_FAILED\":\n case \"ERR_JWS_INVALID\":\n case \"ERR_JWT_INVALID\":\n return new JwtInvalidError(message, { cause: err });\n default:\n return new JwtInvalidError(message, { cause: err });\n }\n}\n","/**\n * ConsumerScope — every request under `/{appSlug}/v1/...`.\n *\n * Returned by `heimdall.consumer(appSlug)`. The appSlug is pre-bound\n * so callers don't repeat it; each resource namespace (`auth`, `me`,\n * `verify`, `oauth`) forwards into the matching kubb-generated client\n * function with the slug injected.\n *\n * JWT verification + JWKS resolution live here too — they're scoped to\n * a single app's JWKS endpoint, so binding them to the consumer is the\n * right ergonomic shape.\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\n\nimport { consumerAuthControllerSignin } from \"../_generated/clients/consumerAuth/consumerAuthControllerSignin.js\";\n// consumerAuthControllerSignup is bypassed (kubb requires a `headers.authorization`\n// arg that conflicts with our HTTP client's auth-middleware injection).\nimport { consumerAuthControllerRefresh } from \"../_generated/clients/consumerAuth/consumerAuthControllerRefresh.js\";\nimport { consumerAuthControllerLogout } from \"../_generated/clients/consumerAuth/consumerAuthControllerLogout.js\";\nimport { consumerAuthControllerRequestPasswordReset } from \"../_generated/clients/consumerAuth/consumerAuthControllerRequestPasswordReset.js\";\nimport { consumerAuthControllerResetPassword } from \"../_generated/clients/consumerAuth/consumerAuthControllerResetPassword.js\";\nimport { consumerIdpControllerNativeSignIn } from \"../_generated/clients/consumerOauthSignIn/consumerIdpControllerNativeSignIn.js\";\n\n// consumerMe — all six endpoints have spec bugs (appSlug not declared\n// in spec parameters[] despite being in the URL); use callDirect below.\n\nimport { consumerVerifyControllerVerify } from \"../_generated/clients/consumerVerify/consumerVerifyControllerVerify.js\";\nimport { consumerVerifyControllerAuthorize } from \"../_generated/clients/consumerVerify/consumerVerifyControllerAuthorize.js\";\nimport { consumerVerifyControllerAuthorizeBatch } from \"../_generated/clients/consumerVerify/consumerVerifyControllerAuthorizeBatch.js\";\n\nimport { consumerOAuthControllerClientCredentials } from \"../_generated/clients/consumerOauthM2m/consumerOAuthControllerClientCredentials.js\";\n\nimport type { ConsumerSigninDto } from \"../_generated/types/ConsumerSigninDto.js\";\nimport type { ConsumerSignupDto } from \"../_generated/types/ConsumerSignupDto.js\";\nimport type { ConsumerRefreshDto } from \"../_generated/types/ConsumerRefreshDto.js\";\nimport type { ConsumerLogoutDto } from \"../_generated/types/ConsumerLogoutDto.js\";\nimport type { ConsumerRequestPasswordResetDto } from \"../_generated/types/ConsumerRequestPasswordResetDto.js\";\nimport type { ConsumerResetPasswordDto } from \"../_generated/types/ConsumerResetPasswordDto.js\";\nimport type { UpdateMeDto } from \"../_generated/types/UpdateMeDto.js\";\nimport type { VerifyBody } from \"../_generated/types/VerifyBody.js\";\nimport type { AuthorizeBody } from \"../_generated/types/AuthorizeBody.js\";\nimport type { AuthorizeBatchBody } from \"../_generated/types/AuthorizeBatchBody.js\";\nimport type { ClientCredentialsDto } from \"../_generated/types/ClientCredentialsDto.js\";\nimport type { IdpNativeSigninDto } from \"../_generated/types/IdpNativeSigninDto.js\";\nimport type { ConsumerIdpControllerNativeSignInPathParamsProviderEnumKey } from \"../_generated/types/consumerOauthSignIn/ConsumerIdpControllerNativeSignIn.js\";\n\nimport { JwksCache } from \"../jwt/jwks-cache.js\";\nimport { verifyHeimdallToken, type VerifyOptions, type HeimdallClaims } from \"../jwt/verify.js\";\n\n/**\n * Legacy `iss` claim Heimdall Consumer-API tokens used to be minted\n * with. Kept exported so consumers verifying tokens issued before the\n * 2026-05-24 per-app-issuer migration can still match `iss` while a\n * deployment cycles to fresh tokens. New tokens carry the per-app\n * issuer URL — `${baseUrl}/${appSlug}` — accessible via\n * `scope.expectedIssuer`.\n */\nexport const HEIMDALL_LEGACY_ISSUER = \"heimdall\";\n\nexport interface ConsumerScopeInternals {\n client: Client;\n baseUrl: string;\n /** Custom fetch — forwarded to the JWKS cache so tests / undici / proxies work. */\n fetch?: typeof fetch;\n}\n\nexport class ConsumerScope {\n /** The appSlug bound to this scope. */\n public readonly appSlug: string;\n\n /**\n * Issuer the Heimdall Consumer API stamps on every token for this\n * app — the public Heimdall API base joined with the app slug\n * (e.g. `https://api.heimdall.productcraft.co/acme`). Pin it in\n * your local verifier so a token minted for another app on the\n * platform cannot pass.\n *\n * `scope.verifyToken` already enforces this for you. Pass it as a\n * second-position issuer if you're wiring `jose.jwtVerify`,\n * `passport-jwt`, or PyJWT yourself.\n */\n public readonly expectedIssuer: string;\n\n /**\n * Audience the Consumer API stamps on every token for this app —\n * literally the app slug (e.g. `\"acme\"`). Pin it in your verifier\n * the same way as `expectedIssuer`. `scope.verifyToken` enforces\n * it by default.\n */\n public readonly expectedAudience: string;\n\n /**\n * Both accepted issuer strings (`expectedIssuer` + the legacy\n * `'heimdall'` literal). `verifyToken` passes this to jose so tokens\n * minted before the 2026-05-24 per-app-issuer migration keep\n * verifying alongside fresh ones — useful for the ~1-hour transition\n * window per access-token TTL, and the longer session TTL on\n * refresh tokens.\n */\n public readonly acceptedIssuers: readonly string[];\n\n /** jose-compatible JWKS resolver. Drop into `jose.jwtVerify`, passport-jwt, etc. */\n public readonly jwks: JwksCache;\n\n private readonly client: Client;\n\n constructor(\n appSlug: string,\n internals: ConsumerScopeInternals,\n opts: { jwksTtlMs?: number } = {},\n ) {\n this.appSlug = appSlug;\n this.client = internals.client;\n const apiOrigin = new URL(internals.baseUrl);\n apiOrigin.pathname = `/${appSlug}`;\n this.expectedIssuer = apiOrigin.toString().replace(/\\/$/, \"\");\n this.expectedAudience = appSlug;\n this.acceptedIssuers = [this.expectedIssuer, HEIMDALL_LEGACY_ISSUER];\n this.jwks = new JwksCache({\n url: new URL(`/${appSlug}/v1/.well-known/jwks.json`, internals.baseUrl),\n ttlMs: opts.jwksTtlMs,\n fetch: internals.fetch,\n });\n }\n\n /**\n * Direct HTTP escape hatch for endpoints whose spec is buggy\n * (path declares `{appSlug}` but parameters[] omits it). Tracked\n * upstream; remove once the spec is fixed.\n */\n private async callDirect<T>(\n method: \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\",\n url: string,\n body?: unknown,\n params?: Record<string, unknown>,\n ): Promise<T> {\n const res = await this.client<T>({ method, url, data: body, params });\n return res.data;\n }\n\n /**\n * Verify a Heimdall-issued JWT against this app's JWKS.\n *\n * Checks the signature, expiry, `iss`, and `aud`. Accepts both the\n * per-app issuer URL (`expectedIssuer`) and the legacy `'heimdall'`\n * literal during the issuer-migration transition window — callers\n * who want to refuse legacy tokens can override with\n * `{ issuer: scope.expectedIssuer }`. Audience defaults to the app\n * slug (`expectedAudience`); pass `{ audience: false }` (in an\n * options override) to skip the audience check entirely.\n */\n verifyToken(token: string, opts: VerifyOptions = {}): Promise<HeimdallClaims> {\n return verifyHeimdallToken(token, this.jwks.getKey, {\n issuer: this.acceptedIssuers as string[],\n audience: this.expectedAudience,\n ...opts,\n });\n }\n\n // ─────────────────────────────────────────────────────────────\n // Auth — sign-in/up flows, refresh, password reset\n // ─────────────────────────────────────────────────────────────\n readonly auth = {\n signin: (data: ConsumerSigninDto) =>\n consumerAuthControllerSignin(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * Signup may require a Platform API Key when the app has\n * `signup_requires_pak: true`. Configure that on the Heimdall\n * instance (`new Heimdall({ auth: { type: \"apiKey\", key: \"...\" } })`)\n * — our HTTP client attaches the Authorization header automatically.\n */\n signup: (data: ConsumerSignupDto) =>\n this.callDirect<unknown>(\n \"POST\",\n `/${this.appSlug}/v1/auth/signup`,\n data,\n ),\n\n refresh: (data: ConsumerRefreshDto) =>\n consumerAuthControllerRefresh(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n logout: (data: ConsumerLogoutDto) =>\n consumerAuthControllerLogout(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * PAK-required: caller must instantiate `Heimdall` with\n * `auth: { type: \"apiKey\", key: \"pcft_live_...\" }`. The\n * kubb-generated `headers.authorization` slot is a stub — the\n * HTTP client's auth middleware overrides whatever's passed.\n */\n requestReset: (data: ConsumerRequestPasswordResetDto) =>\n consumerAuthControllerRequestPasswordReset(\n { appSlug: this.appSlug, data, headers: { authorization: \"\" } },\n { client: this.client },\n ),\n\n resetPassword: (data: ConsumerResetPasswordDto) =>\n consumerAuthControllerResetPassword(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n\n /**\n * Sign in / sign up with a provider ID token (native flow).\n *\n * Submit the identity token Apple (or Google, once enabled) issued\n * to a native client (iOS `ASAuthorizationController`, Google\n * Sign-In for iOS / Android). Heimdall verifies the signature\n * against the provider's JWKS, pins the issuer, checks the\n * audience against the app's configured native client ids,\n * recomputes `sha256(nonce)` and compares to the token's `nonce`\n * claim, then resolves or creates the EndUser. Same response\n * shape as `auth.signin`.\n *\n * Account linking: when an EndUser already exists with a verified\n * primary email matching the token's `email` claim, the app's\n * `oauth_link_policy` decides the outcome:\n * - `auto` (default): silently link the identity to the existing\n * account (provider claims `email_verified: true` AND the email\n * is not an Apple private relay).\n * - `confirm`: refuse with 409 `link_required`. UI should sign\n * the user in via their original method to bind.\n * - `reject`: refuse with 409 `account_exists_with_different_provider`.\n *\n * Apple's private-relay emails (`*@privaterelay.appleid.com`) are\n * persisted as-is on the EndUser's primary email contact and\n * never participate in auto-link.\n *\n * Apple sends the user's display name only on the FIRST sign-in.\n * Pass it through `user.name` on that call — Heimdall persists it\n * to the EndUser row. Subsequent sign-ins should omit `user`.\n */\n signinWithProvider: (args: {\n provider: ConsumerIdpControllerNativeSignInPathParamsProviderEnumKey;\n id_token: IdpNativeSigninDto[\"id_token\"];\n nonce: IdpNativeSigninDto[\"nonce\"];\n user?: IdpNativeSigninDto[\"user\"];\n }) =>\n consumerIdpControllerNativeSignIn(\n {\n appSlug: this.appSlug,\n provider: args.provider,\n data: { id_token: args.id_token, nonce: args.nonce, user: args.user },\n },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Me — the currently-signed-in EndUser's own resources\n // All six endpoints currently use callDirect to work around spec\n // bugs in heimdall.json (appSlug missing from parameters[]).\n // ─────────────────────────────────────────────────────────────\n readonly me = {\n getProfile: () =>\n this.callDirect<unknown>(\"GET\", `/${this.appSlug}/v1/me`),\n\n updateProfile: (data: UpdateMeDto) =>\n this.callDirect<unknown>(\"PATCH\", `/${this.appSlug}/v1/me`, data),\n\n listSessions: (params: Record<string, string | number> = {}) =>\n this.callDirect<unknown>(\n \"GET\",\n `/${this.appSlug}/v1/me/sessions`,\n undefined,\n params,\n ),\n\n revokeSession: (id: string) =>\n this.callDirect<void>(\"DELETE\", `/${this.appSlug}/v1/me/sessions/${id}`),\n\n getActivity: (params: Record<string, string | number> = {}) =>\n this.callDirect<unknown>(\n \"GET\",\n `/${this.appSlug}/v1/me/activity`,\n undefined,\n params,\n ),\n\n deleteAccount: () =>\n this.callDirect<void>(\"DELETE\", `/${this.appSlug}/v1/me`),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Verify — server-to-server token verification + authorization\n // (typically called by the customer's backend, not the user agent)\n // ─────────────────────────────────────────────────────────────\n readonly verify = {\n /**\n * The kubb-generated client makes `headers.authorization` a required\n * arg because the server controllers accept the bearer as a fallback\n * to `body.token`. We stub an empty string here — the HTTP client's\n * auth middleware overrides whatever's passed with the configured\n * credential (`PCAuth.apiKey` / `bearer` / `cookie`).\n */\n verify: (data: VerifyBody) =>\n consumerVerifyControllerVerify(\n { appSlug: this.appSlug, data, headers: { authorization: \"\" } },\n { client: this.client },\n ),\n\n authorize: (data: AuthorizeBody) =>\n consumerVerifyControllerAuthorize(\n { appSlug: this.appSlug, data, headers: { authorization: \"\" } },\n { client: this.client },\n ),\n\n authorizeBatch: (data: AuthorizeBatchBody) =>\n consumerVerifyControllerAuthorizeBatch(\n { appSlug: this.appSlug, data, headers: { authorization: \"\" } },\n { client: this.client },\n ),\n };\n\n // ─────────────────────────────────────────────────────────────\n // OAuth M2M — client_credentials grant for service-to-service tokens\n // ─────────────────────────────────────────────────────────────\n readonly oauth = {\n clientCredentials: (data: ClientCredentialsDto) =>\n consumerOAuthControllerClientCredentials(\n { appSlug: this.appSlug, data },\n { client: this.client },\n ),\n };\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerListMyAppsQueryResponse,\n AppControllerListMyAppsQueryParams,\n} from \"../../types/apps/AppControllerListMyApps.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerListMyAppsUrl() {\n const res = { method: \"GET\", url: `/v1/apps` as const };\n return res;\n}\n\n/**\n * @summary List apps the current PlatformUser is a member of. Pass `workspaceId` to scope the result to a single workspace — required from the per-workspace console page so cross-tenant memberships do not leak.\n * {@link /v1/apps}\n */\nexport async function appControllerListMyApps(\n { params }: { params?: AppControllerListMyAppsQueryParams } = {},\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? {\n limit: params.limit,\n cursor: params.cursor,\n workspace_id: params.workspaceId,\n }\n : undefined;\n\n const res = await request<\n AppControllerListMyAppsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getAppControllerListMyAppsUrl().url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerCreateAppMutationRequest,\n AppControllerCreateAppMutationResponse,\n AppControllerCreateAppHeaderParams,\n AppControllerCreateApp400,\n AppControllerCreateApp403,\n AppControllerCreateApp409,\n} from \"../../types/apps/AppControllerCreateApp.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerCreateAppUrl() {\n const res = { method: \"POST\", url: `/v1/apps` as const };\n return res;\n}\n\n/**\n * @summary Create a new Heimdall app owned by the caller\n * {@link /v1/apps}\n */\nexport async function appControllerCreateApp(\n {\n data,\n headers,\n }: {\n data: AppControllerCreateAppMutationRequest;\n headers?: AppControllerCreateAppHeaderParams;\n },\n config: Partial<RequestConfig<AppControllerCreateAppMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedHeaders = headers\n ? { \"Idempotency-Key\": headers.idempotencyKey }\n : undefined;\n\n const requestData = data;\n\n const res = await request<\n AppControllerCreateAppMutationResponse,\n ResponseErrorConfig<\n | AppControllerCreateApp400\n | AppControllerCreateApp403\n | AppControllerCreateApp409\n >,\n AppControllerCreateAppMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerCreateAppUrl().url.toString(),\n data: requestData,\n ...requestConfig,\n headers: { ...mappedHeaders, ...requestConfig.headers },\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n AppControllerAcceptInviteMutationRequest,\n AppControllerAcceptInviteMutationResponse,\n} from \"../../types/apps/AppControllerAcceptInvite.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getAppControllerAcceptInviteUrl() {\n const res = { method: \"POST\", url: `/v1/apps/invites/accept` as const };\n return res;\n}\n\n/**\n * @summary Accept an app invite by code\n * {@link /v1/apps/invites/accept}\n */\nexport async function appControllerAcceptInvite(\n { data }: { data: AppControllerAcceptInviteMutationRequest },\n config: Partial<RequestConfig<AppControllerAcceptInviteMutationRequest>> & {\n client?: Client;\n } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const requestData = data;\n\n const res = await request<\n AppControllerAcceptInviteMutationResponse,\n ResponseErrorConfig<Error>,\n AppControllerAcceptInviteMutationRequest\n >({\n method: \"POST\",\n url: getAppControllerAcceptInviteUrl().url.toString(),\n data: requestData,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * Generated by Kubb (https://kubb.dev/).\n * Do not edit manually.\n */\n\nimport fetch from \"@kubb/plugin-client/clients/fetch\";\nimport type {\n StatsControllerGetMyStatsQueryResponse,\n StatsControllerGetMyStatsQueryParams,\n} from \"../../types/platformStats/StatsControllerGetMyStats.ts\";\nimport type {\n Client,\n RequestConfig,\n ResponseErrorConfig,\n} from \"@kubb/plugin-client/clients/fetch\";\n\nfunction getStatsControllerGetMyStatsUrl() {\n const res = { method: \"GET\", url: `/v1/stats/me` as const };\n return res;\n}\n\n/**\n * @description Returns total apps the caller belongs to, end-users across those apps, and active API keys across those apps. Pass `workspaceId` to scope the counts to a single workspace — required from the dashboard so cross-tenant memberships do not bleed into the totals.\n * @summary Aggregate counts for the signed-in PlatformUser\n * {@link /v1/stats/me}\n */\nexport async function statsControllerGetMyStats(\n { params }: { params?: StatsControllerGetMyStatsQueryParams } = {},\n config: Partial<RequestConfig> & { client?: Client } = {},\n) {\n const { client: request = fetch, ...requestConfig } = config;\n\n const mappedParams = params\n ? { workspace_id: params.workspaceId }\n : undefined;\n\n const res = await request<\n StatsControllerGetMyStatsQueryResponse,\n ResponseErrorConfig<Error>,\n unknown\n >({\n method: \"GET\",\n url: getStatsControllerGetMyStatsUrl().url.toString(),\n params: mappedParams,\n ...requestConfig,\n });\n return res.data;\n}\n","/**\n * `@productcraft/heimdall` — typed SDK for the ProductCraft Heimdall API.\n *\n * Three caller contexts:\n * 1. Workspace-wide admin → methods on the Heimdall instance itself\n * 2. App-scoped admin → `heimdall.app(appId).{endUsers,roles,...}`\n * 3. Consumer-side (BFF) → `heimdall.consumer(appSlug).{auth,me,...}`\n *\n * Plus JWT verification on consumer scopes:\n * `heimdall.consumer(slug).verifyToken(jwt)`\n */\n\nimport type { Client } from \"@kubb/plugin-client/clients/fetch\";\nimport { PC_BASE_URL, type PCAuth, type PCClientConfig } from \"@productcraft/core\";\n\nimport { makeHeimdallHttpClient, HeimdallHttpError } from \"./_http.js\";\nimport { AppScope } from \"./scopes/app.js\";\nimport { ConsumerScope } from \"./scopes/consumer.js\";\n\n// Workspace-level operations\nimport { appControllerListMyApps } from \"./_generated/clients/apps/appControllerListMyApps.js\";\nimport { appControllerCreateApp } from \"./_generated/clients/apps/appControllerCreateApp.js\";\nimport { appControllerAcceptInvite } from \"./_generated/clients/apps/appControllerAcceptInvite.js\";\n\nimport { statsControllerGetMyStats } from \"./_generated/clients/platformStats/statsControllerGetMyStats.js\";\n\n// DTOs\nimport type { CreateAppDto } from \"./_generated/types/CreateAppDto.js\";\nimport type { AcceptInviteDto } from \"./_generated/types/AcceptInviteDto.js\";\nimport type { AppControllerListMyAppsQueryParams } from \"./_generated/types/apps/AppControllerListMyApps.js\";\nimport type { StatsControllerGetMyStatsQueryParams } from \"./_generated/types/platformStats/StatsControllerGetMyStats.js\";\n\nexport interface HeimdallConfig extends PCClientConfig {\n /** Per-app JWKS cache lifetime in ms. Default 10 minutes. */\n jwksTtlMs?: number;\n}\n\nexport class Heimdall {\n private readonly client: Client;\n private readonly baseUrl: string;\n private readonly fetch: typeof fetch | undefined;\n private readonly jwtConfig: { jwksTtlMs?: number };\n\n constructor(config: HeimdallConfig = {}) {\n this.baseUrl = config.baseUrl ?? PC_BASE_URL.heimdall;\n this.fetch = config.fetch;\n this.client = makeHeimdallHttpClient({\n baseUrl: this.baseUrl,\n auth: config.auth,\n fetch: this.fetch,\n });\n this.jwtConfig = {\n jwksTtlMs: config.jwksTtlMs,\n };\n }\n\n /**\n * Returns an `AppScope` bound to the given appId. All operations under\n * `/v1/apps/{appId}/...` are exposed as resource namespaces on the\n * returned object.\n */\n app(appId: string): AppScope {\n return new AppScope(appId, this.client);\n }\n\n /**\n * Returns a `ConsumerScope` bound to the given appSlug. Exposes the\n * `/{appSlug}/v1/...` surface (sign-in, sign-up, me, verify, oauth)\n * and the JWT-verify helper for tokens issued by this app.\n */\n consumer(appSlug: string): ConsumerScope {\n return new ConsumerScope(\n appSlug,\n { client: this.client, baseUrl: this.baseUrl, fetch: this.fetch },\n this.jwtConfig,\n );\n }\n\n // ─────────────────────────────────────────────────────────────\n // Workspace-wide apps surface\n // (other admin operations are under `app(appId).*` once an app exists)\n // ─────────────────────────────────────────────────────────────\n readonly apps = {\n /** List apps the caller's workspace can see. */\n list: (params: Partial<AppControllerListMyAppsQueryParams> = {}) =>\n appControllerListMyApps(\n { params: params as AppControllerListMyAppsQueryParams },\n { client: this.client },\n ),\n\n /** Create a new app under the caller's workspace. */\n create: (data: CreateAppDto) =>\n appControllerCreateApp({ data }, { client: this.client }),\n\n /** Accept a workspace invite to join an existing app. */\n acceptInvite: (data: AcceptInviteDto) =>\n appControllerAcceptInvite({ data }, { client: this.client }),\n };\n\n // ─────────────────────────────────────────────────────────────\n // Platform stats\n //\n // Workspace-level IdP admin (`/v1/idp/*`) was removed from the API\n // when consumer-side OAuth moved to per-app `auth_config_provider`\n // rows. Configure providers via the per-app auth-config endpoints\n // (`app(appId).authConfig.*`) and consume them client-side through\n // `consumer(slug).auth.signinWithProvider({ ... })`.\n // ─────────────────────────────────────────────────────────────\n readonly stats = {\n /**\n * Get the signed-in PlatformUser's aggregate counts. Pass\n * `workspaceId` to scope to a single workspace; omit to total\n * across every workspace the caller belongs to.\n */\n get: (params: Partial<StatsControllerGetMyStatsQueryParams> = {}) =>\n statsControllerGetMyStats(\n { params: params as StatsControllerGetMyStatsQueryParams },\n { client: this.client },\n ),\n };\n}\n\n// ─── Re-exports ────────────────────────────────────────────────\nexport { AppScope, ConsumerScope, HeimdallHttpError };\nexport { HEIMDALL_LEGACY_ISSUER } from \"./scopes/consumer.js\";\nexport type { PCAuth, PCClientConfig };\n\nexport {\n JwksCache,\n type HeimdallClaims,\n type VerifyOptions,\n verifyHeimdallToken,\n JwtVerifyError,\n JwtInvalidError,\n JwtExpiredError,\n JwtNotYetValidError,\n JwtIssuerMismatchError,\n JwtAudienceMismatchError,\n JwksKeyNotFoundError,\n JwksFetchError,\n} from \"./jwt/index.js\";\n\n// Re-export the most commonly-used request/response DTOs so callers\n// can `import type { ConsumerSigninDto } from \"@productcraft/heimdall\"`.\nexport type { ConsumerSigninDto } from \"./_generated/types/ConsumerSigninDto.js\";\nexport type { ConsumerSignupDto } from \"./_generated/types/ConsumerSignupDto.js\";\nexport type { ConsumerTokenResponseDto } from \"./_generated/types/ConsumerTokenResponseDto.js\";\nexport type { ConsumerRefreshDto } from \"./_generated/types/ConsumerRefreshDto.js\";\nexport type { ConsumerLogoutDto } from \"./_generated/types/ConsumerLogoutDto.js\";\nexport type { ConsumerRequestPasswordResetDto } from \"./_generated/types/ConsumerRequestPasswordResetDto.js\";\nexport type { ConsumerResetPasswordDto } from \"./_generated/types/ConsumerResetPasswordDto.js\";\nexport type { UpdateMeDto } from \"./_generated/types/UpdateMeDto.js\";\nexport type { VerifyBody } from \"./_generated/types/VerifyBody.js\";\nexport type { AuthorizeBody } from \"./_generated/types/AuthorizeBody.js\";\nexport type { AuthorizeBatchBody } from \"./_generated/types/AuthorizeBatchBody.js\";\nexport type { ClientCredentialsDto } from \"./_generated/types/ClientCredentialsDto.js\";\nexport type { CreateAppDto } from \"./_generated/types/CreateAppDto.js\";\nexport type { UpdateAppDto } from \"./_generated/types/UpdateAppDto.js\";\nexport type { UpdateAppStatusDto } from \"./_generated/types/UpdateAppStatusDto.js\";\nexport type { UpdateAuthConfigDto } from \"./_generated/types/UpdateAuthConfigDto.js\";\nexport type { CreateInviteDto } from \"./_generated/types/CreateInviteDto.js\";\nexport type { AcceptInviteDto } from \"./_generated/types/AcceptInviteDto.js\";\nexport type { UpdateEndUserDto } from \"./_generated/types/UpdateEndUserDto.js\";\nexport type { UpdateEndUserRoleDto } from \"./_generated/types/UpdateEndUserRoleDto.js\";\nexport type { UpdateEndUserStatusDto } from \"./_generated/types/UpdateEndUserStatusDto.js\";\nexport type { CreateRoleDto } from \"./_generated/types/CreateRoleDto.js\";\nexport type { UpdateRoleDto } from \"./_generated/types/UpdateRoleDto.js\";\nexport type { AssignRoleDto } from \"./_generated/types/AssignRoleDto.js\";\nexport type { SetPermissionsDto } from \"./_generated/types/SetPermissionsDto.js\";\nexport type { CreatePermissionDto } from \"./_generated/types/CreatePermissionDto.js\";\nexport type { CreateApiKeyDto } from \"./_generated/types/CreateApiKeyDto.js\";\nexport type { CreateM2MClientDto } from \"./_generated/types/CreateM2MClientDto.js\";\nexport type { UpdateM2MClientDto } from \"./_generated/types/UpdateM2MClientDto.js\";\nexport type { SetScopesDto } from \"./_generated/types/SetScopesDto.js\";\nexport type { IdpNativeSigninDto } from \"./_generated/types/IdpNativeSigninDto.js\";\nexport type { IdpNativeUserHintDto } from \"./_generated/types/IdpNativeUserHintDto.js\";\nexport type { IdpTokenResponseDto } from \"./_generated/types/IdpTokenResponseDto.js\";\n"]}