@alvera-ai/platform-sdk 0.16.2 → 0.16.3
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.
- package/.agent/tools.md +45 -5
- package/dist/index.d.mts +0 -8
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["lastEventId: string | undefined","retryDelay: number","requestInit: RequestInit","dataLines: Array<string>","eventName: string | undefined","data: unknown","joinedValues","values: string[]","style: ArraySeparatorStyle","search: string[]","buildUrl: Client['buildUrl']","entries: Array<[string, string]>","config","request: Client['request']","requestInit: ReqInit","request","response: Response","error","finalError","emptyData: any","data: any","jsonError: unknown","url","_buildUrl: Client['buildUrl']"],"sources":["../src/environments.generated.ts","../src/generated/core/bodySerializer.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/generated/types.gen.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["// Generated from <monorepo-root>/openapi.yaml by scripts/gen-environments.ts — do not edit.\n\nexport interface EnvironmentConfig {\n readonly base_url: string;\n readonly description: string;\n}\n\nexport const ENVIRONMENTS = {\n local: { base_url: \"http://localhost:4000\", description: \"Development server\" },\n mock: { base_url: \"http://localhost:4010\", description: \"Mock server with limited state — spin up using alvera-cli (https://github.com/alvera-ai/homebrew-tap)\" },\n demo: { base_url: \"https://platform-hh.alvera.ai\", description: \"Himangshu Demo server\" },\n prod: { base_url: \"https://app.alvera.ai\", description: \"Prod Server\" },\n} as const satisfies Readonly<Record<string, EnvironmentConfig>>;\n\nexport const DEFAULT_ENVIRONMENT = \"prod\" as const;\n\nexport type EnvironmentName = keyof typeof ENVIRONMENTS;\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined as any, request, opts)) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'http://localhost:4000' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { PlatformApiActionStatusUpdaterControllerChecksumData, PlatformApiActionStatusUpdaterControllerChecksumErrors, PlatformApiActionStatusUpdaterControllerChecksumResponses, PlatformApiActionStatusUpdaterControllerCreateData, PlatformApiActionStatusUpdaterControllerCreateErrors, PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerDeleteData, PlatformApiActionStatusUpdaterControllerDeleteErrors, PlatformApiActionStatusUpdaterControllerDeleteResponses, PlatformApiActionStatusUpdaterControllerIndexData, PlatformApiActionStatusUpdaterControllerIndexErrors, PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerMetadataData, PlatformApiActionStatusUpdaterControllerMetadataDetailsData, PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors, PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses, PlatformApiActionStatusUpdaterControllerMetadataErrors, PlatformApiActionStatusUpdaterControllerMetadataResponses, PlatformApiActionStatusUpdaterControllerRefreshData, PlatformApiActionStatusUpdaterControllerRefreshErrors, PlatformApiActionStatusUpdaterControllerRefreshResponses, PlatformApiActionStatusUpdaterControllerShowData, PlatformApiActionStatusUpdaterControllerShowErrors, PlatformApiActionStatusUpdaterControllerShowResponses, PlatformApiActionStatusUpdaterControllerUpdateData, PlatformApiActionStatusUpdaterControllerUpdateErrors, PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiAgenticWorkflowControllerChecksumData, PlatformApiAgenticWorkflowControllerChecksumErrors, PlatformApiAgenticWorkflowControllerChecksumResponses, PlatformApiAgenticWorkflowControllerCreateData, PlatformApiAgenticWorkflowControllerCreateErrors, PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerDeleteData, PlatformApiAgenticWorkflowControllerDeleteErrors, PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerIndexData, PlatformApiAgenticWorkflowControllerIndexErrors, PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerMetadataData, PlatformApiAgenticWorkflowControllerMetadataDetailsData, PlatformApiAgenticWorkflowControllerMetadataDetailsErrors, PlatformApiAgenticWorkflowControllerMetadataDetailsResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerShowData, PlatformApiAgenticWorkflowControllerShowErrors, PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerUpdateData, PlatformApiAgenticWorkflowControllerUpdateErrors, PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteData, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAiAgentControllerChecksumData, PlatformApiAiAgentControllerChecksumErrors, PlatformApiAiAgentControllerChecksumResponses, PlatformApiAiAgentControllerCreateData, PlatformApiAiAgentControllerCreateErrors, PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerDeleteData, PlatformApiAiAgentControllerDeleteErrors, PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerIndexData, PlatformApiAiAgentControllerIndexErrors, PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerInvokeData, PlatformApiAiAgentControllerInvokeErrors, PlatformApiAiAgentControllerInvokeResponses, PlatformApiAiAgentControllerMetadataData, PlatformApiAiAgentControllerMetadataDetailsData, PlatformApiAiAgentControllerMetadataDetailsErrors, PlatformApiAiAgentControllerMetadataDetailsResponses, PlatformApiAiAgentControllerMetadataErrors, PlatformApiAiAgentControllerMetadataResponses, PlatformApiAiAgentControllerShowData, PlatformApiAiAgentControllerShowErrors, PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerUpdateData, PlatformApiAiAgentControllerUpdateErrors, PlatformApiAiAgentControllerUpdateResponses, PlatformApiConnectedAppControllerResolvePageData, PlatformApiConnectedAppControllerResolvePageErrors, PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingData, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppMgmtControllerChecksumData, PlatformApiConnectedAppMgmtControllerChecksumErrors, PlatformApiConnectedAppMgmtControllerChecksumResponses, PlatformApiConnectedAppMgmtControllerCreateData, PlatformApiConnectedAppMgmtControllerCreateErrors, PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerDeleteData, PlatformApiConnectedAppMgmtControllerDeleteErrors, PlatformApiConnectedAppMgmtControllerDeleteResponses, PlatformApiConnectedAppMgmtControllerIndexData, PlatformApiConnectedAppMgmtControllerIndexErrors, PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerMetadataData, PlatformApiConnectedAppMgmtControllerMetadataDetailsData, PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors, PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses, PlatformApiConnectedAppMgmtControllerMetadataErrors, PlatformApiConnectedAppMgmtControllerMetadataResponses, PlatformApiConnectedAppMgmtControllerShowData, PlatformApiConnectedAppMgmtControllerShowErrors, PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesData, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerUpdateData, PlatformApiConnectedAppMgmtControllerUpdateErrors, PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiDataActivationClientControllerChecksumData, PlatformApiDataActivationClientControllerChecksumErrors, PlatformApiDataActivationClientControllerChecksumResponses, PlatformApiDataActivationClientControllerCreateData, PlatformApiDataActivationClientControllerCreateErrors, PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerDeleteData, PlatformApiDataActivationClientControllerDeleteErrors, PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerIndexData, PlatformApiDataActivationClientControllerIndexErrors, PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIngestData, PlatformApiDataActivationClientControllerIngestErrors, PlatformApiDataActivationClientControllerIngestFileData, PlatformApiDataActivationClientControllerIngestFileErrors, PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerLogShowData, PlatformApiDataActivationClientControllerLogShowErrors, PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogsIndexData, PlatformApiDataActivationClientControllerLogsIndexErrors, PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerMetadataData, PlatformApiDataActivationClientControllerMetadataDetailsData, PlatformApiDataActivationClientControllerMetadataDetailsErrors, PlatformApiDataActivationClientControllerMetadataDetailsResponses, PlatformApiDataActivationClientControllerMetadataErrors, PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerRunManuallyData, PlatformApiDataActivationClientControllerRunManuallyErrors, PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerShowData, PlatformApiDataActivationClientControllerShowErrors, PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerUpdateData, PlatformApiDataActivationClientControllerUpdateErrors, PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDatalakeControllerChecksumData, PlatformApiDatalakeControllerChecksumErrors, PlatformApiDatalakeControllerChecksumResponses, PlatformApiDatalakeControllerCreateData, PlatformApiDatalakeControllerCreateDownloadLinkData, PlatformApiDatalakeControllerCreateDownloadLinkErrors, PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateErrors, PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateUploadLinkData, PlatformApiDatalakeControllerCreateUploadLinkErrors, PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerDeleteData, PlatformApiDatalakeControllerDeleteErrors, PlatformApiDatalakeControllerDeleteResponses, PlatformApiDatalakeControllerExecuteSqlData, PlatformApiDatalakeControllerExecuteSqlErrors, PlatformApiDatalakeControllerExecuteSqlResponses, PlatformApiDatalakeControllerIndexData, PlatformApiDatalakeControllerIndexErrors, PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerMetadataData, PlatformApiDatalakeControllerMetadataDetailsData, PlatformApiDatalakeControllerMetadataDetailsErrors, PlatformApiDatalakeControllerMetadataDetailsResponses, PlatformApiDatalakeControllerMetadataErrors, PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMigrateData, PlatformApiDatalakeControllerMigrateErrors, PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerShowData, PlatformApiDatalakeControllerShowErrors, PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerSystemDatasetsData, PlatformApiDatalakeControllerSystemDatasetsErrors, PlatformApiDatalakeControllerSystemDatasetsResponses, PlatformApiDatalakeControllerTextToSqlData, PlatformApiDatalakeControllerTextToSqlErrors, PlatformApiDatalakeControllerTextToSqlResponses, PlatformApiDatalakeControllerUpdateData, PlatformApiDatalakeControllerUpdateErrors, PlatformApiDatalakeControllerUpdateResponses, PlatformApiDatasetControllerCreateUserSearchData, PlatformApiDatasetControllerCreateUserSearchErrors, PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerDatasetMetadataData, PlatformApiDatasetControllerDatasetMetadataErrors, PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerMetadataData, PlatformApiDatasetControllerMetadataErrors, PlatformApiDatasetControllerMetadataResponses, PlatformApiDatasetControllerSearchData, PlatformApiDatasetControllerSearchErrors, PlatformApiDatasetControllerSearchResponses, PlatformApiDataSourceControllerChecksumData, PlatformApiDataSourceControllerChecksumErrors, PlatformApiDataSourceControllerChecksumResponses, PlatformApiDataSourceControllerCreateData, PlatformApiDataSourceControllerCreateErrors, PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerDeleteData, PlatformApiDataSourceControllerDeleteErrors, PlatformApiDataSourceControllerDeleteResponses, PlatformApiDataSourceControllerIndexData, PlatformApiDataSourceControllerIndexErrors, PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerMetadataData, PlatformApiDataSourceControllerMetadataDetailsData, PlatformApiDataSourceControllerMetadataDetailsErrors, PlatformApiDataSourceControllerMetadataDetailsResponses, PlatformApiDataSourceControllerMetadataErrors, PlatformApiDataSourceControllerMetadataResponses, PlatformApiDataSourceControllerShowData, PlatformApiDataSourceControllerShowErrors, PlatformApiDataSourceControllerShowResponses, PlatformApiDataSourceControllerUpdateData, PlatformApiDataSourceControllerUpdateErrors, PlatformApiDataSourceControllerUpdateResponses, PlatformApiGenericTableControllerChecksumData, PlatformApiGenericTableControllerChecksumErrors, PlatformApiGenericTableControllerChecksumResponses, PlatformApiGenericTableControllerCreateData, PlatformApiGenericTableControllerCreateErrors, PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerDeleteData, PlatformApiGenericTableControllerDeleteErrors, PlatformApiGenericTableControllerDeleteResponses, PlatformApiGenericTableControllerIndexData, PlatformApiGenericTableControllerIndexErrors, PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerMetadataData, PlatformApiGenericTableControllerMetadataDetailsData, PlatformApiGenericTableControllerMetadataDetailsErrors, PlatformApiGenericTableControllerMetadataDetailsResponses, PlatformApiGenericTableControllerMetadataErrors, PlatformApiGenericTableControllerMetadataResponses, PlatformApiGenericTableControllerShowData, PlatformApiGenericTableControllerShowErrors, PlatformApiGenericTableControllerShowResponses, PlatformApiGenericTableControllerUpdateData, PlatformApiGenericTableControllerUpdateErrors, PlatformApiGenericTableControllerUpdateResponses, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerSignUpData, PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors, PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses, PlatformApiInteroperabilityContractControllerChecksumData, PlatformApiInteroperabilityContractControllerChecksumErrors, PlatformApiInteroperabilityContractControllerChecksumResponses, PlatformApiInteroperabilityContractControllerCreateData, PlatformApiInteroperabilityContractControllerCreateErrors, PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerDeleteData, PlatformApiInteroperabilityContractControllerDeleteErrors, PlatformApiInteroperabilityContractControllerDeleteResponses, PlatformApiInteroperabilityContractControllerIndexData, PlatformApiInteroperabilityContractControllerIndexErrors, PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerMetadataData, PlatformApiInteroperabilityContractControllerMetadataDetailsData, PlatformApiInteroperabilityContractControllerMetadataDetailsErrors, PlatformApiInteroperabilityContractControllerMetadataDetailsResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerRunData, PlatformApiInteroperabilityContractControllerRunErrors, PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerShowData, PlatformApiInteroperabilityContractControllerShowErrors, PlatformApiInteroperabilityContractControllerShowResponses, PlatformApiInteroperabilityContractControllerUpdateData, PlatformApiInteroperabilityContractControllerUpdateErrors, PlatformApiInteroperabilityContractControllerUpdateResponses, PlatformApiInvitationControllerAcceptData, PlatformApiInvitationControllerAcceptErrors, PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerCreateData, PlatformApiInvitationControllerCreateErrors, PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerIndexData, PlatformApiInvitationControllerIndexErrors, PlatformApiInvitationControllerIndexResponses, PlatformApiMdmControllerVerifyData, PlatformApiMdmControllerVerifyErrors, PlatformApiMdmControllerVerifyResponses, PlatformApiPingControllerPingData, PlatformApiPingControllerPingErrors, PlatformApiPingControllerPingResponses, PlatformApiSessionControllerCreateData, PlatformApiSessionControllerCreateErrors, PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerDeleteData, PlatformApiSessionControllerDeleteErrors, PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerVerifyApiKeyData, PlatformApiSessionControllerVerifyApiKeyErrors, PlatformApiSessionControllerVerifyApiKeyResponses, PlatformApiSessionControllerVerifyData, PlatformApiSessionControllerVerifyErrors, PlatformApiSessionControllerVerifyResponses, PlatformApiTemplatesControllerIndexData, PlatformApiTemplatesControllerIndexErrors, PlatformApiTemplatesControllerIndexResponses, PlatformApiTemplatesControllerMetadataData, PlatformApiTemplatesControllerMetadataDetailsData, PlatformApiTemplatesControllerMetadataDetailsErrors, PlatformApiTemplatesControllerMetadataDetailsResponses, PlatformApiTemplatesControllerMetadataErrors, PlatformApiTemplatesControllerMetadataResponses, PlatformApiTenantControllerCreateData, PlatformApiTenantControllerCreateErrors, PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerIndexData, PlatformApiTenantControllerIndexErrors, PlatformApiTenantControllerIndexResponses, PlatformApiToolControllerChecksumData, PlatformApiToolControllerChecksumErrors, PlatformApiToolControllerChecksumResponses, PlatformApiToolControllerCreateData, PlatformApiToolControllerCreateErrors, PlatformApiToolControllerCreateResponses, PlatformApiToolControllerDeleteData, PlatformApiToolControllerDeleteErrors, PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerIndexData, PlatformApiToolControllerIndexErrors, PlatformApiToolControllerIndexResponses, PlatformApiToolControllerMetadataData, PlatformApiToolControllerMetadataDetailsData, PlatformApiToolControllerMetadataDetailsErrors, PlatformApiToolControllerMetadataDetailsResponses, PlatformApiToolControllerMetadataErrors, PlatformApiToolControllerMetadataResponses, PlatformApiToolControllerShowData, PlatformApiToolControllerShowErrors, PlatformApiToolControllerShowResponses, PlatformApiToolControllerTestInvocationData, PlatformApiToolControllerTestInvocationErrors, PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerUpdateData, PlatformApiToolControllerUpdateErrors, PlatformApiToolControllerUpdateResponses, PlatformApiWorkflowRunControllerCancelData, PlatformApiWorkflowRunControllerCancelErrors, PlatformApiWorkflowRunControllerCancelResponses, PlatformApiWorkflowRunControllerIndexData, PlatformApiWorkflowRunControllerIndexErrors, PlatformApiWorkflowRunControllerIndexResponses, PlatformApiWorkflowRunControllerShowData, PlatformApiWorkflowRunControllerShowErrors, PlatformApiWorkflowRunControllerShowResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Compute the drift checksum for an agentic workflow config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. A client posts a desired config here and compares the result against the deployed workflow's `checksum` (from GET) to detect drift (absent / unchanged / edited).\n */\nexport const platformApiAgenticWorkflowControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerChecksumResponses, PlatformApiAgenticWorkflowControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get single generic table metadata as markdown\n *\n * Returns markdown describing one generic table's column schema, addressed by id within the datalake.\n */\nexport const platformApiGenericTableControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerMetadataDetailsResponses, PlatformApiGenericTableControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}/metadata',\n ...options\n});\n\n/**\n * Mint a public_api API key for a tenant (admin)\n *\n * Creates a `public_api` API key for a tenant and returns its plaintext\n * (shown once, same as the API-keys UI's create flow). Exists because the\n * integration-test bootstrap authenticates purely over HTTP/SDK and has no\n * LiveView console to use the normal API-keys UI.\n *\n * Wraps `Platform.ApiKeys.create_api_key/4` verbatim — **zero new business\n * logic**. Every successful call is structured-logged with `caller_user_id`,\n * `tenant_id`, and `api_key_id` for a forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/tenants/{tenant_slug}/api-keys',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single tool metadata as markdown\n *\n * Returns markdown for one tool — wrapper, body-side schema, and the test-invocation block. No shared-types section (use the catalog endpoint for that).\n */\nexport const platformApiToolControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerMetadataDetailsResponses, PlatformApiToolControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/metadata',\n ...options\n});\n\n/**\n * Data sources catalog as markdown\n *\n * Returns one page of the data source catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + bound tools. The page's pagination state is written into a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiDataSourceControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerMetadataResponses, PlatformApiDataSourceControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/metadata',\n ...options\n});\n\n/**\n * Delete a tool\n *\n * Deletes a tool. Returns 409 if the tool is referenced by another resource.\n */\nexport const platformApiToolControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options\n});\n\n/**\n * Get a tool\n *\n * Returns a single tool by ID, scoped to the current datalake.\n */\nexport const platformApiToolControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerShowResponses, PlatformApiToolControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options\n});\n\n/**\n * Replace a tool\n *\n * Replaces a tool with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiToolControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiToolControllerUpdateResponses, PlatformApiToolControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Generate datalake SQL from a natural-language prompt\n *\n * Generates a SQL statement for a natural-language `prompt` against the datalake, with\n * ordered multi-provider LLM failover. Returns the SQL plus a best-effort plain-language\n * `explanation` (`null` when the explainer is unavailable). The SQL is returned for review;\n * run it via `POST .../execute-sql`. Only the prompt + schema are sent to the LLM — no\n * datalake data leaves the boundary, so this is safe in both modes. Returns 422 when every\n * configured provider fails.\n *\n */\nexport const platformApiDatalakeControllerTextToSql = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerTextToSqlData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerTextToSqlResponses, PlatformApiDatalakeControllerTextToSqlErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/text-to-sql',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Verify an X-API-Key credential\n *\n * Returns the API-key session's tenant, role, and key information — the\n * \"who am I\" endpoint for key-only (M2M) callers. The key-only half of the\n * old dual-mode `GET /sessions/verify`, split out so each operation carries\n * exactly one security posture.\n *\n * Key-only: Bearer callers receive a 422 pointing at\n * `GET /api/v1/sessions/verify`.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiSessionControllerVerifyApiKey = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyApiKeyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyApiKeyResponses, PlatformApiSessionControllerVerifyApiKeyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/api-keys/verify',\n ...options\n});\n\n/**\n * Enqueue datalake migrations\n *\n * Enqueues a `DatalakeMigrationWorker` Oban job that brings the datalake's\n * per-tenant database to the current schema version. Required after\n * `POST /datalakes`, which only persists the metadata row — it does NOT\n * run migrations against the per-tenant DB. Without this step, every\n * downstream resource that touches per-datalake tables\n * (`data_activation_logs`, MDM tables, dataset tables) will fail with\n * `relation … does not exist`.\n *\n * Asynchronous: returns 202 Accepted as soon as the job is enqueued.\n * Callers poll `GET /datalakes/:id` and watch for `status: :ready`.\n * Idempotent at the job level — re-enqueueing on a migrated datalake\n * is a no-op once the worker completes.\n *\n * The LiveView \"Migrate Datalake\" button calls the same migrator\n * synchronously inside the LiveView process.\n *\n * Requires a tenant-scoped Bearer with membership role `admin`.\n *\n */\nexport const platformApiDatalakeControllerMigrate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMigrateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerMigrateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate',\n ...options\n});\n\n/**\n * Verify current Bearer session\n *\n * Returns the current Bearer session's tenant, role, and identity\n * information — the \"who am I\" endpoint for human sessions.\n *\n * Bearer sessions only: key-only (M2M) callers receive a 422 pointing at\n * `GET /api/v1/api-keys/verify`, the key-credential counterpart.\n *\n * **Requires Bearer authentication with the tenant's X-API-Key companion.**\n *\n */\nexport const platformApiSessionControllerVerify = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyResponses, PlatformApiSessionControllerVerifyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/sessions/verify',\n ...options\n});\n\n/**\n * Compute the drift checksum for a data activation client config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed client's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDataActivationClientControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerChecksumResponses, PlatformApiDataActivationClientControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Stop refresh polling for a batch run log\n *\n * Deletes the DynamicCron job that polls this batch. The batch log is NOT deleted.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogStop = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop',\n ...options\n});\n\n/**\n * Delete a data activation client\n *\n * Deletes a DAC. Returns 422 if the DAC is a platform default (is_default=true). Returns 409 if referenced by other resources.\n */\nexport const platformApiDataActivationClientControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options\n});\n\n/**\n * Get a data activation client\n *\n * Returns a single DAC by datalake-scoped slug.\n */\nexport const platformApiDataActivationClientControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options\n});\n\n/**\n * Replace a data activation client\n *\n * Replaces a DAC with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.\n */\nexport const platformApiDataActivationClientControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDataActivationClientControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create datalake download link\n *\n * Returns a presigned GET URL for an object stored in one of the datalake's cloud storage buckets (regulated or unregulated). Typical use: read a `DACRawLogFile.object_key` (`s3://bucket/key`) off a data-activation log row, split it into `bucket` and `key`, then POST here to obtain a short-lived download URL.\n */\nexport const platformApiDatalakeControllerCreateDownloadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateDownloadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateDownloadLinkErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a datalake\n *\n * Deletes a datalake, but only while it is a fresh, un-migrated, metadata-only\n * shell. Returns `409 Conflict` if the datalake is already `:ready` or has run\n * through any migration cycle (its per-tenant schemas are built and may hold\n * tenant data), or if it still owns any child resource (tools, workflows,\n * contracts, clients, tables, …). A deletable datalake has no physical schema,\n * so this is a pure metadata delete.\n *\n */\nexport const platformApiDatalakeControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDatalakeControllerDeleteResponses, PlatformApiDatalakeControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options\n});\n\n/**\n * Get a datalake\n *\n * Returns a single datalake by ID (non-sensitive metadata only).\n */\nexport const platformApiDatalakeControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerShowErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options\n});\n\n/**\n * Update a datalake (full replace)\n *\n * Replaces the datalake's configuration with the supplied body. PUT semantics:\n * the request body MUST carry every field — partial updates are not\n * supported. Mirrors the same `DatalakeRequest` schema as create so callers\n * can resend a full manifest unchanged.\n *\n * The platform performs the same gates as create before persisting: DB\n * connection probes against every regulated/unregulated reader/writer\n * declared in the body, plus a cloud-storage reachability probe. Any\n * probe failure surfaces as `422 Unprocessable Entity` with the failing\n * field annotated in the changeset.\n *\n * Used by `alvera apply` when the manifest's `[datalake]` block has\n * drifted from server state. Idempotent: re-applying the same body\n * against a converged datalake is a no-op at the wire level (the\n * changeset detects no changes; the row is rewritten with identical\n * values, lifecycle hooks fire).\n *\n */\nexport const platformApiDatalakeControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDatalakeControllerUpdateResponses, PlatformApiDatalakeControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List accessible tenants\n *\n * Returns a paginated list of tenants accessible to the authenticated identity.\n *\n * - **Bearer token**: returns all tenants the user has membership in.\n * - **X-API-Key**: returns the single tenant the API key is scoped to.\n *\n */\nexport const platformApiTenantControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiTenantControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiTenantControllerIndexResponses, PlatformApiTenantControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants',\n ...options\n});\n\n/**\n * Create a tenant\n *\n * Creates a new tenant and an `:admin` membership for the authenticated user.\n * Wraps `Platform.Tenants.create_tenant/3` verbatim — same primitive that\n * backs the `/app/tenants/new` LiveView.\n *\n * On success returns the freshly-created tenant (`id`, `slug`, `name`,\n * `description`). The caller's tenant-less Bearer remains valid; to obtain\n * a **tenant-scoped Bearer** for subsequent work, call\n * `POST /api/v1/sessions` with `{ tenant_slug }` — same primitive used by\n * every other tenant sign-in.\n *\n * The user must be confirmed (`confirmed_at IS NOT NULL`); unconfirmed\n * callers receive 403. Duplicate tenant names (slug collision) return 422.\n *\n * Requires `Authorization: Bearer <token>` (X-API-Key cannot create tenants —\n * it carries no platform-user identity to bind the membership to).\n *\n */\nexport const platformApiTenantControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTenantControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerCreateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Download execution context\n *\n * Returns a presigned URL for downloading the execution context JSON from R2.\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download',\n ...options\n});\n\n/**\n * List generic tables\n *\n * Returns a paginated list of generic tables for the datalake (custom tables + system tables for the data domain).\n */\nexport const platformApiGenericTableControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',\n ...options\n});\n\n/**\n * Create a generic table\n *\n * Creates a new custom generic table within the datalake.\n */\nexport const platformApiGenericTableControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List the authenticated user's pending invitations\n *\n * Returns invitations addressed to the authenticated user that have not\n * yet been accepted. Mirrors the LiveView at `/app/users/tenant-invitations`\n * that recipients see after sign-in. Wraps `Tenants.list_invitations_by_user/1`\n * verbatim — always filtered to the current user, never accepts a query\n * parameter that could leak another user's invitations.\n *\n * Requires any Bearer (tenant-less is fine — recipients typically don't\n * have tenant scope yet at this point in the bootstrap flow).\n *\n */\nexport const platformApiInvitationControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiInvitationControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiInvitationControllerIndexResponses, PlatformApiInvitationControllerIndexErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/invitations',\n ...options\n});\n\n/**\n * List interoperability contracts\n *\n * Returns a paginated list of contracts scoped to the datalake.\n */\nexport const platformApiInteroperabilityContractControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',\n ...options\n});\n\n/**\n * Create an interoperability contract\n *\n * Creates a new contract. `slug` is auto-generated from `name` on insert.\n */\nexport const platformApiInteroperabilityContractControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get workflows catalog as markdown\n *\n * Returns one page of the workflow catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each workflow appears with its full variable pipeline (event dataset, MDM, context datasets, enrichment, filter, decision, actions) and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiAgenticWorkflowControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/metadata',\n ...options\n});\n\n/**\n * Get interoperability contracts catalog as markdown\n *\n * Returns one page of the interoperability contract catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each contract appears with its target-resource field schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiInteroperabilityContractControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/metadata',\n ...options\n});\n\n/**\n * Get single DAC dataset metadata\n *\n * Returns a markdown document describing the fields of each dataset connected to this data activation client via its interoperability contracts.\n */\nexport const platformApiDataActivationClientControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataDetailsResponses, PlatformApiDataActivationClientControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}/metadata',\n ...options\n});\n\n/**\n * Accept a tenant invitation\n *\n * Accepts a pending invitation addressed to the authenticated user, creating\n * a `Membership` and deleting the invitation. Mirrors the LiveView flow at\n * `/app/users/tenant-invitations` → \"Accept\" button. Wraps\n * `Tenants.accept_invitation!/2` verbatim.\n *\n * The function-level guard `get_invitation_by_user!/2` ensures the invitation\n * is addressed to the caller — cross-user acceptance returns 404.\n *\n * Requires any Bearer (the recipient often has only a tenant-less Bearer at\n * this point — they just signed up and haven't joined a tenant yet).\n *\n */\nexport const platformApiInvitationControllerAccept = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerAcceptData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerAcceptErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/invitations/{id}/accept',\n ...options\n});\n\n/**\n * Cancel a scheduled workflow run\n *\n * Stops a run that has not fired, and cancels the job that would have fired it.\n *\n * Allowed **only while the run is `scheduled`** — before its segment has been\n * resolved and before a single per-record job has been enqueued. Once the run\n * is `processing` the fan-out has begun and those jobs have no way to learn the\n * parent was cancelled; a \"cancellation\" then would report a campaign as\n * stopped while it kept sending. The endpoint returns 422 instead.\n *\n * Safe to call against a run whose job is being picked up at that exact moment:\n * the cancellation and the worker contend for the same row in one statement, so\n * exactly one wins and the other is told. A run that returns 200 here has sent\n * nothing.\n *\n */\nexport const platformApiWorkflowRunControllerCancel = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerCancelData, ThrowOnError>) => (options.client ?? client).post<PlatformApiWorkflowRunControllerCancelResponses, PlatformApiWorkflowRunControllerCancelErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}/cancel',\n ...options\n});\n\n/**\n * Create datalake upload link\n *\n * Returns a presigned PUT URL for uploading a file (NDJSON or CSV) directly to the datalake's regulated cloud storage. The returned key lives under `uploads/<datalake_id>/` and can be passed to downstream endpoints (e.g. data activation client ingest-file) that accept a pre-uploaded storage key.\n */\nexport const platformApiDatalakeControllerCreateUploadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateUploadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerCreateUploadLinkErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List datalakes\n *\n * Returns a paginated list of datalakes for the authenticated tenant.\n */\nexport const platformApiDatalakeControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes',\n ...options\n});\n\n/**\n * Create a datalake\n *\n * Creates a new datalake for the authenticated tenant.\n */\nexport const platformApiDatalakeControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Show a single DAC processing log\n *\n * Returns a single `DataActivationLog` row scoped to this DAC. Returns 404 if the id belongs to a different client.\n */\nexport const platformApiDataActivationClientControllerLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}',\n ...options\n});\n\n/**\n * Delete a data source\n *\n * Deletes a data source (addressed by id) within the authenticated datalake.\n */\nexport const platformApiDataSourceControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataSourceControllerDeleteResponses, PlatformApiDataSourceControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options\n});\n\n/**\n * Get a data source\n *\n * Returns a single data source by id within the authenticated tenant + datalake.\n */\nexport const platformApiDataSourceControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerShowResponses, PlatformApiDataSourceControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options\n});\n\n/**\n * Replace a data source\n *\n * Replaces a data source with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiDataSourceControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataSourceControllerUpdateResponses, PlatformApiDataSourceControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update message tracking fields for a page\n *\n * Updates tracking timestamps (opened_at, form_submitted_at) on the message\n * linked to a page token. Called by the connected app when a user opens a page\n * or submits a form.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiConnectedAppControllerUpdateMessageTracking = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerUpdateMessageTrackingData, ThrowOnError>) => (options.client ?? client).patch<PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/update-message-tracking',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an agentic workflow\n *\n * Deletes a workflow and all associated actions, context datasets, and AI agent attachments. A workflow with run logs cannot be deleted (409 Conflict) — the logs preserve its run history; rename the workflow instead to free its name for a replacement.\n */\nexport const platformApiAgenticWorkflowControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options\n});\n\n/**\n * Get an agentic workflow\n *\n * Returns a single workflow by ID with nested AI agents.\n */\nexport const platformApiAgenticWorkflowControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options\n});\n\n/**\n * Replace an agentic workflow\n *\n * Replaces a workflow with the full resource body. PUT semantics — all required fields must be present. AI agents are nested under `workflow_ai_agents`; the array replaces the attached set transactionally.\n */\nexport const platformApiAgenticWorkflowControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Trigger a manual poll of an action status updater\n *\n * Enqueues one poll trampoline on demand — the manual counterpart of the cron tick, mirroring the data activation client's run-manually. Empty body or omitted `updater_body` polls with the updater's persisted `updater_body`. Supplying an `updater_body` map applies a one-shot override for this run only (e.g. a widened historical poll window) — the persisted updater is not modified. The poll runs fully asynchronously: this responds 202 with the updater row as-is; poll the updater and read the outcome from `last_run_status`, `last_run_events_found`, and `last_run_error`. Apply jobs are asynchronous too — observe message status on the message rows.\n */\nexport const platformApiActionStatusUpdaterControllerRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerRefreshResponses, PlatformApiActionStatusUpdaterControllerRefreshErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Resolve a short URL token to a page\n *\n * Given a connected app slug and a Puid short URL token, resolves the token to\n * the pre-stored route path and MDM subject ID. The Cloudflare app calls this\n * endpoint when a customer clicks a short URL, forwarding the original client\n * headers (user-agent, IP, country) in the request body.\n *\n * When the page token is linked to a message (via workflow action execution),\n * the regulated message details (raw body, channel, status) are included in\n * the response.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiConnectedAppControllerResolvePage = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerResolvePageData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerResolvePageErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/resolve-page',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a datalake config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed datalake's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDatalakeControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerChecksumResponses, PlatformApiDatalakeControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Ingest JSON data asynchronously\n *\n * Ingest a single JSON record for processing through the data activation\n * pipeline. Returns `202 Accepted` immediately with `{batch_id, key,\n * jobs_count}`; per-row work runs asynchronously on the data-activation Oban\n * queue.\n *\n * ## Per-batch artifacts (audit trail)\n *\n * The DAC pipeline does NOT use the `<step>.json` convention that workflows\n * do — its byproducts are NDJSON archives, surfaced on the\n * `DataActivationLog` row that the batch produces:\n *\n * | Field | Bucket | Body |\n * | --------------- | ------------ | ---------------------------------------------------------------------------------------- |\n * | `key` (response)| regulated | the raw JSON payload uploaded by THIS request |\n * | `input_files` | regulated | source artifacts consumed by the batch (one per ingest call merged into the batch) |\n * | `output_files` | mixed | merged NDJSON archives, one `{object_key, mode}` per bucket (`regulated` + `unregulated`)|\n *\n * ### Fetching diagnostic artifacts\n *\n * Use the same datalake download-link endpoint as workflow artifacts\n * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`):\n *\n * # raw payload that this ingest call uploaded\n * { \"bucket\": \"<regulated>\", \"key\": \"<response.key>\" }\n *\n * # per-bucket merged archive (after batch completes)\n * { \"bucket\": \"<regulated|unregulated>\", \"key\": \"<output_files[i].object_key>\" }\n *\n * `output_files[i].mode` tells you which bucket each archive lives in\n * (`regulated` for raw attrs, `unregulated` for tokenized). The regulated /\n * unregulated bucket names are exposed on the datalake response as\n * `regulated_cloud_storage.bucket` / `unregulated_cloud_storage.bucket`.\n *\n * ### Failure surfacing\n *\n * On a `{:error, _}` ingest response the platform returns `422` with an\n * `error` string. For pipeline failures (per-row Oban job exceptions),\n * the DataActivationLog row's `rows_ingested` will be lower than the\n * submitted count; per-row diagnostics live in the Oban job table\n * (`oban_jobs.errors`) keyed by `batch_id`. There is no `error.json`\n * artifact on the DAC path — that convention is workflow-only.\n *\n */\nexport const platformApiDataActivationClientControllerIngest = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerIngestErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an action status updater\n *\n * Deletes an action status updater (addressed by id) within the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiActionStatusUpdaterControllerDeleteResponses, PlatformApiActionStatusUpdaterControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options\n});\n\n/**\n * Get an action status updater\n *\n * Returns a single action status updater by id within the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerShowResponses, PlatformApiActionStatusUpdaterControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options\n});\n\n/**\n * Replace an action status updater\n *\n * Replaces an action status updater with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiActionStatusUpdaterControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiActionStatusUpdaterControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Tools catalog as markdown\n *\n * Returns one page of the tools catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each tool appears with its wrapper fields, body-side schema, and the test-invocation block. The page's pagination state is written into a narrative line at the top of the body. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiToolControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerMetadataResponses, PlatformApiToolControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/metadata',\n ...options\n});\n\n/**\n * Compute the drift checksum for an AI agent config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed agent's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiAiAgentControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerChecksumResponses, PlatformApiAiAgentControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a connected app config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed app's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiConnectedAppMgmtControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerChecksumResponses, PlatformApiConnectedAppMgmtControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get a workflow run\n *\n * Returns one run with everything known about it so far.\n *\n * Which fields are populated is itself the progress report. A `scheduled` run\n * carries `preview_user_search_id`, `scheduled_at` and `matched_count` and\n * nothing else — nothing has executed. Once it fires it gains\n * `execution_user_search_id` (the search whose results **are** the audience),\n * `batch_id` and `workflow_run_log_id`. A run that failed to resolve its clause\n * carries `failure_reason`.\n *\n */\nexport const platformApiWorkflowRunControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiWorkflowRunControllerShowResponses, PlatformApiWorkflowRunControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}',\n ...options\n});\n\n/**\n * List industry-registered datasets for the datalake\n *\n * Returns the **industry-registered** dataset name strings for this\n * datalake's `data_domain` — e.g. `patient`, `appointment` for\n * healthcare; `legal_entity`, `beneficial_owner` for foundation. Each\n * name is a valid argument to\n * `GET /api/v1/datasets/:dataset_type/metadata` for the rendered\n * schema docs, and to `GET /api/v1/datasets/:dataset_type/search` for\n * row data.\n *\n * **This endpoint does not list user-defined generic tables.** Concern\n * separation: generic tables are CRUD-able resources with their own\n * lifecycle and live under\n * `GET /api/v1/tenants/:tenant_slug/datalakes/:datalake_slug/generic-tables`.\n * To enumerate the full set of queryable datasets a caller must hit\n * both endpoints (`system-datasets` for industry built-ins and\n * `generic-tables` for operator-defined ones). Each surface owns one\n * concern: enumeration here, lifecycle there.\n *\n * Pure read — no DB access on the platform side. Derived from\n * `Platform.Dataset.get_registered_datasets/1`.\n *\n */\nexport const platformApiDatalakeControllerSystemDatasets = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerSystemDatasetsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerSystemDatasetsResponses, PlatformApiDatalakeControllerSystemDatasetsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-datasets',\n ...options\n});\n\n/**\n * List AI agents\n *\n * Returns a paginated list of AI agents for the authenticated tenant.\n */\nexport const platformApiAiAgentControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',\n ...options\n});\n\n/**\n * Create an AI agent\n *\n * Creates a new AI agent for the authenticated tenant.\n */\nexport const platformApiAiAgentControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List workflow runs\n *\n * Returns the datalake's workflow runs, **soonest send first** — the order a\n * campaign screen reads top-down.\n *\n * Filter with `filter[status]` to answer the question the screen opens on:\n * `scheduled` is everything still cancellable, `processing` everything mid\n * fan-out. `mode` and `batch_id` are filterable too; `batch_id` is how you get\n * from a message back to the run that sent it.\n *\n * `global_search` is one box over the two things a row can be recognised by:\n * the **workflow slug** and the `batch_id`. Searching `batch_id` alone finds\n * nothing that has not fired yet — which is every run still worth acting on —\n * so the slug is in the same compound.\n *\n * `matched_count` on each row is the operator's **preview** — how many records\n * the clause matched when the run was scheduled. It is not the delivered\n * count, and it is not re-derived: the run resolves its clause again at send\n * time, so the audience can differ. Read what actually went out from the\n * workflow logs for the run's `batch_id`.\n *\n */\nexport const platformApiWorkflowRunControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiWorkflowRunControllerIndexResponses, PlatformApiWorkflowRunControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs',\n ...options\n});\n\n/**\n * Get generic tables catalog as markdown\n *\n * Returns one page of the generic table catalog for the datalake, rendered as markdown — operator-defined custom tables plus system tables for the data domain. Accepts the same pagination, filtering, and ordering parameters as `index`; each table appears with its column schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiGenericTableControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerMetadataResponses, PlatformApiGenericTableControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/metadata',\n ...options\n});\n\n/**\n * List workflow execution logs\n *\n * Returns a paginated list of per-event execution logs for a workflow.\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs',\n ...options\n});\n\n/**\n * Get single contract field metadata\n *\n * Returns a markdown document describing the fields of the contract's target resource type. Combines `@moduledoc` (resource description) and `@typedoc` (field definitions) from the schema.\n */\nexport const platformApiInteroperabilityContractControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataDetailsResponses, PlatformApiInteroperabilityContractControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}/metadata',\n ...options\n});\n\n/**\n * Get datalake domain metadata\n *\n * Returns a markdown document describing the datalake's data domain — its available standard resources and capabilities.\n */\nexport const platformApiDatalakeControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataDetailsResponses, PlatformApiDatalakeControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata',\n ...options\n});\n\n/**\n * Execute an individual action for a dataset record\n *\n * Executes a single workflow action identified by decision_key for the given dataset record, bypassing filter and decision evaluation\n */\nexport const platformApiAgenticWorkflowOperationsControllerExecute = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerExecuteData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/execute',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Page results from a UserSearch — outer SQL chunk + inner resource Flop\n *\n * Two-tier pagination at two layers:\n *\n * * **Outer** — `outer_pagination[page]` / `outer_pagination[page_size]`\n * (defaults `1` / `1000`, max `1000`) pages cached IDs from\n * `search_results`. The cap is dictated by Postgres' `WHERE id IN (^ids)`\n * plan — past ~1k parameters the planner regresses.\n * * **Inner** — `inner_search[page]`, `inner_search[page_size]` (defaults\n * `1` / `20`), `inner_search[order_direction]` (sort on the schema's\n * `:global_search` compound), `inner_search[global_search]` (single\n * ILIKE-OR text-search knob).\n *\n * Response carries both metas under `meta.sql` and `meta.flop`. A caller\n * that only drives the inner page sees `meta.sql.has_next_page=true` when\n * the SQL search isn't exhausted; advancing `outer_pagination[page]`\n * fetches the next chunk.\n *\n */\nexport const platformApiDatasetControllerSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerSearchData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerSearchResponses, PlatformApiDatasetControllerSearchErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/search',\n ...options\n});\n\n/**\n * Create and execute a SQL search for a dataset\n *\n * Creates a `UserSearch` row, runs `INSERT INTO search_results SELECT ... WHERE <search_query>` against the regulated schema, and returns the `UserSearch` resource (including `status`, `results_count`, and `error_message`). The session's `data_access_mode` controls which schema is queried.\n */\nexport const platformApiDatasetControllerCreateUserSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerCreateUserSearchData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerCreateUserSearchErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/user-searches',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a generic table config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed table's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiGenericTableControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerChecksumResponses, PlatformApiGenericTableControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a data source config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed data source's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDataSourceControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerChecksumResponses, PlatformApiDataSourceControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Action status updaters catalog as markdown\n *\n * Returns one page of the action status updater catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + cron + updater body + template configs + bound tools, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiActionStatusUpdaterControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerMetadataResponses, PlatformApiActionStatusUpdaterControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/metadata',\n ...options\n});\n\n/**\n * Ingest previously uploaded file\n *\n * Ingests a file that was uploaded via a presigned URL obtained from the datalake upload-link endpoint. The key must belong to this client's datalake prefix (`uploads/<datalake_id>/...`).\n */\nexport const platformApiDataActivationClientControllerIngestFile = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestFileData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestFileErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List data sources\n *\n * Returns a paginated list of data sources for the authenticated tenant.\n */\nexport const platformApiDataSourceControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',\n ...options\n});\n\n/**\n * Create a data source\n *\n * Creates a new data source for the authenticated tenant.\n */\nexport const platformApiDataSourceControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Admin tenant sign-up — register a tenant user (integration-test only)\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape — wraps `Accounts.register_user/2` verbatim with no\n * business-logic divergence. Used by the integration-test bootstrap to\n * create tenant users (production user creation is UI-driven).\n *\n * The created user is **unconfirmed** and has **no tenant memberships**. To\n * obtain a Bearer token, the user must first be confirmed (via\n * `PUT /api/v1/admin/users/:id/confirm`), then exchange credentials at\n * `POST /api/v1/admin/bootstrap-session` (tenantless) or\n * `POST /api/v1/sessions` (tenant-scoped).\n *\n * Route exists only when `integration_test_only_admin_api?` is enabled\n * (dev/test); prod builds 404.\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerSignUp = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerSignUpData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses, PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors, ThrowOnError>({\n url: '/api/v1/admin/sign-up',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Trigger a manual run of a Data Activation Client\n *\n * Enqueues a one-off fetch/ingest pipeline run. Empty body or omitted `tool_call` runs with the DAC's persisted `tool_call`. Supplying a `tool_call` map applies a one-shot polymorphic override for this run only — the persisted DAC record is not modified.\n */\nexport const platformApiDataActivationClientControllerRunManually = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerRunManuallyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerRunManuallyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AI agents catalog as markdown\n *\n * Returns one page of the AI agent catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + prompt config + bound tool + I/O schemas, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiAiAgentControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerMetadataResponses, PlatformApiAiAgentControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/metadata',\n ...options\n});\n\n/**\n * List action status updaters\n *\n * Returns a paginated list of action status updaters for the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters',\n ...options\n});\n\n/**\n * Create an action status updater\n *\n * Creates a new action status updater for the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an AI agent\n *\n * Deletes an AI agent. Returns 409 if the agent is attached to a workflow.\n */\nexport const platformApiAiAgentControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options\n});\n\n/**\n * Get an AI agent\n *\n * Returns a single AI agent by ID.\n */\nexport const platformApiAiAgentControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options\n});\n\n/**\n * Replace an AI agent\n *\n * Replaces an AI agent with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiAiAgentControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAiAgentControllerUpdateResponses, PlatformApiAiAgentControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Confirm a user (admin bypass)\n *\n * Marks a user account as confirmed without requiring an email-confirmation\n * token. Idempotent — confirming an already-confirmed user is a 200 no-op\n * that returns the existing `confirmed_at` timestamp.\n *\n * Wraps `Accounts.confirm_user!/1` verbatim — exactly the primitive that\n * backs the dev/admin email-confirm path in the LiveView UI. **Zero new\n * business logic.**\n *\n * Powerful primitive: bypasses the regular email-confirmation flow. Every\n * successful call is structured-logged with `caller_user_id` and\n * `target_user_id` for forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerConfirmUser = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData, ThrowOnError>) => (options.client ?? client).put<PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/users/{id}/confirm',\n ...options\n});\n\n/**\n * List system templates\n *\n * Returns every system template usable from the datalake's data domain, plus global (domain-agnostic) templates. Each entry includes identifier, Liquid source, and optional output JSON Schema. Companion to `/datasets/:dataset_type/metadata`.\n */\nexport const platformApiTemplatesControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerIndexResponses, PlatformApiTemplatesControllerIndexErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates',\n ...options\n});\n\n/**\n * Compute the drift checksum for an action status updater config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed updater's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiActionStatusUpdaterControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerChecksumResponses, PlatformApiActionStatusUpdaterControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Invoke an AI agent\n *\n * Executes an AI agent with the provided input variables. The input must conform to the agent's `input_schema` (if defined). Returns the parsed JSON output and usage telemetry.\n */\nexport const platformApiAiAgentControllerInvoke = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerInvokeData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerInvokeResponses, PlatformApiAiAgentControllerInvokeErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/invoke',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List connected apps\n *\n * Returns a paginated list of connected apps for the authenticated tenant.\n */\nexport const platformApiConnectedAppMgmtControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',\n ...options\n});\n\n/**\n * Create a connected app\n *\n * Creates a new connected app with automatic API key provisioning.\n */\nexport const platformApiConnectedAppMgmtControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Revoke current session\n *\n * Revokes the current Bearer session — deactivates the session and deletes\n * the linked UserToken. The Bearer token becomes immediately invalid.\n *\n * Only works with `Authorization: Bearer <session_token>` (not X-API-Key\n * alone) — the key rides along as the mandatory companion credential.\n *\n */\nexport const platformApiSessionControllerDelete = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerDeleteData, ThrowOnError>) => (options?.client ?? client).delete<PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/sessions',\n ...options\n});\n\n/**\n * Sign in to a tenant (human auth)\n *\n * Exchange user credentials for a tenant-scoped Bearer session token.\n *\n * Send `{email, password, tenant_slug}` — all three required — plus the\n * tenant's publishable `X-API-Key` header. Returns a Bearer carrying the\n * caller's membership role in that tenant (or 401 if the user has no\n * membership). The key must belong to the tenant named by `tenant_slug`\n * (403 otherwise) and is stamped onto the created session's `api_key_id`\n * so it can be traced back to the publishable key that authenticated it.\n *\n * Use the returned `session_token` as `Authorization: Bearer <session_token>`\n * — accompanied by the same `X-API-Key` — on subsequent API requests.\n *\n * Optionally specify `expires_in` (seconds) to control session duration.\n * Default: 86400 (24 hours). Maximum: 2592000 (30 days).\n *\n * The tenantless bootstrap login (platform admin, pre-tenant flows) lives\n * at `POST /api/v1/admin/bootstrap-session` — an integration-test-only\n * route that does not exist in prod builds.\n *\n */\nexport const platformApiSessionControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiSessionControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/sessions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get data activation clients catalog as markdown\n *\n * Returns one page of the data activation client catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each client appears with its connected-dataset field schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiDataActivationClientControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/metadata',\n ...options\n});\n\n/**\n * List agentic workflows\n *\n * Returns a paginated list of workflows for a datalake.\n */\nexport const platformApiAgenticWorkflowControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',\n ...options\n});\n\n/**\n * Create an agentic workflow\n *\n * Creates a new workflow. AI agents are nested directly in the request body under `workflow_ai_agents` and attached transactionally with the workflow.\n */\nexport const platformApiAgenticWorkflowControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Connected apps catalog as markdown\n *\n * Returns one page of the connected app catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + URLs + discovered routes, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiConnectedAppMgmtControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerMetadataResponses, PlatformApiConnectedAppMgmtControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/metadata',\n ...options\n});\n\n/**\n * List processing logs for a Data Activation Client\n *\n * Returns a Flop-paginated list of `DataActivationLog` rows for this DAC. One log per `(batch_id, dataset_table)` — a single run produces multiple log rows, one per dataset table the DAC writes into. Filter or group client-side on `batch_id` to reconstruct a batch-level view.\n */\nexport const platformApiDataActivationClientControllerLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs',\n ...options\n});\n\n/**\n * Test invoke a tool\n *\n * Manually invokes a tool with caller-supplied parameters — the API equivalent of the 'Try It' panel in the tool form. Records a `ManualToolInvocation` for audit and returns the provider response (or error). Does not access tenant datasets, so no capability ceiling check is applied.\n */\nexport const platformApiToolControllerTestInvocation = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerTestInvocationData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerTestInvocationErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/test-invocation',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single AI agent metadata as markdown\n *\n * Returns markdown for one AI agent — wrapper + prompt config + bound tool + I/O schemas. Drill into the bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiAiAgentControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerMetadataDetailsResponses, PlatformApiAiAgentControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/metadata',\n ...options\n});\n\n/**\n * List batch run logs\n *\n * Returns a paginated list of batch-level workflow run logs.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs',\n ...options\n});\n\n/**\n * Get datalakes catalog as markdown\n *\n * Returns one page of the datalake catalog for the tenant, rendered as markdown — each entry carries slug, name, data_domain, status, repo_version and points at the per-datalake metadata endpoint for the full domain inventory. Accepts the same pagination, filtering, and ordering parameters as the datalake `index`; the page's pagination state is written into a narrative line at the top.\n */\nexport const platformApiDatalakeControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/metadata',\n ...options\n});\n\n/**\n * Single action status updater metadata as markdown\n *\n * Returns markdown for one action status updater — wrapper + cron + updater body + template configs + bound tools. Drill into a bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiActionStatusUpdaterControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses, PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/metadata',\n ...options\n});\n\n/**\n * Get single workflow metadata\n *\n * Returns a markdown document describing the workflow's variable pipeline — available variables at each node (event dataset, MDM, context datasets, enrichment, filter, decision, actions).\n */\nexport const platformApiAgenticWorkflowControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataDetailsResponses, PlatformApiAgenticWorkflowControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata',\n ...options\n});\n\n/**\n * Health check\n *\n * Public health check endpoint that returns:\n * - Application version\n * - Database connectivity status (SELECT 1 query)\n * - Current timestamp\n *\n * **No authentication required.**\n *\n */\nexport const platformApiPingControllerPing = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiPingControllerPingData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiPingControllerPingResponses, PlatformApiPingControllerPingErrors, ThrowOnError>({ url: '/api/ping', ...options });\n\n/**\n * Reveal a connected app's publishable API key (admin)\n *\n * Returns the plaintext publishable (`public_api`) API key auto-provisioned for\n * a connected app — Alvera's analogue of a Stripe publishable key. The platform\n * stores the key Cloak-encrypted \"for admin viewing\"; this endpoint decrypts and\n * returns it.\n *\n * Wraps `Platform.ApiKeys.get_api_key_plaintext/1` over the connected app's api\n * key — the same primitive the API-keys UI uses to display a key. **Zero new\n * business logic.** Returns 404 when the app does not exist or its key was revoked.\n *\n * Powerful primitive: exposes a live credential. Every successful call is\n * structured-logged with `caller_user_id`, `connected_app_id`, and `api_key_id`\n * for a forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData, ThrowOnError>) => (options.client ?? client).get<PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/connected-apps/{id}/api-key',\n ...options\n});\n\n/**\n * Sync routes\n *\n * Enqueues a background job to fetch routes from the connected app's `/.well-known/routes.json` endpoint and update the stored routes.\n */\nexport const platformApiConnectedAppMgmtControllerSyncRoutes = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerSyncRoutesData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes',\n ...options\n});\n\n/**\n * List data activation clients\n *\n * Returns a paginated list of DACs for the datalake in the path.\n */\nexport const platformApiDataActivationClientControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',\n ...options\n});\n\n/**\n * Create a data activation client\n *\n * Creates a new DAC. `slug` is auto-generated from `name`. `tool_call` is a polymorphic object whose shape depends on the `tool_call_type` discriminator — see `tool_call_type` enum for valid variants (RESTCall, SQLQueryCall, SFTPCall, SharePointExcelCall, AWSLambdaCall, ManualUploadCall, S3Call).\n */\nexport const platformApiDataActivationClientControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Verify subject identity\n *\n * Verify a subject's identity against their master record using the\n * datalake's data-domain matching rules.\n *\n * The body carries `subject_id` plus the subject's identity fields in the\n * **datalake's native vocabulary** — see the `MDMVerifyRequest` schema for\n * the field set per data domain (person identity, company identity, and\n * universal fields such as `identifiers`/`phone`/`email`). String fields are\n * fuzzy-matched (Jaro-Winkler), dates component-fuzzy-matched, and\n * identifiers exact-matched on `(system, value)`; exact rules vary per\n * domain and are documented on each schema property.\n *\n * At least one identity field the datalake's domain recognizes is required —\n * a body with none returns 422 with\n * `errors.base: [\"at least one verification field is required\"]`.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiMdmControllerVerify = <ThrowOnError extends boolean = false>(options: Options<PlatformApiMdmControllerVerifyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiMdmControllerVerifyResponses, PlatformApiMdmControllerVerifyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Bootstrap a tenantless platform-admin session (integration-test only)\n *\n * Exchanges email + password for a **tenantless** Bearer session — how the\n * very first Bearer of an environment comes into existence, before any\n * tenant (and therefore any tenant-scoped publishable key) exists. Keyless\n * by structural necessity; tenant logins belong to `POST /api/v1/sessions`,\n * which requires the tenant's `X-API-Key` — supplying `tenant_slug` here is\n * a 422.\n *\n * Route exists only when `integration_test_only_admin_api?` is enabled\n * (dev/test); prod builds 404.\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerBootstrapSession = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors, ThrowOnError>({\n url: '/api/v1/admin/bootstrap-session',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get system templates catalog as markdown\n *\n * Returns one page of the system template catalog for the datalake's data domain, rendered as markdown. Templates are a filesystem corpus: the catalog sorts them alphabetically and fake-paginates the sorted list — it reuses the `page` / `page_size` query parameters but makes no Flop DB call. Each template appears with its identifier, Liquid source, and (when present) the companion `output_schema`; the page's pagination state is written into a narrative line at the top. Trailing `Shared Types` section documents the shared `TemplateConfig` schema + Solid custom filters.\n */\nexport const platformApiTemplatesControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerMetadataResponses, PlatformApiTemplatesControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/metadata',\n ...options\n});\n\n/**\n * Compute the drift checksum for an interoperability contract config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. A client posts a desired config here and compares the result against the deployed contract's `checksum` (from GET) to detect drift (absent / unchanged / edited).\n */\nexport const platformApiInteroperabilityContractControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerChecksumResponses, PlatformApiInteroperabilityContractControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get schema metadata for a specific dataset type\n *\n * Returns a markdown document describing the fields available on a dataset type. For standard datasets (patient, appointment, etc.) returns the schema moduledoc. For generic tables, pass the generic_table_id query parameter.\n */\nexport const platformApiDatasetControllerDatasetMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerDatasetMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerDatasetMetadataErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset_type}/metadata',\n ...options\n});\n\n/**\n * Delete a connected app\n *\n * Deletes a connected app (addressed by id) within the authenticated datalake. For managed apps, infrastructure cleanup is queued before the record is removed.\n */\nexport const platformApiConnectedAppMgmtControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiConnectedAppMgmtControllerDeleteResponses, PlatformApiConnectedAppMgmtControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options\n});\n\n/**\n * Get a connected app\n *\n * Returns a single connected app by ID.\n */\nexport const platformApiConnectedAppMgmtControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options\n});\n\n/**\n * Replace a connected app\n *\n * Replaces a connected app with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiConnectedAppMgmtControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiConnectedAppMgmtControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Invite a user to the tenant\n *\n * Creates a `tenant_admin`-issued invitation. Mirrors the LiveView flow at\n * `/app/team` → \"Invite new member\". Wraps `Tenants.send_tenant_invitation/3`\n * verbatim, including the email send.\n *\n * The `role` enum is **membership-level** (`member`, `researcher`, `admin`),\n * NOT the platform-wide `User.role` enum — privilege-escalation safe by\n * construction.\n *\n * Requires a tenant-scoped Bearer with membership role `:admin`\n * (`current_role.name == \"tenant_admin\"`).\n *\n */\nexport const platformApiInvitationControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/invitations',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List tools\n *\n * Returns a paginated list of tools for the current datalake.\n */\nexport const platformApiToolControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerIndexResponses, PlatformApiToolControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools',\n ...options\n});\n\n/**\n * Create a tool\n *\n * Creates a new tool for the current datalake. Any `datalake_id` in the request body is ignored — the URL's `:datalake_slug` is authoritative.\n */\nexport const platformApiToolControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerCreateResponses, PlatformApiToolControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a tool config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed tool's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiToolControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerChecksumResponses, PlatformApiToolControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get single system template details as markdown\n *\n * Returns markdown for one system template, identified by its basename (`filename`) + `intent` query parameter. The datalake's `data_domain` (derived from `:datalake_slug`) is combined with `intent` to compute the search prefix; the server then resolves `filename` uniquely under that prefix. Out-of-domain templates are unreachable by URL construction. Returns 404 if no match, 409 if the basename is ambiguous within the resolved scope.\n */\nexport const platformApiTemplatesControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerMetadataDetailsResponses, PlatformApiTemplatesControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/{filename}/metadata',\n ...options\n});\n\n/**\n * Get a batch run log\n *\n * Returns a single batch-level workflow run log with merged artifacts.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}',\n ...options\n});\n\n/**\n * Execute a read-only SQL query against the datalake\n *\n * Executes a read-only `sql` statement (INSERT/UPDATE/DELETE/DDL are rejected) on the\n * mode-appropriate datalake schema, with Flop-inspired pagination (`page` / `page_size`;\n * page size capped server-side). Returns the page of rows in `data` and structural +\n * pagination metadata in `meta`. Pass `?format=csv` to download the page as a CSV attachment.\n *\n */\nexport const platformApiDatalakeControllerExecuteSql = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerExecuteSqlData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerExecuteSqlResponses, PlatformApiDatalakeControllerExecuteSqlErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/execute-sql',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Schedule a workflow run for matching records\n *\n * Records a **workflow run** for all dataset records matching the SQL WHERE\n * clause, and returns immediately with its id. Pass `scheduled_at` to fire it\n * at a chosen time; omit it to fire as soon as a worker picks it up. Either\n * way a run row exists, so the invocation can be listed, polled and — while\n * still `scheduled` — cancelled.\n *\n * **Breaking change in 0.23.0.** This endpoint used to execute inline and\n * return `enqueued_count`, `batch_id` and `workflow_run_log_id`. It no longer\n * can: the segment is resolved when the run fires, so the batch those fields\n * describe does not exist at response time. Read them from the run once its\n * status leaves `scheduled`.\n *\n * The clause is resolved once at request time to produce `matched_count` —\n * a preview for sanity-checking the clause. It is **not** the audience: the\n * run resolves the clause again at send time, so a run scheduled on Monday for\n * Friday reaches Friday's matches, minus suppressed records.\n *\n * When the run fires it takes the ordinary path — sampled events, workflow\n * jobs, and a WorkflowRunLog tracking batch-level progress, polled by a daily\n * DynamicCron. When that log reports the batch exhausted, the run completes.\n *\n * ## Per-step artifacts (audit trail)\n *\n * Each per-row WorkflowExecutionLog (WEL) writes a fixed set of JSON\n * artifacts to the datalake's regulated cloud-storage bucket. The path is\n * deterministic and convention-driven — there is no separate listing\n * endpoint:\n *\n * workflows/{workflow_id}/executions/{wel_id}/event.json\n * workflows/{workflow_id}/executions/{wel_id}/filter.json\n * workflows/{workflow_id}/executions/{wel_id}/enrichment.json\n * workflows/{workflow_id}/executions/{wel_id}/error.json # only on failure\n *\n * | File | Written by stage | Body |\n * | ----------------- | -------------------------------------- | ------------------------------------------------------------------ |\n * | `event.json` | context build | full WorkflowContext (event_dataset, mdm_output, additional_context)|\n * | `filter.json` | filter eval (both pass and reject) | `{filter_expression, filter_result: bool}` |\n * | `enrichment.json` | enrichment terminal (success / skip / fail) | `{status: \"completed\" \\| \"failed\" \\| \"skipped\", <agent_slug>: ...}` |\n * | `error.json` | ANY pipeline failure | `{stage, error_code, ai_agent_slug, error_message, detail}` |\n *\n * `error.json`'s presence IS the failure signal — `WEL.error_message`\n * carries only a code-grade summary; the rich URL/HTTP-status/transport\n * detail lives ONLY in `error.json[\"detail\"]`. Engineers debugging a\n * failed run should download `error.json` for full context.\n *\n * ### Fetching an artifact\n *\n * Use the standard datalake download-link endpoint\n * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`)\n * with `bucket = <regulated bucket>` and the convention key above. Example:\n *\n * POST /api/v1/tenants/acme/datalakes/clinical/download-link\n * { \"bucket\": \"clinical-regulated\", \"key\": \"workflows/<wf_id>/executions/<wel_id>/error.json\" }\n *\n * The response carries a short-lived signed URL. The regulated bucket is\n * exposed on the datalake response as `regulated_cloud_storage.bucket`.\n *\n */\nexport const platformApiAgenticWorkflowOperationsControllerRunWorkflow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/run-workflow',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single data source metadata as markdown\n *\n * Returns markdown for one data source — wrapper + bound tools listing. Drill into a bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiDataSourceControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerMetadataDetailsResponses, PlatformApiDataSourceControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}/metadata',\n ...options\n});\n\n/**\n * Force-refresh a batch run log\n *\n * Triggers an immediate refresh of the batch run log metrics and merged artifacts.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh',\n ...options\n});\n\n/**\n * Single connected app metadata as markdown\n *\n * Returns markdown for one connected app — wrapper + URLs + discovered routes.\n */\nexport const platformApiConnectedAppMgmtControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses, PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/metadata',\n ...options\n});\n\n/**\n * Start or restart refresh polling for a batch run log\n *\n * Creates a DynamicCron job to poll this batch. Idempotent — if cron already exists, it's a no-op.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogStart = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start',\n ...options\n});\n\n/**\n * Get a workflow execution log\n *\n * Returns a single execution log with action execution details. Each action\n * execution log carries a `message_body` virtual field populated from the\n * datalake message linked via `message_id`. The `data_access_mode` query\n * parameter selects which datalake schema is read for the body — defaults\n * to the session's `data_access_mode` ceiling.\n *\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}',\n ...options\n});\n\n/**\n * Delete an interoperability contract\n *\n * Deletes a contract (addressed by id). System-created contracts are rejected with 422. DAC mappings to this contract are removed via DB cascade.\n */\nexport const platformApiInteroperabilityContractControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiInteroperabilityContractControllerDeleteResponses, PlatformApiInteroperabilityContractControllerDeleteErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options\n});\n\n/**\n * Get an interoperability contract\n *\n * Returns a single contract by id, scoped to the datalake.\n */\nexport const platformApiInteroperabilityContractControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerShowResponses, PlatformApiInteroperabilityContractControllerShowErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options\n});\n\n/**\n * Replace an interoperability contract\n *\n * Replaces a contract (addressed by id) with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.\n */\nexport const platformApiInteroperabilityContractControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiInteroperabilityContractControllerUpdateResponses, PlatformApiInteroperabilityContractControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a generic table\n *\n * Deletes a custom generic table addressed by id. Guarded: returns 409 Conflict when the backing table still holds rows — delete the rows first. When empty, drops both physical tables (regulated + unregulated) and removes the metadata.\n */\nexport const platformApiGenericTableControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiGenericTableControllerDeleteResponses, PlatformApiGenericTableControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options\n});\n\n/**\n * Get a generic table\n *\n * Returns a single generic table by id within the datalake. Matches custom tables scoped to the datalake plus system tables for the data domain. Agents enumerate via `list` (the generic-tables index) — or resolve a name to its id via `filter[handle]` — and address by id. Industry-built datasets live separately under `system-datasets`.\n */\nexport const platformApiGenericTableControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerShowResponses, PlatformApiGenericTableControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options\n});\n\n/**\n * Update a generic table\n *\n * Full-replace update of a custom generic table, addressed by id within the datalake. Every field in the request is required (PUT semantics) — the same body shape as create, so `alvera apply` can resend a full manifest to reconcile drift. Re-runs the regulated mirror + migration for the new column set.\n */\nexport const platformApiGenericTableControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiGenericTableControllerUpdateResponses, PlatformApiGenericTableControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Run a contract against a payload (sandbox)\n *\n * Runs the contract's `filter → transform → mdm_input` pipeline against the supplied JSON row. Stateless — no DB writes. Use for template authoring/testing.\n */\nexport const platformApiInteroperabilityContractControllerRun = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerRunData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerRunErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Dataset-type catalog as markdown\n *\n * Returns the markdown catalog of every dataset type registered to this datalake's data domain, each rendered with its schema documentation. The dataset-type set is small and fixed per domain, so the whole catalog is returned in one document — no pagination.\n */\nexport const platformApiDatasetControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerMetadataResponses, PlatformApiDatasetControllerMetadataErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/metadata',\n ...options\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl: 'http://localhost:4000' | 'http://localhost:4010' | 'https://platform-hh.alvera.ai' | 'https://app.alvera.ai' | (string & {});\n};\n\n/**\n * TextToSqlRequest\n *\n * Natural-language prompt to generate datalake SQL for, plus the data access mode.\n */\nexport type TextToSqlRequest = {\n /**\n * Which datalake schema to target: `unregulated` (tokenized) or `regulated` (raw)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * Natural-language description of the desired query\n */\n prompt: string;\n};\n\n/**\n * UserSearchResponse\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n *\n */\nexport type UserSearchResponse = {\n /**\n * SQL execution error message when status is `error`; null otherwise\n */\n readonly error_message?: string | null;\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * User search ID\n */\n readonly id?: string;\n /**\n * Resource type the search runs against (e.g. \"patient\", \"appointment\", \"generic_table\"). On `POST /datasets/:dataset/user-searches` this is taken from the URL path; on the response it echoes that value.\n */\n readonly resource_type?: string;\n /**\n * Number of rows the SQL search matched\n */\n readonly results_count?: number | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n /**\n * Search execution status\n */\n readonly status?: 'new' | 'in_progress' | 'completed' | 'error';\n};\n\n/**\n * ActionExecutionLogResponse\n *\n * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.\n */\nexport type ActionExecutionLogResponse = {\n /**\n * Action ID\n */\n action_id: string;\n action_type: ActionType;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n /**\n * Completed-at timestamp\n */\n completed_at?: string | null;\n /**\n * Context key\n */\n context_key?: string | null;\n /**\n * Decision key (denormalised from action)\n */\n decision_key?: string | null;\n /**\n * Error description (no customer data)\n */\n error_message?: string | null;\n /**\n * External system reference (Twilio SID, SES message ID, etc.)\n */\n external_id?: string | null;\n /**\n * Action execution log ID\n */\n id: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Rendered message body for this action (mode-driven; null when no message was sent)\n */\n readonly message_body?: string | null;\n /**\n * Cross-DB UUID of the message produced by this action (datalake-resident; no FK)\n */\n message_id?: string | null;\n /**\n * Execution mode (`live` = normal, `dry_run` = preview only)\n */\n mode: 'live' | 'dry_run';\n /**\n * Retry count\n */\n retry_count?: number;\n /**\n * Result of the action's runtime_filter Liquid expression\n */\n runtime_filter_result?: boolean | null;\n /**\n * Scheduled-at timestamp\n */\n scheduled_at?: string | null;\n /**\n * Started-at timestamp\n */\n started_at?: string | null;\n /**\n * Execution state\n */\n status: 'pending' | 'executing' | 'completed' | 'failed' | 'skipped' | 'filtered' | 'cancelled';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Parent workflow execution log ID\n */\n workflow_execution_log_id: string;\n /**\n * Workflow ID\n */\n workflow_id: string;\n};\n\n/**\n * ManualUploadRequest\n *\n * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows. Request\n */\nexport type ManualUploadRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ContextDatasetResponse\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages.\n */\nexport type ContextDatasetResponse = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Context dataset ID\n */\n readonly id?: string;\n readonly inserted_at?: string;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n readonly updated_at?: string;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n /**\n * Parent workflow id\n */\n readonly workflow_id?: string;\n};\n\n/**\n * ConnectedAppApiKeyResponse\n *\n * A connected app's publishable (public_api) API key, revealed for a platform admin.\n */\nexport type ConnectedAppApiKeyResponse = {\n /**\n * Plaintext publishable (public_api) key — embed in a connected app to call its allowlist routes.\n */\n api_key: string;\n /**\n * ID of the connected app whose key was revealed.\n */\n connected_app_id: string;\n /**\n * Last 4 characters of the key, matching the value shown in the API-keys UI.\n */\n last_four: string;\n};\n\n/**\n * DatalakeRequest\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses. Request\n */\nexport type DatalakeRequest = {\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * ToolRESTAPIRequest\n */\nexport type ToolRestapiRequest = RestapiRequest & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * DataActivationClientListResponse\n *\n * Paginated list of data activation clients\n */\nexport type DataActivationClientListResponse = {\n /**\n * List of data activation clients\n */\n data: Array<DataActivationClientResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * MembershipResponse\n *\n * Tenant membership — binds a user to a tenant with a role.\n */\nexport type MembershipResponse = {\n /**\n * Membership ID\n */\n readonly id: string;\n /**\n * Tenant-membership role.\n */\n readonly role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponse;\n};\n\n/**\n * EmailCallRequest\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body. Request\n */\nexport type EmailCallRequest = {\n body: SimpleTemplateConfigRequest;\n subject: SimpleTemplateConfigRequest;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionEmailCallRequest\n */\nexport type ActionEmailCallRequest = EmailCallRequest & {\n tool_call_type: 'email_request';\n};\n\n/**\n * DatalakeCloudStorageCustomResponse\n */\nexport type DatalakeCloudStorageCustomResponse = CloudStorageCustomResponse & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * AgenticWorkflowResponse\n *\n * Agentic Workflow — event-driven automation pipeline\n */\nexport type AgenticWorkflowResponse = {\n /**\n * Decision actions attached to this workflow (response — includes id, workflow_id and timestamps)\n */\n readonly actions?: Array<ActionResponse>;\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Context-enrichment datasets loaded before the decision stage (response — includes id, workflow_id and timestamps)\n */\n readonly context_datasets?: Array<ContextDatasetResponse>;\n datalake?: DatalakeResponse;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigResponse | null;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigResponse | null;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * URL-friendly slug\n */\n readonly slug?: string;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * AI agents attached to this workflow (response — full detail with nested agent)\n */\n readonly workflow_ai_agents?: Array<WorkflowAiAgentResponse>;\n};\n\n/**\n * ManualToolInvocationResponse\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.\n */\nexport type ManualToolInvocationResponse = {\n /**\n * Provider error message on failure.\n */\n readonly error_message?: string | null;\n /**\n * Invocation ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Provider response payload on success (provider-specific). SQL try-it returns `rows`, `row_count` and `truncated`; other providers return their own shape.\n */\n readonly result?: {\n /**\n * SQL try-it only — number of rows in `rows`.\n */\n row_count?: number;\n /**\n * SQL try-it only — result rows, each an array of column values.\n */\n rows?: Array<Array<unknown>>;\n /**\n * SQL try-it only — `true` when the preview filled its 100-row window, meaning this is a partial view and the query returns at least this many rows. Render it as a partial result, never as the complete answer.\n */\n truncated?: boolean;\n [key: string]: unknown;\n } | null;\n /**\n * Execution status — server-set. `pending` is the initial state, `success`/`error` reflect provider response.\n */\n readonly status?: 'pending' | 'success' | 'error';\n tool_call?: ({\n tool_call_type: 'sms_request';\n } & ManualToolInvocationSmsCallResponse) | ({\n tool_call_type: 'mms_request';\n } & ManualToolInvocationMmsCallResponse) | ({\n tool_call_type: 'email_request';\n } & ManualToolInvocationEmailCallResponse) | ({\n tool_call_type: 'restapi_request';\n } & ManualToolInvocationRestCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & ManualToolInvocationAwsLambdaCallResponse) | ({\n tool_call_type: 'sql_query';\n } & ManualToolInvocationSqlQueryCallResponse);\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * CloudWatchLogGroupResponse\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling.\n */\nexport type CloudWatchLogGroupResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigResponse | null;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * S3CallRequest\n *\n * S3 file-path descriptor — identifies an object for downstream validation/read. Request\n */\nexport type S3CallRequest = {\n /**\n * S3 object key/path (no s3:// prefix)\n */\n file_path: string;\n};\n\n/**\n * CloudflarePagesConfigResponse\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps\n */\nexport type CloudflarePagesConfigResponse = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n /**\n * Cloudflare Pages project name (server-assigned after project creation)\n */\n readonly project_name?: string | null;\n};\n\n/**\n * TenantResponse\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n *\n */\nexport type TenantResponse = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Tenant ID\n */\n readonly id: string;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n /**\n * URL-friendly tenant slug — derived from `name` by the server.\n */\n readonly slug: string;\n};\n\n/**\n * ActionSMSCallRequest\n */\nexport type ActionSmsCallRequest = SmsCallRequest & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ComplexTemplateConfigRequest\n *\n * Inline Liquid template configuration including the rendered-output JSON Schema Request\n */\nexport type ComplexTemplateConfigRequest = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * JSON Schema describing expected rendered output\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * DataActivationClientLogResponse\n *\n * One log row per `(batch_id, dataset_table)`. A batch fans out into one log per dataset table — so a single run (one `batch_id`) produces multiple log rows, one per table the DAC writes into. Once `BatchMergeWorker` has finished, `output_files` carries one entry per bucket mode, each an `object_key` — a cloud-storage key, not a URL. To read an archive, presign the key with `POST /datalakes/{datalake_slug}/download-link`.\n */\nexport type DataActivationClientLogResponse = {\n /**\n * Batch identifier stamped on every Oban job for this run\n */\n batch_id: string;\n /**\n * Owning Data Activation Client ID\n */\n readonly client_id: string;\n /**\n * Target dataset table for this slice (e.g. patients, observations)\n */\n dataset_table: string;\n /**\n * Number of existing rows whose checksum changed (trigger-maintained)\n */\n dataset_updated?: number;\n /**\n * Structured failure reason when `status` is `failed`; null otherwise.\n */\n readonly error?: string | null;\n /**\n * Run log ID\n */\n readonly id?: string;\n /**\n * Source file keys fetched for this slice\n */\n input_files?: Array<string>;\n readonly inserted_at?: string;\n /**\n * Merged NDJSON archives produced by `BatchMergeWorker`, one entry per bucket mode. Empty until the merge completes. Parse `object_key` (`s3://bucket/key`) and fetch a presigned URL via the datalake download-link endpoint.\n */\n readonly output_files?: Array<DacRawLogFileResponse>;\n /**\n * Total source rows ingested by this slice of the batch\n */\n rows_ingested?: number;\n /**\n * `failed` when the batch died before enqueueing any row — the fetch itself errored. `rows_ingested` and `input_files` are 0/[] on such a row; read `error` for the reason.\n */\n status?: 'succeeded' | 'failed';\n readonly updated_at?: string;\n};\n\n/**\n * S3CallResponse\n *\n * S3 file-path descriptor — identifies an object for downstream validation/read.\n */\nexport type S3CallResponse = {\n /**\n * S3 object key/path (no s3:// prefix)\n */\n file_path: string;\n};\n\n/**\n * ActionStatusUpdaterResponse\n *\n * Action Status Updater — automated polling for delivery status updates.\n */\nexport type ActionStatusUpdaterResponse = {\n action_log_config: SimpleTemplateConfigResponse | null;\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * Action Status Updater ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * When the poll worker last completed a run (null until the first run)\n */\n readonly last_run_at?: string | null;\n /**\n * Why the last poll run failed, or why a `partial` run was truncated; null when the run completed and read its whole window\n */\n readonly last_run_error?: string | null;\n /**\n * Events the last poll run fetched from the updater tool\n */\n readonly last_run_events_found?: number | null;\n /**\n * Outcome of the last poll run. `partial` means the run completed but its provider fetch was truncated, so the window was not fully read and the newest events may be missing — read `last_run_error` for detail.\n */\n readonly last_run_status?: 'ok' | 'partial' | 'error';\n message_config: SimpleTemplateConfigResponse;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tenant ID\n */\n readonly tenant_id?: string;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n updater_body: ({\n updater_body_type: 'cloud_watch_request';\n } & ActionStatusUpdaterCloudWatchQueryResponse) | ({\n updater_body_type: 'restapi_request';\n } & ActionStatusUpdaterRestCallResponse);\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * IngestRequest\n *\n * Request body for data ingestion\n */\nexport type IngestRequest = {\n /**\n * JSON data to ingest\n */\n data: {\n [key: string]: unknown;\n };\n};\n\n/**\n * DataActivationClientSharePointExcelCallRequest\n */\nexport type DataActivationClientSharePointExcelCallRequest = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * WorkflowRunResponse\n *\n * A workflow invocation scheduled for a caller-chosen time. Every manual\n * invocation creates one, including an immediate send, which is simply\n * `scheduled_at` = now — there is no separate run-now path.\n *\n * A run is not a workflow run log. The run is the intent and is cancellable\n * while `scheduled`; the run log is the outcome it produces, and run logs also\n * arrive from Data Activation Client ingestion with no run behind them.\n *\n * The segment is resolved when the run **fires**, not when it is scheduled.\n * `matched_count` is the preview the operator saw; the audience is whatever\n * `execution_user_search_id` resolved to at send time, minus suppressed and\n * unreachable records.\n *\n */\nexport type WorkflowRunResponse = {\n /**\n * Batch identifier for correlating with the workflow run log. Null until the run fires.\n */\n readonly batch_id?: string | null;\n /**\n * When the run reached a terminal state.\n */\n readonly completed_at?: string | null;\n /**\n * The search actually resolved when the run fired — its results are the audience that received the send. Null until the run fires; never the same row as `preview_user_search_id`.\n */\n readonly execution_user_search_id?: string | null;\n /**\n * Why the run could not fan out, when status is 'failed'.\n */\n readonly failure_reason?: string | null;\n /**\n * When the fan-out began. Null until the run fires.\n */\n readonly fired_at?: string | null;\n /**\n * Workflow run ID\n */\n readonly id?: string;\n /**\n * Bypasses dedupe and idempotency checks for every record this run matches.\n */\n manual_override?: boolean;\n /**\n * Audience size previewed at schedule time. NOT the number that received the send — the segment is resolved again when the run fires, and suppressed records are excluded then.\n */\n readonly matched_count?: number | null;\n /**\n * 'live' fires real tool calls; 'dry_run' runs the pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * The resolved search this run was scheduled against. Create it with `POST /datasets/:dataset/user-searches`; its `results_count` becomes this run's `matched_count`.\n */\n preview_user_search_id: string;\n /**\n * When this run fires, in UTC. An immediate send is simply now. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at: string;\n /**\n * Run state. Cancellation is refused once processing.\n */\n readonly status?: 'scheduled' | 'processing' | 'completed' | 'cancelled' | 'failed';\n /**\n * The workflow this run invokes\n */\n readonly workflow_id?: string;\n /**\n * The run log this run produced. Null until the run fires.\n */\n readonly workflow_run_log_id?: string | null;\n};\n\n/**\n * AgenticWorkflowRequest\n *\n * Agentic Workflow — event-driven automation pipeline Request\n */\nexport type AgenticWorkflowRequest = {\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigRequest;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ToolIntent\n *\n * Tool intent — what category of capability the tool provides.\n */\nexport enum ToolIntent {\n SMS = 'sms',\n MMS = 'mms',\n EMAIL = 'email',\n EXPORT = 'export',\n VOICE = 'voice',\n DATA_EXCHANGE = 'data_exchange',\n STATUS_POLLER = 'status_poller',\n LLM_ENRICHMENT = 'llm_enrichment'\n}\n\n/**\n * AWSLambdaResponse\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes.\n */\nexport type AwsLambdaResponse = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigResponse | null;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Error message if CloudFormation deployment fails\n */\n readonly error?: string | null;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * ARN of the Secrets Manager secret containing Lambda secrets (server-managed)\n */\n readonly secrets_manager_secret_arn?: string | null;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * CloudFormation stack ARN (populated by async deployment worker)\n */\n readonly stack_id?: string | null;\n /**\n * Human-readable CloudFormation stack name\n */\n readonly stack_name?: string | null;\n /**\n * Current CloudFormation stack status (server-managed)\n */\n readonly stack_status?: 'create_in_progress' | 'create_complete' | 'create_failed' | 'rollback_in_progress' | 'rollback_complete' | 'rollback_failed' | 'delete_in_progress' | 'delete_complete' | 'delete_failed' | 'update_in_progress' | 'update_complete' | 'update_failed' | 'update_rollback_complete' | 'update_rollback_failed';\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ActionSharePointExcelCallResponse\n */\nexport type ActionSharePointExcelCallResponse = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractAiAgentRequest\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline. Request\n */\nexport type InteroperabilityContractAiAgentRequest = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * DataActivationClientSQLQueryCallResponse\n */\nexport type DataActivationClientSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * UserResponse\n *\n * Lean user reference — id, email, and names\n */\nexport type UserResponse = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name?: string | null;\n /**\n * User ID\n */\n readonly id: string;\n /**\n * Last name\n */\n last_name?: string | null;\n};\n\n/**\n * ExecuteActionRequest\n *\n * Request body for executing a workflow action for a dataset record\n */\nexport type ExecuteActionRequest = {\n /**\n * ID of the dataset record to process\n */\n dataset_id: string;\n /**\n * Decision key identifying which action to execute (e.g. 'cahps_survey')\n */\n decision_key: string;\n /**\n * When true, bypasses idempotency and dedupe checks — action will fire even if already executed for this dataset record. Filters still apply. Mirrors `/run-workflow`'s `manual_override` field.\n */\n manual_override?: boolean;\n /**\n * Execution mode. 'live' fires real tool calls; 'dry_run' runs the full pipeline and records the computed payload without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * When true, the action's `trigger_template` schedule is bypassed and the queued job is dispatched immediately. The ActionExecutionLog still records the trigger-rendered `scheduled_at` — only the Oban job is fast-forwarded. Use this to force a future-triggered action (e.g. a year-roll birthday SMS) to fire now, which is the only way to drive such a workflow to completion inside a live test or cookbook run.\n */\n trigger_override?: boolean;\n};\n\n/**\n * MDMNotVerified\n */\nexport type MdmNotVerified = {\n /**\n * Field-level verification failure details\n */\n errors: {\n [key: string]: Array<string>;\n };\n status: 'not_verified';\n /**\n * The subject ID that failed verification\n */\n subject_id: string;\n /**\n * Timestamp of verification attempt\n */\n verified_at: string;\n};\n\n/**\n * InteroperabilityRunResponse\n *\n * Pipeline output for a single row. `stage` indicates the last pipeline stage reached; `transformed`/`mdm_input` are populated only when that stage executed successfully.\n */\nexport type InteroperabilityRunResponse = {\n /**\n * Result of the row-level Liquid filter.\n */\n filter_result: 'pass' | 'skip';\n /**\n * Output of `mdm_input_config` rendering. `null` when filtered or when mdm_input_config is null/identity.\n */\n mdm_input?: {\n [key: string]: unknown;\n } | null;\n /**\n * `completed` = row passed filter, transform, and mdm_input. `filtered` = skipped by filter_template (transform/mdm_input not run).\n */\n stage: 'completed' | 'filtered';\n /**\n * Output of `template_config` rendering. `null` when stage == \"filtered\".\n */\n transformed?: {\n [key: string]: unknown;\n } | null;\n};\n\n/**\n * ErrorResponse\n *\n * Error response\n */\nexport type ErrorResponse = {\n /**\n * Error details - values can be strings or arrays of strings (for validation errors)\n */\n errors?: {\n [key: string]: string | Array<string>;\n };\n};\n\n/**\n * ChecksumResponse\n *\n * Server-computed drift fingerprint for a submitted config.\n */\nexport type ChecksumResponse = {\n /**\n * sha256 fingerprint over the config's authored fields, hex-lowercased\n */\n checksum: string;\n};\n\n/**\n * ResolvePageResponse\n *\n * Resolved page token details for the connected app to render\n */\nexport type ResolvePageResponse = {\n /**\n * Arbitrary context data rendered from workflow action template\n */\n additional_context?: {\n [key: string]: unknown;\n } | null;\n /**\n * When this page token expires\n */\n expires_at: string;\n /**\n * Regulated message from the workflow action that generated this page token (raw body/subject)\n */\n message?: {\n /**\n * Raw message body text (SMS content or email body)\n */\n body?: string | null;\n /**\n * Message channel\n */\n channel: 'sms' | 'mms' | 'email' | 'voice' | 'web_form' | 'push';\n /**\n * When delivery was confirmed\n */\n delivered_at?: string | null;\n /**\n * External system reference (Twilio SID, SES ID)\n */\n external_id?: string | null;\n /**\n * Reason for delivery failure\n */\n failure_reason?: string | null;\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * Regulated message UUID\n */\n id: string;\n /**\n * Message metadata (e.g. recipient phone/email)\n */\n metadata?: {\n [key: string]: unknown;\n } | null;\n /**\n * When the message was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * When the message was queued for delivery\n */\n queued_at?: string | null;\n /**\n * When the message was read by the recipient\n */\n read_at?: string | null;\n /**\n * When the message was sent\n */\n sent_at?: string | null;\n /**\n * SMS carrier of the recipient\n */\n sms_carrier?: string | null;\n /**\n * Delivery status\n */\n status: 'pending' | 'queued' | 'sent' | 'delivered' | 'read' | 'opened' | 'clicked' | 'form_submitted' | 'failed' | 'invalidated' | 'customer_rejected' | 'dry_run' | 'received';\n /**\n * Human-readable detail behind the current status, rendered from the delivery provider's event (e.g. the mailgun event name, or a bounce reason on failure)\n */\n status_description?: string | null;\n /**\n * Raw email subject line (null for SMS)\n */\n subject?: string | null;\n } | null;\n /**\n * Route path within the connected app (e.g. /forms/cahps)\n */\n route_path: string;\n /**\n * MDM subject ID associated with this page token\n */\n subject_id: string;\n /**\n * Puid token that was resolved\n */\n url_hash: string;\n /**\n * Original client User-Agent from the request\n */\n user_agent?: string | null;\n};\n\n/**\n * ActionType\n *\n * Workflow action category — selects the downstream dispatcher.\n */\nexport enum ActionType {\n SMS = 'sms',\n MMS = 'mms',\n EMAIL = 'email',\n VOICE = 'voice',\n DATA_EXCHANGE = 'data_exchange'\n}\n\n/**\n * MDMVerifyRequest\n *\n * Request body for MDM subject identity verification.\n *\n * Every MDM subject is ultimately a **person** or a **company**, so the identity\n * fields are organized along that ontology rather than per industry. All identity\n * fields are optional on the wire; the datalake's own data-domain validator casts\n * only the fields its domain knows and requires **at least one** of them — a body\n * that carries only fields foreign to the datalake's domain (or none at all)\n * returns 422 with `errors.base: [\"at least one verification field is required\"]`.\n *\n * Field vocabulary per data domain:\n *\n * | data_domain | identity fields |\n * |---|---|\n * | `healthcare` | `given_name`, `family_name`, `birth_date`, `gender`, `phone`, `email`, `identifiers` |\n * | `foundation` | `legal_entity_type`, `first_name`, `middle_name`, `last_name`, `preferred_name`, `date_of_birth`, `citizenship_country`, `nationality`, `business_name`, `doing_business_as_names`, `date_formed`, `jurisdiction_country`, `phone`, `email`, `identifiers` |\n * | `subscription` | `customer_type`, `name`, `tax_id`, `phone`, `email`, `identifiers` |\n * | `service_commerce` | `consumer_type`, `name`, `phone`, `email`, `identifiers` |\n * | `core_banking` | `party_type`, `given_name`, `family_name`, `company_name`, `birth_date`, `phone`, `email`, `identifiers` |\n * | `payments` | `account_holder_type`, `given_name`, `family_name`, `company_name`, `birth_date`, `phone`, `email`, `identifiers` (each identifier additionally requires `id_type`) |\n *\n */\nexport type MdmVerifyRequest = {\n /**\n * payments: individual | business\n */\n account_holder_type?: string;\n /**\n * Date of birth — healthcare, core_banking, payments (component-fuzzy match)\n */\n birth_date?: string;\n /**\n * Business name — foundation (fuzzy match incl. doing-business-as names)\n */\n business_name?: string;\n /**\n * Citizenship country — foundation\n */\n citizenship_country?: string;\n /**\n * Company legal name — core_banking (exact match), payments\n */\n company_name?: string;\n /**\n * service_commerce consumer kind\n */\n consumer_type?: string;\n /**\n * subscription customer kind\n */\n customer_type?: string;\n /**\n * Company formation date — foundation (component-fuzzy match)\n */\n date_formed?: string;\n /**\n * Date of birth — foundation (component-fuzzy match)\n */\n date_of_birth?: string;\n /**\n * Doing-business-as names — foundation\n */\n doing_business_as_names?: Array<string>;\n /**\n * Email address\n */\n email?: string;\n /**\n * Family/last name — healthcare, core_banking, payments (fuzzy match)\n */\n family_name?: string;\n /**\n * Given/first name — foundation (fuzzy match over first/middle/preferred)\n */\n first_name?: string;\n /**\n * Administrative gender — healthcare\n */\n gender?: string;\n /**\n * Given/first name — healthcare, core_banking, payments (fuzzy match)\n */\n given_name?: string;\n /**\n * Identifiers for exact (system, value) matching — every domain\n */\n identifiers?: Array<{\n /**\n * Issuing country — foundation\n */\n country?: string;\n /**\n * Identifier kind (e.g. us_ssn, lei, digital_identifier) — required by payments\n */\n id_type?: string;\n /**\n * Identifier system (e.g. MRN, SSN, account_holder_number)\n */\n system: string;\n /**\n * Identifier value\n */\n value: string;\n }>;\n /**\n * Jurisdiction country — foundation\n */\n jurisdiction_country?: string;\n /**\n * Family/last name — foundation (fuzzy match)\n */\n last_name?: string;\n /**\n * foundation: individual | business\n */\n legal_entity_type?: string;\n /**\n * Middle name — foundation\n */\n middle_name?: string;\n /**\n * Subject full name (person or company) — subscription, service_commerce (fuzzy match)\n */\n name?: string;\n /**\n * Nationality — foundation\n */\n nationality?: string;\n /**\n * core_banking: individual | organization | sole_trader | partnership | trust | government\n */\n party_type?: string;\n /**\n * Phone number — service_commerce matches it; other domains accept it\n */\n phone?: string;\n /**\n * Preferred/nickname — foundation\n */\n preferred_name?: string;\n /**\n * The MDM subject ID to verify against\n */\n subject_id: string;\n /**\n * Tax identifier — subscription (exact match)\n */\n tax_id?: string;\n};\n\n/**\n * MMSCallRequest\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL. Request\n */\nexport type MmsCallRequest = {\n body: SimpleTemplateConfigRequest;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionResponse\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator.\n */\nexport type ActionResponse = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Action ID\n */\n readonly id?: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n readonly inserted_at?: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n tool_call: ({\n tool_call_type: 'sms_request';\n } & ActionSmsCallResponse) | ({\n tool_call_type: 'mms_request';\n } & ActionMmsCallResponse) | ({\n tool_call_type: 'email_request';\n } & ActionEmailCallResponse) | ({\n tool_call_type: 'sql_query';\n } & ActionSqlQueryCallResponse) | ({\n tool_call_type: 'restapi_request';\n } & ActionRestCallResponse) | ({\n tool_call_type: 'sftp_request';\n } & ActionSftpCallResponse) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & ActionSharePointExcelCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & ActionAwsLambdaCallResponse) | ({\n tool_call_type: 'manual_upload';\n } & ActionManualUploadCallResponse);\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n readonly updated_at?: string;\n /**\n * Parent workflow id\n */\n readonly workflow_id?: string;\n};\n\n/**\n * ManualUploadCallRequest\n *\n * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload. Request\n */\nexport type ManualUploadCallRequest = {\n [key: string]: unknown;\n};\n\n/**\n * EndUserMessagingRequest\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API. Request\n */\nexport type EndUserMessagingRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Custom S3 endpoint URL for media staging (e.g. http://localhost:4566 for LocalStack); leave blank for AWS S3 in the tool's region\n */\n media_endpoint_url?: string | null;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractResponse\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.\n */\nexport type InteroperabilityContractResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Owning datalake ID (matches `:datalake_slug` path segment). Server-set on create; request bodies should omit this — it is taken from the path.\n */\n readonly datalake_id?: string;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * AI agents attached to this contract (response — full detail with nested agent)\n */\n readonly interoperability_contract_ai_agents?: Array<InteroperabilityContractAiAgentResponse>;\n mdm_input_config?: SimpleTemplateConfigResponse | null;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n /**\n * Whether this contract was auto-created by the system (read-only, cannot be edited or deleted)\n */\n readonly system_created?: boolean;\n template_config: SimpleTemplateConfigResponse;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DownloadLinkRequest\n *\n * Request body for presigning a GET URL against a datalake's cloud storage. `bucket` must match either the regulated or unregulated storage config of the path-scoped datalake; `key` is the object key within that bucket.\n */\nexport type DownloadLinkRequest = {\n /**\n * Cloud-storage bucket — must belong to the path-scoped datalake.\n */\n bucket: string;\n /**\n * Object key within the bucket (no leading slash).\n */\n key: string;\n};\n\n/**\n * ToolSharePointRequest\n */\nexport type ToolSharePointRequest = SharePointRequest & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ActionSMSCallResponse\n */\nexport type ActionSmsCallResponse = SmsCallResponse & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ToolAWSLambdaResponse\n */\nexport type ToolAwsLambdaResponse = AwsLambdaResponse & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * ToolManualUploadResponse\n */\nexport type ToolManualUploadResponse = ManualUploadResponse & {\n tool_body_type: 'manual_upload';\n};\n\n/**\n * ExecuteSqlMeta\n *\n * Structural and pagination metadata for an `execute-sql` result — enough for an agent to\n * reason about the shape of the result without scanning the rows. The pagination fields\n * (`page`, `page_size`, `total_count`, `total_pages`) mirror `PaginationMeta`; their values\n * come from the Lotus window result, not Flop.\n *\n */\nexport type ExecuteSqlMeta = {\n /**\n * Result column names, in order\n */\n columns: Array<string>;\n /**\n * SQL command tag (e.g. `SELECT`)\n */\n command?: string | null;\n /**\n * Query execution time in milliseconds\n */\n duration_ms?: number | null;\n /**\n * Rows returned in this page\n */\n num_rows: number;\n /**\n * 1-based page number\n */\n page: number;\n /**\n * Rows per page actually applied (after capping)\n */\n page_size: number;\n /**\n * Total rows across all pages (null if uncounted)\n */\n total_count: number | null;\n /**\n * Total pages (null if uncounted)\n */\n total_pages: number | null;\n};\n\n/**\n * UpdatePageRequest\n *\n * Request body for updating message tracking fields on a resolved page\n */\nexport type UpdatePageRequest = {\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * When the page was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * Puid token extracted from the short URL\n */\n short_path: string;\n /**\n * Engagement status reported by the connected app — typically \"opened\", \"clicked\", or \"form_submitted\". Applied through the monotonic status guard, so it only ever advances the message and never regresses it.\n */\n status?: string | null;\n};\n\n/**\n * InvitationResponse\n *\n * Pending tenant invitation — resolved into a Membership on accept.\n */\nexport type InvitationResponse = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Invitation ID\n */\n readonly id?: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponse;\n};\n\n/**\n * ToolRequest\n *\n * Tool — a configurable capability reference for external services. Request\n */\nexport type ToolRequest = {\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigRequest;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * SimpleTemplateConfigRequest\n *\n * Inline Liquid template configuration (output_schema is server-derived, never request-supplied) Request\n */\nexport type SimpleTemplateConfigRequest = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * AWSLambdaRequest\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes. Request\n */\nexport type AwsLambdaRequest = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigRequest;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ToolSQSRequest\n */\nexport type ToolSqsRequest = SqsRequest & {\n tool_body_type: 'sqs';\n};\n\n/**\n * DownloadUrlResponse\n *\n * Presigned download URL for a stored cloud-storage artifact.\n */\nexport type DownloadUrlResponse = {\n /**\n * Presigned URL valid for a short TTL; fetch the artifact within the window.\n */\n url: string;\n};\n\n/**\n * MDMVerified\n */\nexport type MdmVerified = {\n status: 'verified';\n /**\n * The verified subject ID\n */\n subject_id: string;\n /**\n * Timestamp of verification\n */\n verified_at: string;\n};\n\n/**\n * SMSCallResponse\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category.\n */\nexport type SmsCallResponse = {\n body: SimpleTemplateConfigResponse;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ResolvePageRequest\n *\n * Request body for resolving a connected app page from a short URL token\n */\nexport type ResolvePageRequest = {\n /**\n * Client country code (CF-IPCountry)\n */\n country?: string;\n /**\n * Original client IP (CF-Connecting-IP)\n */\n ip?: string;\n /**\n * Additional Cloudflare metadata (CF-Ray, etc.)\n */\n metadata?: {\n [key: string]: unknown;\n };\n /**\n * Puid token extracted from the short URL\n */\n short_path: string;\n /**\n * Original client User-Agent forwarded by Cloudflare\n */\n user_agent?: string;\n};\n\n/**\n * ActionRequest\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator. Request\n */\nexport type ActionRequest = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * DatalakeCloudStorageR2Request\n */\nexport type DatalakeCloudStorageR2Request = CloudStorageR2Request & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * AWSLambdaCallResponse\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.\n */\nexport type AwsLambdaCallResponse = {\n payload: SimpleTemplateConfigResponse;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * DataActivationClientRESTCallRequest\n */\nexport type DataActivationClientRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * RESTCallResponse\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there.\n */\nexport type RestCallResponse = {\n body?: SimpleTemplateConfigResponse | null;\n events_template?: SimpleTemplateConfigResponse | null;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigResponse;\n params?: SimpleTemplateConfigResponse | null;\n path: SimpleTemplateConfigResponse;\n};\n\n/**\n * CloudStorageCustomResponse\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL.\n */\nexport type CloudStorageCustomResponse = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * WorkflowAiAgentRequest\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline. Request\n */\nexport type WorkflowAiAgentRequest = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * AiAgentRequest\n *\n * AI Agent configuration — reusable chat-completion resource Request\n */\nexport type AiAgentRequest = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigRequest;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * UploadLinkRequest\n *\n * Request body for creating a presigned upload link for bulk ingest\n */\nexport type UploadLinkRequest = {\n /**\n * MIME type of the file to be uploaded. Must match one of the supported container formats.\n */\n content_type: 'application/x-ndjson' | 'text/csv' | 'application/pdf' | 'image/png' | 'image/jpeg' | 'image/webp';\n /**\n * Original filename. Used to derive the stored object's extension (.ndjson or .csv).\n */\n filename: string;\n};\n\n/**\n * DataActivationClientManualUploadCallRequest\n */\nexport type DataActivationClientManualUploadCallRequest = ManualUploadCallRequest & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SharePointResponse\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth.\n */\nexport type SharePointResponse = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigResponse | null;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * SimpleTemplateConfigResponse\n *\n * Inline Liquid template configuration (output_schema is server-derived, never request-supplied)\n */\nexport type SimpleTemplateConfigResponse = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * RESTAPIResponse\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.\n */\nexport type RestapiResponse = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigResponse | null;\n base_headers?: SimpleTemplateConfigResponse | null;\n base_path?: SimpleTemplateConfigResponse | null;\n base_query?: SimpleTemplateConfigResponse | null;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DataActivationClientRESTCallResponse\n */\nexport type DataActivationClientRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * SystemTemplateListResponse\n *\n * List of system templates available to this datalake.\n */\nexport type SystemTemplateListResponse = {\n /**\n * Sorted list of system template configs.\n */\n data: Array<SystemTemplateConfig>;\n};\n\n/**\n * DataActivationClientS3CallResponse\n */\nexport type DataActivationClientS3CallResponse = S3CallResponse & {\n tool_call_type: 's3_request';\n};\n\n/**\n * EmailRequest\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates. Request\n */\nexport type EmailRequest = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ConnectedAppListResponse\n *\n * Paginated list of connected apps\n */\nexport type ConnectedAppListResponse = {\n /**\n * List of connected apps\n */\n data: Array<ConnectedAppResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * EmailCallResponse\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body.\n */\nexport type EmailCallResponse = {\n body: SimpleTemplateConfigResponse;\n subject: SimpleTemplateConfigResponse;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSQLQueryCallResponse\n */\nexport type ActionSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SFTPCallResponse\n *\n * SFTP file descriptor — remote path + expected MIME content type.\n */\nexport type SftpCallResponse = {\n /**\n * Expected MIME content type (e.g. application/json)\n */\n content_type: string;\n /**\n * Remote file path on the SFTP server\n */\n path: string;\n};\n\n/**\n * ActionStatusUpdaterRefreshRequest\n *\n * Optional polymorphic updater_body override for this refresh. When omitted or empty, the updater's persisted updater_body is used.\n */\nexport type ActionStatusUpdaterRefreshRequest = {\n /**\n * One-shot polymorphic updater_body override — e.g. a widened start_time/end_time window for a historical backfill. Same `updater_body_type` discriminator and variants as ActionStatusUpdaterRequest.updater_body. The persisted updater is not modified.\n */\n updater_body?: ({\n updater_body_type: 'ActionStatusUpdaterRESTCallRequest';\n } & ActionStatusUpdaterRestCallRequest) | ({\n updater_body_type: 'ActionStatusUpdaterCloudWatchQueryRequest';\n } & ActionStatusUpdaterCloudWatchQueryRequest) | null;\n};\n\n/**\n * S3CloudStorageR2Request\n */\nexport type S3CloudStorageR2Request = CloudStorageR2Request & {\n storage_config_type: 'r2';\n};\n\n/**\n * ToolTwilioRequest\n */\nexport type ToolTwilioRequest = TwilioRequest & {\n tool_body_type: 'twilio';\n};\n\n/**\n * WorkflowAiAgentResponse\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.\n */\nexport type WorkflowAiAgentResponse = {\n ai_agent?: MinimalAiAgentResponse;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigResponse;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * WorkflowLogListResponse\n *\n * Paginated list of workflow execution logs\n */\nexport type WorkflowLogListResponse = {\n /**\n * List of workflow execution logs\n */\n data: Array<WorkflowLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolSQLDatabaseRequest\n */\nexport type ToolSqlDatabaseRequest = SqlDatabaseRequest & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * SystemDatasetListResponse\n *\n * Industry-registered dataset name strings for the datalake's data domain.\n */\nexport type SystemDatasetListResponse = {\n /**\n * Sorted unique dataset name strings (e.g. `patient`, `appointment`, `legal_entity`).\n */\n datasets: Array<string>;\n};\n\n/**\n * GenericTableListResponse\n *\n * Paginated list of generic tables\n */\nexport type GenericTableListResponse = {\n /**\n * List of generic tables\n */\n data: Array<GenericTableResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionRESTCallRequest\n */\nexport type ActionRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * GenericTableRequest\n *\n * Generic Table — custom or system dataset table with column definitions. Request\n */\nexport type GenericTableRequest = {\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * MMSCallResponse\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL.\n */\nexport type MmsCallResponse = {\n body: SimpleTemplateConfigResponse;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ManualToolInvocationEmailCallResponse\n */\nexport type ManualToolInvocationEmailCallResponse = EmailCallResponse & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ToolSharePointResponse\n */\nexport type ToolSharePointResponse = SharePointResponse & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * UpdatePageResponse\n *\n * Confirmation of message tracking update\n */\nexport type UpdatePageResponse = {\n /**\n * Updated message details\n */\n message: {\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * Regulated message UUID\n */\n id: string;\n /**\n * When the page was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * Message status after applying the update through the monotonic guard\n */\n status?: 'pending' | 'queued' | 'sent' | 'delivered' | 'read' | 'opened' | 'clicked' | 'form_submitted' | 'failed' | 'invalidated' | 'customer_rejected' | 'dry_run' | 'received';\n };\n};\n\n/**\n * SharePointExcelCallRequest\n *\n * Microsoft SharePoint request descriptor — drive URL + Excel sheet + search params. Request\n */\nexport type SharePointExcelCallRequest = {\n /**\n * Microsoft Azure tenant identifier (UUID)\n */\n azure_tenant_id: string;\n /**\n * SharePoint drive URL\n */\n drive_url: string;\n /**\n * Search parameters applied when locating files\n */\n search_params: string;\n /**\n * Excel sheet number (0-indexed) within the workbook\n */\n sheet_number: number;\n};\n\n/**\n * DACRawLogFileResponse\n *\n * A single merged NDJSON archive produced by BatchMergeWorker, tagged by bucket mode.\n */\nexport type DacRawLogFileResponse = {\n /**\n * Bucket the archive lives in — regulated (raw) or unregulated (tokenized)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * Cloud-storage object key of the merged NDJSON archive\n */\n object_key: string;\n};\n\n/**\n * ToolSFTPRequest\n */\nexport type ToolSftpRequest = SftpRequest & {\n tool_body_type: 'sftp';\n};\n\n/**\n * DataActivationClientManualUploadCallResponse\n */\nexport type DataActivationClientManualUploadCallResponse = ManualUploadCallResponse & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * ManualToolInvocationSMSCallResponse\n */\nexport type ManualToolInvocationSmsCallResponse = SmsCallResponse & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryResponse\n */\nexport type ActionStatusUpdaterCloudWatchQueryResponse = CloudWatchQueryResponse & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionMMSCallResponse\n */\nexport type ActionMmsCallResponse = MmsCallResponse & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * ToolSQLDatabaseResponse\n */\nexport type ToolSqlDatabaseResponse = SqlDatabaseResponse & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * ActionSQLQueryCallRequest\n */\nexport type ActionSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionSFTPCallRequest\n */\nexport type ActionSftpCallRequest = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * SystemTemplateConfig\n *\n * One system template — identifier, Liquid source, and optional output schema.\n */\nexport type SystemTemplateConfig = {\n /**\n * Raw Liquid template source.\n */\n content: string;\n /**\n * JSON Schema describing the template's rendered output, read from the companion `_*.meta.json`. `null` when no schema is declared.\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * System template identifier — the same string the UI stores when a user selects a system template (e.g. `ai_agents/healthcare/contact_message_categorizer`).\n */\n path: string;\n};\n\n/**\n * BatchLogResponse\n *\n * Batch-level workflow run log — aggregation of per-event execution logs\n */\nexport type BatchLogResponse = {\n /**\n * Batch identifier (manual:{user_search_id} or DAC batch_id)\n */\n batch_id: string;\n completed_at?: string | null;\n /**\n * Successfully completed WELs\n */\n completed_wels?: number;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Number of events expected to produce WELs\n */\n expected_events?: number;\n /**\n * Failed WELs\n */\n failed_wels?: number;\n /**\n * Workflow run log ID\n */\n id?: string;\n inserted_at?: string;\n last_refreshed_at?: string | null;\n started_at?: string | null;\n /**\n * Batch status\n */\n status: 'pending' | 'completed' | 'partial' | 'failed';\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Total WELs found at last refresh\n */\n total_wels?: number;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AiAgentInvokeRequest\n *\n * Request body for invoking an AI agent with input variables and optional file attachments.\n */\nexport type AiAgentInvokeRequest = {\n /**\n * Optional file references for multimodal processing. Each entry is a storage key returned by the upload-link endpoint paired with the MIME type used during upload.\n */\n files?: Array<{\n /**\n * MIME type of the uploaded file.\n */\n content_type: 'application/pdf' | 'image/png' | 'image/jpeg' | 'image/webp';\n /**\n * Cloud storage key returned by POST /tenants/:tenant_slug/datalakes/:datalake_slug/upload-link.\n */\n key: string;\n }>;\n /**\n * Input variables passed to the agent's prompt template. Must conform to the agent's input_schema if one is defined.\n */\n input: {\n [key: string]: unknown;\n };\n};\n\n/**\n * AWSLambdaCallRequest\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request\n */\nexport type AwsLambdaCallRequest = {\n payload: SimpleTemplateConfigRequest;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * ToolCloudWatchLogGroupRequest\n */\nexport type ToolCloudWatchLogGroupRequest = CloudWatchLogGroupRequest & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ManualToolInvocationSQLQueryCallRequest\n */\nexport type ManualToolInvocationSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ManualUploadCallResponse\n *\n * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload.\n */\nexport type ManualUploadCallResponse = {\n [key: string]: unknown;\n};\n\n/**\n * ActionStatusUpdaterRESTCallResponse\n */\nexport type ActionStatusUpdaterRestCallResponse = RestCallResponse & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientAWSLambdaCallRequest\n */\nexport type DataActivationClientAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * WorkflowRunListResponse\n *\n * Paginated list of workflow runs\n */\nexport type WorkflowRunListResponse = {\n /**\n * List of workflow runs\n */\n data: Array<WorkflowRunResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * MinimalAiAgentResponse\n *\n * AI Agent — identifier and runtime fields only (no tenant/datalake nesting)\n */\nexport type MinimalAiAgentResponse = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tool?: ToolResponse;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ConnectedAppUrlResponse\n *\n * URL entry for a Connected App\n */\nexport type ConnectedAppUrlResponse = {\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n};\n\n/**\n * GenericTableColumnResponse\n *\n * Generic table column definition.\n */\nexport type GenericTableColumnResponse = {\n /**\n * Column description\n */\n description: string;\n is_array?: boolean;\n is_checksum?: boolean;\n is_required?: boolean;\n is_unique?: boolean;\n /**\n * Column name\n */\n name: string;\n privacy_requirement?: 'none' | 'tokenize' | 'redact_only';\n /**\n * Display title\n */\n title: string;\n /**\n * Column data type\n */\n type: 'string' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime' | 'time' | 'jsonb';\n};\n\n/**\n * DataActivationClientS3CallRequest\n */\nexport type DataActivationClientS3CallRequest = S3CallRequest & {\n tool_call_type: 's3_request';\n};\n\n/**\n * DatasetSearchResponse\n *\n * Double-paginated dataset search results scoped to a `UserSearch`. The\n * `meta` object carries two `Flop.Meta`-shaped sub-objects:\n *\n * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per\n * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`\n * when the request was not bound to a `user_search_id`.\n * - `flop` — inner Flop page over the resource (default 20 rows).\n *\n */\nexport type DatasetSearchResponse = {\n /**\n * Array of dataset records\n */\n data: Array<{\n [key: string]: unknown;\n }>;\n /**\n * Two-tier pagination metadata\n */\n meta: {\n flop: PaginationMeta;\n /**\n * Outer page over search_results — null when no UserSearch bound\n */\n sql?: PaginationMeta | unknown;\n };\n user_search: UserSearchResponse;\n};\n\n/**\n * InvitationRequest\n *\n * Pending tenant invitation — resolved into a Membership on accept. Request\n */\nexport type InvitationRequest = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n};\n\n/**\n * ActionAWSLambdaCallResponse\n */\nexport type ActionAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * EndUserMessagingResponse\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API.\n */\nexport type EndUserMessagingResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Custom S3 endpoint URL for media staging (e.g. http://localhost:4566 for LocalStack); leave blank for AWS S3 in the tool's region\n */\n media_endpoint_url?: string | null;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ToolS3Response\n */\nexport type ToolS3Response = S3Response & {\n tool_body_type: 's3';\n};\n\n/**\n * S3CloudStorageAwsRequest\n */\nexport type S3CloudStorageAwsRequest = CloudStorageAwsRequest & {\n storage_config_type: 'aws';\n};\n\n/**\n * DataActivationClientSFTPCallResponse\n */\nexport type DataActivationClientSftpCallResponse = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * CloudStorageR2Request\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints. Request\n */\nexport type CloudStorageR2Request = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n};\n\n/**\n * DataSourceRequest\n *\n * Data source — connection to a third-party system or API Request\n */\nexport type DataSourceRequest = {\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * ExecuteSqlRequest\n *\n * A read-only SQL statement to execute against the datalake, the data access mode, and\n * optional Flop-inspired pagination. `page_size` is capped server-side.\n *\n */\nexport type ExecuteSqlRequest = {\n /**\n * Which datalake schema to query: `unregulated` (tokenized) or `regulated` (raw)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * 1-based page number\n */\n page?: number | null;\n /**\n * Rows per page (capped at the server's default page size)\n */\n page_size?: number | null;\n /**\n * Read-only SQL statement to execute\n */\n sql: string;\n};\n\n/**\n * ToolManualUploadRequest\n */\nexport type ToolManualUploadRequest = ManualUploadRequest & {\n tool_body_type: 'manual_upload';\n};\n\n/**\n * SharePointRequest\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth. Request\n */\nexport type SharePointRequest = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigRequest;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * ManualToolInvocationSMSCallRequest\n */\nexport type ManualToolInvocationSmsCallRequest = SmsCallRequest & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ManualToolInvocationRequest\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request\n */\nexport type ManualToolInvocationRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ActionManualUploadCallResponse\n */\nexport type ActionManualUploadCallResponse = ManualUploadCallResponse & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SQLQueryCallRequest\n *\n * SQL query descriptor — Liquid-templated query body. Request\n */\nexport type SqlQueryCallRequest = {\n query: SimpleTemplateConfigRequest;\n};\n\n/**\n * DatalakeResponse\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses.\n */\nexport type DatalakeResponse = {\n /**\n * URL-friendly slug. Server-computed from `name`; read-only on the wire — clients do not author this field.\n */\n readonly slug?: string;\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n regulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsResponse) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2Response) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomResponse);\n unregulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsResponse) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2Response) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomResponse);\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n tenant?: TenantResponse;\n /**\n * Datalake ID\n */\n readonly id?: string;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n /**\n * Datalake setup status\n */\n readonly status?: 'new' | 'processing' | 'ready';\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * AlveraAPIError\n *\n * Uniform JSON:API error response for the Alvera API. See module docs for pointer format, title/detail semantics, and pipeline error codes.\n */\nexport type AlveraApiError = {\n /**\n * One entry per validation failure. A 422 always has at least one error; an empty array is never emitted.\n */\n errors: Array<{\n /**\n * Human-readable message. Validator `%{var}` placeholders are already interpolated server-side; pipeline errors surface the underlying cause (Liquid parser line, JSON decode position, etc.).\n */\n detail: string;\n /**\n * Locates the offending field.\n */\n source: {\n /**\n * RFC 6901 JSON Pointer. For validation errors it points into the request body (`/name`, `/items`); for `/run` pipeline errors it points into the contract field whose template produced the failure (`/template_config/body`, `/mdm_input_config/body`, `/filter_template`).\n */\n pointer: string;\n };\n /**\n * Short error category / machine-readable code. Validation errors: constant \"Invalid value\". Pipeline errors: stage code — \"transform_failed\", \"mdm_input_render_failed\", \"template_body_missing\", \"filter_evaluation_failed\". Clients can pattern-match on this field for programmatic dispatch.\n */\n title: string;\n }>;\n};\n\n/**\n * CloudStorageAwsResponse\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication.\n */\nexport type CloudStorageAwsResponse = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * SFTPResponse\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth.\n */\nexport type SftpResponse = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigResponse | null;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * ToolSNSResponse\n */\nexport type ToolSnsResponse = SnsResponse & {\n tool_body_type: 'sns';\n};\n\n/**\n * UserSearchRequest\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n * Request\n */\nexport type UserSearchRequest = {\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n};\n\n/**\n * AdminApiKeyResponse\n *\n * A newly created API key's plaintext, for an admin caller.\n */\nexport type AdminApiKeyResponse = {\n /**\n * Browser origins permitted to use this key cross-origin.\n */\n allowed_origins: Array<string>;\n /**\n * Plaintext API key — record it now, it is never shown again.\n */\n api_key: string;\n /**\n * Last 4 characters of the key.\n */\n last_four: string;\n /**\n * ID of the tenant the key belongs to.\n */\n tenant_id: string;\n};\n\n/**\n * SQLQueryCallResponse\n *\n * SQL query descriptor — Liquid-templated query body.\n */\nexport type SqlQueryCallResponse = {\n query: SimpleTemplateConfigResponse;\n};\n\n/**\n * ComplexTemplateConfigResponse\n *\n * Inline Liquid template configuration including the rendered-output JSON Schema\n */\nexport type ComplexTemplateConfigResponse = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * JSON Schema describing expected rendered output\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * ActionSFTPCallResponse\n */\nexport type ActionSftpCallResponse = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * ManualUploadResponse\n *\n * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows.\n */\nexport type ManualUploadResponse = {\n [key: string]: unknown;\n};\n\n/**\n * DatalakeCloudStorageR2Response\n */\nexport type DatalakeCloudStorageR2Response = CloudStorageR2Response & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * CloudWatchLogGroupRequest\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling. Request\n */\nexport type CloudWatchLogGroupRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigRequest;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * SNSRequest\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API. Request\n */\nexport type SnsRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallResponse\n */\nexport type ManualToolInvocationAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * PingResponse\n *\n * Health check response with version and database connectivity status\n */\nexport type PingResponse = {\n database_status: 'connected' | 'disconnected';\n /**\n * The platform's own IAM task role — the principal a customer names in the trust policy of\n * the role they create for the platform to assume (`auth_method: assume_role` on an AWS tool).\n *\n * Public by design: it has to reach every customer for onboarding to be possible. The control\n * against a confused deputy is the per-tool external ID the platform generates, not\n * concealment of this ARN. `null` where the platform runs without AWS, as in local development.\n *\n */\n iam_role_arn?: string | null;\n status: 'ok' | 'error';\n timestamp: string;\n version: string;\n};\n\n/**\n * UploadLinkResponse\n *\n * Response containing a presigned PUT URL for uploading a file to object storage\n */\nexport type UploadLinkResponse = {\n /**\n * Seconds until the presigned URL expires\n */\n expires_in: number;\n /**\n * Storage key to use in the subsequent ingest-file call\n */\n key: string;\n /**\n * Presigned HTTPS PUT URL. The file must be uploaded with the same Content-Type that was requested.\n */\n url: string;\n};\n\n/**\n * TenantListResponse\n *\n * Paginated list of tenants\n */\nexport type TenantListResponse = {\n /**\n * List of tenants\n */\n data: Array<TenantResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionEmailCallResponse\n */\nexport type ActionEmailCallResponse = EmailCallResponse & {\n tool_call_type: 'email_request';\n};\n\n/**\n * S3Response\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2).\n */\nexport type S3Response = {\n base_prefix?: ComplexTemplateConfigResponse | null;\n config: ({\n storage_config_type: 'aws';\n } & S3CloudStorageAwsResponse) | ({\n storage_config_type: 'r2';\n } & S3CloudStorageR2Response);\n};\n\n/**\n * RunWorkflowRequest\n *\n * Request body for bulk workflow execution via SQL WHERE clause\n */\nexport type RunWorkflowRequest = {\n /**\n * When true, bypasses dedupe and idempotency key checks so actions can fire again for the same record. Defaults to false.\n */\n manual_override?: boolean;\n /**\n * Execution mode. 'live' fires real tool calls; 'dry_run' runs the full pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * When the run should fire, as an ISO-8601 timestamp **with an offset** (e.g. \"2026-08-12T09:00:00Z\"). Omit to fire as soon as a worker picks it up. The segment is resolved when the run fires, not when it is scheduled, so a run scheduled for Friday reaches Friday's matches. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at?: string | null;\n /**\n * SQL WHERE clause to filter dataset records (e.g. \"status = 'active'\")\n */\n sql_where_clause: string;\n};\n\n/**\n * ConnectedAppRouteResponse\n *\n * Discovered route from a Connected App's .well-known/routes.json\n */\nexport type ConnectedAppRouteResponse = {\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n};\n\n/**\n * SFTPCallRequest\n *\n * SFTP file descriptor — remote path + expected MIME content type. Request\n */\nexport type SftpCallRequest = {\n /**\n * Expected MIME content type (e.g. application/json)\n */\n content_type: string;\n /**\n * Remote file path on the SFTP server\n */\n path: string;\n};\n\n/**\n * ToolEmailRequest\n */\nexport type ToolEmailRequest = EmailRequest & {\n tool_body_type: 'email';\n};\n\n/**\n * ManualToolInvocationRESTCallResponse\n */\nexport type ManualToolInvocationRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * ManualToolInvocationMMSCallRequest\n */\nexport type ManualToolInvocationMmsCallRequest = MmsCallRequest & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * SessionResponse\n *\n * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or\n * derived from an `X-API-Key` header. The `session_token` field carries the\n * plaintext Bearer on creation responses and is null on verify responses.\n * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant\n * sessions; `api_key` is populated for M2M sessions only.\n *\n */\nexport type SessionResponse = {\n api_key?: ApiKeyResponse;\n /**\n * Capability ceiling for the session. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Set at creation time from membership role (researcher locked to `:unregulated`); cannot be widened post-creation.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * Expiration timestamp (null for non-expiring M2M sessions)\n */\n readonly expires_at?: string | null;\n /**\n * Session ID\n */\n readonly id?: string;\n role?: RoleResponse;\n /**\n * Plaintext Bearer token. Returned only on creation; null on verify (token is not re-exposed).\n */\n readonly session_token?: string | null;\n tenant?: TenantResponse;\n /**\n * Session type\n */\n readonly type: 'user' | 'api';\n user?: UserResponse;\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryRequest\n */\nexport type ActionStatusUpdaterCloudWatchQueryRequest = CloudWatchQueryRequest & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionStatusUpdaterRESTCallRequest\n */\nexport type ActionStatusUpdaterRestCallRequest = RestCallRequest & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * IngestResponse\n *\n * Response from data ingestion\n */\nexport type IngestResponse = {\n /**\n * Batch ID for tracking\n */\n batch_id: string;\n /**\n * Number of processing jobs created\n */\n jobs_count: number;\n /**\n * Storage key for the ingested data\n */\n key: string;\n};\n\n/**\n * SQSRequest\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages. Request\n */\nexport type SqsRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * DataActivationClientAWSLambdaCallResponse\n */\nexport type DataActivationClientAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolResponse\n *\n * Tool — a configurable capability reference for external services.\n */\nexport type ToolResponse = {\n body?: ({\n tool_body_type: 'email';\n } & ToolEmailResponse) | ({\n tool_body_type: 'sns';\n } & ToolSnsResponse) | ({\n tool_body_type: 'twilio';\n } & ToolTwilioResponse) | ({\n tool_body_type: 'end_user_messaging';\n } & ToolEndUserMessagingResponse) | ({\n tool_body_type: 'rest_api';\n } & ToolRestapiResponse) | ({\n tool_body_type: 's3';\n } & ToolS3Response) | ({\n tool_body_type: 'aws_lambda';\n } & ToolAwsLambdaResponse) | ({\n tool_body_type: 'sql_database';\n } & ToolSqlDatabaseResponse) | ({\n tool_body_type: 'sqs';\n } & ToolSqsResponse) | ({\n tool_body_type: 'sftp';\n } & ToolSftpResponse) | ({\n tool_body_type: 'sharepoint';\n } & ToolSharePointResponse) | ({\n tool_body_type: 'cloud_watch_log_group';\n } & ToolCloudWatchLogGroupResponse) | ({\n tool_body_type: 'manual_upload';\n } & ToolManualUploadResponse);\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n /**\n * Tool ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigResponse | null;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * IngestFileResponse\n *\n * Response from scheduling a bulk file ingest. Row extraction and per-row processing jobs are created asynchronously by the EnqueueRows worker.\n */\nexport type IngestFileResponse = {\n /**\n * Oban job id of the scheduled EnqueueRows job\n */\n job_id: number;\n /**\n * Storage key that was accepted for ingestion\n */\n key: string;\n /**\n * Initial state of the scheduled job (typically \"scheduled\" or \"available\")\n */\n status: string;\n};\n\n/**\n * ToolAWSLambdaRequest\n */\nexport type ToolAwsLambdaRequest = AwsLambdaRequest & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * DataSourceListResponse\n *\n * Paginated list of data sources\n */\nexport type DataSourceListResponse = {\n /**\n * List of data sources\n */\n data: Array<DataSourceResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * OuterPagination\n *\n * Outer page over the cached search_results table — chunks of up to 1 000 dataset IDs.\n */\nexport type OuterPagination = {\n page?: number;\n page_size?: number;\n};\n\n/**\n * ActionManualUploadCallRequest\n */\nexport type ActionManualUploadCallRequest = ManualUploadCallRequest & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SharePointExcelCallResponse\n *\n * Microsoft SharePoint request descriptor — drive URL + Excel sheet + search params.\n */\nexport type SharePointExcelCallResponse = {\n /**\n * Microsoft Azure tenant identifier (UUID)\n */\n azure_tenant_id: string;\n /**\n * SharePoint drive URL\n */\n drive_url: string;\n /**\n * Search parameters applied when locating files\n */\n search_params: string;\n /**\n * Excel sheet number (0-indexed) within the workbook\n */\n sheet_number: number;\n};\n\n/**\n * SNSResponse\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API.\n */\nexport type SnsResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractAiAgentResponse\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline.\n */\nexport type InteroperabilityContractAiAgentResponse = {\n ai_agent?: MinimalAiAgentResponse;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigResponse;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * InteroperabilityRunRequest\n *\n * Raw source-row payload to run through a contract's filter → transform → mdm_input pipeline. Stateless: no DB writes. Accepts arbitrary keys by design — validation is deferred to the contract.\n */\nexport type InteroperabilityRunRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ActionSharePointExcelCallRequest\n */\nexport type ActionSharePointExcelCallRequest = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractRequest\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request\n */\nexport type InteroperabilityContractRequest = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n mdm_input_config?: SimpleTemplateConfigRequest;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigRequest;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DatalakeMigrateResponse\n *\n * Accepted response for an enqueued datalake migration job\n */\nexport type DatalakeMigrateResponse = {\n /**\n * Datalake whose schemas will be migrated\n */\n datalake_id: string;\n /**\n * When the job was enqueued\n */\n enqueued_at: string;\n /**\n * Oban job ID for tracking\n */\n job_id: number;\n /**\n * Job status (always 'enqueued' at creation)\n */\n status: 'enqueued';\n};\n\n/**\n * RESTCallRequest\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there. Request\n */\nexport type RestCallRequest = {\n body?: SimpleTemplateConfigRequest;\n events_template?: SimpleTemplateConfigRequest;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigRequest;\n params?: SimpleTemplateConfigRequest;\n path: SimpleTemplateConfigRequest;\n};\n\n/**\n * SQLDatabaseResponse\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake).\n */\nexport type SqlDatabaseResponse = {\n base_query?: ComplexTemplateConfigResponse | null;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * MDMVerifyResponse\n *\n * Result of MDM subject identity verification\n */\nexport type MdmVerifyResponse = {\n status: 'verified';\n /**\n * The verified subject ID\n */\n subject_id: string;\n /**\n * Timestamp of verification\n */\n verified_at: string;\n} | {\n /**\n * Field-level verification failure details\n */\n errors: {\n [key: string]: Array<string>;\n };\n status: 'not_verified';\n /**\n * The subject ID that failed verification\n */\n subject_id: string;\n /**\n * Timestamp of verification attempt\n */\n verified_at: string;\n};\n\n/**\n * S3CloudStorageAwsResponse\n */\nexport type S3CloudStorageAwsResponse = CloudStorageAwsResponse & {\n storage_config_type: 'aws';\n};\n\n/**\n * S3CloudStorageR2Response\n */\nexport type S3CloudStorageR2Response = CloudStorageR2Response & {\n storage_config_type: 'r2';\n};\n\n/**\n * ContextDatasetRequest\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages. Request\n */\nexport type ContextDatasetRequest = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * ToolEmailResponse\n */\nexport type ToolEmailResponse = EmailResponse & {\n tool_body_type: 'email';\n};\n\n/**\n * ToolListResponse\n *\n * Paginated list of tools\n */\nexport type ToolListResponse = {\n /**\n * List of tools\n */\n data: Array<ToolResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ManualToolInvocationSQLQueryCallResponse\n */\nexport type ManualToolInvocationSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SQSResponse\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages.\n */\nexport type SqsResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * RESTAPIRequest\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates. Request\n */\nexport type RestapiRequest = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigRequest;\n base_headers?: SimpleTemplateConfigRequest;\n base_path?: SimpleTemplateConfigRequest;\n base_query?: SimpleTemplateConfigRequest;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DatalakeCloudStorageCustomRequest\n */\nexport type DatalakeCloudStorageCustomRequest = CloudStorageCustomRequest & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * PaginationMeta\n *\n * Pagination metadata for list responses\n */\nexport type PaginationMeta = {\n /**\n * Current page number (1-indexed)\n */\n page: number;\n /**\n * Number of items per page\n */\n page_size: number;\n /**\n * Total number of items across all pages\n */\n total_count: number;\n /**\n * Total number of pages\n */\n total_pages: number;\n};\n\n/**\n * DataActivationClientSharePointExcelCallResponse\n */\nexport type DataActivationClientSharePointExcelCallResponse = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * ConnectedAppRouteRequest\n *\n * Discovered route from a Connected App's .well-known/routes.json Request\n */\nexport type ConnectedAppRouteRequest = {\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n};\n\n/**\n * EmailResponse\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates.\n */\nexport type EmailResponse = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationMMSCallResponse\n */\nexport type ManualToolInvocationMmsCallResponse = MmsCallResponse & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * WorkflowLogResponse\n *\n * Workflow execution log — per-event execution detail\n */\nexport type WorkflowLogResponse = {\n /**\n * Per-action execution logs scheduled under this WEL (response only, preloaded server-side)\n */\n readonly action_execution_logs?: Array<ActionExecutionLogResponse>;\n /**\n * Completed action count\n */\n actions_completed?: number;\n /**\n * Failed action count\n */\n actions_failed?: number;\n /**\n * Pending action count\n */\n actions_pending?: number;\n /**\n * Total action count\n */\n actions_total?: number;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n completed_at?: string | null;\n /**\n * R2 storage key for context JSON\n */\n context_cloud_storage_key?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Error description\n */\n error_message?: string | null;\n /**\n * Whether the filter passed\n */\n filter_result?: boolean | null;\n /**\n * Execution log ID\n */\n id?: string;\n inserted_at?: string;\n /**\n * Execution mode\n */\n mode: 'live' | 'dry_run';\n /**\n * Sampled event ID\n */\n sampled_event_id?: string | null;\n started_at?: string | null;\n /**\n * Execution status\n */\n status: 'filtered' | 'pending' | 'executing' | 'completed' | 'failed' | 'partial';\n /**\n * Resolved subject ID (cross-DB)\n */\n subject_id?: string | null;\n /**\n * Subject type (e.g. patient, member)\n */\n subject_type?: string | null;\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AiAgentInvokeResponse\n *\n * Response from an AI agent invocation containing the parsed output and usage telemetry.\n */\nexport type AiAgentInvokeResponse = {\n /**\n * The model's reasoning trace, when the tool's response_extractor mapped one out (thinking-enabled providers); null otherwise.\n */\n explanation?: string | null;\n /**\n * Parsed JSON output from the agent's LLM response.\n */\n output: {\n [key: string]: unknown;\n };\n /**\n * Token usage and latency telemetry for the invocation.\n */\n usage: {\n /**\n * Number of input/prompt tokens consumed.\n */\n input_tokens?: number | null;\n /**\n * End-to-end execution latency in milliseconds.\n */\n latency_ms: number;\n /**\n * LLM model identifier used for this invocation.\n */\n model?: string | null;\n /**\n * Number of output/completion tokens generated.\n */\n output_tokens?: number | null;\n /**\n * Total tokens (input + output).\n */\n total_tokens?: number | null;\n };\n};\n\n/**\n * CloudStorageAwsRequest\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication. Request\n */\nexport type CloudStorageAwsRequest = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * ToolSQSResponse\n */\nexport type ToolSqsResponse = SqsResponse & {\n tool_body_type: 'sqs';\n};\n\n/**\n * ApiKeyResponse\n *\n * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)\n */\nexport type ApiKeyResponse = {\n /**\n * Capability ceiling baked into the key. Sessions derived from this key inherit this value. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Cannot be widened post-creation — revoke + re-mint instead.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * API key ID\n */\n readonly id: string;\n /**\n * Last 4 characters of the key\n */\n readonly last_four: string;\n /**\n * API key name\n */\n name: string;\n};\n\n/**\n * SyncRoutesResponse\n *\n * Accepted response for an enqueued route sync job\n */\nexport type SyncRoutesResponse = {\n /**\n * Connected app whose routes will be synced\n */\n connected_app_id: string;\n /**\n * When the job was enqueued\n */\n enqueued_at: string;\n /**\n * Oban job ID for tracking\n */\n job_id: number;\n /**\n * Job status (always 'enqueued' at creation)\n */\n status: 'enqueued';\n};\n\n/**\n * DataActivationClientResponse\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.\n */\nexport type DataActivationClientResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * Owning datalake ID (matches :datalake_slug path segment)\n */\n readonly datalake_id?: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigResponse | null;\n /**\n * DAC ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * True for platform-created default DACs. Cannot be deleted.\n */\n readonly is_default?: boolean;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigResponse | null;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n readonly slug?: string;\n tool_call: ({\n tool_call_type: 'restapi_request';\n } & DataActivationClientRestCallResponse) | ({\n tool_call_type: 'sql_query';\n } & DataActivationClientSqlQueryCallResponse) | ({\n tool_call_type: 'sftp_request';\n } & DataActivationClientSftpCallResponse) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & DataActivationClientSharePointExcelCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & DataActivationClientAwsLambdaCallResponse) | ({\n tool_call_type: 'manual_upload';\n } & DataActivationClientManualUploadCallResponse) | ({\n tool_call_type: 's3_request';\n } & DataActivationClientS3CallResponse);\n /**\n * Owning tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * SFTPRequest\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth. Request\n */\nexport type SftpRequest = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigRequest;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * InnerSearch\n *\n * Inner search input over the resource. Defaults: page 1, page_size 20, order_direction asc. All keys optional; absent values fall through to the resource's `Flop.Schema` defaults.\n */\nexport type InnerSearch = {\n /**\n * Single text-search value applied across the schema's `:global_search` compound (ILIKE-OR over its underlying string fields). Empty / absent → no filter.\n */\n global_search?: string;\n /**\n * Sort direction for the implicit `:global_search` sort key. `asc` or `desc` only — no per-field overrides at this layer. Omit to fall through to the resource's `Flop.Schema` default (no `order_by` injection).\n */\n order_direction?: 'asc' | 'desc';\n page?: number;\n page_size?: number;\n};\n\n/**\n * CloudStorageCustomRequest\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL. Request\n */\nexport type CloudStorageCustomRequest = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * DatalakeListResponse\n *\n * Paginated list of datalakes\n */\nexport type DatalakeListResponse = {\n /**\n * List of datalakes\n */\n data: Array<DatalakeResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * RunWorkflowResponse\n *\n * Acknowledgement that a run has been scheduled.\n *\n * **Changed in 0.23.0.** This endpoint used to run the workflow inline and\n * return `enqueued_count`, `batch_id` and `workflow_run_log_id`. It now records\n * a workflow run and returns immediately, so none of those three are knowable\n * yet: the segment is resolved when the run fires, and the batch it produces\n * does not exist until then. Read them from the run via\n * `GET /tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}`\n * once its status leaves `scheduled`.\n *\n */\nexport type RunWorkflowResponse = {\n /**\n * How many records the clause matched **when it was scheduled**. A preview for sanity-checking the clause, not the audience: the segment is resolved again at send time, and suppressed records are excluded then.\n */\n matched_count?: number | null;\n /**\n * When the run will fire. Echoes the requested time, or the time the request was received when none was given.\n */\n scheduled_at: string;\n /**\n * Run state at the moment of this response — always `scheduled` here.\n */\n status: 'scheduled' | 'processing' | 'completed' | 'cancelled' | 'failed';\n /**\n * The scheduled run. Use it to poll status, or to cancel while still `scheduled`.\n */\n workflow_run_id: string;\n};\n\n/**\n * ExecuteActionResponse\n *\n * Response from executing a workflow action\n */\nexport type ExecuteActionResponse = {\n /**\n * Number of action executions scheduled\n */\n scheduled_count?: number;\n /**\n * Oban job id of the scheduled action execution. Nil when no job was scheduled (e.g. an invalid `trigger_template` produced a failed ActionExecutionLog instead).\n */\n scheduled_job_id?: number | null;\n /**\n * Current status of the workflow execution\n */\n status?: 'pending' | 'completed' | 'filtered' | 'failed';\n /**\n * ID of the workflow execution log (nil when async, populated when synchronous)\n */\n workflow_execution_log_id?: string | null;\n};\n\n/**\n * DatalakeCloudStorageAwsResponse\n */\nexport type DatalakeCloudStorageAwsResponse = CloudStorageAwsResponse & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * ActionRESTCallResponse\n */\nexport type ActionRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientRequest\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request\n */\nexport type DataActivationClientRequest = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigRequest;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * IngestFileRequest\n *\n * Request body for ingesting a file that was previously uploaded via a presigned upload link\n */\nexport type IngestFileRequest = {\n /**\n * Optional business attributes merged into each row extracted from the uploaded file. For a document upload (image/PDF) the extracted row is just `{r2_key, content_type}`; these attrs ride alongside it (e.g. account_holder_number) so the interop contract can resolve the subject. File-derived keys (`r2_key`, `content_type`) always win over `data`.\n */\n data?: {\n [key: string]: unknown;\n } | null;\n /**\n * Storage key returned from the upload-link endpoint. Must belong to the same data activation client.\n */\n key: string;\n};\n\n/**\n * ExecuteSqlResponse\n *\n * Read-only SQL result. `data` is the page of rows as an array-of-arrays (tabular, since\n * arbitrary SQL can have duplicate or expression column names that object keys would\n * collapse); the column names and pagination live in `meta`.\n *\n */\nexport type ExecuteSqlResponse = {\n /**\n * Page of result rows; each row is an array of cell values aligned to `meta.columns`\n */\n data: Array<Array<unknown>>;\n meta: ExecuteSqlMeta;\n};\n\n/**\n * ToolCloudWatchLogGroupResponse\n */\nexport type ToolCloudWatchLogGroupResponse = CloudWatchLogGroupResponse & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ActionAWSLambdaCallRequest\n */\nexport type ActionAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TwilioRequest\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity. Request\n */\nexport type TwilioRequest = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * CloudWatchQueryRequest\n *\n * CloudWatch log group query descriptor — log group name plus Liquid-templated time window. Reusable across any caller that needs CloudWatch polling (currently ActionStatusUpdater.updater_body). Title is CloudWatchQuery (not CloudWatchRequest) to avoid triple-`Request` stacking in the library-generated parent-contextual sibling module names (e.g. ActionStatusUpdaterCloudWatchQueryRequest). Request\n */\nexport type CloudWatchQueryRequest = {\n /**\n * Liquid template for the poll window end time, rendered with `{{ now_msec }}` in unix milliseconds (e.g., \"{{ now_msec }}\")\n */\n end_time: string;\n /**\n * CloudWatch log group name to poll for delivery events\n */\n log_group_name: string;\n /**\n * Liquid template for the poll window start time, rendered with `{{ now }}` in unix milliseconds (e.g., \"{{ now_msec | minutes_ago: 45 }}\")\n */\n start_time: string;\n};\n\n/**\n * GenericTableResponse\n *\n * Generic Table — custom or system dataset table with column definitions.\n */\nexport type GenericTableResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Table column definitions\n */\n readonly columns?: Array<GenericTableColumnResponse>;\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Datalake ID\n */\n readonly datalake_id?: string;\n /**\n * Table description\n */\n description?: string;\n /**\n * Generic Table ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Auto-generated table name (from title)\n */\n readonly name?: string;\n /**\n * Table deployment status\n */\n readonly status?: 'new' | 'stale' | 'processing' | 'deployed';\n /**\n * Tenant ID\n */\n readonly tenant_id?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n /**\n * Table type\n */\n readonly type?: 'custom' | 'system';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * InteroperabilityContractListResponse\n *\n * Paginated list of interoperability contracts\n */\nexport type InteroperabilityContractListResponse = {\n /**\n * List of interoperability contracts\n */\n data: Array<InteroperabilityContractResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingResponse\n */\nexport type ToolEndUserMessagingResponse = EndUserMessagingResponse & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * TenantRequest\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n * Request\n */\nexport type TenantRequest = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n};\n\n/**\n * CloudflarePagesConfigRequest\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps Request\n */\nexport type CloudflarePagesConfigRequest = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * DataActivationClientSFTPCallRequest\n */\nexport type DataActivationClientSftpCallRequest = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * RunManuallyRequest\n *\n * Optional polymorphic tool_call override for this run. When omitted or empty, the DAC's persisted tool_call is used.\n */\nexport type RunManuallyRequest = {\n /**\n * One-shot polymorphic tool_call override. Same `tool_call_type` discriminator and variants as DataActivationClientRequest.tool_call.\n */\n tool_call?: ({\n tool_call_type: 'DataActivationClientRESTCallRequest';\n } & DataActivationClientRestCallRequest) | ({\n tool_call_type: 'DataActivationClientSQLQueryCallRequest';\n } & DataActivationClientSqlQueryCallRequest) | ({\n tool_call_type: 'DataActivationClientSFTPCallRequest';\n } & DataActivationClientSftpCallRequest) | ({\n tool_call_type: 'DataActivationClientSharePointExcelCallRequest';\n } & DataActivationClientSharePointExcelCallRequest) | ({\n tool_call_type: 'DataActivationClientAWSLambdaCallRequest';\n } & DataActivationClientAwsLambdaCallRequest) | ({\n tool_call_type: 'DataActivationClientManualUploadCallRequest';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 'DataActivationClientS3CallRequest';\n } & DataActivationClientS3CallRequest) | null;\n};\n\n/**\n * ActionStatusUpdaterListResponse\n *\n * Paginated list of action status updaters\n */\nexport type ActionStatusUpdaterListResponse = {\n /**\n * List of action status updaters\n */\n data: Array<ActionStatusUpdaterResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingRequest\n */\nexport type ToolEndUserMessagingRequest = EndUserMessagingRequest & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * ManualToolInvocationEmailCallRequest\n */\nexport type ManualToolInvocationEmailCallRequest = EmailCallRequest & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ConnectedAppResponse\n *\n * External web application connected to the platform via M2M API key\n */\nexport type ConnectedAppResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n /**\n * CF Pages project name\n */\n readonly project_name?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Error message from last failed operation\n */\n readonly error?: string | null;\n /**\n * Connected App ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Last successful route sync\n */\n readonly last_synced_at?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * Discovered form routes from .well-known/routes.json\n */\n readonly routes?: Array<{\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n }>;\n /**\n * URL-friendly slug\n */\n readonly slug?: string;\n /**\n * Current deployment/sync status\n */\n readonly status?: 'pending' | 'deploying' | 'deployed' | 'synced' | 'error';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * TextToSqlResponse\n *\n * Generated SQL for a natural-language prompt. `explanation` is a best-effort plain-language\n * description of the SQL (`null` if the explainer was unavailable). The SQL is returned for\n * review/editing; run it via `POST .../execute-sql`.\n *\n */\nexport type TextToSqlResponse = {\n /**\n * Plain-language explanation of what the SQL does; null when unavailable\n */\n explanation: string | null;\n /**\n * The model that produced the SQL (e.g. `anthropic:claude-opus-4`)\n */\n model: string;\n /**\n * The provider that produced the SQL (e.g. `anthropic`, `ollama`)\n */\n provider: string;\n /**\n * The generated SQL statement\n */\n sql: string;\n};\n\n/**\n * DatalakeCloudStorageAwsRequest\n */\nexport type DatalakeCloudStorageAwsRequest = CloudStorageAwsRequest & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * AgenticWorkflowListResponse\n *\n * Paginated list of agentic workflows\n */\nexport type AgenticWorkflowListResponse = {\n /**\n * List of agentic workflows\n */\n data: Array<AgenticWorkflowResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionMMSCallRequest\n */\nexport type ActionMmsCallRequest = MmsCallRequest & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * RoleResponse\n *\n * Lean role reference — id, name, and description\n */\nexport type RoleResponse = {\n /**\n * Role description\n */\n description?: string | null;\n /**\n * Role ID\n */\n readonly id: string;\n /**\n * Role name (e.g. tenant_admin, platform_admin)\n */\n name: string;\n};\n\n/**\n * BatchLogListResponse\n *\n * Paginated list of batch run logs\n */\nexport type BatchLogListResponse = {\n /**\n * List of batch run logs\n */\n data: Array<BatchLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * RunManuallyResponse\n *\n * Acknowledgement of an enqueued manual run. The `batch_id` can be used to poll per-dataset processing logs (via upcoming runs list/show endpoints).\n */\nexport type RunManuallyResponse = {\n /**\n * Batch ID stamped on every Oban job for this run\n */\n batch_id: string;\n};\n\n/**\n * ToolTwilioResponse\n */\nexport type ToolTwilioResponse = TwilioResponse & {\n tool_body_type: 'twilio';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallRequest\n */\nexport type ManualToolInvocationAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolSFTPResponse\n */\nexport type ToolSftpResponse = SftpResponse & {\n tool_body_type: 'sftp';\n};\n\n/**\n * SignInRequest\n *\n * Exchange user credentials for a Bearer session token.\n *\n * `tenant_slug` is optional — when omitted, returns a tenant-less Bearer for\n * use on `/api/v1/admin/...` operations and pre-tenant flows like\n * `POST /api/v1/tenants` (creating your first tenant). When provided,\n * returns a tenant-scoped Bearer with the caller's membership role.\n *\n * For M2M authentication, use the `X-API-Key` header directly instead.\n * Request\n */\nexport type SignInRequest = {\n /**\n * User email address\n */\n email: string;\n /**\n * Session duration in seconds. Default: 86400 (24h). Maximum: 2592000 (30 days).\n */\n expires_in?: number | null;\n /**\n * User password\n */\n password: string;\n /**\n * Tenant slug to create session for. Omit to mint a tenant-less Bearer (admin operations, pre-tenant sign-up flow).\n */\n tenant_slug?: string | null;\n};\n\n/**\n * GenericTableColumnRequest\n *\n * Generic table column definition. Request\n */\nexport type GenericTableColumnRequest = {\n /**\n * Column description\n */\n description: string;\n is_array?: boolean;\n is_checksum?: boolean;\n is_required?: boolean;\n is_unique?: boolean;\n /**\n * Column name\n */\n name: string;\n privacy_requirement?: 'none' | 'tokenize' | 'redact_only';\n /**\n * Display title\n */\n title: string;\n /**\n * Column data type\n */\n type: 'string' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime' | 'time' | 'jsonb';\n};\n\n/**\n * ToolS3Request\n */\nexport type ToolS3Request = S3Request & {\n tool_body_type: 's3';\n};\n\n/**\n * ManualToolInvocationRESTCallRequest\n */\nexport type ManualToolInvocationRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * CloudWatchQueryResponse\n *\n * CloudWatch log group query descriptor — log group name plus Liquid-templated time window. Reusable across any caller that needs CloudWatch polling (currently ActionStatusUpdater.updater_body). Title is CloudWatchQuery (not CloudWatchRequest) to avoid triple-`Request` stacking in the library-generated parent-contextual sibling module names (e.g. ActionStatusUpdaterCloudWatchQueryRequest).\n */\nexport type CloudWatchQueryResponse = {\n /**\n * Liquid template for the poll window end time, rendered with `{{ now_msec }}` in unix milliseconds (e.g., \"{{ now_msec }}\")\n */\n end_time: string;\n /**\n * CloudWatch log group name to poll for delivery events\n */\n log_group_name: string;\n /**\n * Liquid template for the poll window start time, rendered with `{{ now }}` in unix milliseconds (e.g., \"{{ now_msec | minutes_ago: 45 }}\")\n */\n start_time: string;\n};\n\n/**\n * SignUpRequest\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape. The created user is **unconfirmed** — caller must\n * confirm separately (e.g. via the email confirmation flow, or via\n * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.\n *\n * No authentication is required.\n * Request\n */\nexport type SignUpRequest = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name: string | null;\n /**\n * Last name\n */\n last_name: string | null;\n};\n\n/**\n * AiAgentResponse\n *\n * AI Agent configuration — reusable chat-completion resource\n */\nexport type AiAgentResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n datalake?: DatalakeResponse;\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tenant?: TenantResponse;\n tool?: ToolResponse;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientSQLQueryCallRequest\n */\nexport type DataActivationClientSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ToolSNSRequest\n */\nexport type ToolSnsRequest = SnsRequest & {\n tool_body_type: 'sns';\n};\n\n/**\n * InvitationListResponse\n *\n * Paginated list of invitations\n */\nexport type InvitationListResponse = {\n /**\n * List of invitations\n */\n data: Array<InvitationResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionStatusUpdaterRequest\n *\n * Action Status Updater — automated polling for delivery status updates. Request\n */\nexport type ActionStatusUpdaterRequest = {\n action_log_config: SimpleTemplateConfigRequest;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigRequest;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientLogListResponse\n *\n * Paginated list of data activation client logs\n */\nexport type DataActivationClientLogListResponse = {\n /**\n * List of data activation client logs\n */\n data: Array<DataActivationClientLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * AiAgentListResponse\n *\n * Paginated list of AI agents\n */\nexport type AiAgentListResponse = {\n /**\n * List of AI agents\n */\n data: Array<AiAgentResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ConnectedAppUrlRequest\n *\n * URL entry for a Connected App Request\n */\nexport type ConnectedAppUrlRequest = {\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n};\n\n/**\n * ConnectedAppRequest\n *\n * External web application connected to the platform via M2M API key Request\n */\nexport type ConnectedAppRequest = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n /**\n * CF Pages project name\n */\n readonly project_name?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * AdminCreateTenantApiKeyRequest\n *\n * Attributes for an admin-provisioned public_api key.\n */\nexport type AdminCreateTenantApiKeyRequest = {\n /**\n * Browser origins permitted to use this key cross-origin. Defaults to none.\n */\n allowed_origins?: Array<string>;\n /**\n * Capability ceiling baked into the key — see ApiKey.data_access_mode.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * Human-readable name for the key.\n */\n name: string;\n};\n\n/**\n * CloudStorageR2Response\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints.\n */\nexport type CloudStorageR2Response = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n};\n\n/**\n * S3Request\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2). Request\n */\nexport type S3Request = {\n base_prefix?: ComplexTemplateConfigRequest;\n};\n\n/**\n * DataSourceResponse\n *\n * Data source — connection to a third-party system or API\n */\nexport type DataSourceResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n datalake?: DatalakeResponse;\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * TwilioResponse\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity.\n */\nexport type TwilioResponse = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * SQLDatabaseRequest\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake). Request\n */\nexport type SqlDatabaseRequest = {\n base_query?: ComplexTemplateConfigRequest;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * SMSCallRequest\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category. Request\n */\nexport type SmsCallRequest = {\n body: SimpleTemplateConfigRequest;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ToolRESTAPIResponse\n */\nexport type ToolRestapiResponse = RestapiResponse & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * UserSearchResponse\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n *\n */\nexport type UserSearchResponseWritable = {\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n};\n\n/**\n * ActionExecutionLogResponse\n *\n * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.\n */\nexport type ActionExecutionLogResponseWritable = {\n /**\n * Action ID\n */\n action_id: string;\n action_type: ActionType;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n /**\n * Completed-at timestamp\n */\n completed_at?: string | null;\n /**\n * Context key\n */\n context_key?: string | null;\n /**\n * Decision key (denormalised from action)\n */\n decision_key?: string | null;\n /**\n * Error description (no customer data)\n */\n error_message?: string | null;\n /**\n * External system reference (Twilio SID, SES message ID, etc.)\n */\n external_id?: string | null;\n /**\n * Action execution log ID\n */\n id: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Cross-DB UUID of the message produced by this action (datalake-resident; no FK)\n */\n message_id?: string | null;\n /**\n * Execution mode (`live` = normal, `dry_run` = preview only)\n */\n mode: 'live' | 'dry_run';\n /**\n * Retry count\n */\n retry_count?: number;\n /**\n * Result of the action's runtime_filter Liquid expression\n */\n runtime_filter_result?: boolean | null;\n /**\n * Scheduled-at timestamp\n */\n scheduled_at?: string | null;\n /**\n * Started-at timestamp\n */\n started_at?: string | null;\n /**\n * Execution state\n */\n status: 'pending' | 'executing' | 'completed' | 'failed' | 'skipped' | 'filtered' | 'cancelled';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Parent workflow execution log ID\n */\n workflow_execution_log_id: string;\n /**\n * Workflow ID\n */\n workflow_id: string;\n};\n\n/**\n * ContextDatasetResponse\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages.\n */\nexport type ContextDatasetResponseWritable = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * DatalakeRequest\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses. Request\n */\nexport type DatalakeRequestWritable = {\n /**\n * Unregulated writer DB password\n */\n unregulated_db_writer_pass: string;\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Unregulated writer DB username\n */\n unregulated_db_writer_user: string;\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n regulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsRequestWritable) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2RequestWritable) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomRequestWritable);\n unregulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsRequestWritable) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2RequestWritable) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomRequestWritable);\n /**\n * Regulated reader DB password\n */\n regulated_data_db_reader_pass: string;\n /**\n * Regulated writer DB username\n */\n regulated_data_db_writer_user: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Regulated reader DB username\n */\n regulated_data_db_reader_user: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Unregulated reader DB username\n */\n unregulated_db_reader_user: string;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Regulated writer DB password\n */\n regulated_data_db_writer_pass: string;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Unregulated reader DB password\n */\n unregulated_db_reader_pass: string;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * ToolRESTAPIRequest\n */\nexport type ToolRestapiRequestWritable = RestapiRequestWritable & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * DataActivationClientListResponse\n *\n * Paginated list of data activation clients\n */\nexport type DataActivationClientListResponseWritable = {\n /**\n * List of data activation clients\n */\n data: Array<DataActivationClientResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * MembershipResponse\n *\n * Tenant membership — binds a user to a tenant with a role.\n */\nexport type MembershipResponseWritable = {\n tenant?: TenantResponseWritable;\n};\n\n/**\n * EmailCallRequest\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body. Request\n */\nexport type EmailCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n subject: SimpleTemplateConfigRequest;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionEmailCallRequest\n */\nexport type ActionEmailCallRequestWritable = EmailCallRequestWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * DatalakeCloudStorageCustomResponse\n */\nexport type DatalakeCloudStorageCustomResponseWritable = CloudStorageCustomResponse & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * AgenticWorkflowResponse\n *\n * Agentic Workflow — event-driven automation pipeline\n */\nexport type AgenticWorkflowResponseWritable = {\n datalake?: DatalakeResponseWritable;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n /**\n * Workflow description\n */\n description: string;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ManualToolInvocationResponse\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.\n */\nexport type ManualToolInvocationResponseWritable = {\n [key: string]: unknown;\n};\n\n/**\n * CloudWatchLogGroupResponse\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling.\n */\nexport type CloudWatchLogGroupResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * CloudflarePagesConfigResponse\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps\n */\nexport type CloudflarePagesConfigResponseWritable = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * TenantResponse\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n *\n */\nexport type TenantResponseWritable = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n};\n\n/**\n * ActionSMSCallRequest\n */\nexport type ActionSmsCallRequestWritable = SmsCallRequestWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * DataActivationClientLogResponse\n *\n * One log row per `(batch_id, dataset_table)`. A batch fans out into one log per dataset table — so a single run (one `batch_id`) produces multiple log rows, one per table the DAC writes into. Once `BatchMergeWorker` has finished, `output_files` carries one entry per bucket mode, each an `object_key` — a cloud-storage key, not a URL. To read an archive, presign the key with `POST /datalakes/{datalake_slug}/download-link`.\n */\nexport type DataActivationClientLogResponseWritable = {\n /**\n * Batch identifier stamped on every Oban job for this run\n */\n batch_id: string;\n /**\n * Target dataset table for this slice (e.g. patients, observations)\n */\n dataset_table: string;\n /**\n * Number of existing rows whose checksum changed (trigger-maintained)\n */\n dataset_updated?: number;\n /**\n * Source file keys fetched for this slice\n */\n input_files?: Array<string>;\n /**\n * Total source rows ingested by this slice of the batch\n */\n rows_ingested?: number;\n /**\n * `failed` when the batch died before enqueueing any row — the fetch itself errored. `rows_ingested` and `input_files` are 0/[] on such a row; read `error` for the reason.\n */\n status?: 'succeeded' | 'failed';\n};\n\n/**\n * ActionStatusUpdaterResponse\n *\n * Action Status Updater — automated polling for delivery status updates.\n */\nexport type ActionStatusUpdaterResponseWritable = {\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigResponse;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientSharePointExcelCallRequest\n */\nexport type DataActivationClientSharePointExcelCallRequestWritable = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * WorkflowRunResponse\n *\n * A workflow invocation scheduled for a caller-chosen time. Every manual\n * invocation creates one, including an immediate send, which is simply\n * `scheduled_at` = now — there is no separate run-now path.\n *\n * A run is not a workflow run log. The run is the intent and is cancellable\n * while `scheduled`; the run log is the outcome it produces, and run logs also\n * arrive from Data Activation Client ingestion with no run behind them.\n *\n * The segment is resolved when the run **fires**, not when it is scheduled.\n * `matched_count` is the preview the operator saw; the audience is whatever\n * `execution_user_search_id` resolved to at send time, minus suppressed and\n * unreachable records.\n *\n */\nexport type WorkflowRunResponseWritable = {\n /**\n * Bypasses dedupe and idempotency checks for every record this run matches.\n */\n manual_override?: boolean;\n /**\n * 'live' fires real tool calls; 'dry_run' runs the pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * The resolved search this run was scheduled against. Create it with `POST /datasets/:dataset/user-searches`; its `results_count` becomes this run's `matched_count`.\n */\n preview_user_search_id: string;\n /**\n * When this run fires, in UTC. An immediate send is simply now. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at: string;\n};\n\n/**\n * AgenticWorkflowRequest\n *\n * Agentic Workflow — event-driven automation pipeline Request\n */\nexport type AgenticWorkflowRequestWritable = {\n /**\n * Decision actions to attach to this workflow (request)\n */\n actions?: Array<ActionRequestWritable>;\n /**\n * Context-enrichment datasets to load before the decision stage (request)\n */\n context_datasets?: Array<ContextDatasetRequestWritable>;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigRequest;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * AI agents to attach to this workflow (request)\n */\n workflow_ai_agents?: Array<WorkflowAiAgentRequestWritable>;\n};\n\n/**\n * AWSLambdaResponse\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes.\n */\nexport type AwsLambdaResponseWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ActionSharePointExcelCallResponse\n */\nexport type ActionSharePointExcelCallResponseWritable = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractAiAgentRequest\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline. Request\n */\nexport type InteroperabilityContractAiAgentRequestWritable = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * DataActivationClientSQLQueryCallResponse\n */\nexport type DataActivationClientSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * UserResponse\n *\n * Lean user reference — id, email, and names\n */\nexport type UserResponseWritable = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name?: string | null;\n /**\n * Last name\n */\n last_name?: string | null;\n};\n\n/**\n * MMSCallRequest\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL. Request\n */\nexport type MmsCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionResponse\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator.\n */\nexport type ActionResponseWritable = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * EndUserMessagingRequest\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API. Request\n */\nexport type EndUserMessagingRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Custom S3 endpoint URL for media staging (e.g. http://localhost:4566 for LocalStack); leave blank for AWS S3 in the tool's region\n */\n media_endpoint_url?: string | null;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractResponse\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.\n */\nexport type InteroperabilityContractResponseWritable = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigResponse;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ToolSharePointRequest\n */\nexport type ToolSharePointRequestWritable = SharePointRequestWritable & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ActionSMSCallResponse\n */\nexport type ActionSmsCallResponseWritable = SmsCallResponseWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ToolAWSLambdaResponse\n */\nexport type ToolAwsLambdaResponseWritable = AwsLambdaResponseWritable & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * InvitationResponse\n *\n * Pending tenant invitation — resolved into a Membership on accept.\n */\nexport type InvitationResponseWritable = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponseWritable;\n};\n\n/**\n * ToolRequest\n *\n * Tool — a configurable capability reference for external services. Request\n */\nexport type ToolRequestWritable = {\n body?: ({\n tool_body_type: 'email';\n } & ToolEmailRequestWritable) | ({\n tool_body_type: 'sns';\n } & ToolSnsRequestWritable) | ({\n tool_body_type: 'twilio';\n } & ToolTwilioRequestWritable) | ({\n tool_body_type: 'end_user_messaging';\n } & ToolEndUserMessagingRequestWritable) | ({\n tool_body_type: 'rest_api';\n } & ToolRestapiRequestWritable) | ({\n tool_body_type: 's3';\n } & ToolS3RequestWritable) | ({\n tool_body_type: 'aws_lambda';\n } & ToolAwsLambdaRequestWritable) | ({\n tool_body_type: 'sql_database';\n } & ToolSqlDatabaseRequestWritable) | ({\n tool_body_type: 'sqs';\n } & ToolSqsRequestWritable) | ({\n tool_body_type: 'sftp';\n } & ToolSftpRequestWritable) | ({\n tool_body_type: 'sharepoint';\n } & ToolSharePointRequestWritable) | ({\n tool_body_type: 'cloud_watch_log_group';\n } & ToolCloudWatchLogGroupRequestWritable) | ({\n tool_body_type: 'manual_upload';\n } & ToolManualUploadRequest);\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigRequest;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * AWSLambdaRequest\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes. Request\n */\nexport type AwsLambdaRequestWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigRequest;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * AWS secret access key (required when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ToolSQSRequest\n */\nexport type ToolSqsRequestWritable = SqsRequestWritable & {\n tool_body_type: 'sqs';\n};\n\n/**\n * SMSCallResponse\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category.\n */\nexport type SmsCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionRequest\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator. Request\n */\nexport type ActionRequestWritable = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Action ID — echo it back on update to modify the existing action rather than replace it\n */\n id?: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n tool_call: ({\n tool_call_type: 'sms_request';\n } & ActionSmsCallRequestWritable) | ({\n tool_call_type: 'mms_request';\n } & ActionMmsCallRequestWritable) | ({\n tool_call_type: 'email_request';\n } & ActionEmailCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & ActionSqlQueryCallRequestWritable) | ({\n tool_call_type: 'restapi_request';\n } & ActionRestCallRequestWritable) | ({\n tool_call_type: 'sftp_request';\n } & ActionSftpCallRequestWritable) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & ActionSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & ActionAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'manual_upload';\n } & ActionManualUploadCallRequest);\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * DatalakeCloudStorageR2Request\n */\nexport type DatalakeCloudStorageR2RequestWritable = CloudStorageR2RequestWritable & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * AWSLambdaCallResponse\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.\n */\nexport type AwsLambdaCallResponseWritable = {\n payload: SimpleTemplateConfigResponse;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * DataActivationClientRESTCallRequest\n */\nexport type DataActivationClientRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * RESTCallResponse\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there.\n */\nexport type RestCallResponseWritable = {\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigResponse;\n path: SimpleTemplateConfigResponse;\n};\n\n/**\n * WorkflowAiAgentRequest\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline. Request\n */\nexport type WorkflowAiAgentRequestWritable = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * AiAgentRequest\n *\n * AI Agent configuration — reusable chat-completion resource Request\n */\nexport type AiAgentRequestWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigRequest;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * SharePointResponse\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth.\n */\nexport type SharePointResponseWritable = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * RESTAPIResponse\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.\n */\nexport type RestapiResponseWritable = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DataActivationClientRESTCallResponse\n */\nexport type DataActivationClientRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientS3CallResponse\n */\nexport type DataActivationClientS3CallResponseWritable = S3CallResponse & {\n tool_call_type: 's3_request';\n};\n\n/**\n * EmailRequest\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates. Request\n */\nexport type EmailRequestWritable = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * API key (Mailgun/SendGrid)\n */\n api_key?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * AWS secret access key (SES)\n */\n secret_access_key?: string;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP password\n */\n smtp_password?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ConnectedAppListResponse\n *\n * Paginated list of connected apps\n */\nexport type ConnectedAppListResponseWritable = {\n /**\n * List of connected apps\n */\n data: Array<ConnectedAppResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * EmailCallResponse\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body.\n */\nexport type EmailCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n subject: SimpleTemplateConfigResponse;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSQLQueryCallResponse\n */\nexport type ActionSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionStatusUpdaterRefreshRequest\n *\n * Optional polymorphic updater_body override for this refresh. When omitted or empty, the updater's persisted updater_body is used.\n */\nexport type ActionStatusUpdaterRefreshRequestWritable = {\n /**\n * One-shot polymorphic updater_body override — e.g. a widened start_time/end_time window for a historical backfill. Same `updater_body_type` discriminator and variants as ActionStatusUpdaterRequest.updater_body. The persisted updater is not modified.\n */\n updater_body?: ({\n updater_body_type: 'ActionStatusUpdaterRESTCallRequestWritable';\n } & ActionStatusUpdaterRestCallRequestWritable) | ({\n updater_body_type: 'ActionStatusUpdaterCloudWatchQueryRequestWritable';\n } & ActionStatusUpdaterCloudWatchQueryRequestWritable) | null;\n};\n\n/**\n * S3CloudStorageR2Request\n */\nexport type S3CloudStorageR2RequestWritable = CloudStorageR2RequestWritable & {\n storage_config_type: 'r2';\n};\n\n/**\n * ToolTwilioRequest\n */\nexport type ToolTwilioRequestWritable = TwilioRequestWritable & {\n tool_body_type: 'twilio';\n};\n\n/**\n * WorkflowAiAgentResponse\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.\n */\nexport type WorkflowAiAgentResponseWritable = {\n ai_agent?: MinimalAiAgentResponseWritable;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigResponse;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * WorkflowLogListResponse\n *\n * Paginated list of workflow execution logs\n */\nexport type WorkflowLogListResponseWritable = {\n /**\n * List of workflow execution logs\n */\n data: Array<WorkflowLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolSQLDatabaseRequest\n */\nexport type ToolSqlDatabaseRequestWritable = SqlDatabaseRequestWritable & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * GenericTableListResponse\n *\n * Paginated list of generic tables\n */\nexport type GenericTableListResponseWritable = {\n /**\n * List of generic tables\n */\n data: Array<GenericTableResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionRESTCallRequest\n */\nexport type ActionRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * GenericTableRequest\n *\n * Generic Table — custom or system dataset table with column definitions. Request\n */\nexport type GenericTableRequestWritable = {\n /**\n * Table column definitions\n */\n columns?: Array<GenericTableColumnRequest>;\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * MMSCallResponse\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL.\n */\nexport type MmsCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ManualToolInvocationEmailCallResponse\n */\nexport type ManualToolInvocationEmailCallResponseWritable = EmailCallResponseWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ToolSharePointResponse\n */\nexport type ToolSharePointResponseWritable = SharePointResponseWritable & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ToolSFTPRequest\n */\nexport type ToolSftpRequestWritable = SftpRequestWritable & {\n tool_body_type: 'sftp';\n};\n\n/**\n * ManualToolInvocationSMSCallResponse\n */\nexport type ManualToolInvocationSmsCallResponseWritable = SmsCallResponseWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryResponse\n */\nexport type ActionStatusUpdaterCloudWatchQueryResponseWritable = CloudWatchQueryResponse & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionMMSCallResponse\n */\nexport type ActionMmsCallResponseWritable = MmsCallResponseWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * ToolSQLDatabaseResponse\n */\nexport type ToolSqlDatabaseResponseWritable = SqlDatabaseResponseWritable & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * ActionSQLQueryCallRequest\n */\nexport type ActionSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionSFTPCallRequest\n */\nexport type ActionSftpCallRequestWritable = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * BatchLogResponse\n *\n * Batch-level workflow run log — aggregation of per-event execution logs\n */\nexport type BatchLogResponseWritable = {\n /**\n * Batch identifier (manual:{user_search_id} or DAC batch_id)\n */\n batch_id: string;\n completed_at?: string | null;\n /**\n * Successfully completed WELs\n */\n completed_wels?: number;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Number of events expected to produce WELs\n */\n expected_events?: number;\n /**\n * Failed WELs\n */\n failed_wels?: number;\n /**\n * Workflow run log ID\n */\n id?: string;\n inserted_at?: string;\n last_refreshed_at?: string | null;\n started_at?: string | null;\n /**\n * Batch status\n */\n status: 'pending' | 'completed' | 'partial' | 'failed';\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Total WELs found at last refresh\n */\n total_wels?: number;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AWSLambdaCallRequest\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request\n */\nexport type AwsLambdaCallRequestWritable = {\n payload: SimpleTemplateConfigRequest;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * ToolCloudWatchLogGroupRequest\n */\nexport type ToolCloudWatchLogGroupRequestWritable = CloudWatchLogGroupRequestWritable & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ManualToolInvocationSQLQueryCallRequest\n */\nexport type ManualToolInvocationSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionStatusUpdaterRESTCallResponse\n */\nexport type ActionStatusUpdaterRestCallResponseWritable = RestCallResponseWritable & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientAWSLambdaCallRequest\n */\nexport type DataActivationClientAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * WorkflowRunListResponse\n *\n * Paginated list of workflow runs\n */\nexport type WorkflowRunListResponseWritable = {\n /**\n * List of workflow runs\n */\n data: Array<WorkflowRunResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * MinimalAiAgentResponse\n *\n * AI Agent — identifier and runtime fields only (no tenant/datalake nesting)\n */\nexport type MinimalAiAgentResponseWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tool?: ToolResponseWritable;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientS3CallRequest\n */\nexport type DataActivationClientS3CallRequestWritable = S3CallRequest & {\n tool_call_type: 's3_request';\n};\n\n/**\n * DatasetSearchResponse\n *\n * Double-paginated dataset search results scoped to a `UserSearch`. The\n * `meta` object carries two `Flop.Meta`-shaped sub-objects:\n *\n * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per\n * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`\n * when the request was not bound to a `user_search_id`.\n * - `flop` — inner Flop page over the resource (default 20 rows).\n *\n */\nexport type DatasetSearchResponseWritable = {\n /**\n * Array of dataset records\n */\n data: Array<{\n [key: string]: unknown;\n }>;\n /**\n * Two-tier pagination metadata\n */\n meta: {\n flop: PaginationMeta;\n /**\n * Outer page over search_results — null when no UserSearch bound\n */\n sql?: PaginationMeta | unknown;\n };\n user_search: UserSearchResponseWritable;\n};\n\n/**\n * ActionAWSLambdaCallResponse\n */\nexport type ActionAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * EndUserMessagingResponse\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API.\n */\nexport type EndUserMessagingResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Custom S3 endpoint URL for media staging (e.g. http://localhost:4566 for LocalStack); leave blank for AWS S3 in the tool's region\n */\n media_endpoint_url?: string | null;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ToolS3Response\n */\nexport type ToolS3ResponseWritable = S3ResponseWritable & {\n tool_body_type: 's3';\n};\n\n/**\n * S3CloudStorageAwsRequest\n */\nexport type S3CloudStorageAwsRequestWritable = CloudStorageAwsRequestWritable & {\n storage_config_type: 'aws';\n};\n\n/**\n * DataActivationClientSFTPCallResponse\n */\nexport type DataActivationClientSftpCallResponseWritable = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * CloudStorageR2Request\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints. Request\n */\nexport type CloudStorageR2RequestWritable = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n /**\n * R2 secret access key\n */\n secret_access_key: string;\n};\n\n/**\n * SharePointRequest\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth. Request\n */\nexport type SharePointRequestWritable = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigRequest;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Azure AD client secret (used when auth_method is client_credentials)\n */\n client_secret?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * ManualToolInvocationSMSCallRequest\n */\nexport type ManualToolInvocationSmsCallRequestWritable = SmsCallRequestWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ManualToolInvocationRequest\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request\n */\nexport type ManualToolInvocationRequestWritable = {\n tool_call?: ({\n tool_call_type: 'sms_request';\n } & ManualToolInvocationSmsCallRequestWritable) | ({\n tool_call_type: 'mms_request';\n } & ManualToolInvocationMmsCallRequestWritable) | ({\n tool_call_type: 'email_request';\n } & ManualToolInvocationEmailCallRequestWritable) | ({\n tool_call_type: 'restapi_request';\n } & ManualToolInvocationRestCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & ManualToolInvocationAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & ManualToolInvocationSqlQueryCallRequestWritable);\n};\n\n/**\n * SQLQueryCallRequest\n *\n * SQL query descriptor — Liquid-templated query body. Request\n */\nexport type SqlQueryCallRequestWritable = {\n query: SimpleTemplateConfigRequest;\n};\n\n/**\n * DatalakeResponse\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses.\n */\nexport type DatalakeResponseWritable = {\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n tenant?: TenantResponseWritable;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * SFTPResponse\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth.\n */\nexport type SftpResponseWritable = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * ToolSNSResponse\n */\nexport type ToolSnsResponseWritable = SnsResponseWritable & {\n tool_body_type: 'sns';\n};\n\n/**\n * SQLQueryCallResponse\n *\n * SQL query descriptor — Liquid-templated query body.\n */\nexport type SqlQueryCallResponseWritable = {\n query: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSFTPCallResponse\n */\nexport type ActionSftpCallResponseWritable = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * DatalakeCloudStorageR2Response\n */\nexport type DatalakeCloudStorageR2ResponseWritable = CloudStorageR2Response & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * CloudWatchLogGroupRequest\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling. Request\n */\nexport type CloudWatchLogGroupRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigRequest;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * SNSRequest\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API. Request\n */\nexport type SnsRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallResponse\n */\nexport type ManualToolInvocationAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TenantListResponse\n *\n * Paginated list of tenants\n */\nexport type TenantListResponseWritable = {\n /**\n * List of tenants\n */\n data: Array<TenantResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionEmailCallResponse\n */\nexport type ActionEmailCallResponseWritable = EmailCallResponseWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * S3Response\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2).\n */\nexport type S3ResponseWritable = {\n [key: string]: unknown;\n};\n\n/**\n * ToolEmailRequest\n */\nexport type ToolEmailRequestWritable = EmailRequestWritable & {\n tool_body_type: 'email';\n};\n\n/**\n * ManualToolInvocationRESTCallResponse\n */\nexport type ManualToolInvocationRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * ManualToolInvocationMMSCallRequest\n */\nexport type ManualToolInvocationMmsCallRequestWritable = MmsCallRequestWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * SessionResponse\n *\n * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or\n * derived from an `X-API-Key` header. The `session_token` field carries the\n * plaintext Bearer on creation responses and is null on verify responses.\n * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant\n * sessions; `api_key` is populated for M2M sessions only.\n *\n */\nexport type SessionResponseWritable = {\n api_key?: ApiKeyResponseWritable;\n /**\n * Capability ceiling for the session. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Set at creation time from membership role (researcher locked to `:unregulated`); cannot be widened post-creation.\n */\n data_access_mode: 'regulated' | 'unregulated';\n role?: RoleResponseWritable;\n tenant?: TenantResponseWritable;\n user?: UserResponseWritable;\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryRequest\n */\nexport type ActionStatusUpdaterCloudWatchQueryRequestWritable = CloudWatchQueryRequest & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionStatusUpdaterRESTCallRequest\n */\nexport type ActionStatusUpdaterRestCallRequestWritable = RestCallRequestWritable & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * SQSRequest\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages. Request\n */\nexport type SqsRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * DataActivationClientAWSLambdaCallResponse\n */\nexport type DataActivationClientAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolResponse\n *\n * Tool — a configurable capability reference for external services.\n */\nexport type ToolResponseWritable = {\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * ToolAWSLambdaRequest\n */\nexport type ToolAwsLambdaRequestWritable = AwsLambdaRequestWritable & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * DataSourceListResponse\n *\n * Paginated list of data sources\n */\nexport type DataSourceListResponseWritable = {\n /**\n * List of data sources\n */\n data: Array<DataSourceResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * SNSResponse\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API.\n */\nexport type SnsResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractAiAgentResponse\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline.\n */\nexport type InteroperabilityContractAiAgentResponseWritable = {\n ai_agent?: MinimalAiAgentResponseWritable;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigResponse;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * ActionSharePointExcelCallRequest\n */\nexport type ActionSharePointExcelCallRequestWritable = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractRequest\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request\n */\nexport type InteroperabilityContractRequestWritable = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * AI agents to attach to this contract (request)\n */\n interoperability_contract_ai_agents?: Array<InteroperabilityContractAiAgentRequestWritable>;\n mdm_input_config?: SimpleTemplateConfigRequest;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigRequest;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * RESTCallRequest\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there. Request\n */\nexport type RestCallRequestWritable = {\n body?: SimpleTemplateConfigRequest;\n events_template?: SimpleTemplateConfigRequest;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigRequest;\n params?: SimpleTemplateConfigRequest;\n path: SimpleTemplateConfigRequest;\n};\n\n/**\n * SQLDatabaseResponse\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake).\n */\nexport type SqlDatabaseResponseWritable = {\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * S3CloudStorageAwsResponse\n */\nexport type S3CloudStorageAwsResponseWritable = CloudStorageAwsResponse & {\n storage_config_type: 'aws';\n};\n\n/**\n * S3CloudStorageR2Response\n */\nexport type S3CloudStorageR2ResponseWritable = CloudStorageR2Response & {\n storage_config_type: 'r2';\n};\n\n/**\n * ContextDatasetRequest\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages. Request\n */\nexport type ContextDatasetRequestWritable = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Context dataset ID — echo it back on update to modify the existing dataset rather than replace it\n */\n id?: string;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * ToolEmailResponse\n */\nexport type ToolEmailResponseWritable = EmailResponseWritable & {\n tool_body_type: 'email';\n};\n\n/**\n * ToolListResponse\n *\n * Paginated list of tools\n */\nexport type ToolListResponseWritable = {\n /**\n * List of tools\n */\n data: Array<ToolResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ManualToolInvocationSQLQueryCallResponse\n */\nexport type ManualToolInvocationSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SQSResponse\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages.\n */\nexport type SqsResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * RESTAPIRequest\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates. Request\n */\nexport type RestapiRequestWritable = {\n /**\n * API key value (used when auth_method is api_key)\n */\n api_key?: string | null;\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigRequest;\n base_headers?: SimpleTemplateConfigRequest;\n base_path?: SimpleTemplateConfigRequest;\n base_query?: SimpleTemplateConfigRequest;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * Static bearer token (used when auth_method is bearer)\n */\n bearer_token?: string | null;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 client secret\n */\n oauth2_client_secret?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 refresh token for authorization_code grant. Obtained from the provider's OAuth consent flow and pasted here. The platform auto-rotates it.\n */\n oauth2_refresh_token?: string | null;\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC client secret\n */\n oidc_client_secret?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Password (used when auth_method is basic)\n */\n password?: string | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DatalakeCloudStorageCustomRequest\n */\nexport type DatalakeCloudStorageCustomRequestWritable = CloudStorageCustomRequestWritable & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * DataActivationClientSharePointExcelCallResponse\n */\nexport type DataActivationClientSharePointExcelCallResponseWritable = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * EmailResponse\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates.\n */\nexport type EmailResponseWritable = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationMMSCallResponse\n */\nexport type ManualToolInvocationMmsCallResponseWritable = MmsCallResponseWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * WorkflowLogResponse\n *\n * Workflow execution log — per-event execution detail\n */\nexport type WorkflowLogResponseWritable = {\n /**\n * Completed action count\n */\n actions_completed?: number;\n /**\n * Failed action count\n */\n actions_failed?: number;\n /**\n * Pending action count\n */\n actions_pending?: number;\n /**\n * Total action count\n */\n actions_total?: number;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n completed_at?: string | null;\n /**\n * R2 storage key for context JSON\n */\n context_cloud_storage_key?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Error description\n */\n error_message?: string | null;\n /**\n * Whether the filter passed\n */\n filter_result?: boolean | null;\n /**\n * Execution log ID\n */\n id?: string;\n inserted_at?: string;\n /**\n * Execution mode\n */\n mode: 'live' | 'dry_run';\n /**\n * Sampled event ID\n */\n sampled_event_id?: string | null;\n started_at?: string | null;\n /**\n * Execution status\n */\n status: 'filtered' | 'pending' | 'executing' | 'completed' | 'failed' | 'partial';\n /**\n * Resolved subject ID (cross-DB)\n */\n subject_id?: string | null;\n /**\n * Subject type (e.g. patient, member)\n */\n subject_type?: string | null;\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * CloudStorageAwsRequest\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication. Request\n */\nexport type CloudStorageAwsRequestWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (required when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * ToolSQSResponse\n */\nexport type ToolSqsResponseWritable = SqsResponseWritable & {\n tool_body_type: 'sqs';\n};\n\n/**\n * ApiKeyResponse\n *\n * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)\n */\nexport type ApiKeyResponseWritable = {\n /**\n * Capability ceiling baked into the key. Sessions derived from this key inherit this value. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Cannot be widened post-creation — revoke + re-mint instead.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * API key name\n */\n name: string;\n};\n\n/**\n * DataActivationClientResponse\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.\n */\nexport type DataActivationClientResponseWritable = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * SFTPRequest\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth. Request\n */\nexport type SftpRequestWritable = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigRequest;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP password (used when auth_method is password)\n */\n password?: string | null;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SSH private key content (used when auth_method is ssh_key)\n */\n private_key?: string | null;\n /**\n * Optional passphrase for encrypted SSH private key\n */\n private_key_passphrase?: string | null;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * CloudStorageCustomRequest\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL. Request\n */\nexport type CloudStorageCustomRequestWritable = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n /**\n * Secret access key\n */\n secret_access_key: string;\n};\n\n/**\n * DatalakeListResponse\n *\n * Paginated list of datalakes\n */\nexport type DatalakeListResponseWritable = {\n /**\n * List of datalakes\n */\n data: Array<DatalakeResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * DatalakeCloudStorageAwsResponse\n */\nexport type DatalakeCloudStorageAwsResponseWritable = CloudStorageAwsResponse & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * ActionRESTCallResponse\n */\nexport type ActionRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientRequest\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request\n */\nexport type DataActivationClientRequestWritable = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigRequest;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n tool_call: ({\n tool_call_type: 'restapi_request';\n } & DataActivationClientRestCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & DataActivationClientSqlQueryCallRequestWritable) | ({\n tool_call_type: 'sftp_request';\n } & DataActivationClientSftpCallRequestWritable) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & DataActivationClientSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & DataActivationClientAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'manual_upload';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 's3_request';\n } & DataActivationClientS3CallRequestWritable);\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * ToolCloudWatchLogGroupResponse\n */\nexport type ToolCloudWatchLogGroupResponseWritable = CloudWatchLogGroupResponseWritable & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ActionAWSLambdaCallRequest\n */\nexport type ActionAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TwilioRequest\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity. Request\n */\nexport type TwilioRequestWritable = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n /**\n * Twilio Auth Token (required on a primary; supplied by the primary on a variant)\n */\n auth_token?: string | null;\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * GenericTableResponse\n *\n * Generic Table — custom or system dataset table with column definitions.\n */\nexport type GenericTableResponseWritable = {\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * InteroperabilityContractListResponse\n *\n * Paginated list of interoperability contracts\n */\nexport type InteroperabilityContractListResponseWritable = {\n /**\n * List of interoperability contracts\n */\n data: Array<InteroperabilityContractResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingResponse\n */\nexport type ToolEndUserMessagingResponseWritable = EndUserMessagingResponseWritable & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * CloudflarePagesConfigRequest\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps Request\n */\nexport type CloudflarePagesConfigRequestWritable = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token with Pages permissions (never returned in responses)\n */\n api_token: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * GitHub Personal Access Token (required when github_auth_method=pat, never returned in responses)\n */\n github_pat?: string | null;\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * DataActivationClientSFTPCallRequest\n */\nexport type DataActivationClientSftpCallRequestWritable = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * RunManuallyRequest\n *\n * Optional polymorphic tool_call override for this run. When omitted or empty, the DAC's persisted tool_call is used.\n */\nexport type RunManuallyRequestWritable = {\n /**\n * One-shot polymorphic tool_call override. Same `tool_call_type` discriminator and variants as DataActivationClientRequest.tool_call.\n */\n tool_call?: ({\n tool_call_type: 'DataActivationClientRESTCallRequestWritable';\n } & DataActivationClientRestCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSQLQueryCallRequestWritable';\n } & DataActivationClientSqlQueryCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSFTPCallRequestWritable';\n } & DataActivationClientSftpCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSharePointExcelCallRequestWritable';\n } & DataActivationClientSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientAWSLambdaCallRequestWritable';\n } & DataActivationClientAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientManualUploadCallRequest';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 'DataActivationClientS3CallRequestWritable';\n } & DataActivationClientS3CallRequestWritable) | null;\n};\n\n/**\n * ActionStatusUpdaterListResponse\n *\n * Paginated list of action status updaters\n */\nexport type ActionStatusUpdaterListResponseWritable = {\n /**\n * List of action status updaters\n */\n data: Array<ActionStatusUpdaterResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingRequest\n */\nexport type ToolEndUserMessagingRequestWritable = EndUserMessagingRequestWritable & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * ManualToolInvocationEmailCallRequest\n */\nexport type ManualToolInvocationEmailCallRequestWritable = EmailCallRequestWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ConnectedAppResponse\n *\n * External web application connected to the platform via M2M API key\n */\nexport type ConnectedAppResponseWritable = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token\n */\n api_token?: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * GitHub PAT (required for pat method)\n */\n github_pat?: string | null;\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * DatalakeCloudStorageAwsRequest\n */\nexport type DatalakeCloudStorageAwsRequestWritable = CloudStorageAwsRequestWritable & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * AgenticWorkflowListResponse\n *\n * Paginated list of agentic workflows\n */\nexport type AgenticWorkflowListResponseWritable = {\n /**\n * List of agentic workflows\n */\n data: Array<AgenticWorkflowResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionMMSCallRequest\n */\nexport type ActionMmsCallRequestWritable = MmsCallRequestWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * RoleResponse\n *\n * Lean role reference — id, name, and description\n */\nexport type RoleResponseWritable = {\n /**\n * Role description\n */\n description?: string | null;\n /**\n * Role name (e.g. tenant_admin, platform_admin)\n */\n name: string;\n};\n\n/**\n * BatchLogListResponse\n *\n * Paginated list of batch run logs\n */\nexport type BatchLogListResponseWritable = {\n /**\n * List of batch run logs\n */\n data: Array<BatchLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolTwilioResponse\n */\nexport type ToolTwilioResponseWritable = TwilioResponseWritable & {\n tool_body_type: 'twilio';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallRequest\n */\nexport type ManualToolInvocationAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolSFTPResponse\n */\nexport type ToolSftpResponseWritable = SftpResponseWritable & {\n tool_body_type: 'sftp';\n};\n\n/**\n * ToolS3Request\n */\nexport type ToolS3RequestWritable = S3RequestWritable & {\n tool_body_type: 's3';\n};\n\n/**\n * ManualToolInvocationRESTCallRequest\n */\nexport type ManualToolInvocationRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * SignUpRequest\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape. The created user is **unconfirmed** — caller must\n * confirm separately (e.g. via the email confirmation flow, or via\n * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.\n *\n * No authentication is required.\n * Request\n */\nexport type SignUpRequestWritable = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name: string | null;\n /**\n * Last name\n */\n last_name: string | null;\n /**\n * Password (8–72 characters; mirrors the `/auth/register` LiveView form)\n */\n password: string;\n};\n\n/**\n * AiAgentResponse\n *\n * AI Agent configuration — reusable chat-completion resource\n */\nexport type AiAgentResponseWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n datalake?: DatalakeResponseWritable;\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tenant?: TenantResponseWritable;\n tool?: ToolResponseWritable;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientSQLQueryCallRequest\n */\nexport type DataActivationClientSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ToolSNSRequest\n */\nexport type ToolSnsRequestWritable = SnsRequestWritable & {\n tool_body_type: 'sns';\n};\n\n/**\n * InvitationListResponse\n *\n * Paginated list of invitations\n */\nexport type InvitationListResponseWritable = {\n /**\n * List of invitations\n */\n data: Array<InvitationResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionStatusUpdaterRequest\n *\n * Action Status Updater — automated polling for delivery status updates. Request\n */\nexport type ActionStatusUpdaterRequestWritable = {\n action_log_config: SimpleTemplateConfigRequest;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigRequest;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n updater_body: ({\n updater_body_type: 'cloud_watch_request';\n } & ActionStatusUpdaterCloudWatchQueryRequestWritable) | ({\n updater_body_type: 'restapi_request';\n } & ActionStatusUpdaterRestCallRequestWritable);\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientLogListResponse\n *\n * Paginated list of data activation client logs\n */\nexport type DataActivationClientLogListResponseWritable = {\n /**\n * List of data activation client logs\n */\n data: Array<DataActivationClientLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * AiAgentListResponse\n *\n * Paginated list of AI agents\n */\nexport type AiAgentListResponseWritable = {\n /**\n * List of AI agents\n */\n data: Array<AiAgentResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ConnectedAppRequest\n *\n * External web application connected to the platform via M2M API key Request\n */\nexport type ConnectedAppRequestWritable = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token\n */\n api_token?: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * GitHub PAT (required for pat method)\n */\n github_pat?: string | null;\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * S3Request\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2). Request\n */\nexport type S3RequestWritable = {\n base_prefix?: ComplexTemplateConfigRequest;\n config: ({\n storage_config_type: 'aws';\n } & S3CloudStorageAwsRequestWritable) | ({\n storage_config_type: 'r2';\n } & S3CloudStorageR2RequestWritable);\n};\n\n/**\n * DataSourceResponse\n *\n * Data source — connection to a third-party system or API\n */\nexport type DataSourceResponseWritable = {\n datalake?: DatalakeResponseWritable;\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * TwilioResponse\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity.\n */\nexport type TwilioResponseWritable = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * SQLDatabaseRequest\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake). Request\n */\nexport type SqlDatabaseRequestWritable = {\n base_query?: ComplexTemplateConfigRequest;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Database password\n */\n password: string;\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * SMSCallRequest\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category. Request\n */\nexport type SmsCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ToolRESTAPIResponse\n */\nexport type ToolRestapiResponseWritable = RestapiResponseWritable & {\n tool_body_type: 'rest_api';\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumData = {\n /**\n * Full workflow resource (same shape as create/update)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/checksum';\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumError = PlatformApiAgenticWorkflowControllerChecksumErrors[keyof PlatformApiAgenticWorkflowControllerChecksumErrors];\n\nexport type PlatformApiAgenticWorkflowControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumResponse = PlatformApiAgenticWorkflowControllerChecksumResponses[keyof PlatformApiAgenticWorkflowControllerChecksumResponses];\n\nexport type PlatformApiGenericTableControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}/metadata';\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsError = PlatformApiGenericTableControllerMetadataDetailsErrors[keyof PlatformApiGenericTableControllerMetadataDetailsErrors];\n\nexport type PlatformApiGenericTableControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested generic table\n */\n 200: string;\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsResponse = PlatformApiGenericTableControllerMetadataDetailsResponses[keyof PlatformApiGenericTableControllerMetadataDetailsResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData = {\n /**\n * API key attributes\n */\n body: AdminCreateTenantApiKeyRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/admin/tenants/{tenant_slug}/api-keys';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyError = PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses = {\n /**\n * API key created\n */\n 201: AdminApiKeyResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponse = PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses];\n\nexport type PlatformApiToolControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/metadata';\n};\n\nexport type PlatformApiToolControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerMetadataDetailsError = PlatformApiToolControllerMetadataDetailsErrors[keyof PlatformApiToolControllerMetadataDetailsErrors];\n\nexport type PlatformApiToolControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested tool\n */\n 200: string;\n};\n\nexport type PlatformApiToolControllerMetadataDetailsResponse = PlatformApiToolControllerMetadataDetailsResponses[keyof PlatformApiToolControllerMetadataDetailsResponses];\n\nexport type PlatformApiDataSourceControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/metadata';\n};\n\nexport type PlatformApiDataSourceControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerMetadataError = PlatformApiDataSourceControllerMetadataErrors[keyof PlatformApiDataSourceControllerMetadataErrors];\n\nexport type PlatformApiDataSourceControllerMetadataResponses = {\n /**\n * One markdown page of the data source catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiDataSourceControllerMetadataResponse = PlatformApiDataSourceControllerMetadataResponses[keyof PlatformApiDataSourceControllerMetadataResponses];\n\nexport type PlatformApiToolControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Tool is referenced by another resource\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiToolControllerDeleteError = PlatformApiToolControllerDeleteErrors[keyof PlatformApiToolControllerDeleteErrors];\n\nexport type PlatformApiToolControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiToolControllerDeleteResponse = PlatformApiToolControllerDeleteResponses[keyof PlatformApiToolControllerDeleteResponses];\n\nexport type PlatformApiToolControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerShowError = PlatformApiToolControllerShowErrors[keyof PlatformApiToolControllerShowErrors];\n\nexport type PlatformApiToolControllerShowResponses = {\n /**\n * Tool\n */\n 200: ToolResponse;\n};\n\nexport type PlatformApiToolControllerShowResponse = PlatformApiToolControllerShowResponses[keyof PlatformApiToolControllerShowResponses];\n\nexport type PlatformApiToolControllerUpdateData = {\n /**\n * Full Tool resource (PUT semantics — all fields required)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerUpdateError = PlatformApiToolControllerUpdateErrors[keyof PlatformApiToolControllerUpdateErrors];\n\nexport type PlatformApiToolControllerUpdateResponses = {\n /**\n * Tool updated\n */\n 200: ToolResponse;\n};\n\nexport type PlatformApiToolControllerUpdateResponse = PlatformApiToolControllerUpdateResponses[keyof PlatformApiToolControllerUpdateResponses];\n\nexport type PlatformApiDatalakeControllerTextToSqlData = {\n /**\n * Text-to-SQL request\n */\n body: TextToSqlRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/text-to-sql';\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlError = PlatformApiDatalakeControllerTextToSqlErrors[keyof PlatformApiDatalakeControllerTextToSqlErrors];\n\nexport type PlatformApiDatalakeControllerTextToSqlResponses = {\n /**\n * Generated SQL\n */\n 200: TextToSqlResponse;\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlResponse = PlatformApiDatalakeControllerTextToSqlResponses[keyof PlatformApiDatalakeControllerTextToSqlResponses];\n\nexport type PlatformApiSessionControllerVerifyApiKeyData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/api-keys/verify';\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyErrors = {\n /**\n * Invalid or missing X-API-Key\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Bearer caller\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyError = PlatformApiSessionControllerVerifyApiKeyErrors[keyof PlatformApiSessionControllerVerifyApiKeyErrors];\n\nexport type PlatformApiSessionControllerVerifyApiKeyResponses = {\n /**\n * API-key session details\n */\n 200: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyResponse = PlatformApiSessionControllerVerifyApiKeyResponses[keyof PlatformApiSessionControllerVerifyApiKeyResponses];\n\nexport type PlatformApiDatalakeControllerMigrateData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate';\n};\n\nexport type PlatformApiDatalakeControllerMigrateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerMigrateError = PlatformApiDatalakeControllerMigrateErrors[keyof PlatformApiDatalakeControllerMigrateErrors];\n\nexport type PlatformApiDatalakeControllerMigrateResponses = {\n /**\n * Migration job enqueued\n */\n 202: DatalakeMigrateResponse;\n};\n\nexport type PlatformApiDatalakeControllerMigrateResponse = PlatformApiDatalakeControllerMigrateResponses[keyof PlatformApiDatalakeControllerMigrateResponses];\n\nexport type PlatformApiSessionControllerVerifyData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/sessions/verify';\n};\n\nexport type PlatformApiSessionControllerVerifyErrors = {\n /**\n * Invalid or missing credentials\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Key-only caller\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerVerifyError = PlatformApiSessionControllerVerifyErrors[keyof PlatformApiSessionControllerVerifyErrors];\n\nexport type PlatformApiSessionControllerVerifyResponses = {\n /**\n * Session details\n */\n 200: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerVerifyResponse = PlatformApiSessionControllerVerifyResponses[keyof PlatformApiSessionControllerVerifyResponses];\n\nexport type PlatformApiDataActivationClientControllerChecksumData = {\n /**\n * Full DAC resource (same shape as create/update)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/checksum';\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumError = PlatformApiDataActivationClientControllerChecksumErrors[keyof PlatformApiDataActivationClientControllerChecksumErrors];\n\nexport type PlatformApiDataActivationClientControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumResponse = PlatformApiDataActivationClientControllerChecksumResponses[keyof PlatformApiDataActivationClientControllerChecksumResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopError = PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses = {\n /**\n * Batch log with polling stopped\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses];\n\nexport type PlatformApiDataActivationClientControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * DAC is referenced by another resource\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteError = PlatformApiDataActivationClientControllerDeleteErrors[keyof PlatformApiDataActivationClientControllerDeleteErrors];\n\nexport type PlatformApiDataActivationClientControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteResponse = PlatformApiDataActivationClientControllerDeleteResponses[keyof PlatformApiDataActivationClientControllerDeleteResponses];\n\nexport type PlatformApiDataActivationClientControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerShowError = PlatformApiDataActivationClientControllerShowErrors[keyof PlatformApiDataActivationClientControllerShowErrors];\n\nexport type PlatformApiDataActivationClientControllerShowResponses = {\n /**\n * DAC\n */\n 200: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerShowResponse = PlatformApiDataActivationClientControllerShowResponses[keyof PlatformApiDataActivationClientControllerShowResponses];\n\nexport type PlatformApiDataActivationClientControllerUpdateData = {\n /**\n * Full DAC resource (all required fields must be present)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateError = PlatformApiDataActivationClientControllerUpdateErrors[keyof PlatformApiDataActivationClientControllerUpdateErrors];\n\nexport type PlatformApiDataActivationClientControllerUpdateResponses = {\n /**\n * DAC updated\n */\n 200: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateResponse = PlatformApiDataActivationClientControllerUpdateResponses[keyof PlatformApiDataActivationClientControllerUpdateResponses];\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkData = {\n /**\n * Download link request\n */\n body: DownloadLinkRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link';\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkError = PlatformApiDatalakeControllerCreateDownloadLinkErrors[keyof PlatformApiDatalakeControllerCreateDownloadLinkErrors];\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkResponses = {\n /**\n * Presigned download URL\n */\n 200: DownloadUrlResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkResponse = PlatformApiDatalakeControllerCreateDownloadLinkResponses[keyof PlatformApiDatalakeControllerCreateDownloadLinkResponses];\n\nexport type PlatformApiDatalakeControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerDeleteError = PlatformApiDatalakeControllerDeleteErrors[keyof PlatformApiDatalakeControllerDeleteErrors];\n\nexport type PlatformApiDatalakeControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDatalakeControllerDeleteResponse = PlatformApiDatalakeControllerDeleteResponses[keyof PlatformApiDatalakeControllerDeleteResponses];\n\nexport type PlatformApiDatalakeControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerShowError = PlatformApiDatalakeControllerShowErrors[keyof PlatformApiDatalakeControllerShowErrors];\n\nexport type PlatformApiDatalakeControllerShowResponses = {\n /**\n * Datalake\n */\n 200: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerShowResponse = PlatformApiDatalakeControllerShowResponses[keyof PlatformApiDatalakeControllerShowResponses];\n\nexport type PlatformApiDatalakeControllerUpdateData = {\n /**\n * Full Datalake resource (PUT semantics — all fields required)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerUpdateError = PlatformApiDatalakeControllerUpdateErrors[keyof PlatformApiDatalakeControllerUpdateErrors];\n\nexport type PlatformApiDatalakeControllerUpdateResponses = {\n /**\n * Datalake updated\n */\n 200: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerUpdateResponse = PlatformApiDatalakeControllerUpdateResponses[keyof PlatformApiDatalakeControllerUpdateResponses];\n\nexport type PlatformApiTenantControllerIndexData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants';\n};\n\nexport type PlatformApiTenantControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTenantControllerIndexError = PlatformApiTenantControllerIndexErrors[keyof PlatformApiTenantControllerIndexErrors];\n\nexport type PlatformApiTenantControllerIndexResponses = {\n /**\n * Tenant list\n */\n 200: TenantListResponse;\n};\n\nexport type PlatformApiTenantControllerIndexResponse = PlatformApiTenantControllerIndexResponses[keyof PlatformApiTenantControllerIndexResponses];\n\nexport type PlatformApiTenantControllerCreateData = {\n /**\n * Tenant attributes\n */\n body: TenantRequest;\n path?: never;\n query?: never;\n url: '/api/v1/tenants';\n};\n\nexport type PlatformApiTenantControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiTenantControllerCreateError = PlatformApiTenantControllerCreateErrors[keyof PlatformApiTenantControllerCreateErrors];\n\nexport type PlatformApiTenantControllerCreateResponses = {\n /**\n * Tenant created\n */\n 201: TenantResponse;\n};\n\nexport type PlatformApiTenantControllerCreateResponse = PlatformApiTenantControllerCreateResponses[keyof PlatformApiTenantControllerCreateResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Execution log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses = {\n /**\n * Presigned download URL\n */\n 200: {\n url?: string;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses];\n\nexport type PlatformApiGenericTableControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables';\n};\n\nexport type PlatformApiGenericTableControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerIndexError = PlatformApiGenericTableControllerIndexErrors[keyof PlatformApiGenericTableControllerIndexErrors];\n\nexport type PlatformApiGenericTableControllerIndexResponses = {\n /**\n * Generic table list\n */\n 200: GenericTableListResponse;\n};\n\nexport type PlatformApiGenericTableControllerIndexResponse = PlatformApiGenericTableControllerIndexResponses[keyof PlatformApiGenericTableControllerIndexResponses];\n\nexport type PlatformApiGenericTableControllerCreateData = {\n /**\n * Full Generic Table resource (PUT semantics — all fields required)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables';\n};\n\nexport type PlatformApiGenericTableControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerCreateError = PlatformApiGenericTableControllerCreateErrors[keyof PlatformApiGenericTableControllerCreateErrors];\n\nexport type PlatformApiGenericTableControllerCreateResponses = {\n /**\n * Generic table created\n */\n 201: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerCreateResponse = PlatformApiGenericTableControllerCreateResponses[keyof PlatformApiGenericTableControllerCreateResponses];\n\nexport type PlatformApiInvitationControllerIndexData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/invitations';\n};\n\nexport type PlatformApiInvitationControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInvitationControllerIndexError = PlatformApiInvitationControllerIndexErrors[keyof PlatformApiInvitationControllerIndexErrors];\n\nexport type PlatformApiInvitationControllerIndexResponses = {\n /**\n * Pending invitations\n */\n 200: InvitationListResponse;\n};\n\nexport type PlatformApiInvitationControllerIndexResponse = PlatformApiInvitationControllerIndexResponses[keyof PlatformApiInvitationControllerIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts';\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexError = PlatformApiInteroperabilityContractControllerIndexErrors[keyof PlatformApiInteroperabilityContractControllerIndexErrors];\n\nexport type PlatformApiInteroperabilityContractControllerIndexResponses = {\n /**\n * Contract list\n */\n 200: InteroperabilityContractListResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexResponse = PlatformApiInteroperabilityContractControllerIndexResponses[keyof PlatformApiInteroperabilityContractControllerIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerCreateData = {\n /**\n * Full contract resource (PUT semantics on update — all required fields must be present)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts';\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateError = PlatformApiInteroperabilityContractControllerCreateErrors[keyof PlatformApiInteroperabilityContractControllerCreateErrors];\n\nexport type PlatformApiInteroperabilityContractControllerCreateResponses = {\n /**\n * Contract created\n */\n 201: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateResponse = PlatformApiInteroperabilityContractControllerCreateResponses[keyof PlatformApiInteroperabilityContractControllerCreateResponses];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/metadata';\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataError = PlatformApiAgenticWorkflowControllerMetadataErrors[keyof PlatformApiAgenticWorkflowControllerMetadataErrors];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataResponses = {\n /**\n * One markdown page of the workflow catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataResponse = PlatformApiAgenticWorkflowControllerMetadataResponses[keyof PlatformApiAgenticWorkflowControllerMetadataResponses];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/metadata';\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataError = PlatformApiInteroperabilityContractControllerMetadataErrors[keyof PlatformApiInteroperabilityContractControllerMetadataErrors];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataResponses = {\n /**\n * One markdown page of the interoperability contract catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataResponse = PlatformApiInteroperabilityContractControllerMetadataResponses[keyof PlatformApiInteroperabilityContractControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}/metadata';\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsError = PlatformApiDataActivationClientControllerMetadataDetailsErrors[keyof PlatformApiDataActivationClientControllerMetadataDetailsErrors];\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsResponses = {\n /**\n * Markdown with connected dataset field documentation\n */\n 200: string;\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsResponse = PlatformApiDataActivationClientControllerMetadataDetailsResponses[keyof PlatformApiDataActivationClientControllerMetadataDetailsResponses];\n\nexport type PlatformApiInvitationControllerAcceptData = {\n body?: never;\n path: {\n /**\n * Invitation ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/invitations/{id}/accept';\n};\n\nexport type PlatformApiInvitationControllerAcceptErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInvitationControllerAcceptError = PlatformApiInvitationControllerAcceptErrors[keyof PlatformApiInvitationControllerAcceptErrors];\n\nexport type PlatformApiInvitationControllerAcceptResponses = {\n /**\n * Membership created\n */\n 201: MembershipResponse;\n};\n\nexport type PlatformApiInvitationControllerAcceptResponse = PlatformApiInvitationControllerAcceptResponses[keyof PlatformApiInvitationControllerAcceptResponses];\n\nexport type PlatformApiWorkflowRunControllerCancelData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow run ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}/cancel';\n};\n\nexport type PlatformApiWorkflowRunControllerCancelErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiWorkflowRunControllerCancelError = PlatformApiWorkflowRunControllerCancelErrors[keyof PlatformApiWorkflowRunControllerCancelErrors];\n\nexport type PlatformApiWorkflowRunControllerCancelResponses = {\n /**\n * Cancelled run\n */\n 200: WorkflowRunResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerCancelResponse = PlatformApiWorkflowRunControllerCancelResponses[keyof PlatformApiWorkflowRunControllerCancelResponses];\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkData = {\n /**\n * Upload link request\n */\n body: UploadLinkRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link';\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkError = PlatformApiDatalakeControllerCreateUploadLinkErrors[keyof PlatformApiDatalakeControllerCreateUploadLinkErrors];\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkResponses = {\n /**\n * Presigned upload link\n */\n 200: UploadLinkResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkResponse = PlatformApiDatalakeControllerCreateUploadLinkResponses[keyof PlatformApiDatalakeControllerCreateUploadLinkResponses];\n\nexport type PlatformApiDatalakeControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes';\n};\n\nexport type PlatformApiDatalakeControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerIndexError = PlatformApiDatalakeControllerIndexErrors[keyof PlatformApiDatalakeControllerIndexErrors];\n\nexport type PlatformApiDatalakeControllerIndexResponses = {\n /**\n * Datalake list\n */\n 200: DatalakeListResponse;\n};\n\nexport type PlatformApiDatalakeControllerIndexResponse = PlatformApiDatalakeControllerIndexResponses[keyof PlatformApiDatalakeControllerIndexResponses];\n\nexport type PlatformApiDatalakeControllerCreateData = {\n /**\n * Full Datalake resource (POST semantics — all fields required)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes';\n};\n\nexport type PlatformApiDatalakeControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateError = PlatformApiDatalakeControllerCreateErrors[keyof PlatformApiDatalakeControllerCreateErrors];\n\nexport type PlatformApiDatalakeControllerCreateResponses = {\n /**\n * Datalake created\n */\n 201: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateResponse = PlatformApiDatalakeControllerCreateResponses[keyof PlatformApiDatalakeControllerCreateResponses];\n\nexport type PlatformApiDataActivationClientControllerLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n /**\n * Log row id\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowError = PlatformApiDataActivationClientControllerLogShowErrors[keyof PlatformApiDataActivationClientControllerLogShowErrors];\n\nexport type PlatformApiDataActivationClientControllerLogShowResponses = {\n /**\n * DAC log\n */\n 200: DataActivationClientLogResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowResponse = PlatformApiDataActivationClientControllerLogShowResponses[keyof PlatformApiDataActivationClientControllerLogShowResponses];\n\nexport type PlatformApiDataSourceControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerDeleteError = PlatformApiDataSourceControllerDeleteErrors[keyof PlatformApiDataSourceControllerDeleteErrors];\n\nexport type PlatformApiDataSourceControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDataSourceControllerDeleteResponse = PlatformApiDataSourceControllerDeleteResponses[keyof PlatformApiDataSourceControllerDeleteResponses];\n\nexport type PlatformApiDataSourceControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerShowError = PlatformApiDataSourceControllerShowErrors[keyof PlatformApiDataSourceControllerShowErrors];\n\nexport type PlatformApiDataSourceControllerShowResponses = {\n /**\n * Data source\n */\n 200: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerShowResponse = PlatformApiDataSourceControllerShowResponses[keyof PlatformApiDataSourceControllerShowResponses];\n\nexport type PlatformApiDataSourceControllerUpdateData = {\n /**\n * Full Data Source resource (PUT semantics — all fields required)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerUpdateError = PlatformApiDataSourceControllerUpdateErrors[keyof PlatformApiDataSourceControllerUpdateErrors];\n\nexport type PlatformApiDataSourceControllerUpdateResponses = {\n /**\n * Data source updated\n */\n 200: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerUpdateResponse = PlatformApiDataSourceControllerUpdateResponses[keyof PlatformApiDataSourceControllerUpdateResponses];\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingData = {\n /**\n * Page update request\n */\n body: UpdatePageRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/update-message-tracking';\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingErrors = {\n /**\n * Unauthorized\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Token expired\n */\n 410: {\n [key: string]: unknown;\n };\n /**\n * Validation error\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingError = PlatformApiConnectedAppControllerUpdateMessageTrackingErrors[keyof PlatformApiConnectedAppControllerUpdateMessageTrackingErrors];\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingResponses = {\n /**\n * Updated message details\n */\n 200: UpdatePageResponse;\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingResponse = PlatformApiConnectedAppControllerUpdateMessageTrackingResponses[keyof PlatformApiConnectedAppControllerUpdateMessageTrackingResponses];\n\nexport type PlatformApiAgenticWorkflowControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteError = PlatformApiAgenticWorkflowControllerDeleteErrors[keyof PlatformApiAgenticWorkflowControllerDeleteErrors];\n\nexport type PlatformApiAgenticWorkflowControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteResponse = PlatformApiAgenticWorkflowControllerDeleteResponses[keyof PlatformApiAgenticWorkflowControllerDeleteResponses];\n\nexport type PlatformApiAgenticWorkflowControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowError = PlatformApiAgenticWorkflowControllerShowErrors[keyof PlatformApiAgenticWorkflowControllerShowErrors];\n\nexport type PlatformApiAgenticWorkflowControllerShowResponses = {\n /**\n * Workflow\n */\n 200: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowResponse = PlatformApiAgenticWorkflowControllerShowResponses[keyof PlatformApiAgenticWorkflowControllerShowResponses];\n\nexport type PlatformApiAgenticWorkflowControllerUpdateData = {\n /**\n * Full workflow resource (PUT semantics — all required fields must be present)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateError = PlatformApiAgenticWorkflowControllerUpdateErrors[keyof PlatformApiAgenticWorkflowControllerUpdateErrors];\n\nexport type PlatformApiAgenticWorkflowControllerUpdateResponses = {\n /**\n * Workflow updated\n */\n 200: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateResponse = PlatformApiAgenticWorkflowControllerUpdateResponses[keyof PlatformApiAgenticWorkflowControllerUpdateResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshData = {\n /**\n * Optional updater_body override\n */\n body?: ActionStatusUpdaterRefreshRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/refresh';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshError = PlatformApiActionStatusUpdaterControllerRefreshErrors[keyof PlatformApiActionStatusUpdaterControllerRefreshErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshResponses = {\n /**\n * Poll enqueued; updater row as-is\n */\n 202: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshResponse = PlatformApiActionStatusUpdaterControllerRefreshResponses[keyof PlatformApiActionStatusUpdaterControllerRefreshResponses];\n\nexport type PlatformApiConnectedAppControllerResolvePageData = {\n /**\n * Page resolution request\n */\n body: ResolvePageRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/resolve-page';\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageErrors = {\n /**\n * Unauthorized\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Token expired\n */\n 410: {\n [key: string]: unknown;\n };\n /**\n * Validation error\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageError = PlatformApiConnectedAppControllerResolvePageErrors[keyof PlatformApiConnectedAppControllerResolvePageErrors];\n\nexport type PlatformApiConnectedAppControllerResolvePageResponses = {\n /**\n * Resolved page details\n */\n 200: ResolvePageResponse;\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageResponse = PlatformApiConnectedAppControllerResolvePageResponses[keyof PlatformApiConnectedAppControllerResolvePageResponses];\n\nexport type PlatformApiDatalakeControllerChecksumData = {\n /**\n * Full Datalake resource (same shape as create/update)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/checksum';\n};\n\nexport type PlatformApiDatalakeControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerChecksumError = PlatformApiDatalakeControllerChecksumErrors[keyof PlatformApiDatalakeControllerChecksumErrors];\n\nexport type PlatformApiDatalakeControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDatalakeControllerChecksumResponse = PlatformApiDatalakeControllerChecksumResponses[keyof PlatformApiDatalakeControllerChecksumResponses];\n\nexport type PlatformApiDataActivationClientControllerIngestData = {\n /**\n * JSON payload\n */\n body: IngestRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest';\n};\n\nexport type PlatformApiDataActivationClientControllerIngestErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestError = PlatformApiDataActivationClientControllerIngestErrors[keyof PlatformApiDataActivationClientControllerIngestErrors];\n\nexport type PlatformApiDataActivationClientControllerIngestResponses = {\n /**\n * Ingest response\n */\n 202: IngestResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestResponse = PlatformApiDataActivationClientControllerIngestResponses[keyof PlatformApiDataActivationClientControllerIngestResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteError = PlatformApiActionStatusUpdaterControllerDeleteErrors[keyof PlatformApiActionStatusUpdaterControllerDeleteErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteResponse = PlatformApiActionStatusUpdaterControllerDeleteResponses[keyof PlatformApiActionStatusUpdaterControllerDeleteResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowError = PlatformApiActionStatusUpdaterControllerShowErrors[keyof PlatformApiActionStatusUpdaterControllerShowErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerShowResponses = {\n /**\n * Action status updater\n */\n 200: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowResponse = PlatformApiActionStatusUpdaterControllerShowResponses[keyof PlatformApiActionStatusUpdaterControllerShowResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateData = {\n /**\n * Full Action Status Updater resource (PUT semantics — all fields required)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateError = PlatformApiActionStatusUpdaterControllerUpdateErrors[keyof PlatformApiActionStatusUpdaterControllerUpdateErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateResponses = {\n /**\n * Action status updater updated\n */\n 200: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateResponse = PlatformApiActionStatusUpdaterControllerUpdateResponses[keyof PlatformApiActionStatusUpdaterControllerUpdateResponses];\n\nexport type PlatformApiToolControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/metadata';\n};\n\nexport type PlatformApiToolControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerMetadataError = PlatformApiToolControllerMetadataErrors[keyof PlatformApiToolControllerMetadataErrors];\n\nexport type PlatformApiToolControllerMetadataResponses = {\n /**\n * One markdown page of the tools catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiToolControllerMetadataResponse = PlatformApiToolControllerMetadataResponses[keyof PlatformApiToolControllerMetadataResponses];\n\nexport type PlatformApiAiAgentControllerChecksumData = {\n /**\n * Full AI Agent resource (same shape as create/update)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/checksum';\n};\n\nexport type PlatformApiAiAgentControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerChecksumError = PlatformApiAiAgentControllerChecksumErrors[keyof PlatformApiAiAgentControllerChecksumErrors];\n\nexport type PlatformApiAiAgentControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiAiAgentControllerChecksumResponse = PlatformApiAiAgentControllerChecksumResponses[keyof PlatformApiAiAgentControllerChecksumResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumData = {\n /**\n * Full Connected App resource (same shape as create/update)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/checksum';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumError = PlatformApiConnectedAppMgmtControllerChecksumErrors[keyof PlatformApiConnectedAppMgmtControllerChecksumErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumResponse = PlatformApiConnectedAppMgmtControllerChecksumResponses[keyof PlatformApiConnectedAppMgmtControllerChecksumResponses];\n\nexport type PlatformApiWorkflowRunControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow run ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}';\n};\n\nexport type PlatformApiWorkflowRunControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiWorkflowRunControllerShowError = PlatformApiWorkflowRunControllerShowErrors[keyof PlatformApiWorkflowRunControllerShowErrors];\n\nexport type PlatformApiWorkflowRunControllerShowResponses = {\n /**\n * Workflow run\n */\n 200: WorkflowRunResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerShowResponse = PlatformApiWorkflowRunControllerShowResponses[keyof PlatformApiWorkflowRunControllerShowResponses];\n\nexport type PlatformApiDatalakeControllerSystemDatasetsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-datasets';\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsError = PlatformApiDatalakeControllerSystemDatasetsErrors[keyof PlatformApiDatalakeControllerSystemDatasetsErrors];\n\nexport type PlatformApiDatalakeControllerSystemDatasetsResponses = {\n /**\n * Industry-registered datasets\n */\n 200: SystemDatasetListResponse;\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsResponse = PlatformApiDatalakeControllerSystemDatasetsResponses[keyof PlatformApiDatalakeControllerSystemDatasetsResponses];\n\nexport type PlatformApiAiAgentControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents';\n};\n\nexport type PlatformApiAiAgentControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerIndexError = PlatformApiAiAgentControllerIndexErrors[keyof PlatformApiAiAgentControllerIndexErrors];\n\nexport type PlatformApiAiAgentControllerIndexResponses = {\n /**\n * AI agent list\n */\n 200: AiAgentListResponse;\n};\n\nexport type PlatformApiAiAgentControllerIndexResponse = PlatformApiAiAgentControllerIndexResponses[keyof PlatformApiAiAgentControllerIndexResponses];\n\nexport type PlatformApiAiAgentControllerCreateData = {\n /**\n * Full AI Agent resource (PUT semantics — all fields required)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents';\n};\n\nexport type PlatformApiAiAgentControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerCreateError = PlatformApiAiAgentControllerCreateErrors[keyof PlatformApiAiAgentControllerCreateErrors];\n\nexport type PlatformApiAiAgentControllerCreateResponses = {\n /**\n * AI agent created\n */\n 201: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerCreateResponse = PlatformApiAiAgentControllerCreateResponses[keyof PlatformApiAiAgentControllerCreateResponses];\n\nexport type PlatformApiWorkflowRunControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs';\n};\n\nexport type PlatformApiWorkflowRunControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiWorkflowRunControllerIndexError = PlatformApiWorkflowRunControllerIndexErrors[keyof PlatformApiWorkflowRunControllerIndexErrors];\n\nexport type PlatformApiWorkflowRunControllerIndexResponses = {\n /**\n * Workflow run list\n */\n 200: WorkflowRunListResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerIndexResponse = PlatformApiWorkflowRunControllerIndexResponses[keyof PlatformApiWorkflowRunControllerIndexResponses];\n\nexport type PlatformApiGenericTableControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/metadata';\n};\n\nexport type PlatformApiGenericTableControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerMetadataError = PlatformApiGenericTableControllerMetadataErrors[keyof PlatformApiGenericTableControllerMetadataErrors];\n\nexport type PlatformApiGenericTableControllerMetadataResponses = {\n /**\n * One markdown page of the generic table catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiGenericTableControllerMetadataResponse = PlatformApiGenericTableControllerMetadataResponses[keyof PlatformApiGenericTableControllerMetadataResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses = {\n /**\n * Execution log list\n */\n 200: WorkflowLogListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}/metadata';\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsError = PlatformApiInteroperabilityContractControllerMetadataDetailsErrors[keyof PlatformApiInteroperabilityContractControllerMetadataDetailsErrors];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsResponses = {\n /**\n * Markdown with resource field documentation\n */\n 200: string;\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsResponse = PlatformApiInteroperabilityContractControllerMetadataDetailsResponses[keyof PlatformApiInteroperabilityContractControllerMetadataDetailsResponses];\n\nexport type PlatformApiDatalakeControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata';\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsError = PlatformApiDatalakeControllerMetadataDetailsErrors[keyof PlatformApiDatalakeControllerMetadataDetailsErrors];\n\nexport type PlatformApiDatalakeControllerMetadataDetailsResponses = {\n /**\n * Markdown document with domain metadata\n */\n 200: string;\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsResponse = PlatformApiDatalakeControllerMetadataDetailsResponses[keyof PlatformApiDatalakeControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteData = {\n /**\n * Execute payload\n */\n body: ExecuteActionRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/execute';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteError = PlatformApiAgenticWorkflowOperationsControllerExecuteErrors[keyof PlatformApiAgenticWorkflowOperationsControllerExecuteErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteResponses = {\n /**\n * Execution result\n */\n 200: ExecuteActionResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteResponse = PlatformApiAgenticWorkflowOperationsControllerExecuteResponses[keyof PlatformApiAgenticWorkflowOperationsControllerExecuteResponses];\n\nexport type PlatformApiDatasetControllerSearchData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type (e.g. patient, member, generic_table)\n */\n dataset: string;\n };\n query?: {\n /**\n * UserSearch ID. Omit to search the resource without a SQL search.\n */\n user_search_id?: string;\n /**\n * Optional override for the data access mode used by this read. Defaults to the session's `data_access_mode`. The session's capability ceiling still applies — escalating beyond it returns 403.\n */\n data_access_mode?: 'regulated' | 'unregulated';\n /**\n * Outer page over the cached search_results chunk.\n */\n outer_pagination?: OuterPagination;\n /**\n * Inner search input over the resource — page, sort, global_search.\n */\n inner_search?: InnerSearch;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/search';\n};\n\nexport type PlatformApiDatasetControllerSearchErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatasetControllerSearchError = PlatformApiDatasetControllerSearchErrors[keyof PlatformApiDatasetControllerSearchErrors];\n\nexport type PlatformApiDatasetControllerSearchResponses = {\n /**\n * Dataset search results\n */\n 200: DatasetSearchResponse;\n};\n\nexport type PlatformApiDatasetControllerSearchResponse = PlatformApiDatasetControllerSearchResponses[keyof PlatformApiDatasetControllerSearchResponses];\n\nexport type PlatformApiDatasetControllerCreateUserSearchData = {\n /**\n * UserSearch request body\n */\n body?: UserSearchRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type (e.g. patient, member, generic_table)\n */\n dataset: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/user-searches';\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchError = PlatformApiDatasetControllerCreateUserSearchErrors[keyof PlatformApiDatasetControllerCreateUserSearchErrors];\n\nexport type PlatformApiDatasetControllerCreateUserSearchResponses = {\n /**\n * UserSearch created\n */\n 201: UserSearchResponse;\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchResponse = PlatformApiDatasetControllerCreateUserSearchResponses[keyof PlatformApiDatasetControllerCreateUserSearchResponses];\n\nexport type PlatformApiGenericTableControllerChecksumData = {\n /**\n * Full Generic Table resource (same shape as create/update)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/checksum';\n};\n\nexport type PlatformApiGenericTableControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerChecksumError = PlatformApiGenericTableControllerChecksumErrors[keyof PlatformApiGenericTableControllerChecksumErrors];\n\nexport type PlatformApiGenericTableControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiGenericTableControllerChecksumResponse = PlatformApiGenericTableControllerChecksumResponses[keyof PlatformApiGenericTableControllerChecksumResponses];\n\nexport type PlatformApiDataSourceControllerChecksumData = {\n /**\n * Full Data Source resource (same shape as create/update)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/checksum';\n};\n\nexport type PlatformApiDataSourceControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerChecksumError = PlatformApiDataSourceControllerChecksumErrors[keyof PlatformApiDataSourceControllerChecksumErrors];\n\nexport type PlatformApiDataSourceControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDataSourceControllerChecksumResponse = PlatformApiDataSourceControllerChecksumResponses[keyof PlatformApiDataSourceControllerChecksumResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/metadata';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataError = PlatformApiActionStatusUpdaterControllerMetadataErrors[keyof PlatformApiActionStatusUpdaterControllerMetadataErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataResponses = {\n /**\n * One markdown page of the action status updater catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataResponse = PlatformApiActionStatusUpdaterControllerMetadataResponses[keyof PlatformApiActionStatusUpdaterControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerIngestFileData = {\n /**\n * Ingest file request\n */\n body: IngestFileRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file';\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileError = PlatformApiDataActivationClientControllerIngestFileErrors[keyof PlatformApiDataActivationClientControllerIngestFileErrors];\n\nexport type PlatformApiDataActivationClientControllerIngestFileResponses = {\n /**\n * Ingest file response\n */\n 200: IngestFileResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileResponse = PlatformApiDataActivationClientControllerIngestFileResponses[keyof PlatformApiDataActivationClientControllerIngestFileResponses];\n\nexport type PlatformApiDataSourceControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources';\n};\n\nexport type PlatformApiDataSourceControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerIndexError = PlatformApiDataSourceControllerIndexErrors[keyof PlatformApiDataSourceControllerIndexErrors];\n\nexport type PlatformApiDataSourceControllerIndexResponses = {\n /**\n * Data source list\n */\n 200: DataSourceListResponse;\n};\n\nexport type PlatformApiDataSourceControllerIndexResponse = PlatformApiDataSourceControllerIndexResponses[keyof PlatformApiDataSourceControllerIndexResponses];\n\nexport type PlatformApiDataSourceControllerCreateData = {\n /**\n * Full Data Source resource (PUT semantics — all fields required)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources';\n};\n\nexport type PlatformApiDataSourceControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerCreateError = PlatformApiDataSourceControllerCreateErrors[keyof PlatformApiDataSourceControllerCreateErrors];\n\nexport type PlatformApiDataSourceControllerCreateResponses = {\n /**\n * Data source created\n */\n 201: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerCreateResponse = PlatformApiDataSourceControllerCreateResponses[keyof PlatformApiDataSourceControllerCreateResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpData = {\n /**\n * User registration\n */\n body: SignUpRequestWritable;\n path?: never;\n query?: never;\n url: '/api/v1/admin/sign-up';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors = {\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpError = PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses = {\n /**\n * User registered (unconfirmed)\n */\n 201: UserResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpResponse = PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses];\n\nexport type PlatformApiDataActivationClientControllerRunManuallyData = {\n /**\n * Optional tool_call override\n */\n body?: RunManuallyRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually';\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyError = PlatformApiDataActivationClientControllerRunManuallyErrors[keyof PlatformApiDataActivationClientControllerRunManuallyErrors];\n\nexport type PlatformApiDataActivationClientControllerRunManuallyResponses = {\n /**\n * Run enqueued\n */\n 202: RunManuallyResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyResponse = PlatformApiDataActivationClientControllerRunManuallyResponses[keyof PlatformApiDataActivationClientControllerRunManuallyResponses];\n\nexport type PlatformApiAiAgentControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/metadata';\n};\n\nexport type PlatformApiAiAgentControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerMetadataError = PlatformApiAiAgentControllerMetadataErrors[keyof PlatformApiAiAgentControllerMetadataErrors];\n\nexport type PlatformApiAiAgentControllerMetadataResponses = {\n /**\n * One markdown page of the AI agent catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiAiAgentControllerMetadataResponse = PlatformApiAiAgentControllerMetadataResponses[keyof PlatformApiAiAgentControllerMetadataResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexError = PlatformApiActionStatusUpdaterControllerIndexErrors[keyof PlatformApiActionStatusUpdaterControllerIndexErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerIndexResponses = {\n /**\n * Action status updater list\n */\n 200: ActionStatusUpdaterListResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexResponse = PlatformApiActionStatusUpdaterControllerIndexResponses[keyof PlatformApiActionStatusUpdaterControllerIndexResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerCreateData = {\n /**\n * Full Action Status Updater resource (PUT semantics — all fields required)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateError = PlatformApiActionStatusUpdaterControllerCreateErrors[keyof PlatformApiActionStatusUpdaterControllerCreateErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerCreateResponses = {\n /**\n * Action status updater created\n */\n 201: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateResponse = PlatformApiActionStatusUpdaterControllerCreateResponses[keyof PlatformApiActionStatusUpdaterControllerCreateResponses];\n\nexport type PlatformApiAiAgentControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Agent is attached to a workflow and cannot be deleted\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiAiAgentControllerDeleteError = PlatformApiAiAgentControllerDeleteErrors[keyof PlatformApiAiAgentControllerDeleteErrors];\n\nexport type PlatformApiAiAgentControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiAiAgentControllerDeleteResponse = PlatformApiAiAgentControllerDeleteResponses[keyof PlatformApiAiAgentControllerDeleteResponses];\n\nexport type PlatformApiAiAgentControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerShowError = PlatformApiAiAgentControllerShowErrors[keyof PlatformApiAiAgentControllerShowErrors];\n\nexport type PlatformApiAiAgentControllerShowResponses = {\n /**\n * AI agent\n */\n 200: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerShowResponse = PlatformApiAiAgentControllerShowResponses[keyof PlatformApiAiAgentControllerShowResponses];\n\nexport type PlatformApiAiAgentControllerUpdateData = {\n /**\n * Full AI Agent resource (PUT semantics — all fields required)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerUpdateError = PlatformApiAiAgentControllerUpdateErrors[keyof PlatformApiAiAgentControllerUpdateErrors];\n\nexport type PlatformApiAiAgentControllerUpdateResponses = {\n /**\n * AI agent updated\n */\n 200: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerUpdateResponse = PlatformApiAiAgentControllerUpdateResponses[keyof PlatformApiAiAgentControllerUpdateResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData = {\n body?: never;\n path: {\n /**\n * Target user ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/admin/users/{id}/confirm';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserError = PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses = {\n /**\n * User confirmed (or already confirmed)\n */\n 200: UserResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponse = PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses];\n\nexport type PlatformApiTemplatesControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates';\n};\n\nexport type PlatformApiTemplatesControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTemplatesControllerIndexError = PlatformApiTemplatesControllerIndexErrors[keyof PlatformApiTemplatesControllerIndexErrors];\n\nexport type PlatformApiTemplatesControllerIndexResponses = {\n /**\n * System template list\n */\n 200: SystemTemplateListResponse;\n};\n\nexport type PlatformApiTemplatesControllerIndexResponse = PlatformApiTemplatesControllerIndexResponses[keyof PlatformApiTemplatesControllerIndexResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumData = {\n /**\n * Full Action Status Updater resource (same shape as create/update)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/checksum';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumError = PlatformApiActionStatusUpdaterControllerChecksumErrors[keyof PlatformApiActionStatusUpdaterControllerChecksumErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumResponse = PlatformApiActionStatusUpdaterControllerChecksumResponses[keyof PlatformApiActionStatusUpdaterControllerChecksumResponses];\n\nexport type PlatformApiAiAgentControllerInvokeData = {\n /**\n * Input variables for the agent\n */\n body?: AiAgentInvokeRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/invoke';\n};\n\nexport type PlatformApiAiAgentControllerInvokeErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerInvokeError = PlatformApiAiAgentControllerInvokeErrors[keyof PlatformApiAiAgentControllerInvokeErrors];\n\nexport type PlatformApiAiAgentControllerInvokeResponses = {\n /**\n * Agent invocation result\n */\n 200: AiAgentInvokeResponse;\n};\n\nexport type PlatformApiAiAgentControllerInvokeResponse = PlatformApiAiAgentControllerInvokeResponses[keyof PlatformApiAiAgentControllerInvokeResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexError = PlatformApiConnectedAppMgmtControllerIndexErrors[keyof PlatformApiConnectedAppMgmtControllerIndexErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerIndexResponses = {\n /**\n * Connected app list\n */\n 200: ConnectedAppListResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexResponse = PlatformApiConnectedAppMgmtControllerIndexResponses[keyof PlatformApiConnectedAppMgmtControllerIndexResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerCreateData = {\n /**\n * Full Connected App resource (PUT semantics — all fields required)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateError = PlatformApiConnectedAppMgmtControllerCreateErrors[keyof PlatformApiConnectedAppMgmtControllerCreateErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerCreateResponses = {\n /**\n * Connected app created\n */\n 201: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateResponse = PlatformApiConnectedAppMgmtControllerCreateResponses[keyof PlatformApiConnectedAppMgmtControllerCreateResponses];\n\nexport type PlatformApiSessionControllerDeleteData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/sessions';\n};\n\nexport type PlatformApiSessionControllerDeleteErrors = {\n /**\n * Invalid or missing Bearer token\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Cannot revoke non-Bearer session\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerDeleteError = PlatformApiSessionControllerDeleteErrors[keyof PlatformApiSessionControllerDeleteErrors];\n\nexport type PlatformApiSessionControllerDeleteResponses = {\n /**\n * Session revoked\n */\n 204: unknown;\n};\n\nexport type PlatformApiSessionControllerCreateData = {\n /**\n * User credentials\n */\n body: SignInRequest;\n path?: never;\n query?: never;\n url: '/api/v1/sessions';\n};\n\nexport type PlatformApiSessionControllerCreateErrors = {\n /**\n * Invalid credentials\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Missing required fields\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerCreateError = PlatformApiSessionControllerCreateErrors[keyof PlatformApiSessionControllerCreateErrors];\n\nexport type PlatformApiSessionControllerCreateResponses = {\n /**\n * Session created\n */\n 201: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerCreateResponse = PlatformApiSessionControllerCreateResponses[keyof PlatformApiSessionControllerCreateResponses];\n\nexport type PlatformApiDataActivationClientControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/metadata';\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataError = PlatformApiDataActivationClientControllerMetadataErrors[keyof PlatformApiDataActivationClientControllerMetadataErrors];\n\nexport type PlatformApiDataActivationClientControllerMetadataResponses = {\n /**\n * One markdown page of the data activation client catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataResponse = PlatformApiDataActivationClientControllerMetadataResponses[keyof PlatformApiDataActivationClientControllerMetadataResponses];\n\nexport type PlatformApiAgenticWorkflowControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows';\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexError = PlatformApiAgenticWorkflowControllerIndexErrors[keyof PlatformApiAgenticWorkflowControllerIndexErrors];\n\nexport type PlatformApiAgenticWorkflowControllerIndexResponses = {\n /**\n * Workflow list\n */\n 200: AgenticWorkflowListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexResponse = PlatformApiAgenticWorkflowControllerIndexResponses[keyof PlatformApiAgenticWorkflowControllerIndexResponses];\n\nexport type PlatformApiAgenticWorkflowControllerCreateData = {\n /**\n * Full workflow resource (PUT semantics — all required fields must be present)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows';\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateError = PlatformApiAgenticWorkflowControllerCreateErrors[keyof PlatformApiAgenticWorkflowControllerCreateErrors];\n\nexport type PlatformApiAgenticWorkflowControllerCreateResponses = {\n /**\n * Workflow created\n */\n 201: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateResponse = PlatformApiAgenticWorkflowControllerCreateResponses[keyof PlatformApiAgenticWorkflowControllerCreateResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/metadata';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataError = PlatformApiConnectedAppMgmtControllerMetadataErrors[keyof PlatformApiConnectedAppMgmtControllerMetadataErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataResponses = {\n /**\n * One markdown page of the connected app catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataResponse = PlatformApiConnectedAppMgmtControllerMetadataResponses[keyof PlatformApiConnectedAppMgmtControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs';\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexError = PlatformApiDataActivationClientControllerLogsIndexErrors[keyof PlatformApiDataActivationClientControllerLogsIndexErrors];\n\nexport type PlatformApiDataActivationClientControllerLogsIndexResponses = {\n /**\n * DAC log list\n */\n 200: DataActivationClientLogListResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexResponse = PlatformApiDataActivationClientControllerLogsIndexResponses[keyof PlatformApiDataActivationClientControllerLogsIndexResponses];\n\nexport type PlatformApiToolControllerTestInvocationData = {\n /**\n * Test invocation payload — `tool_call` polymorphic on `__type__`.\n */\n body?: ManualToolInvocationRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/test-invocation';\n};\n\nexport type PlatformApiToolControllerTestInvocationErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerTestInvocationError = PlatformApiToolControllerTestInvocationErrors[keyof PlatformApiToolControllerTestInvocationErrors];\n\nexport type PlatformApiToolControllerTestInvocationResponses = {\n /**\n * Invocation recorded — inspect `status` for outcome\n */\n 200: ManualToolInvocationResponse;\n};\n\nexport type PlatformApiToolControllerTestInvocationResponse = PlatformApiToolControllerTestInvocationResponses[keyof PlatformApiToolControllerTestInvocationResponses];\n\nexport type PlatformApiAiAgentControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/metadata';\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsError = PlatformApiAiAgentControllerMetadataDetailsErrors[keyof PlatformApiAiAgentControllerMetadataDetailsErrors];\n\nexport type PlatformApiAiAgentControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested AI agent\n */\n 200: string;\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsResponse = PlatformApiAiAgentControllerMetadataDetailsResponses[keyof PlatformApiAiAgentControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexError = PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses = {\n /**\n * Batch log list\n */\n 200: BatchLogListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses];\n\nexport type PlatformApiDatalakeControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/metadata';\n};\n\nexport type PlatformApiDatalakeControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerMetadataError = PlatformApiDatalakeControllerMetadataErrors[keyof PlatformApiDatalakeControllerMetadataErrors];\n\nexport type PlatformApiDatalakeControllerMetadataResponses = {\n /**\n * One markdown page of the datalake catalog for this tenant\n */\n 200: string;\n};\n\nexport type PlatformApiDatalakeControllerMetadataResponse = PlatformApiDatalakeControllerMetadataResponses[keyof PlatformApiDatalakeControllerMetadataResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/metadata';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsError = PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors[keyof PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested action status updater\n */\n 200: string;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsResponse = PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses[keyof PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata';\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsError = PlatformApiAgenticWorkflowControllerMetadataDetailsErrors[keyof PlatformApiAgenticWorkflowControllerMetadataDetailsErrors];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsResponses = {\n /**\n * Markdown document with variable pipeline\n */\n 200: string;\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsResponse = PlatformApiAgenticWorkflowControllerMetadataDetailsResponses[keyof PlatformApiAgenticWorkflowControllerMetadataDetailsResponses];\n\nexport type PlatformApiPingControllerPingData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/ping';\n};\n\nexport type PlatformApiPingControllerPingErrors = {\n /**\n * Database connection failed\n */\n 500: ErrorResponse;\n};\n\nexport type PlatformApiPingControllerPingError = PlatformApiPingControllerPingErrors[keyof PlatformApiPingControllerPingErrors];\n\nexport type PlatformApiPingControllerPingResponses = {\n /**\n * API is healthy\n */\n 200: PingResponse;\n};\n\nexport type PlatformApiPingControllerPingResponse = PlatformApiPingControllerPingResponses[keyof PlatformApiPingControllerPingResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData = {\n body?: never;\n path: {\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/admin/connected-apps/{id}/api-key';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyError = PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses = {\n /**\n * Publishable key revealed\n */\n 200: ConnectedAppApiKeyResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponse = PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesError = PlatformApiConnectedAppMgmtControllerSyncRoutesErrors[keyof PlatformApiConnectedAppMgmtControllerSyncRoutesErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesResponses = {\n /**\n * Route sync enqueued\n */\n 202: SyncRoutesResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesResponse = PlatformApiConnectedAppMgmtControllerSyncRoutesResponses[keyof PlatformApiConnectedAppMgmtControllerSyncRoutesResponses];\n\nexport type PlatformApiDataActivationClientControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients';\n};\n\nexport type PlatformApiDataActivationClientControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerIndexError = PlatformApiDataActivationClientControllerIndexErrors[keyof PlatformApiDataActivationClientControllerIndexErrors];\n\nexport type PlatformApiDataActivationClientControllerIndexResponses = {\n /**\n * DAC list\n */\n 200: DataActivationClientListResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIndexResponse = PlatformApiDataActivationClientControllerIndexResponses[keyof PlatformApiDataActivationClientControllerIndexResponses];\n\nexport type PlatformApiDataActivationClientControllerCreateData = {\n /**\n * Full DAC resource (all required fields must be present)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients';\n};\n\nexport type PlatformApiDataActivationClientControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerCreateError = PlatformApiDataActivationClientControllerCreateErrors[keyof PlatformApiDataActivationClientControllerCreateErrors];\n\nexport type PlatformApiDataActivationClientControllerCreateResponses = {\n /**\n * DAC created\n */\n 201: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerCreateResponse = PlatformApiDataActivationClientControllerCreateResponses[keyof PlatformApiDataActivationClientControllerCreateResponses];\n\nexport type PlatformApiMdmControllerVerifyData = {\n /**\n * Verification attributes\n */\n body: MdmVerifyRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify';\n};\n\nexport type PlatformApiMdmControllerVerifyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Verification failed\n */\n 422: MdmVerifyResponse;\n};\n\nexport type PlatformApiMdmControllerVerifyError = PlatformApiMdmControllerVerifyErrors[keyof PlatformApiMdmControllerVerifyErrors];\n\nexport type PlatformApiMdmControllerVerifyResponses = {\n /**\n * Verification result\n */\n 200: MdmVerifyResponse;\n};\n\nexport type PlatformApiMdmControllerVerifyResponse = PlatformApiMdmControllerVerifyResponses[keyof PlatformApiMdmControllerVerifyResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData = {\n /**\n * User credentials\n */\n body: SignInRequest;\n path?: never;\n query?: never;\n url: '/api/v1/admin/bootstrap-session';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionError = PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses = {\n /**\n * Tenantless session created\n */\n 201: SessionResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponse = PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses];\n\nexport type PlatformApiTemplatesControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/metadata';\n};\n\nexport type PlatformApiTemplatesControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTemplatesControllerMetadataError = PlatformApiTemplatesControllerMetadataErrors[keyof PlatformApiTemplatesControllerMetadataErrors];\n\nexport type PlatformApiTemplatesControllerMetadataResponses = {\n /**\n * One markdown page of the system template catalog\n */\n 200: string;\n};\n\nexport type PlatformApiTemplatesControllerMetadataResponse = PlatformApiTemplatesControllerMetadataResponses[keyof PlatformApiTemplatesControllerMetadataResponses];\n\nexport type PlatformApiInteroperabilityContractControllerChecksumData = {\n /**\n * Full contract resource (same shape as create/update)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/checksum';\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumError = PlatformApiInteroperabilityContractControllerChecksumErrors[keyof PlatformApiInteroperabilityContractControllerChecksumErrors];\n\nexport type PlatformApiInteroperabilityContractControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumResponse = PlatformApiInteroperabilityContractControllerChecksumResponses[keyof PlatformApiInteroperabilityContractControllerChecksumResponses];\n\nexport type PlatformApiDatasetControllerDatasetMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type atom (e.g. 'patient', 'appointment')\n */\n dataset_type: string;\n };\n query?: {\n /**\n * Generic table ID (required when dataset_type is 'generic_table')\n */\n generic_table_id?: string;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset_type}/metadata';\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataError = PlatformApiDatasetControllerDatasetMetadataErrors[keyof PlatformApiDatasetControllerDatasetMetadataErrors];\n\nexport type PlatformApiDatasetControllerDatasetMetadataResponses = {\n /**\n * Markdown document with field definitions\n */\n 200: string;\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataResponse = PlatformApiDatasetControllerDatasetMetadataResponses[keyof PlatformApiDatasetControllerDatasetMetadataResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteError = PlatformApiConnectedAppMgmtControllerDeleteErrors[keyof PlatformApiConnectedAppMgmtControllerDeleteErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteResponse = PlatformApiConnectedAppMgmtControllerDeleteResponses[keyof PlatformApiConnectedAppMgmtControllerDeleteResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowError = PlatformApiConnectedAppMgmtControllerShowErrors[keyof PlatformApiConnectedAppMgmtControllerShowErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerShowResponses = {\n /**\n * Connected app\n */\n 200: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowResponse = PlatformApiConnectedAppMgmtControllerShowResponses[keyof PlatformApiConnectedAppMgmtControllerShowResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateData = {\n /**\n * Full Connected App resource (PUT semantics — all fields required)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateError = PlatformApiConnectedAppMgmtControllerUpdateErrors[keyof PlatformApiConnectedAppMgmtControllerUpdateErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateResponses = {\n /**\n * Connected app updated\n */\n 200: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateResponse = PlatformApiConnectedAppMgmtControllerUpdateResponses[keyof PlatformApiConnectedAppMgmtControllerUpdateResponses];\n\nexport type PlatformApiInvitationControllerCreateData = {\n /**\n * Invitation attributes\n */\n body: InvitationRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/invitations';\n};\n\nexport type PlatformApiInvitationControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInvitationControllerCreateError = PlatformApiInvitationControllerCreateErrors[keyof PlatformApiInvitationControllerCreateErrors];\n\nexport type PlatformApiInvitationControllerCreateResponses = {\n /**\n * Invitation created\n */\n 201: InvitationResponse;\n};\n\nexport type PlatformApiInvitationControllerCreateResponse = PlatformApiInvitationControllerCreateResponses[keyof PlatformApiInvitationControllerCreateResponses];\n\nexport type PlatformApiToolControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools';\n};\n\nexport type PlatformApiToolControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerIndexError = PlatformApiToolControllerIndexErrors[keyof PlatformApiToolControllerIndexErrors];\n\nexport type PlatformApiToolControllerIndexResponses = {\n /**\n * Tool list\n */\n 200: ToolListResponse;\n};\n\nexport type PlatformApiToolControllerIndexResponse = PlatformApiToolControllerIndexResponses[keyof PlatformApiToolControllerIndexResponses];\n\nexport type PlatformApiToolControllerCreateData = {\n /**\n * Full Tool resource (PUT semantics — all fields required)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools';\n};\n\nexport type PlatformApiToolControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerCreateError = PlatformApiToolControllerCreateErrors[keyof PlatformApiToolControllerCreateErrors];\n\nexport type PlatformApiToolControllerCreateResponses = {\n /**\n * Tool created\n */\n 201: ToolResponse;\n};\n\nexport type PlatformApiToolControllerCreateResponse = PlatformApiToolControllerCreateResponses[keyof PlatformApiToolControllerCreateResponses];\n\nexport type PlatformApiToolControllerChecksumData = {\n /**\n * Full Tool resource (same shape as create/update)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/checksum';\n};\n\nexport type PlatformApiToolControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerChecksumError = PlatformApiToolControllerChecksumErrors[keyof PlatformApiToolControllerChecksumErrors];\n\nexport type PlatformApiToolControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiToolControllerChecksumResponse = PlatformApiToolControllerChecksumResponses[keyof PlatformApiToolControllerChecksumResponses];\n\nexport type PlatformApiTemplatesControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Basename of the system template (no slashes, no `.liquid` extension)\n */\n filename: string;\n };\n query: {\n /**\n * Directory-prefix discriminator for the template\n */\n intent: 'ai_agent' | 'blueprint_datasource' | 'blueprint_workflow' | 'workflow_filter' | 'workflow_decision' | 'data_activation_interoperability' | 'data_activation_tool_calls' | 'status_poller';\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/{filename}/metadata';\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Ambiguous filename — multiple matches under the resolved prefix\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsError = PlatformApiTemplatesControllerMetadataDetailsErrors[keyof PlatformApiTemplatesControllerMetadataDetailsErrors];\n\nexport type PlatformApiTemplatesControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested system template\n */\n 200: string;\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsResponse = PlatformApiTemplatesControllerMetadataDetailsResponses[keyof PlatformApiTemplatesControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowError = PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses = {\n /**\n * Batch log\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses];\n\nexport type PlatformApiDatalakeControllerExecuteSqlData = {\n /**\n * Execute-SQL request\n */\n body: ExecuteSqlRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Response format: json (default) or csv\n */\n format?: string;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/execute-sql';\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlError = PlatformApiDatalakeControllerExecuteSqlErrors[keyof PlatformApiDatalakeControllerExecuteSqlErrors];\n\nexport type PlatformApiDatalakeControllerExecuteSqlResponses = {\n /**\n * SQL result page\n */\n 200: ExecuteSqlResponse;\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlResponse = PlatformApiDatalakeControllerExecuteSqlResponses[keyof PlatformApiDatalakeControllerExecuteSqlResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData = {\n /**\n * Run workflow payload\n */\n body: RunWorkflowRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/run-workflow';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowError = PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses = {\n /**\n * Run workflow result\n */\n 200: RunWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponse = PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses];\n\nexport type PlatformApiDataSourceControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}/metadata';\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsError = PlatformApiDataSourceControllerMetadataDetailsErrors[keyof PlatformApiDataSourceControllerMetadataDetailsErrors];\n\nexport type PlatformApiDataSourceControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested data source\n */\n 200: string;\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsResponse = PlatformApiDataSourceControllerMetadataDetailsResponses[keyof PlatformApiDataSourceControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshError = PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses = {\n /**\n * Refreshed batch log\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/metadata';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsError = PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors[keyof PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested connected app\n */\n 200: string;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsResponse = PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses[keyof PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartError = PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses = {\n /**\n * Batch log with polling started\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Execution log ID\n */\n id: string;\n };\n query?: {\n /**\n * Optional override for the data access mode used to read each AEL's `message_body`. Defaults to the session's `data_access_mode`. The session's capability ceiling still applies.\n */\n data_access_mode?: 'regulated' | 'unregulated';\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses = {\n /**\n * Execution log\n */\n 200: WorkflowLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses];\n\nexport type PlatformApiInteroperabilityContractControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteError = PlatformApiInteroperabilityContractControllerDeleteErrors[keyof PlatformApiInteroperabilityContractControllerDeleteErrors];\n\nexport type PlatformApiInteroperabilityContractControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteResponse = PlatformApiInteroperabilityContractControllerDeleteResponses[keyof PlatformApiInteroperabilityContractControllerDeleteResponses];\n\nexport type PlatformApiInteroperabilityContractControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowError = PlatformApiInteroperabilityContractControllerShowErrors[keyof PlatformApiInteroperabilityContractControllerShowErrors];\n\nexport type PlatformApiInteroperabilityContractControllerShowResponses = {\n /**\n * Contract\n */\n 200: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowResponse = PlatformApiInteroperabilityContractControllerShowResponses[keyof PlatformApiInteroperabilityContractControllerShowResponses];\n\nexport type PlatformApiInteroperabilityContractControllerUpdateData = {\n /**\n * Full contract resource (all required fields must be present)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateError = PlatformApiInteroperabilityContractControllerUpdateErrors[keyof PlatformApiInteroperabilityContractControllerUpdateErrors];\n\nexport type PlatformApiInteroperabilityContractControllerUpdateResponses = {\n /**\n * Contract updated\n */\n 200: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateResponse = PlatformApiInteroperabilityContractControllerUpdateResponses[keyof PlatformApiInteroperabilityContractControllerUpdateResponses];\n\nexport type PlatformApiGenericTableControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerDeleteError = PlatformApiGenericTableControllerDeleteErrors[keyof PlatformApiGenericTableControllerDeleteErrors];\n\nexport type PlatformApiGenericTableControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiGenericTableControllerDeleteResponse = PlatformApiGenericTableControllerDeleteResponses[keyof PlatformApiGenericTableControllerDeleteResponses];\n\nexport type PlatformApiGenericTableControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerShowError = PlatformApiGenericTableControllerShowErrors[keyof PlatformApiGenericTableControllerShowErrors];\n\nexport type PlatformApiGenericTableControllerShowResponses = {\n /**\n * Generic table\n */\n 200: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerShowResponse = PlatformApiGenericTableControllerShowResponses[keyof PlatformApiGenericTableControllerShowResponses];\n\nexport type PlatformApiGenericTableControllerUpdateData = {\n /**\n * Full Generic Table resource (PUT semantics — all fields required)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerUpdateError = PlatformApiGenericTableControllerUpdateErrors[keyof PlatformApiGenericTableControllerUpdateErrors];\n\nexport type PlatformApiGenericTableControllerUpdateResponses = {\n /**\n * Generic table updated\n */\n 200: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerUpdateResponse = PlatformApiGenericTableControllerUpdateResponses[keyof PlatformApiGenericTableControllerUpdateResponses];\n\nexport type PlatformApiInteroperabilityContractControllerRunData = {\n /**\n * Raw source row\n */\n body: InteroperabilityRunRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract slug\n */\n slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run';\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunError = PlatformApiInteroperabilityContractControllerRunErrors[keyof PlatformApiInteroperabilityContractControllerRunErrors];\n\nexport type PlatformApiInteroperabilityContractControllerRunResponses = {\n /**\n * Pipeline output\n */\n 200: InteroperabilityRunResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunResponse = PlatformApiInteroperabilityContractControllerRunResponses[keyof PlatformApiInteroperabilityContractControllerRunResponses];\n\nexport type PlatformApiDatasetControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/metadata';\n};\n\nexport type PlatformApiDatasetControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatasetControllerMetadataError = PlatformApiDatasetControllerMetadataErrors[keyof PlatformApiDatasetControllerMetadataErrors];\n\nexport type PlatformApiDatasetControllerMetadataResponses = {\n /**\n * Markdown catalog of every dataset type for this datalake's domain\n */\n 200: string;\n};\n\nexport type PlatformApiDatasetControllerMetadataResponse = PlatformApiDatasetControllerMetadataResponses[keyof PlatformApiDatasetControllerMetadataResponses];\n","/**\n * Alvera Platform SDK — typed client.\n *\n * Architecture:\n * generated/ auto-generated by @hey-api/openapi-ts (do not edit)\n * sdk.gen.ts type-safe endpoint methods\n * types.gen.ts request/response types from OpenAPI spec\n * client.gen.ts HTTP client instance\n *\n * client.ts (this file) override layer\n * - configures the hey-api client with auth\n * - exposes a curated, ergonomic resource surface\n * - provides corrected types for fields the OpenAPI spec leaves as `object`\n *\n * Regenerate generated/ with: pnpm regen\n */\n\nimport { client } from './generated/client.gen.js';\nimport { type Client, createClient } from './generated/client/index.js';\nimport type {\n ActionStatusUpdaterCloudWatchQueryRequest,\n ActionStatusUpdaterRefreshRequest,\n ActionStatusUpdaterRestCallRequest,\n AdminCreateTenantApiKeyRequest,\n AgenticWorkflowRequestWritable,\n AiAgentInvokeRequest,\n PlatformApiActionStatusUpdaterControllerIndexData,\n PlatformApiAgenticWorkflowControllerIndexData,\n PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData,\n PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData,\n PlatformApiDataActivationClientControllerLogsIndexData,\n PlatformApiWorkflowRunControllerIndexData,\n PlatformApiTenantControllerIndexData,\n PlatformApiAiAgentControllerIndexData,\n PlatformApiConnectedAppMgmtControllerIndexData,\n PlatformApiDataActivationClientControllerIndexData,\n PlatformApiDataSourceControllerIndexData,\n PlatformApiDatalakeControllerIndexData,\n PlatformApiGenericTableControllerIndexData,\n PlatformApiInteroperabilityContractControllerIndexData,\n PlatformApiToolControllerIndexData,\n ActionStatusUpdaterRequestWritable,\n AiAgentRequestWritable,\n ConnectedAppRequestWritable,\n DataActivationClientRequestWritable,\n DatalakeRequestWritable,\n DataSourceRequest,\n ExecuteActionRequest,\n ExecuteSqlRequest,\n GenericTableRequestWritable,\n IngestRequest,\n InteroperabilityContractRequestWritable,\n InteroperabilityRunRequest,\n InvitationRequest,\n ManualToolInvocationRequestWritable,\n MdmVerifyRequest,\n ResolvePageRequest,\n RunManuallyRequestWritable,\n RunWorkflowRequest,\n SignUpRequestWritable,\n TenantRequest,\n UpdatePageRequest,\n UserSearchRequest,\n ExecuteSqlResponse,\n GenericTableColumnRequest,\n IngestFileRequest,\n TextToSqlRequest,\n ToolRequestWritable,\n UploadLinkRequest,\n} from './generated/types.gen.js';\n\n/**\n * Forward-compat alias for DataSource write paths.\n *\n * Hey-api emits `<Schema>RequestWritable` variants only when a schema\n * has at least one `writeOnly: true` field — otherwise the Writable\n * shape would be byte-identical to the bare Request type, so it skips\n * the duplicate. DataSource has no writeOnly fields today, so\n * `DataSourceRequestWritable` is not generated.\n *\n * Aliasing it here gives every write path a uniform `*Writable` import\n * name (Datalake / Tool / DataSource), matching the Elixir-test\n * convention of typing every Create/Update body explicitly. When a\n * writeOnly field is eventually added to DataSource, hey-api will emit\n * its own `DataSourceRequestWritable`; at that point this alias should\n * be deleted in favour of the generated one, and the TS compiler will\n * surface the structural change at every write call-site.\n */\nexport type DataSourceRequestWritable = DataSourceRequest;\nimport {\n platformApiActionStatusUpdaterControllerCreate,\n platformApiActionStatusUpdaterControllerDelete,\n platformApiActionStatusUpdaterControllerMetadata,\n platformApiActionStatusUpdaterControllerMetadataDetails,\n platformApiActionStatusUpdaterControllerRefresh,\n platformApiIntegrationTestOnlyAdminControllerBootstrapSession,\n platformApiIntegrationTestOnlyAdminControllerConfirmUser,\n platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey,\n platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey,\n platformApiIntegrationTestOnlyAdminControllerSignUp,\n platformApiDatasetControllerCreateUserSearch,\n platformApiInvitationControllerAccept,\n platformApiInvitationControllerCreate,\n platformApiInvitationControllerIndex,\n platformApiTenantControllerCreate,\n platformApiActionStatusUpdaterControllerIndex,\n platformApiActionStatusUpdaterControllerShow,\n platformApiActionStatusUpdaterControllerUpdate,\n platformApiAgenticWorkflowControllerCreate,\n platformApiAgenticWorkflowControllerDelete,\n platformApiAgenticWorkflowControllerIndex,\n platformApiAgenticWorkflowControllerMetadata,\n platformApiAgenticWorkflowControllerMetadataDetails,\n platformApiAgenticWorkflowControllerShow,\n platformApiAgenticWorkflowControllerUpdate,\n platformApiAgenticWorkflowOperationsControllerBatchLogRefresh,\n platformApiAgenticWorkflowOperationsControllerBatchLogShow,\n platformApiAgenticWorkflowOperationsControllerBatchLogStart,\n platformApiAgenticWorkflowOperationsControllerBatchLogStop,\n platformApiAgenticWorkflowOperationsControllerBatchLogsIndex,\n platformApiAgenticWorkflowOperationsControllerExecute,\n platformApiAgenticWorkflowOperationsControllerRunWorkflow,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogShow,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex,\n platformApiAiAgentControllerCreate,\n platformApiAiAgentControllerDelete,\n platformApiAiAgentControllerIndex,\n platformApiAiAgentControllerInvoke,\n platformApiAiAgentControllerMetadata,\n platformApiAiAgentControllerMetadataDetails,\n platformApiAiAgentControllerShow,\n platformApiAiAgentControllerUpdate,\n platformApiConnectedAppControllerResolvePage,\n platformApiConnectedAppControllerUpdateMessageTracking,\n platformApiConnectedAppMgmtControllerCreate,\n platformApiConnectedAppMgmtControllerDelete,\n platformApiConnectedAppMgmtControllerIndex,\n platformApiConnectedAppMgmtControllerMetadata,\n platformApiConnectedAppMgmtControllerMetadataDetails,\n platformApiConnectedAppMgmtControllerShow,\n platformApiConnectedAppMgmtControllerSyncRoutes,\n platformApiConnectedAppMgmtControllerUpdate,\n platformApiDataActivationClientControllerCreate,\n platformApiDataActivationClientControllerDelete,\n platformApiDataActivationClientControllerIndex,\n platformApiDataActivationClientControllerIngest,\n platformApiDataActivationClientControllerIngestFile,\n platformApiDataActivationClientControllerLogShow,\n platformApiDataActivationClientControllerLogsIndex,\n platformApiDataActivationClientControllerMetadata,\n platformApiDataActivationClientControllerMetadataDetails,\n platformApiDataActivationClientControllerRunManually,\n platformApiDataActivationClientControllerShow,\n platformApiDataActivationClientControllerUpdate,\n platformApiDatalakeControllerCreate,\n platformApiDatalakeControllerCreateDownloadLink,\n platformApiDatalakeControllerCreateUploadLink,\n platformApiDatalakeControllerDelete,\n platformApiDatalakeControllerExecuteSql,\n platformApiDatalakeControllerIndex,\n platformApiDatalakeControllerMetadata,\n platformApiDatalakeControllerMetadataDetails,\n platformApiDatalakeControllerMigrate,\n platformApiDatalakeControllerShow,\n platformApiDatalakeControllerSystemDatasets,\n platformApiDatalakeControllerTextToSql,\n platformApiDatalakeControllerUpdate,\n platformApiDatasetControllerDatasetMetadata,\n platformApiDatasetControllerMetadata,\n platformApiDatasetControllerSearch,\n platformApiDataSourceControllerCreate,\n platformApiDataSourceControllerDelete,\n platformApiDataSourceControllerIndex,\n platformApiDataSourceControllerMetadata,\n platformApiDataSourceControllerMetadataDetails,\n platformApiDataSourceControllerShow,\n platformApiDataSourceControllerUpdate,\n platformApiGenericTableControllerCreate,\n platformApiGenericTableControllerDelete,\n platformApiGenericTableControllerIndex,\n platformApiGenericTableControllerMetadata,\n platformApiGenericTableControllerMetadataDetails,\n platformApiGenericTableControllerShow,\n platformApiGenericTableControllerUpdate,\n platformApiInteroperabilityContractControllerCreate,\n platformApiInteroperabilityContractControllerDelete,\n platformApiInteroperabilityContractControllerIndex,\n platformApiInteroperabilityContractControllerMetadata,\n platformApiInteroperabilityContractControllerMetadataDetails,\n platformApiInteroperabilityContractControllerRun,\n platformApiInteroperabilityContractControllerShow,\n platformApiInteroperabilityContractControllerUpdate,\n platformApiMdmControllerVerify,\n platformApiPingControllerPing,\n platformApiSessionControllerCreate,\n platformApiSessionControllerDelete,\n platformApiSessionControllerVerify,\n platformApiSessionControllerVerifyApiKey,\n platformApiTemplatesControllerIndex,\n platformApiTemplatesControllerMetadata,\n platformApiTemplatesControllerMetadataDetails,\n platformApiTenantControllerIndex,\n platformApiToolControllerCreate,\n platformApiToolControllerDelete,\n platformApiToolControllerIndex,\n platformApiToolControllerMetadata,\n platformApiToolControllerMetadataDetails,\n platformApiToolControllerShow,\n platformApiToolControllerTestInvocation,\n platformApiToolControllerUpdate,\n // Drift-checksum endpoints — server computes the would-be checksum for a\n // submitted config body (cast → defaults → stamp, no persist). `alvera plan`\n // POSTs the rendered body here for the desired checksum and compares it to\n // the deployed resource's checksum to decide unchanged vs edited.\n platformApiDatalakeControllerChecksum,\n platformApiDataSourceControllerChecksum,\n platformApiToolControllerChecksum,\n platformApiAiAgentControllerChecksum,\n platformApiActionStatusUpdaterControllerChecksum,\n platformApiConnectedAppMgmtControllerChecksum,\n platformApiGenericTableControllerChecksum,\n platformApiInteroperabilityContractControllerChecksum,\n platformApiDataActivationClientControllerChecksum,\n platformApiAgenticWorkflowControllerChecksum,\n platformApiWorkflowRunControllerIndex,\n platformApiWorkflowRunControllerShow,\n platformApiWorkflowRunControllerCancel,\n} from './generated/sdk.gen.js';\n\n// Runtime enums — TypeScript `enum` declarations carry both a type\n// and a value, so they need a regular `export` (not `export type`).\n// Consumers import them as either narrowing types or value sources\n// (e.g. `Object.values(ActionType)` to enumerate at runtime).\nexport { ActionType, ToolIntent } from './generated/types.gen.js';\n\n// Re-export generated types that are correct as-is\nexport type {\n ActionStatusUpdaterCloudWatchQueryRequest,\n ActionStatusUpdaterResponse,\n ActionStatusUpdaterRestCallRequest,\n AdminApiKeyResponse,\n AdminCreateTenantApiKeyRequest,\n AgenticWorkflowListResponse,\n AgenticWorkflowRequestWritable,\n AgenticWorkflowResponse,\n AiAgentInvokeRequest,\n AiAgentResponse,\n // The JSON:API error envelope the server returns on 4xx — `{ errors: [{\n // detail, source: { pointer }, title }] }`. A 422 always carries it (one\n // entry per validation failure, with an RFC 6901 JSON Pointer to the\n // offending field). Exposed so consumers can type and surface server errors.\n AlveraApiError,\n BatchLogListResponse,\n BatchLogResponse,\n ConnectedAppListResponse,\n ConnectedAppRequestWritable,\n ConnectedAppResponse,\n DataActivationClientListResponse,\n DataActivationClientLogListResponse,\n DataActivationClientLogResponse,\n DataActivationClientRequestWritable,\n DataActivationClientResponse,\n DatalakeRequestWritable,\n DatalakeResponse,\n DatasetSearchResponse,\n DataSourceRequest,\n DataSourceResponse,\n DownloadUrlResponse,\n ErrorResponse,\n ExecuteActionRequest,\n ExecuteActionResponse,\n ExecuteSqlMeta,\n ExecuteSqlRequest,\n ExecuteSqlResponse,\n GenericTableColumnRequest,\n GenericTableColumnResponse,\n GenericTableResponse,\n IngestFileRequest,\n IngestRequest,\n InteroperabilityContractAiAgentRequestWritable,\n InteroperabilityContractListResponse,\n InteroperabilityContractRequestWritable,\n InteroperabilityContractResponse,\n InteroperabilityRunRequest,\n InteroperabilityRunResponse,\n MdmVerifyRequest,\n MdmVerifyResponse,\n PaginationMeta,\n ResolvePageRequest,\n RunManuallyRequestWritable,\n RunManuallyResponse,\n RunWorkflowRequest,\n RunWorkflowResponse,\n SessionResponse,\n SyncRoutesResponse,\n // 0.23 GH-843 — a `workflows.run` now records a run rather than doing the\n // work inline, so the run itself is a readable, cancellable resource.\n WorkflowRunResponse,\n WorkflowRunListResponse,\n // 0.23 GH-843 — Twilio as a first-class sender body. `*Writable` is the one\n // that carries `auth_token` (writeOnly); it appears on no read shape.\n ToolTwilioRequest,\n ToolTwilioRequestWritable,\n ToolTwilioResponse,\n TwilioRequest,\n TwilioRequestWritable,\n TwilioResponse,\n TenantListResponse,\n TenantResponse,\n TextToSqlRequest,\n TextToSqlResponse,\n ToolRequest,\n ToolRequestWritable,\n ToolResponse,\n UpdatePageRequest,\n UploadLinkRequest,\n UploadLinkResponse,\n WorkflowAiAgentRequestWritable,\n WorkflowLogListResponse,\n WorkflowLogResponse,\n} from './generated/types.gen.js';\n\nexport interface CreateGenericTableRequest {\n title: string;\n description?: string;\n data_domain?:\n | 'healthcare'\n | 'core_banking'\n | 'payments'\n | 'subscription'\n | 'service_commerce'\n | 'trading'\n | null;\n columns: GenericTableColumnRequest[];\n}\n\nexport interface TemplateConfig {\n type: 'system' | 'custom';\n path?: string;\n body?: string;\n}\n\nexport interface CreateActionStatusUpdaterRequest {\n name: string;\n cron_expression: string;\n updater_type: 'cloud_watch' | 'restapi';\n updater_tool_id: string;\n datalake_id: string;\n sender_tool_ids?: string[] | null;\n // Required by the platform changeset (cast_embed :message_config,\n // required: true) and the OpenAPI schema's required list. Renders raw\n // poll-result events into the {external_id, set_params} shape the\n // reconciliation pipeline expects.\n message_config: TemplateConfig;\n // Required on create AND update (PUT) — omitting it is a 422 (`Missing field:\n // action_log_config`). Renders each poll result into the action-log write shape:\n // a JSON object with `external_id` plus at least one updatable field (`status`,\n // `sent_at`, `metadata`) — the same contract `message_config` holds for messages.\n // A config that renders `null`/empty is rejected (422 \"must render a JSON object\n // containing external_id\"). The *response* reads this back nullable: rows created\n // before it became required stay `null` until their next edit forces a real\n // template (including status-resume and refresh-with-override edits).\n action_log_config: TemplateConfig;\n // Required for `restapi` updaters, omitted for `cloud_watch`. JSON Schemas the\n // poll driver validates each rendered template output against on every cycle —\n // the events render against `events_output_schema`, the pagination context\n // (keyed on `has_next`) against `pagination_context_output_schema`. Same\n // top-level JSON-schema shape as `CreateAiAgentRequest`'s `input_schema` /\n // `llm_response_schema`.\n events_output_schema?: Record<string, unknown> | null;\n pagination_context_output_schema?: Record<string, unknown> | null;\n // Required. Discriminated by `updater_body_type` (public OpenAPI\n // discriminator); server-side `ex_open_api_utils` maps to internal\n // `:__type__` Ecto routing. Same pattern as `cloud_storage_type` on\n // Datalake and `tool_body_type` on Tool.\n updater_body: ActionStatusUpdaterCloudWatchQueryRequest | ActionStatusUpdaterRestCallRequest;\n}\n\nexport interface CreateAiAgentRequest {\n name: string;\n model: string;\n tool_id: string;\n data_access: 'regulated' | 'unregulated';\n temperature: number;\n max_tokens: number;\n enabled: boolean;\n slug?: string;\n description?: string | null;\n input_schema?: Record<string, unknown> | null;\n llm_response_schema?: Record<string, unknown> | null;\n prompt_config?: Record<string, unknown> | null;\n}\n\n// ---------------------------------------------------------------------------\n// Auth — session-based (Bearer token)\n// ---------------------------------------------------------------------------\n\nexport interface CreateSessionParams {\n baseUrl: string;\n email: string;\n password: string;\n /**\n * Publishable API key of the tenant named by `tenantSlug`, sent as\n * `X-API-Key`. Required — the server 401s without one and 403s a key\n * belonging to a different tenant. The key is stamped onto the resulting\n * session for lineage, and the same key must accompany every subsequent\n * request alongside the Bearer.\n */\n apiKey: string;\n /**\n * Tenant slug to sign in to. Required — `POST /sessions` is tenant login\n * only; the tenantless bootstrap login lives at\n * `POST /api/v1/admin/bootstrap-session` (`createBootstrapSession`, an\n * integration-test-only route absent from prod builds).\n */\n tenantSlug: string;\n /** Session duration in seconds. Default 86400 (24h). Max 2592000 (30d). */\n expiresIn?: number;\n}\n\nexport interface SessionResult {\n /** Bearer token to pass into createPlatformApi. */\n sessionToken: string;\n /** ISO-8601 expiration timestamp, or null for non-expiring sessions. */\n expiresAt: string | null;\n /** Null for tenantless sessions (admin / pre-tenant bootstrap). */\n tenant: { id: string; slug: string; name: string } | null;\n /** Null for tenantless sessions. */\n role: { id: string; name: string } | null;\n user: { id: string; firstName: string | null; lastName: string | null } | null;\n}\n\n/**\n * Sign in to a tenant: exchange user credentials + the tenant's publishable\n * key for a tenant-scoped Bearer session token. For the tenantless\n * platform-admin bootstrap login use `createBootstrapSession` (an\n * integration-test-only route absent from prod builds).\n *\n * Throws on any non-2xx response (e.g. 401 invalid credentials).\n */\nexport async function createSession(\n params: CreateSessionParams,\n): Promise<SessionResult> {\n client.setConfig({ baseUrl: params.baseUrl.replace(/\\/$/, '') });\n\n const { data } = await platformApiSessionControllerCreate({\n headers: { 'X-API-Key': params.apiKey },\n body: {\n email: params.email,\n password: params.password,\n tenant_slug: params.tenantSlug,\n ...(params.expiresIn !== undefined ? { expires_in: params.expiresIn } : {}),\n },\n throwOnError: true,\n });\n\n if (!data.session_token) {\n throw new Error('Session created but no session_token was returned.');\n }\n\n return {\n sessionToken: data.session_token,\n expiresAt: data.expires_at ?? null,\n tenant: data.tenant\n ? { id: data.tenant.id, slug: data.tenant.slug, name: data.tenant.name }\n : null,\n role: data.role ? { id: data.role.id, name: data.role.name } : null,\n user: data.user\n ? {\n id: data.user.id,\n firstName: data.user.first_name ?? null,\n lastName: data.user.last_name ?? null,\n }\n : null,\n };\n}\n\n/**\n * Bootstrap a TENANTLESS Bearer session (platform-admin / pre-tenant flows)\n * via `POST /api/v1/admin/bootstrap-session` — keyless by structural\n * necessity (it mints the very first Bearer of an environment, before any\n * tenant key exists). Integration-test-only: the route does not exist in\n * prod builds. Returned `tenant` and `role` are always null.\n */\nexport async function createBootstrapSession(params: {\n baseUrl: string;\n email: string;\n password: string;\n expiresIn?: number;\n}): Promise<SessionResult> {\n client.setConfig({ baseUrl: params.baseUrl.replace(/\\/$/, '') });\n\n const { data } = await platformApiIntegrationTestOnlyAdminControllerBootstrapSession({\n body: {\n email: params.email,\n password: params.password,\n ...(params.expiresIn !== undefined ? { expires_in: params.expiresIn } : {}),\n },\n throwOnError: true,\n });\n\n if (!data.session_token) {\n throw new Error('Session created but no session_token was returned.');\n }\n\n return {\n sessionToken: data.session_token,\n expiresAt: data.expires_at ?? null,\n tenant: null,\n role: null,\n user: data.user\n ? {\n id: data.user.id,\n firstName: data.user.first_name ?? null,\n lastName: data.user.last_name ?? null,\n }\n : null,\n };\n}\n\n/**\n * Revoke the currently-configured session token. After calling this,\n * the api instance will reject every subsequent request with 401.\n */\nexport async function revokeSession(): Promise<void> {\n await platformApiSessionControllerDelete({ throwOnError: true });\n}\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\n/**\n * Optional HTTP-layer instrumentation hook. When provided, the SDK\n * attaches request + response interceptors to its hey-api client and\n * invokes `log` once per request and once per response.\n *\n * The SDK is logger-agnostic — `log` is a plain callback. Consumer\n * (CLI, tests, downstream apps) decides where the line goes. The same\n * pattern Stripe, AWS SDK v3, Octokit, and the OpenAI SDK use.\n *\n * `redactStrings` is consumer-supplied: every literal occurrence of\n * each entry in the formatted request / response string is replaced\n * with `********` before `log` is called. This is how secret values\n * substituted client-side (e.g. resolved from the CLI's\n * `infra.secrets.toml`) stay out of debug logs even though the SDK\n * itself never sees the placeholder syntax — it only sees the\n * resolved literal in the outgoing body, and the redaction list says\n * which literals to scrub.\n *\n * `log` receives a fully-formatted line. The URL is ABSOLUTE — origin\n * included — because the origin is the only thing distinguishing one\n * environment from another. A path-only line reads identically whether\n * the call went to localhost or to a demo server, which makes the log\n * useless for the question it is most often asked: *where did this\n * actually go?*\n *\n * `→ POST https://demo.example.com/api/v1/tenants/foo/datalakes\n * {\n * \"slug\": \"demo\",\n * \"...\": \"...\"\n * }`\n *\n * `← 422 https://demo.example.com/api/v1/tenants/foo/datalakes\n * {\n * \"errors\": { ... }\n * }`\n *\n * Newlines are part of the message — caller decides whether to\n * append another. Method/status arrows (`→` `←`) make request /\n * response easy to grep.\n */\nexport interface ApiDebugConfig {\n log: (message: string) => void;\n redactStrings?: readonly string[];\n}\n\n/**\n * `sessionToken` and `apiKey` travel together on an authorized request —\n * Firebase's \"API key + ID token\" split, not an either/or. `apiKey` identifies\n * the publishable client (and is what a server-side CORS check matches the\n * request's `Origin` against); `sessionToken` (Bearer) is what actually\n * authorizes the call. Neither ever substitutes for the other.\n *\n * `sessionToken` is OPTIONAL: a key-only client — every deployed connected\n * app authenticating machine-to-machine on its tenant's publishable key —\n * constructs with just `{ baseUrl, apiKey }` and sends no `Authorization`\n * header at all (never a fabricated `Bearer ` with an empty token). It\n * reaches only the limited surface the publishable key permits; everything\n * else 401s server-side, which is the intended ceiling.\n */\nexport interface ApiConfig {\n baseUrl: string;\n sessionToken?: string;\n apiKey: string;\n debug?: ApiDebugConfig;\n}\n\n// ---------------------------------------------------------------------------\n// Factories — two named entry points\n//\n// createPlatformApi(config) singleton mode (default)\n// Mutates the shared, generated client. Cheap, single-bearer-at-a-time.\n// Right for CLIs and single-user web apps where one logged-in user holds\n// exactly one bearer at any moment.\n//\n// createIsolatedPlatformApi(config) private-client mode\n// Builds its own Client via createClient() and threads it on every call.\n// Right for code that needs MULTIPLE concurrent APIs bound to DIFFERENT\n// bearers in the same process — integration tests holding a root session\n// and a tenant-scoped session at once, or multi-tenant background jobs.\n//\n// Both factories return the same PlatformApi shape, built by _buildApi().\n// ---------------------------------------------------------------------------\n\nexport type PlatformApi = ReturnType<typeof _buildApi>;\n\n// Public-facing alias for the authenticated client. `PlatformApi` names the\n// builder's return type; `AlveraClient` is the name consumers reach for —\n// notably the `$alvera` ambient global the CLI injects into contract files.\n// Pure alias, no distinct shape.\nexport type AlveraClient = PlatformApi;\n\nexport interface DatasetSearchOptions {\n userSearchId?: string;\n /**\n * Optional override for the data access mode used by this read.\n * Defaults to the session's `data_access_mode`. The session's capability\n * ceiling still applies — escalating beyond it returns 403.\n */\n dataAccessMode?: 'regulated' | 'unregulated';\n /**\n * Outer SQL-chunk pagination. Defaults page=1, page_size=1000 (max 1000).\n * Pages cached IDs from `search_results`; the cap is dictated by\n * Postgres' `WHERE id IN (^ids)` plan (planner regresses past ~1k params).\n */\n outerPagination?: { page?: number; pageSize?: number };\n /**\n * Inner resource Flop pagination. Defaults page=1, page_size=20.\n * Also accepts an `orderDirection` (sorts on the schema's `:global_search`\n * compound) and `globalSearch` (single ILIKE-OR text-search knob).\n */\n innerSearch?: {\n page?: number;\n pageSize?: number;\n orderDirection?: 'asc' | 'desc';\n globalSearch?: string;\n };\n}\n\nexport interface DatasetMetadataOptions {\n genericTableId?: string;\n}\n\nfunction authHeaders(config: ApiConfig): Record<string, string> {\n // Key-only (no session): X-API-Key alone — omitting Authorization entirely\n // beats sending `Bearer ` junk that a strict middleware would 401.\n return {\n ...(config.sessionToken ? { Authorization: `Bearer ${config.sessionToken}` } : {}),\n 'X-API-Key': config.apiKey,\n };\n}\n\n// Serializes query params in the bracket style the API parses natively:\n// scalars as `k=v`, objects as `k[a]=v`, and arrays as repeated `k[]=v` —\n// including the case that matters, arrays of objects as `k[][a]=v`. The\n// list endpoints take `filters` as an array of `{field, op, value}`\n// objects (`filters[][field]=handle&filters[][op]=ilike&filters[][value]=x`);\n// the server groups consecutive `[]` entries into one object per element\n// (a repeated inner key starts the next element). Indexed brackets\n// (`filters[0][field]=…`) do NOT work — the server parses them into a\n// map keyed by the index string and rejects it as a non-array.\n//\n// The generated client can't produce this shape: its serializer refuses\n// arrays of objects outright (\"Deeply-nested arrays/objects aren't\n// supported\"). And client-level config alone is NOT enough — every\n// generated list function carries its own `querySerializer: {parameters:\n// {filters: …deepObject}}` option that shadows the client config at\n// request time (`...options` spreads last in the generated call). The\n// curated list wrappers therefore pass this function per call — a\n// per-call function takes precedence over the generated options object.\nexport function bracketQuerySerializer(query: Record<string, unknown>): string {\n const params = new URLSearchParams();\n const append = (key: string, value: unknown): void => {\n if (value === undefined || value === null) return;\n if (Array.isArray(value)) {\n for (const item of value) append(`${key}[]`, item);\n return;\n }\n if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n append(`${key}[${k}]`, v);\n }\n return;\n }\n params.append(key, String(value));\n };\n for (const [key, value] of Object.entries(query)) append(key, value);\n return params.toString();\n}\n\nexport function createPlatformApi(config: ApiConfig): PlatformApi {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n client.setConfig({\n baseUrl,\n headers: authHeaders(config),\n querySerializer: bracketQuerySerializer,\n });\n if (config.debug) _attachDebugInterceptors(client, config.debug);\n return _buildApi(client);\n}\n\nexport function createIsolatedPlatformApi(config: ApiConfig): PlatformApi {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n const myClient = createClient({\n baseUrl,\n headers: authHeaders(config),\n querySerializer: bracketQuerySerializer,\n });\n if (config.debug) _attachDebugInterceptors(myClient, config.debug);\n return _buildApi(myClient);\n}\n\n// Decorates every thrown 4xx/5xx error with the HTTP status of the\n// originating Response. hey-api otherwise throws only the parsed body,\n// which makes 404 (a valid \"empty result\" outcome for the metadata\n// endpoints) indistinguishable from a malformed response. Consumers\n// (CLI `get-metadata`, agents driving the SDK) can then short-circuit\n// on `(err as { _httpStatus?: number })._httpStatus === 404` without\n// pattern-matching on body strings.\n//\n// Three input shapes the interceptor must survive:\n//\n// 1. HTTP 4xx/5xx — `response` is the real Response, `error` is the\n// parsed body. Decorate `error` with `_httpStatus`.\n//\n// 2. HTTP 4xx/5xx with primitive body (`Not Found` plain text) —\n// `response` is the real Response, `error` is a string. Wrap into\n// `{_httpStatus, message}` so the status survives.\n//\n// 3. Transport failure (server down, DNS miss, abort) — `response` is\n// undefined, `error` is the underlying TypeError (\"fetch failed\"\n// etc.). NEVER read `.status` off undefined — that turns an\n// already-recoverable error into a cryptic JS crash. Pass the\n// error through unchanged so the caller's catch handler sees the\n// real cause.\n// Pure function lifted out of the interceptor body so it's directly\n// testable without spinning up a real Client. The interceptor is one\n// thin wiring call; this is the actual logic.\nexport function decorateErrorWithStatus(\n error: unknown,\n response: Response | undefined,\n): unknown {\n if (!response) {\n return error;\n }\n const status = response.status;\n if (error && typeof error === 'object') {\n (error as Record<string, unknown>)._httpStatus = status;\n return error;\n }\n return {\n _httpStatus: status,\n message: typeof error === 'string' ? error : String(error ?? response.statusText),\n };\n}\n\nfunction _attachStatusInterceptor(myClient: Client): void {\n myClient.interceptors.error.use(decorateErrorWithStatus);\n}\n\n/**\n * Replaces every literal occurrence of each entry in `redactStrings`\n * with `********`. Uses `split / join` — same approach as the CLI's\n * `redactInstalled` helper. Linear in `text.length × redactStrings.length`;\n * not optimized for speed (debug-mode only, off the hot path).\n *\n * Entries that are empty / falsy are skipped (avoids the infinite\n * replace loop that an empty needle produces in some implementations).\n */\nfunction redactLiterals(text: string, redactStrings: readonly string[] | undefined): string {\n if (!redactStrings || redactStrings.length === 0) return text;\n let out = text;\n for (const literal of redactStrings) {\n if (!literal) continue;\n out = out.split(literal).join('********');\n }\n return out;\n}\n\n/**\n * Attaches request + response interceptors that produce a formatted log\n * line per call and hand it to `debug.log`.\n *\n * Format:\n *\n * `→ POST /api/v1/tenants/foo/datalakes`\n * ` <body JSON, indented 4 spaces, secrets redacted>`\n *\n * `← 422 /api/v1/tenants/foo/datalakes`\n * ` <response body JSON, indented 4 spaces, secrets redacted>`\n *\n * Request body extraction reads `request.clone().text()` so the original\n * stream stays consumable by the underlying fetch (clone() is the\n * standard fetch-API pattern for stream-double-read). Response body\n * extraction does the same on the response side. Both happen\n * asynchronously inside the interceptor; hey-api's middleware chain\n * awaits the returned promise before continuing.\n *\n * Errors thrown inside `debug.log` are caught and swallowed — a buggy\n * caller-supplied logger must never break the actual HTTP call.\n */\n/**\n * `origin + pathname` — the server, then the route. The query string is\n * deliberately left off: it carries filter values, not routing, and the\n * body below the line is where those are read.\n *\n * Falls back to the raw string if the URL will not parse, so a debug\n * logger can never be the thing that breaks a call.\n */\nfunction absoluteUrl(rawUrl: string): string {\n try {\n const parsed = new URL(rawUrl);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return rawUrl;\n }\n}\n\nfunction _attachDebugInterceptors(myClient: Client, debug: ApiDebugConfig): void {\n const { log, redactStrings } = debug;\n\n myClient.interceptors.request.use(async (request) => {\n try {\n const url = absoluteUrl(request.url);\n const cloned = request.clone();\n const body = cloned.body ? await cloned.text() : '';\n const formatted = body\n ? `→ ${request.method} ${url}\\n${indent(redactLiterals(body, redactStrings), 4)}`\n : `→ ${request.method} ${url}`;\n log(formatted);\n } catch {\n // never break the request because the debug logger failed\n }\n return request;\n });\n\n myClient.interceptors.response.use(async (response, request) => {\n try {\n const url = absoluteUrl(request.url);\n const cloned = response.clone();\n const body = await cloned.text();\n const formatted = body\n ? `← ${response.status} ${url}\\n${indent(redactLiterals(body, redactStrings), 4)}`\n : `← ${response.status} ${url}`;\n log(formatted);\n } catch {\n // never break the response chain because the debug logger failed\n }\n return response;\n });\n}\n\nfunction indent(text: string, spaces: number): string {\n const pad = ' '.repeat(spaces);\n return text\n .split('\\n')\n .map((line) => pad + line)\n .join('\\n');\n}\n\nfunction _buildApi(myClient: Client) {\n _attachStatusInterceptor(myClient);\n return {\n ping: () =>\n platformApiPingControllerPing({ client: myClient, throwOnError: true }),\n\n sessions: {\n verify: () =>\n platformApiSessionControllerVerify({ client: myClient, throwOnError: true }),\n // Key-only companion (GET /api-keys/verify, split from verify by\n // GH-753): proves the X-API-Key alone resolves — no Bearer required.\n verifyApiKey: () =>\n platformApiSessionControllerVerifyApiKey({ client: myClient, throwOnError: true }),\n },\n\n admin: {\n // Admin tenant sign-up (moved from /auth/sign-up): the test harness\n // creating tenant users; production user creation is UI-driven.\n signUp: (body: SignUpRequestWritable) =>\n platformApiIntegrationTestOnlyAdminControllerSignUp({ body, client: myClient, throwOnError: true }),\n confirmUser: (id: string) =>\n platformApiIntegrationTestOnlyAdminControllerConfirmUser({ path: { id }, client: myClient, throwOnError: true }),\n // Admin side door: reveal a connected app's publishable (public_api) key plaintext.\n revealConnectedAppApiKey: (id: string) =>\n platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey({\n path: { id },\n client: myClient,\n throwOnError: true,\n }),\n // Admin side door: mint a public_api key for a tenant. Exists for the\n // integration-test bootstrap flow, which has no LiveView console to\n // use the normal API-keys UI. Returns the plaintext once — record it,\n // it is never shown again.\n createTenantApiKey: (tenantSlug: string, body: AdminCreateTenantApiKeyRequest) =>\n platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient,\n throwOnError: true,\n }),\n },\n\n tenants: {\n list: (query?: PlatformApiTenantControllerIndexData['query']) =>\n platformApiTenantControllerIndex({\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n create: (body: TenantRequest) =>\n platformApiTenantControllerCreate({ body: body as never, client: myClient, throwOnError: true }),\n },\n\n invitations: {\n list: () =>\n platformApiInvitationControllerIndex({ client: myClient, throwOnError: true }),\n create: (tenantSlug: string, body: InvitationRequest) =>\n platformApiInvitationControllerCreate({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n accept: (id: string) =>\n platformApiInvitationControllerAccept({ path: { id }, client: myClient, throwOnError: true }),\n },\n\n datasets: {\n // Dataset endpoints are datalake-slug-scoped:\n // /tenants/:tenant_slug/datalakes/:datalake_slug/datasets/...\n // The datalake is mandatory + explicit in the URL — there is no\n // `datalake_id` query param and no tenant-derived default.\n search: (\n tenantSlug: string,\n datalakeSlug: string,\n dataset: string,\n options: DatasetSearchOptions = {},\n ) => {\n // Platform uses two-tier nested pagination — `outer_pagination[page]`\n // / `outer_pagination[page_size]` for the SQL chunk + `inner_search[*]`\n // for the resource Flop. Flat `page` / `page_size` are NOT accepted by\n // the strict OpenAPI plug.\n const outer = options.outerPagination ?? {};\n const inner = options.innerSearch ?? {};\n const outerQuery =\n outer.page !== undefined || outer.pageSize !== undefined\n ? {\n outer_pagination: {\n ...(outer.page !== undefined ? { page: outer.page } : {}),\n ...(outer.pageSize !== undefined ? { page_size: outer.pageSize } : {}),\n },\n }\n : {};\n const innerQuery =\n inner.page !== undefined ||\n inner.pageSize !== undefined ||\n inner.orderDirection !== undefined ||\n inner.globalSearch !== undefined\n ? {\n inner_search: {\n ...(inner.page !== undefined ? { page: inner.page } : {}),\n ...(inner.pageSize !== undefined ? { page_size: inner.pageSize } : {}),\n ...(inner.orderDirection !== undefined\n ? { order_direction: inner.orderDirection }\n : {}),\n ...(inner.globalSearch !== undefined\n ? { global_search: inner.globalSearch }\n : {}),\n },\n }\n : {};\n\n return platformApiDatasetControllerSearch({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset },\n query: {\n ...(options.userSearchId !== undefined ? { user_search_id: options.userSearchId } : {}),\n ...(options.dataAccessMode !== undefined\n ? { data_access_mode: options.dataAccessMode }\n : {}),\n ...outerQuery,\n ...innerQuery,\n },\n client: myClient,\n throwOnError: true,\n });\n },\n // `metadata` is the whole-catalog markdown of every dataset type\n // registered to this datalake's domain (the platform's\n // `DatasetController.metadata` action — siblings with\n // `tools.metadata` / `dataSources.metadata` / etc.).\n metadata: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatasetControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n // `metadataDetails` is per-dataset-type metadata — pass a system\n // dataset name (e.g. `patient`) or `'generic_table'` with a\n // `genericTableId` option for an operator-defined table.\n metadataDetails: (\n tenantSlug: string,\n datalakeSlug: string,\n datasetType: string,\n options: DatasetMetadataOptions = {},\n ) =>\n platformApiDatasetControllerDatasetMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset_type: datasetType },\n query: {\n ...(options.genericTableId !== undefined\n ? { generic_table_id: options.genericTableId }\n : {}),\n },\n client: myClient, throwOnError: true,\n }),\n createUserSearch: (\n tenantSlug: string,\n datalakeSlug: string,\n dataset: string,\n body: UserSearchRequest,\n ) =>\n platformApiDatasetControllerCreateUserSearch({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n datalakes: {\n list: (\n tenantSlug: string,\n query?: PlatformApiDatalakeControllerIndexData['query'],\n ) =>\n platformApiDatalakeControllerIndex({\n path: { tenant_slug: tenantSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, id: string) =>\n platformApiDatalakeControllerShow({\n path: { tenant_slug: tenantSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerCreate({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerChecksum({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, id: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerUpdate({\n path: { tenant_slug: tenantSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, id: string) =>\n platformApiDatalakeControllerDelete({\n path: { tenant_slug: tenantSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (tenantSlug: string, query?: { page?: number; page_size?: number }) =>\n platformApiDatalakeControllerMetadata({\n path: { tenant_slug: tenantSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n systemDatasets: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerSystemDatasets({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n migrate: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerMigrate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n createUploadLink: (\n tenantSlug: string,\n datalakeSlug: string,\n body: UploadLinkRequest,\n ) =>\n platformApiDatalakeControllerCreateUploadLink({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n createDownloadLink: (\n tenantSlug: string,\n datalakeSlug: string,\n body: { bucket: string; key: string },\n ) =>\n platformApiDatalakeControllerCreateDownloadLink({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // Talk to data — generate SQL from a natural-language prompt. Only the\n // prompt + the datalake schema cross the LLM boundary (never rows), so this\n // is safe in both modes. Returns SQL for review; run it via executeSql.\n textToSql: (\n tenantSlug: string,\n datalakeSlug: string,\n body: TextToSqlRequest,\n ) =>\n platformApiDatalakeControllerTextToSql({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // Talk to data — run a read-only SQL statement against the datalake. The\n // JSON path returns `{ data, meta }` (data = array-of-arrays rows aligned to\n // meta.columns). `{ format: 'csv' }` makes the server return a text/csv\n // attachment, so `data` resolves to the raw CSV string; the curated return\n // is widened to the documented `ExecuteSqlResponse | string` union.\n executeSql: (\n tenantSlug: string,\n datalakeSlug: string,\n body: ExecuteSqlRequest,\n options?: { format?: 'csv' },\n ) => {\n const result = platformApiDatalakeControllerExecuteSql({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n ...(options?.format === 'csv'\n ? { query: { format: 'csv' }, parseAs: 'text' as const }\n : {}),\n client: myClient, throwOnError: true,\n });\n return result as Promise<\n Omit<Awaited<typeof result>, 'data'> & { data: ExecuteSqlResponse | string }\n >;\n },\n },\n\n dataSources: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiDataSourceControllerIndexData['query'],\n ) =>\n platformApiDataSourceControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: DataSourceRequestWritable) =>\n platformApiDataSourceControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: DataSourceRequest) =>\n platformApiDataSourceControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: DataSourceRequestWritable,\n ) =>\n platformApiDataSourceControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiDataSourceControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n tools: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiToolControllerIndexData['query'],\n ) =>\n platformApiToolControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: ToolRequestWritable) =>\n platformApiToolControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ToolRequestWritable) =>\n platformApiToolControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: ToolRequestWritable) =>\n platformApiToolControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n testInvocation: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: ManualToolInvocationRequestWritable,\n ) =>\n platformApiToolControllerTestInvocation({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiToolControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n genericTables: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiGenericTableControllerIndexData['query'],\n ) =>\n platformApiGenericTableControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: CreateGenericTableRequest) =>\n platformApiGenericTableControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: CreateGenericTableRequest) =>\n platformApiGenericTableControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: GenericTableRequestWritable) =>\n platformApiGenericTableControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiGenericTableControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n actionStatusUpdaters: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiActionStatusUpdaterControllerIndexData['query'],\n ) =>\n platformApiActionStatusUpdaterControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (\n tenantSlug: string,\n datalakeSlug: string,\n body: CreateActionStatusUpdaterRequest,\n ) =>\n platformApiActionStatusUpdaterControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ActionStatusUpdaterRequestWritable) =>\n platformApiActionStatusUpdaterControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: CreateActionStatusUpdaterRequest,\n ) =>\n platformApiActionStatusUpdaterControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // Enqueues one poll cycle on demand — the manual counterpart of the cron\n // tick. Responds 202 with the updater row AS-IS (the poll runs\n // asynchronously); poll the row's last_run_status / last_run_events_found\n // / last_run_error fields for the outcome, and observe delivery status on\n // the message rows, not in this response. An optional body carries a\n // one-shot polymorphic updater_body override (e.g. a widened\n // start_time/end_time window for a backfill) that does not mutate the\n // persisted updater.\n refresh: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body?: ActionStatusUpdaterRefreshRequest,\n ) =>\n platformApiActionStatusUpdaterControllerRefresh({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiActionStatusUpdaterControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n templates: {\n systemTemplates: (tenantSlug: string, datalakeSlug: string) =>\n platformApiTemplatesControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiTemplatesControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (\n tenantSlug: string,\n datalakeSlug: string,\n filename: string,\n intent:\n | 'ai_agent'\n | 'blueprint_datasource'\n | 'blueprint_workflow'\n | 'workflow_filter'\n | 'workflow_decision'\n | 'data_activation_interoperability'\n | 'data_activation_tool_calls'\n | 'status_poller',\n ) =>\n platformApiTemplatesControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, filename },\n query: { intent },\n client: myClient, throwOnError: true,\n }),\n },\n\n aiAgents: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiAiAgentControllerIndexData['query'],\n ) =>\n platformApiAiAgentControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: CreateAiAgentRequest) =>\n platformApiAiAgentControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: AiAgentRequestWritable) =>\n platformApiAiAgentControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: CreateAiAgentRequest) =>\n platformApiAiAgentControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n invoke: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: AiAgentInvokeRequest,\n ) =>\n platformApiAiAgentControllerInvoke({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiAiAgentControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n connectedApps: {\n // datalake-scoped management\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiConnectedAppMgmtControllerIndexData['query'],\n ) =>\n platformApiConnectedAppMgmtControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n syncRoutes: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerSyncRoutes({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // datalake-scoped runtime actions (by slug)\n resolvePage: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: ResolvePageRequest,\n ) =>\n platformApiConnectedAppControllerResolvePage({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n updateMessageTracking: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: UpdatePageRequest,\n ) =>\n platformApiConnectedAppControllerUpdateMessageTracking({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiConnectedAppMgmtControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n dataActivationClients: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiDataActivationClientControllerIndexData['query'],\n ) =>\n platformApiDataActivationClientControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: DataActivationClientRequestWritable) =>\n platformApiDataActivationClientControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: DataActivationClientRequestWritable) =>\n platformApiDataActivationClientControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: DataActivationClientRequestWritable,\n ) =>\n platformApiDataActivationClientControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiDataActivationClientControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n runManually: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body?: RunManuallyRequestWritable,\n ) =>\n platformApiDataActivationClientControllerRunManually({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body: body ?? {},\n client: myClient, throwOnError: true,\n }),\n ingest: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: IngestRequest,\n ) =>\n platformApiDataActivationClientControllerIngest({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n ingestFile: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: IngestFileRequest,\n ) =>\n platformApiDataActivationClientControllerIngestFile({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n logs: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n query?: PlatformApiDataActivationClientControllerLogsIndexData['query'],\n ) =>\n platformApiDataActivationClientControllerLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, slug: string, id: string) =>\n platformApiDataActivationClientControllerLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug, id },\n client: myClient, throwOnError: true,\n }),\n },\n },\n\n interoperabilityContracts: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiInteroperabilityContractControllerIndexData['query'],\n ) =>\n platformApiInteroperabilityContractControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: InteroperabilityContractRequestWritable) =>\n platformApiInteroperabilityContractControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: InteroperabilityContractRequestWritable) =>\n platformApiInteroperabilityContractControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: InteroperabilityContractRequestWritable,\n ) =>\n platformApiInteroperabilityContractControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiInteroperabilityContractControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n run: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: InteroperabilityRunRequest,\n ) =>\n platformApiInteroperabilityContractControllerRun({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n mdm: {\n verify: (tenantSlug: string, datalakeSlug: string, body: MdmVerifyRequest) =>\n platformApiMdmControllerVerify({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n workflows: {\n // CRUD — datalake-scoped, addressed by workflow id\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiAgenticWorkflowControllerIndexData['query'],\n ) =>\n platformApiAgenticWorkflowControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // create/update take the real generated body type rather than\n // `Record<string, unknown>`. Both POST/PUT `AgenticWorkflowRequest`, and\n // PUT is full-replacement (there is no PATCH and no add/remove-tag\n // endpoint), so an omitted required key is a 422 rather than \"leave it\n // alone\". Typing the body makes the next required field a compile error\n // instead of a production 422 — the `tags` addition shipped 15 wrong\n // examples through a green gate precisely because this was untyped.\n create: (tenantSlug: string, datalakeSlug: string, body: AgenticWorkflowRequestWritable) =>\n platformApiAgenticWorkflowControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // checksum is typed too. It POSTs the same `AgenticWorkflowRequest`, and\n // tags participate in the drift fingerprint — so a checksum computed off\n // a body missing them is a WRONG ANSWER rather than a rejected call,\n // which is the worse failure: it returns 200 with a fingerprint that\n // silently disagrees with the server's.\n //\n // This is knowingly stricter than the other resources' checksum, which\n // still take the loose shape. The CLI dispatches all of them through one\n // generic call site (`contracts/server-checksum.ts`); that caller needs\n // updating for workflows.\n checksum: (tenantSlug: string, datalakeSlug: string, body: AgenticWorkflowRequestWritable) =>\n platformApiAgenticWorkflowControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: AgenticWorkflowRequestWritable,\n ) =>\n platformApiAgenticWorkflowControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiAgenticWorkflowControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n\n // Operations — datalake-scoped, addressed by workflow slug\n execute: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n body: ExecuteActionRequest,\n ) =>\n platformApiAgenticWorkflowOperationsControllerExecute({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n run: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n body: RunWorkflowRequest,\n ) =>\n platformApiAgenticWorkflowOperationsControllerRunWorkflow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n\n batchLogs: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n query?: PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData['query'],\n ) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n start: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogStart({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n stop: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogStop({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n refresh: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogRefresh({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n workflowLogs: {\n // Full Flop surface (the endpoint declares page/page_size/order_by/\n // order_directions/filters) — without it the wrapper is page-1-only\n // and older dispatches drown under newer rehearsal logs.\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n query?: PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData['query'],\n ) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n query,\n // Flop arrays need empty-bracket serialization; the generated\n // per-call options shadow the client config, so pass it here.\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n id: string,\n opts?: { dataAccessMode?: 'regulated' | 'unregulated' },\n ) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n ...(opts?.dataAccessMode\n ? { query: { data_access_mode: opts.dataAccessMode } }\n : {}),\n client: myClient, throwOnError: true,\n }),\n download: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n },\n\n // Workflow runs — one row per `workflows.run` invocation. Deliberately\n // datalake-scoped, NOT nested under `workflows`: the question a campaign\n // screen asks is \"what is going out from this datalake\", across workflows.\n // Nested under a workflow slug, a caller would have to fan out over every\n // workflow to build one list.\n //\n // `workflows.run` now only SCHEDULES — its response carries\n // workflow_run_id/status/scheduled_at and no longer carries\n // enqueued_count/batch_id/workflow_run_log_id, because the segment is\n // resolved when the run fires, not when it is scheduled. Those three\n // become readable here, via `get`, once status leaves `scheduled`.\n workflowRuns: {\n // Full Flop surface (page/page_size/order_by/order_directions/filters)\n // — without the query type + bracket serializer this wrapper is\n // page-1-only, which is the exact defect the sibling list wrappers hit.\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiWorkflowRunControllerIndexData['query'],\n ) =>\n platformApiWorkflowRunControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiWorkflowRunControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // POST to a named sub-resource, not a status PUT: cancelling races the\n // worker on a single conditional UPDATE, so exactly one side wins and\n // the loser is told. Refused once a run reaches `processing` — the\n // fan-out has begun and an executing Oban job cannot be stopped.\n cancel: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiWorkflowRunControllerCancel({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n };\n}\n","import { ENVIRONMENTS, type EnvironmentName } from './environments.generated.js';\n\nexport {\n ActionType,\n type ActionStatusUpdaterCloudWatchQueryRequest,\n type ActionStatusUpdaterResponse,\n type ActionStatusUpdaterRestCallRequest,\n type AgenticWorkflowListResponse,\n type AgenticWorkflowRequestWritable,\n type AgenticWorkflowResponse,\n type AiAgentResponse,\n type AlveraApiError,\n type AlveraClient,\n type ApiConfig,\n type ApiDebugConfig,\n type BatchLogListResponse,\n type BatchLogResponse,\n type ConnectedAppListResponse,\n type ConnectedAppRequestWritable,\n type ConnectedAppResponse,\n type CreateActionStatusUpdaterRequest,\n type CreateAiAgentRequest,\n type CreateGenericTableRequest,\n createIsolatedPlatformApi,\n createPlatformApi,\n createBootstrapSession,\n createSession,\n type CreateSessionParams,\n type DataActivationClientListResponse,\n type DataActivationClientLogListResponse,\n type DataActivationClientLogResponse,\n type DataActivationClientRequestWritable,\n type DataActivationClientResponse,\n type DatalakeRequestWritable,\n type DatalakeResponse,\n type DatasetMetadataOptions,\n type DatasetSearchOptions,\n type DatasetSearchResponse,\n type DataSourceRequest,\n type DataSourceRequestWritable,\n type DataSourceResponse,\n type DownloadUrlResponse,\n type ErrorResponse,\n type ExecuteActionRequest,\n type ExecuteActionResponse,\n type ExecuteSqlMeta,\n type ExecuteSqlRequest,\n type ExecuteSqlResponse,\n type GenericTableColumnRequest,\n type GenericTableColumnResponse,\n type GenericTableResponse,\n type IngestFileRequest,\n type IngestRequest,\n type InteroperabilityContractAiAgentRequestWritable,\n type InteroperabilityContractListResponse,\n type InteroperabilityContractRequestWritable,\n type InteroperabilityContractResponse,\n type InteroperabilityRunRequest,\n type InteroperabilityRunResponse,\n type MdmVerifyRequest,\n type MdmVerifyResponse,\n type PaginationMeta,\n type PlatformApi,\n type ResolvePageRequest,\n revokeSession,\n type RunManuallyRequestWritable,\n type RunManuallyResponse,\n type RunWorkflowRequest,\n type RunWorkflowResponse,\n type WorkflowRunResponse,\n type WorkflowRunListResponse,\n type ToolTwilioRequest,\n type ToolTwilioRequestWritable,\n type ToolTwilioResponse,\n type TwilioRequest,\n type TwilioRequestWritable,\n type TwilioResponse,\n type SessionResponse,\n type SessionResult,\n type SyncRoutesResponse,\n type TemplateConfig,\n type TenantListResponse,\n type TenantResponse,\n type TextToSqlRequest,\n type TextToSqlResponse,\n ToolIntent,\n type ToolRequest,\n type ToolRequestWritable,\n type ToolResponse,\n type UpdatePageRequest,\n type UploadLinkRequest,\n type UploadLinkResponse,\n type WorkflowAiAgentRequestWritable,\n type WorkflowLogListResponse,\n type WorkflowLogResponse,\n} from './client.js';\n\n// Environment catalogue (generated from <monorepo-root>/openapi.yaml#servers\n// per v10 reversal). Exposed here so the CLI package can resolve `--env`\n// against the same canonical list the SDK uses to construct default base URLs.\nexport {\n DEFAULT_ENVIRONMENT,\n ENVIRONMENTS,\n type EnvironmentName,\n} from './environments.generated.js';\n\n// Membership narrow over the env catalogue above. This is NOT a request/response\n// validator (the package still ships none — see the note below); it only checks an\n// arbitrary string against the SDK's own canonical env list, letting consumers\n// validate `ALVERA_ENV`-style input instead of an unchecked `as EnvironmentName` cast.\nexport function isEnvironmentName(name: string): name is EnvironmentName {\n return Object.prototype.hasOwnProperty.call(ENVIRONMENTS, name);\n}\n\n// NOTE: there is intentionally NO `export *` from a generated module here.\n// The SDK ships TYPES + a fetch client only — it exposes no runtime\n// validators. Body validation is server-authoritative (requests → 422\n// `AlveraApiError`, responses → OpenApiSpex cast). The `alvera` CLI does its\n// own local AJV pre-flight at `plan` time, off the same `openapi.yaml`; it is\n// CLI-internal and not part of this package's surface.\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["lastEventId: string | undefined","retryDelay: number","requestInit: RequestInit","dataLines: Array<string>","eventName: string | undefined","data: unknown","joinedValues","values: string[]","style: ArraySeparatorStyle","search: string[]","buildUrl: Client['buildUrl']","entries: Array<[string, string]>","config","request: Client['request']","requestInit: ReqInit","request","response: Response","error","finalError","emptyData: any","data: any","jsonError: unknown","url","_buildUrl: Client['buildUrl']"],"sources":["../src/environments.generated.ts","../src/generated/core/bodySerializer.gen.ts","../src/generated/core/serverSentEvents.gen.ts","../src/generated/core/pathSerializer.gen.ts","../src/generated/core/utils.gen.ts","../src/generated/core/auth.gen.ts","../src/generated/client/utils.gen.ts","../src/generated/client/client.gen.ts","../src/generated/client.gen.ts","../src/generated/sdk.gen.ts","../src/generated/types.gen.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["// Generated from <monorepo-root>/openapi.yaml by scripts/gen-environments.ts — do not edit.\n\nexport interface EnvironmentConfig {\n readonly base_url: string;\n readonly description: string;\n}\n\nexport const ENVIRONMENTS = {\n local: { base_url: \"http://localhost:4000\", description: \"Development server\" },\n mock: { base_url: \"http://localhost:4010\", description: \"Mock server with limited state — spin up using alvera-cli (https://github.com/alvera-ai/homebrew-tap)\" },\n demo: { base_url: \"https://platform-hh.alvera.ai\", description: \"Himangshu Demo server\" },\n prod: { base_url: \"https://app.alvera.ai\", description: \"Prod Server\" },\n} as const satisfies Readonly<Record<string, EnvironmentConfig>>;\n\nexport const DEFAULT_ENVIRONMENT = \"prod\" as const;\n\nexport type EnvironmentName = keyof typeof ENVIRONMENTS;\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';\n\nexport type QuerySerializer = (query: Record<string, unknown>) => string;\n\nexport type BodySerializer = (body: unknown) => unknown;\n\ntype QuerySerializerOptionsObject = {\n allowReserved?: boolean;\n array?: Partial<SerializerOptions<ArrayStyle>>;\n object?: Partial<SerializerOptions<ObjectStyle>>;\n};\n\nexport type QuerySerializerOptions = QuerySerializerOptionsObject & {\n /**\n * Per-parameter serialization overrides. When provided, these settings\n * override the global array/object settings for specific parameter names.\n */\n parameters?: Record<string, QuerySerializerOptionsObject>;\n};\n\nconst serializeFormDataPair = (data: FormData, key: string, value: unknown): void => {\n if (typeof value === 'string' || value instanceof Blob) {\n data.append(key, value);\n } else if (value instanceof Date) {\n data.append(key, value.toISOString());\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nconst serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => {\n if (typeof value === 'string') {\n data.append(key, value);\n } else {\n data.append(key, JSON.stringify(value));\n }\n};\n\nexport const formDataBodySerializer = {\n bodySerializer: (body: unknown): FormData => {\n const data = new FormData();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeFormDataPair(data, key, v));\n } else {\n serializeFormDataPair(data, key, value);\n }\n });\n\n return data;\n },\n};\n\nexport const jsonBodySerializer = {\n bodySerializer: (body: unknown): string =>\n JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)),\n};\n\nexport const urlSearchParamsBodySerializer = {\n bodySerializer: (body: unknown): string => {\n const data = new URLSearchParams();\n\n Object.entries(body as Record<string, unknown>).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((v) => serializeUrlSearchParamsPair(data, key, v));\n } else {\n serializeUrlSearchParamsPair(data, key, value);\n }\n });\n\n return data.toString();\n },\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Config } from './types.gen';\n\nexport type ServerSentEventsOptions<TData = unknown> = Omit<RequestInit, 'method'> &\n Pick<Config, 'method' | 'responseTransformer' | 'responseValidator'> & {\n /**\n * Fetch API implementation. You can use this option to provide a custom\n * fetch instance.\n *\n * @default globalThis.fetch\n */\n fetch?: typeof fetch;\n /**\n * Implementing clients can call request interceptors inside this hook.\n */\n onRequest?: (url: string, init: RequestInit) => Promise<Request>;\n /**\n * Callback invoked when a network or parsing error occurs during streaming.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param error The error that occurred.\n */\n onSseError?: (error: unknown) => void;\n /**\n * Callback invoked when an event is streamed from the server.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @param event Event streamed from the server.\n * @returns Nothing (void).\n */\n onSseEvent?: (event: StreamEvent<TData>) => void;\n serializedBody?: RequestInit['body'];\n /**\n * Default retry delay in milliseconds.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 3000\n */\n sseDefaultRetryDelay?: number;\n /**\n * Maximum number of retry attempts before giving up.\n */\n sseMaxRetryAttempts?: number;\n /**\n * Maximum retry delay in milliseconds.\n *\n * Applies only when exponential backoff is used.\n *\n * This option applies only if the endpoint returns a stream of events.\n *\n * @default 30000\n */\n sseMaxRetryDelay?: number;\n /**\n * Optional sleep function for retry backoff.\n *\n * Defaults to using `setTimeout`.\n */\n sseSleepFn?: (ms: number) => Promise<void>;\n url: string;\n };\n\nexport interface StreamEvent<TData = unknown> {\n data: TData;\n event?: string;\n id?: string;\n retry?: number;\n}\n\nexport type ServerSentEventsResult<TData = unknown, TReturn = void, TNext = unknown> = {\n stream: AsyncGenerator<\n TData extends Record<string, unknown> ? TData[keyof TData] : TData,\n TReturn,\n TNext\n >;\n};\n\nexport function createSseClient<TData = unknown>({\n onRequest,\n onSseError,\n onSseEvent,\n responseTransformer,\n responseValidator,\n sseDefaultRetryDelay,\n sseMaxRetryAttempts,\n sseMaxRetryDelay,\n sseSleepFn,\n url,\n ...options\n}: ServerSentEventsOptions): ServerSentEventsResult<TData> {\n let lastEventId: string | undefined;\n\n const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms)));\n\n const createStream = async function* () {\n let retryDelay: number = sseDefaultRetryDelay ?? 3000;\n let attempt = 0;\n const signal = options.signal ?? new AbortController().signal;\n\n while (true) {\n if (signal.aborted) break;\n\n attempt++;\n\n const headers =\n options.headers instanceof Headers\n ? options.headers\n : new Headers(options.headers as Record<string, string> | undefined);\n\n if (lastEventId !== undefined) {\n headers.set('Last-Event-ID', lastEventId);\n }\n\n try {\n const requestInit: RequestInit = {\n redirect: 'follow',\n ...options,\n body: options.serializedBody,\n headers,\n signal,\n };\n let request = new Request(url, requestInit);\n if (onRequest) {\n request = await onRequest(url, requestInit);\n }\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = options.fetch ?? globalThis.fetch;\n const response = await _fetch(request);\n\n if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`);\n\n if (!response.body) throw new Error('No body in SSE response');\n\n const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();\n\n let buffer = '';\n\n const abortHandler = () => {\n try {\n reader.cancel();\n } catch {\n // noop\n }\n };\n\n signal.addEventListener('abort', abortHandler);\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += value;\n buffer = buffer.replace(/\\r\\n?/g, '\\n'); // normalize line endings\n\n const chunks = buffer.split('\\n\\n');\n buffer = chunks.pop() ?? '';\n\n for (const chunk of chunks) {\n const lines = chunk.split('\\n');\n const dataLines: Array<string> = [];\n let eventName: string | undefined;\n\n for (const line of lines) {\n if (line.startsWith('data:')) {\n dataLines.push(line.replace(/^data:\\s*/, ''));\n } else if (line.startsWith('event:')) {\n eventName = line.replace(/^event:\\s*/, '');\n } else if (line.startsWith('id:')) {\n lastEventId = line.replace(/^id:\\s*/, '');\n } else if (line.startsWith('retry:')) {\n const parsed = Number.parseInt(line.replace(/^retry:\\s*/, ''), 10);\n if (!Number.isNaN(parsed)) {\n retryDelay = parsed;\n }\n }\n }\n\n let data: unknown;\n let parsedJson = false;\n\n if (dataLines.length) {\n const rawData = dataLines.join('\\n');\n try {\n data = JSON.parse(rawData);\n parsedJson = true;\n } catch {\n data = rawData;\n }\n }\n\n if (parsedJson) {\n if (responseValidator) {\n await responseValidator(data);\n }\n\n if (responseTransformer) {\n data = await responseTransformer(data);\n }\n }\n\n onSseEvent?.({\n data,\n event: eventName,\n id: lastEventId,\n retry: retryDelay,\n });\n\n if (dataLines.length) {\n yield data as any;\n }\n }\n }\n } finally {\n signal.removeEventListener('abort', abortHandler);\n reader.releaseLock();\n }\n\n break; // exit loop on normal completion\n } catch (error) {\n // connection failed or aborted; retry after delay\n onSseError?.(error);\n\n if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) {\n break; // stop after firing error\n }\n\n // exponential backoff: double retry each attempt, cap at 30s\n const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000);\n await sleep(backoff);\n }\n }\n };\n\n const stream = createStream();\n\n return { stream };\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\ninterface SerializeOptions<T> extends SerializePrimitiveOptions, SerializerOptions<T> {}\n\ninterface SerializePrimitiveOptions {\n allowReserved?: boolean;\n name: string;\n}\n\nexport interface SerializerOptions<T> {\n /**\n * @default true\n */\n explode: boolean;\n style: T;\n}\n\nexport type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';\nexport type ArraySeparatorStyle = ArrayStyle | MatrixStyle;\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\nexport type ObjectStyle = 'form' | 'deepObject';\ntype ObjectSeparatorStyle = ObjectStyle | MatrixStyle;\n\ninterface SerializePrimitiveParam extends SerializePrimitiveOptions {\n value: string;\n}\n\nexport const separatorArrayExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const separatorArrayNoExplode = (style: ArraySeparatorStyle) => {\n switch (style) {\n case 'form':\n return ',';\n case 'pipeDelimited':\n return '|';\n case 'spaceDelimited':\n return '%20';\n default:\n return ',';\n }\n};\n\nexport const separatorObjectExplode = (style: ObjectSeparatorStyle) => {\n switch (style) {\n case 'label':\n return '.';\n case 'matrix':\n return ';';\n case 'simple':\n return ',';\n default:\n return '&';\n }\n};\n\nexport const serializeArrayParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n}: SerializeOptions<ArraySeparatorStyle> & {\n value: unknown[];\n}) => {\n if (!explode) {\n const joinedValues = (\n allowReserved ? value : value.map((v) => encodeURIComponent(v as string))\n ).join(separatorArrayNoExplode(style));\n switch (style) {\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n case 'simple':\n return joinedValues;\n default:\n return `${name}=${joinedValues}`;\n }\n }\n\n const separator = separatorArrayExplode(style);\n const joinedValues = value\n .map((v) => {\n if (style === 'label' || style === 'simple') {\n return allowReserved ? v : encodeURIComponent(v as string);\n }\n\n return serializePrimitiveParam({\n allowReserved,\n name,\n value: v as string,\n });\n })\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n\nexport const serializePrimitiveParam = ({\n allowReserved,\n name,\n value,\n}: SerializePrimitiveParam) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n if (typeof value === 'object') {\n throw new Error(\n 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.',\n );\n }\n\n return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;\n};\n\nexport const serializeObjectParam = ({\n allowReserved,\n explode,\n name,\n style,\n value,\n valueOnly,\n}: SerializeOptions<ObjectSeparatorStyle> & {\n value: Record<string, unknown> | Date;\n valueOnly?: boolean;\n}) => {\n if (value instanceof Date) {\n return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;\n }\n\n if (style !== 'deepObject' && !explode) {\n let values: string[] = [];\n Object.entries(value).forEach(([key, v]) => {\n values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)];\n });\n const joinedValues = values.join(',');\n switch (style) {\n case 'form':\n return `${name}=${joinedValues}`;\n case 'label':\n return `.${joinedValues}`;\n case 'matrix':\n return `;${name}=${joinedValues}`;\n default:\n return joinedValues;\n }\n }\n\n const separator = separatorObjectExplode(style);\n const joinedValues = Object.entries(value)\n .map(([key, v]) =>\n serializePrimitiveParam({\n allowReserved,\n name: style === 'deepObject' ? `${name}[${key}]` : key,\n value: v as string,\n }),\n )\n .join(separator);\n return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { BodySerializer, QuerySerializer } from './bodySerializer.gen';\nimport {\n type ArraySeparatorStyle,\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from './pathSerializer.gen';\n\nexport interface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nexport const PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(match, serializeArrayParam({ explode, name, style, value }));\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return url;\n};\n\nexport function getValidRequestBody(options: {\n body?: unknown;\n bodySerializer?: BodySerializer | null;\n serializedBody?: unknown;\n}) {\n const hasBody = options.body !== undefined;\n const isSerializedBody = hasBody && options.bodySerializer;\n\n if (isSerializedBody) {\n if ('serializedBody' in options) {\n const hasSerializedBody =\n options.serializedBody !== undefined && options.serializedBody !== '';\n\n return hasSerializedBody ? options.serializedBody : null;\n }\n\n // not all clients implement a serializedBody property (i.e., client-axios)\n return options.body !== '' ? options.body : null;\n }\n\n // plain/text body\n if (hasBody) {\n return options.body;\n }\n\n // no body was provided\n return undefined;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type AuthToken = string | undefined;\n\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const getAuthToken = async (\n auth: Auth,\n callback: ((auth: Auth) => Promise<AuthToken> | AuthToken) | AuthToken,\n): Promise<string | undefined> => {\n const token = typeof callback === 'function' ? await callback(auth) : callback;\n\n if (!token) {\n return;\n }\n\n if (auth.scheme === 'bearer') {\n return `Bearer ${token}`;\n }\n\n if (auth.scheme === 'basic') {\n return `Basic ${btoa(token)}`;\n }\n\n return token;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { getAuthToken } from '../core/auth.gen';\nimport type { QuerySerializerOptions } from '../core/bodySerializer.gen';\nimport { jsonBodySerializer } from '../core/bodySerializer.gen';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../core/pathSerializer.gen';\nimport { getUrl } from '../core/utils.gen';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types.gen';\n\nexport const createQuerySerializer = <T = unknown>({\n parameters = {},\n ...args\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n const options = parameters[name] || args;\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...options.array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved: options.allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...options.object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved: options.allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (contentType: string | null): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (cleanContent.startsWith('application/json') || cleanContent.endsWith('+json')) {\n return 'json';\n }\n\n if (cleanContent === 'multipart/form-data') {\n return 'formData';\n }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) => cleanContent.startsWith(type))\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n\n return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nconst headersEntries = (headers: Headers): Array<[string, string]> => {\n const entries: Array<[string, string]> = [];\n headers.forEach((value, key) => {\n entries.push([key, value]);\n });\n return entries;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header) {\n continue;\n }\n\n const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e., their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (request: Req, options: Options) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n fns: Array<Interceptor | null> = [];\n\n clear(): void {\n this.fns = [];\n }\n\n eject(id: number | Interceptor): void {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = null;\n }\n }\n\n exists(id: number | Interceptor): boolean {\n const index = this.getInterceptorIndex(id);\n return Boolean(this.fns[index]);\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this.fns[id] ? id : -1;\n }\n return this.fns.indexOf(id);\n }\n\n update(id: number | Interceptor, fn: Interceptor): number | Interceptor | false {\n const index = this.getInterceptorIndex(id);\n if (this.fns[index]) {\n this.fns[index] = fn;\n return id;\n }\n return false;\n }\n\n use(fn: Interceptor): number {\n this.fns.push(fn);\n return this.fns.length - 1;\n }\n}\n\nexport interface Middleware<Req, Res, Err, Options> {\n error: Interceptors<ErrInterceptor<Err, Res, Req, Options>>;\n request: Interceptors<ReqInterceptor<Req, Options>>;\n response: Interceptors<ResInterceptor<Res, Req, Options>>;\n}\n\nexport const createInterceptors = <Req, Res, Err, Options>(): Middleware<\n Req,\n Res,\n Err,\n Options\n> => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { createSseClient } from '../core/serverSentEvents.gen';\nimport type { HttpMethod } from '../core/types.gen';\nimport { getValidRequestBody } from '../core/utils.gen';\nimport type { Client, Config, RequestOptions, ResolvedRequestOptions } from './types.gen';\nimport {\n buildUrl,\n createConfig,\n createInterceptors,\n getParseAs,\n mergeConfigs,\n mergeHeaders,\n setAuthParams,\n} from './utils.gen';\n\ntype ReqInit = Omit<RequestInit, 'body' | 'headers'> & {\n body?: any;\n headers: ReturnType<typeof mergeHeaders>;\n};\n\nexport const createClient = (config: Config = {}): Client => {\n let _config = mergeConfigs(createConfig(), config);\n\n const getConfig = (): Config => ({ ..._config });\n\n const setConfig = (config: Config): Config => {\n _config = mergeConfigs(_config, config);\n return getConfig();\n };\n\n const interceptors = createInterceptors<Request, Response, unknown, ResolvedRequestOptions>();\n\n const beforeRequest = async <\n TData = unknown,\n TResponseStyle extends 'data' | 'fields' = 'fields',\n ThrowOnError extends boolean = boolean,\n Url extends string = string,\n >(\n options: RequestOptions<TData, TResponseStyle, ThrowOnError, Url>,\n ) => {\n const opts = {\n ..._config,\n ...options,\n fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,\n headers: mergeHeaders(_config.headers, options.headers),\n serializedBody: undefined as string | undefined,\n };\n\n if (opts.security) {\n await setAuthParams({\n ...opts,\n security: opts.security,\n });\n }\n\n if (opts.requestValidator) {\n await opts.requestValidator(opts);\n }\n\n if (opts.body !== undefined && opts.bodySerializer) {\n opts.serializedBody = opts.bodySerializer(opts.body) as string | undefined;\n }\n\n // remove Content-Type header if body is empty to avoid sending invalid requests\n if (opts.body === undefined || opts.serializedBody === '') {\n opts.headers.delete('Content-Type');\n }\n\n const resolvedOpts = opts as typeof opts &\n ResolvedRequestOptions<TResponseStyle, ThrowOnError, Url>;\n const url = buildUrl(resolvedOpts);\n\n return { opts: resolvedOpts, url };\n };\n\n const request: Client['request'] = async (options) => {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n let request = new Request(url, requestInit);\n\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n\n // fetch must be assigned here, otherwise it would throw the error:\n // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation\n const _fetch = opts.fetch!;\n let response: Response;\n\n try {\n response = await _fetch(request);\n } catch (error) {\n // Handle fetch exceptions (AbortError, network errors, etc.)\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, undefined as any, request, opts)) as unknown;\n }\n }\n\n finalError = finalError || ({} as unknown);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // Return error response\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response: undefined as any,\n };\n }\n\n for (const fn of interceptors.response.fns) {\n if (fn) {\n response = await fn(response, request, opts);\n }\n }\n\n const result = {\n request,\n response,\n };\n\n if (response.ok) {\n const parseAs =\n (opts.parseAs === 'auto'\n ? getParseAs(response.headers.get('Content-Type'))\n : opts.parseAs) ?? 'json';\n\n if (response.status === 204 || response.headers.get('Content-Length') === '0') {\n let emptyData: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'text':\n emptyData = await response[parseAs]();\n break;\n case 'formData':\n emptyData = new FormData();\n break;\n case 'stream':\n emptyData = response.body;\n break;\n case 'json':\n default:\n emptyData = {};\n break;\n }\n return opts.responseStyle === 'data'\n ? emptyData\n : {\n data: emptyData,\n ...result,\n };\n }\n\n let data: any;\n switch (parseAs) {\n case 'arrayBuffer':\n case 'blob':\n case 'formData':\n case 'text':\n data = await response[parseAs]();\n break;\n case 'json': {\n // Some servers return 200 with no Content-Length and empty body.\n // response.json() would throw; read as text and parse if non-empty.\n const text = await response.text();\n data = text ? JSON.parse(text) : {};\n break;\n }\n case 'stream':\n return opts.responseStyle === 'data'\n ? response.body\n : {\n data: response.body,\n ...result,\n };\n }\n\n if (parseAs === 'json') {\n if (opts.responseValidator) {\n await opts.responseValidator(data);\n }\n\n if (opts.responseTransformer) {\n data = await opts.responseTransformer(data);\n }\n }\n\n return opts.responseStyle === 'data'\n ? data\n : {\n data,\n ...result,\n };\n }\n\n const textError = await response.text();\n let jsonError: unknown;\n\n try {\n jsonError = JSON.parse(textError);\n } catch {\n // noop\n }\n\n const error = jsonError ?? textError;\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = (await fn(error, response, request, opts)) as string;\n }\n }\n\n finalError = finalError || ({} as string);\n\n if (opts.throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return opts.responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n ...result,\n };\n };\n\n const makeMethodFn = (method: Uppercase<HttpMethod>) => (options: RequestOptions) =>\n request({ ...options, method });\n\n const makeSseFn = (method: Uppercase<HttpMethod>) => async (options: RequestOptions) => {\n const { opts, url } = await beforeRequest(options);\n return createSseClient({\n ...opts,\n body: opts.body as BodyInit | null | undefined,\n headers: opts.headers as unknown as Record<string, string>,\n method,\n onRequest: async (url, init) => {\n let request = new Request(url, init);\n for (const fn of interceptors.request.fns) {\n if (fn) {\n request = await fn(request, opts);\n }\n }\n return request;\n },\n serializedBody: getValidRequestBody(opts) as BodyInit | null | undefined,\n url,\n });\n };\n\n const _buildUrl: Client['buildUrl'] = (options) => buildUrl({ ..._config, ...options });\n\n return {\n buildUrl: _buildUrl,\n connect: makeMethodFn('CONNECT'),\n delete: makeMethodFn('DELETE'),\n get: makeMethodFn('GET'),\n getConfig,\n head: makeMethodFn('HEAD'),\n interceptors,\n options: makeMethodFn('OPTIONS'),\n patch: makeMethodFn('PATCH'),\n post: makeMethodFn('POST'),\n put: makeMethodFn('PUT'),\n request,\n setConfig,\n sse: {\n connect: makeSseFn('CONNECT'),\n delete: makeSseFn('DELETE'),\n get: makeSseFn('GET'),\n head: makeSseFn('HEAD'),\n options: makeSseFn('OPTIONS'),\n patch: makeSseFn('PATCH'),\n post: makeSseFn('POST'),\n put: makeSseFn('PUT'),\n trace: makeSseFn('TRACE'),\n },\n trace: makeMethodFn('TRACE'),\n } as Client;\n};\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from './client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'http://localhost:4000' }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { PlatformApiActionStatusUpdaterControllerChecksumData, PlatformApiActionStatusUpdaterControllerChecksumErrors, PlatformApiActionStatusUpdaterControllerChecksumResponses, PlatformApiActionStatusUpdaterControllerCreateData, PlatformApiActionStatusUpdaterControllerCreateErrors, PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerDeleteData, PlatformApiActionStatusUpdaterControllerDeleteErrors, PlatformApiActionStatusUpdaterControllerDeleteResponses, PlatformApiActionStatusUpdaterControllerIndexData, PlatformApiActionStatusUpdaterControllerIndexErrors, PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerMetadataData, PlatformApiActionStatusUpdaterControllerMetadataDetailsData, PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors, PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses, PlatformApiActionStatusUpdaterControllerMetadataErrors, PlatformApiActionStatusUpdaterControllerMetadataResponses, PlatformApiActionStatusUpdaterControllerRefreshData, PlatformApiActionStatusUpdaterControllerRefreshErrors, PlatformApiActionStatusUpdaterControllerRefreshResponses, PlatformApiActionStatusUpdaterControllerShowData, PlatformApiActionStatusUpdaterControllerShowErrors, PlatformApiActionStatusUpdaterControllerShowResponses, PlatformApiActionStatusUpdaterControllerUpdateData, PlatformApiActionStatusUpdaterControllerUpdateErrors, PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiAgenticWorkflowControllerChecksumData, PlatformApiAgenticWorkflowControllerChecksumErrors, PlatformApiAgenticWorkflowControllerChecksumResponses, PlatformApiAgenticWorkflowControllerCreateData, PlatformApiAgenticWorkflowControllerCreateErrors, PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerDeleteData, PlatformApiAgenticWorkflowControllerDeleteErrors, PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerIndexData, PlatformApiAgenticWorkflowControllerIndexErrors, PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerMetadataData, PlatformApiAgenticWorkflowControllerMetadataDetailsData, PlatformApiAgenticWorkflowControllerMetadataDetailsErrors, PlatformApiAgenticWorkflowControllerMetadataDetailsResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerShowData, PlatformApiAgenticWorkflowControllerShowErrors, PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerUpdateData, PlatformApiAgenticWorkflowControllerUpdateErrors, PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteData, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAiAgentControllerChecksumData, PlatformApiAiAgentControllerChecksumErrors, PlatformApiAiAgentControllerChecksumResponses, PlatformApiAiAgentControllerCreateData, PlatformApiAiAgentControllerCreateErrors, PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerDeleteData, PlatformApiAiAgentControllerDeleteErrors, PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerIndexData, PlatformApiAiAgentControllerIndexErrors, PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerInvokeData, PlatformApiAiAgentControllerInvokeErrors, PlatformApiAiAgentControllerInvokeResponses, PlatformApiAiAgentControllerMetadataData, PlatformApiAiAgentControllerMetadataDetailsData, PlatformApiAiAgentControllerMetadataDetailsErrors, PlatformApiAiAgentControllerMetadataDetailsResponses, PlatformApiAiAgentControllerMetadataErrors, PlatformApiAiAgentControllerMetadataResponses, PlatformApiAiAgentControllerShowData, PlatformApiAiAgentControllerShowErrors, PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerUpdateData, PlatformApiAiAgentControllerUpdateErrors, PlatformApiAiAgentControllerUpdateResponses, PlatformApiConnectedAppControllerResolvePageData, PlatformApiConnectedAppControllerResolvePageErrors, PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingData, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppMgmtControllerChecksumData, PlatformApiConnectedAppMgmtControllerChecksumErrors, PlatformApiConnectedAppMgmtControllerChecksumResponses, PlatformApiConnectedAppMgmtControllerCreateData, PlatformApiConnectedAppMgmtControllerCreateErrors, PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerDeleteData, PlatformApiConnectedAppMgmtControllerDeleteErrors, PlatformApiConnectedAppMgmtControllerDeleteResponses, PlatformApiConnectedAppMgmtControllerIndexData, PlatformApiConnectedAppMgmtControllerIndexErrors, PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerMetadataData, PlatformApiConnectedAppMgmtControllerMetadataDetailsData, PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors, PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses, PlatformApiConnectedAppMgmtControllerMetadataErrors, PlatformApiConnectedAppMgmtControllerMetadataResponses, PlatformApiConnectedAppMgmtControllerShowData, PlatformApiConnectedAppMgmtControllerShowErrors, PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesData, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerUpdateData, PlatformApiConnectedAppMgmtControllerUpdateErrors, PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiDataActivationClientControllerChecksumData, PlatformApiDataActivationClientControllerChecksumErrors, PlatformApiDataActivationClientControllerChecksumResponses, PlatformApiDataActivationClientControllerCreateData, PlatformApiDataActivationClientControllerCreateErrors, PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerDeleteData, PlatformApiDataActivationClientControllerDeleteErrors, PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerIndexData, PlatformApiDataActivationClientControllerIndexErrors, PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIngestData, PlatformApiDataActivationClientControllerIngestErrors, PlatformApiDataActivationClientControllerIngestFileData, PlatformApiDataActivationClientControllerIngestFileErrors, PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerLogShowData, PlatformApiDataActivationClientControllerLogShowErrors, PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogsIndexData, PlatformApiDataActivationClientControllerLogsIndexErrors, PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerMetadataData, PlatformApiDataActivationClientControllerMetadataDetailsData, PlatformApiDataActivationClientControllerMetadataDetailsErrors, PlatformApiDataActivationClientControllerMetadataDetailsResponses, PlatformApiDataActivationClientControllerMetadataErrors, PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerRunManuallyData, PlatformApiDataActivationClientControllerRunManuallyErrors, PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerShowData, PlatformApiDataActivationClientControllerShowErrors, PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerUpdateData, PlatformApiDataActivationClientControllerUpdateErrors, PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDatalakeControllerChecksumData, PlatformApiDatalakeControllerChecksumErrors, PlatformApiDatalakeControllerChecksumResponses, PlatformApiDatalakeControllerCreateData, PlatformApiDatalakeControllerCreateDownloadLinkData, PlatformApiDatalakeControllerCreateDownloadLinkErrors, PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateErrors, PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateUploadLinkData, PlatformApiDatalakeControllerCreateUploadLinkErrors, PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerDeleteData, PlatformApiDatalakeControllerDeleteErrors, PlatformApiDatalakeControllerDeleteResponses, PlatformApiDatalakeControllerExecuteSqlData, PlatformApiDatalakeControllerExecuteSqlErrors, PlatformApiDatalakeControllerExecuteSqlResponses, PlatformApiDatalakeControllerIndexData, PlatformApiDatalakeControllerIndexErrors, PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerMetadataData, PlatformApiDatalakeControllerMetadataDetailsData, PlatformApiDatalakeControllerMetadataDetailsErrors, PlatformApiDatalakeControllerMetadataDetailsResponses, PlatformApiDatalakeControllerMetadataErrors, PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMigrateData, PlatformApiDatalakeControllerMigrateErrors, PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerShowData, PlatformApiDatalakeControllerShowErrors, PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerSystemDatasetsData, PlatformApiDatalakeControllerSystemDatasetsErrors, PlatformApiDatalakeControllerSystemDatasetsResponses, PlatformApiDatalakeControllerTextToSqlData, PlatformApiDatalakeControllerTextToSqlErrors, PlatformApiDatalakeControllerTextToSqlResponses, PlatformApiDatalakeControllerUpdateData, PlatformApiDatalakeControllerUpdateErrors, PlatformApiDatalakeControllerUpdateResponses, PlatformApiDatasetControllerCreateUserSearchData, PlatformApiDatasetControllerCreateUserSearchErrors, PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerDatasetMetadataData, PlatformApiDatasetControllerDatasetMetadataErrors, PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerMetadataData, PlatformApiDatasetControllerMetadataErrors, PlatformApiDatasetControllerMetadataResponses, PlatformApiDatasetControllerSearchData, PlatformApiDatasetControllerSearchErrors, PlatformApiDatasetControllerSearchResponses, PlatformApiDataSourceControllerChecksumData, PlatformApiDataSourceControllerChecksumErrors, PlatformApiDataSourceControllerChecksumResponses, PlatformApiDataSourceControllerCreateData, PlatformApiDataSourceControllerCreateErrors, PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerDeleteData, PlatformApiDataSourceControllerDeleteErrors, PlatformApiDataSourceControllerDeleteResponses, PlatformApiDataSourceControllerIndexData, PlatformApiDataSourceControllerIndexErrors, PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerMetadataData, PlatformApiDataSourceControllerMetadataDetailsData, PlatformApiDataSourceControllerMetadataDetailsErrors, PlatformApiDataSourceControllerMetadataDetailsResponses, PlatformApiDataSourceControllerMetadataErrors, PlatformApiDataSourceControllerMetadataResponses, PlatformApiDataSourceControllerShowData, PlatformApiDataSourceControllerShowErrors, PlatformApiDataSourceControllerShowResponses, PlatformApiDataSourceControllerUpdateData, PlatformApiDataSourceControllerUpdateErrors, PlatformApiDataSourceControllerUpdateResponses, PlatformApiGenericTableControllerChecksumData, PlatformApiGenericTableControllerChecksumErrors, PlatformApiGenericTableControllerChecksumResponses, PlatformApiGenericTableControllerCreateData, PlatformApiGenericTableControllerCreateErrors, PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerDeleteData, PlatformApiGenericTableControllerDeleteErrors, PlatformApiGenericTableControllerDeleteResponses, PlatformApiGenericTableControllerIndexData, PlatformApiGenericTableControllerIndexErrors, PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerMetadataData, PlatformApiGenericTableControllerMetadataDetailsData, PlatformApiGenericTableControllerMetadataDetailsErrors, PlatformApiGenericTableControllerMetadataDetailsResponses, PlatformApiGenericTableControllerMetadataErrors, PlatformApiGenericTableControllerMetadataResponses, PlatformApiGenericTableControllerShowData, PlatformApiGenericTableControllerShowErrors, PlatformApiGenericTableControllerShowResponses, PlatformApiGenericTableControllerUpdateData, PlatformApiGenericTableControllerUpdateErrors, PlatformApiGenericTableControllerUpdateResponses, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerSignUpData, PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors, PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses, PlatformApiInteroperabilityContractControllerChecksumData, PlatformApiInteroperabilityContractControllerChecksumErrors, PlatformApiInteroperabilityContractControllerChecksumResponses, PlatformApiInteroperabilityContractControllerCreateData, PlatformApiInteroperabilityContractControllerCreateErrors, PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerDeleteData, PlatformApiInteroperabilityContractControllerDeleteErrors, PlatformApiInteroperabilityContractControllerDeleteResponses, PlatformApiInteroperabilityContractControllerIndexData, PlatformApiInteroperabilityContractControllerIndexErrors, PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerMetadataData, PlatformApiInteroperabilityContractControllerMetadataDetailsData, PlatformApiInteroperabilityContractControllerMetadataDetailsErrors, PlatformApiInteroperabilityContractControllerMetadataDetailsResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerRunData, PlatformApiInteroperabilityContractControllerRunErrors, PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerShowData, PlatformApiInteroperabilityContractControllerShowErrors, PlatformApiInteroperabilityContractControllerShowResponses, PlatformApiInteroperabilityContractControllerUpdateData, PlatformApiInteroperabilityContractControllerUpdateErrors, PlatformApiInteroperabilityContractControllerUpdateResponses, PlatformApiInvitationControllerAcceptData, PlatformApiInvitationControllerAcceptErrors, PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerCreateData, PlatformApiInvitationControllerCreateErrors, PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerIndexData, PlatformApiInvitationControllerIndexErrors, PlatformApiInvitationControllerIndexResponses, PlatformApiMdmControllerVerifyData, PlatformApiMdmControllerVerifyErrors, PlatformApiMdmControllerVerifyResponses, PlatformApiPingControllerPingData, PlatformApiPingControllerPingErrors, PlatformApiPingControllerPingResponses, PlatformApiSessionControllerCreateData, PlatformApiSessionControllerCreateErrors, PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerDeleteData, PlatformApiSessionControllerDeleteErrors, PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerVerifyApiKeyData, PlatformApiSessionControllerVerifyApiKeyErrors, PlatformApiSessionControllerVerifyApiKeyResponses, PlatformApiSessionControllerVerifyData, PlatformApiSessionControllerVerifyErrors, PlatformApiSessionControllerVerifyResponses, PlatformApiTemplatesControllerIndexData, PlatformApiTemplatesControllerIndexErrors, PlatformApiTemplatesControllerIndexResponses, PlatformApiTemplatesControllerMetadataData, PlatformApiTemplatesControllerMetadataDetailsData, PlatformApiTemplatesControllerMetadataDetailsErrors, PlatformApiTemplatesControllerMetadataDetailsResponses, PlatformApiTemplatesControllerMetadataErrors, PlatformApiTemplatesControllerMetadataResponses, PlatformApiTenantControllerCreateData, PlatformApiTenantControllerCreateErrors, PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerIndexData, PlatformApiTenantControllerIndexErrors, PlatformApiTenantControllerIndexResponses, PlatformApiToolControllerChecksumData, PlatformApiToolControllerChecksumErrors, PlatformApiToolControllerChecksumResponses, PlatformApiToolControllerCreateData, PlatformApiToolControllerCreateErrors, PlatformApiToolControllerCreateResponses, PlatformApiToolControllerDeleteData, PlatformApiToolControllerDeleteErrors, PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerIndexData, PlatformApiToolControllerIndexErrors, PlatformApiToolControllerIndexResponses, PlatformApiToolControllerMetadataData, PlatformApiToolControllerMetadataDetailsData, PlatformApiToolControllerMetadataDetailsErrors, PlatformApiToolControllerMetadataDetailsResponses, PlatformApiToolControllerMetadataErrors, PlatformApiToolControllerMetadataResponses, PlatformApiToolControllerShowData, PlatformApiToolControllerShowErrors, PlatformApiToolControllerShowResponses, PlatformApiToolControllerTestInvocationData, PlatformApiToolControllerTestInvocationErrors, PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerUpdateData, PlatformApiToolControllerUpdateErrors, PlatformApiToolControllerUpdateResponses, PlatformApiWorkflowRunControllerCancelData, PlatformApiWorkflowRunControllerCancelErrors, PlatformApiWorkflowRunControllerCancelResponses, PlatformApiWorkflowRunControllerIndexData, PlatformApiWorkflowRunControllerIndexErrors, PlatformApiWorkflowRunControllerIndexResponses, PlatformApiWorkflowRunControllerShowData, PlatformApiWorkflowRunControllerShowErrors, PlatformApiWorkflowRunControllerShowResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown> = Options2<TData, ThrowOnError, TResponse> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Compute the drift checksum for an agentic workflow config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. A client posts a desired config here and compares the result against the deployed workflow's `checksum` (from GET) to detect drift (absent / unchanged / edited).\n */\nexport const platformApiAgenticWorkflowControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerChecksumResponses, PlatformApiAgenticWorkflowControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get single generic table metadata as markdown\n *\n * Returns markdown describing one generic table's column schema, addressed by id within the datalake.\n */\nexport const platformApiGenericTableControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerMetadataDetailsResponses, PlatformApiGenericTableControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}/metadata',\n ...options\n});\n\n/**\n * Mint a public_api API key for a tenant (admin)\n *\n * Creates a `public_api` API key for a tenant and returns its plaintext\n * (shown once, same as the API-keys UI's create flow). Exists because the\n * integration-test bootstrap authenticates purely over HTTP/SDK and has no\n * LiveView console to use the normal API-keys UI.\n *\n * Wraps `Platform.ApiKeys.create_api_key/4` verbatim — **zero new business\n * logic**. Every successful call is structured-logged with `caller_user_id`,\n * `tenant_id`, and `api_key_id` for a forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/tenants/{tenant_slug}/api-keys',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single tool metadata as markdown\n *\n * Returns markdown for one tool — wrapper, body-side schema, and the test-invocation block. No shared-types section (use the catalog endpoint for that).\n */\nexport const platformApiToolControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerMetadataDetailsResponses, PlatformApiToolControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/metadata',\n ...options\n});\n\n/**\n * Data sources catalog as markdown\n *\n * Returns one page of the data source catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + bound tools. The page's pagination state is written into a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiDataSourceControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerMetadataResponses, PlatformApiDataSourceControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/metadata',\n ...options\n});\n\n/**\n * Delete a tool\n *\n * Deletes a tool. Returns 409 if the tool is referenced by another resource.\n */\nexport const platformApiToolControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiToolControllerDeleteResponses, PlatformApiToolControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options\n});\n\n/**\n * Get a tool\n *\n * Returns a single tool by ID, scoped to the current datalake.\n */\nexport const platformApiToolControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerShowResponses, PlatformApiToolControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options\n});\n\n/**\n * Replace a tool\n *\n * Replaces a tool with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiToolControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiToolControllerUpdateResponses, PlatformApiToolControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Generate datalake SQL from a natural-language prompt\n *\n * Generates a SQL statement for a natural-language `prompt` against the datalake, with\n * ordered multi-provider LLM failover. Returns the SQL plus a best-effort plain-language\n * `explanation` (`null` when the explainer is unavailable). The SQL is returned for review;\n * run it via `POST .../execute-sql`. Only the prompt + schema are sent to the LLM — no\n * datalake data leaves the boundary, so this is safe in both modes. Returns 422 when every\n * configured provider fails.\n *\n */\nexport const platformApiDatalakeControllerTextToSql = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerTextToSqlData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerTextToSqlResponses, PlatformApiDatalakeControllerTextToSqlErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/text-to-sql',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Verify an X-API-Key credential\n *\n * Returns the API-key session's tenant, role, and key information — the\n * \"who am I\" endpoint for key-only (M2M) callers. The key-only half of the\n * old dual-mode `GET /sessions/verify`, split out so each operation carries\n * exactly one security posture.\n *\n * Key-only: Bearer callers receive a 422 pointing at\n * `GET /api/v1/sessions/verify`.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiSessionControllerVerifyApiKey = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyApiKeyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyApiKeyResponses, PlatformApiSessionControllerVerifyApiKeyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/api-keys/verify',\n ...options\n});\n\n/**\n * Enqueue datalake migrations\n *\n * Enqueues a `DatalakeMigrationWorker` Oban job that brings the datalake's\n * per-tenant database to the current schema version. Required after\n * `POST /datalakes`, which only persists the metadata row — it does NOT\n * run migrations against the per-tenant DB. Without this step, every\n * downstream resource that touches per-datalake tables\n * (`data_activation_logs`, MDM tables, dataset tables) will fail with\n * `relation … does not exist`.\n *\n * Asynchronous: returns 202 Accepted as soon as the job is enqueued.\n * Callers poll `GET /datalakes/:id` and watch for `status: :ready`.\n * Idempotent at the job level — re-enqueueing on a migrated datalake\n * is a no-op once the worker completes.\n *\n * The LiveView \"Migrate Datalake\" button calls the same migrator\n * synchronously inside the LiveView process.\n *\n * Requires a tenant-scoped Bearer with membership role `admin`.\n *\n */\nexport const platformApiDatalakeControllerMigrate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMigrateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerMigrateResponses, PlatformApiDatalakeControllerMigrateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate',\n ...options\n});\n\n/**\n * Verify current Bearer session\n *\n * Returns the current Bearer session's tenant, role, and identity\n * information — the \"who am I\" endpoint for human sessions.\n *\n * Bearer sessions only: key-only (M2M) callers receive a 422 pointing at\n * `GET /api/v1/api-keys/verify`, the key-credential counterpart.\n *\n * **Requires Bearer authentication with the tenant's X-API-Key companion.**\n *\n */\nexport const platformApiSessionControllerVerify = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerVerifyData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiSessionControllerVerifyResponses, PlatformApiSessionControllerVerifyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/sessions/verify',\n ...options\n});\n\n/**\n * Compute the drift checksum for a data activation client config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed client's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDataActivationClientControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerChecksumResponses, PlatformApiDataActivationClientControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Stop refresh polling for a batch run log\n *\n * Deletes the DynamicCron job that polls this batch. The batch log is NOT deleted.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogStop = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop',\n ...options\n});\n\n/**\n * Delete a data activation client\n *\n * Deletes a DAC. Returns 422 if the DAC is a platform default (is_default=true). Returns 409 if referenced by other resources.\n */\nexport const platformApiDataActivationClientControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataActivationClientControllerDeleteResponses, PlatformApiDataActivationClientControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options\n});\n\n/**\n * Get a data activation client\n *\n * Returns a single DAC by datalake-scoped slug.\n */\nexport const platformApiDataActivationClientControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerShowResponses, PlatformApiDataActivationClientControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options\n});\n\n/**\n * Replace a data activation client\n *\n * Replaces a DAC with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.\n */\nexport const platformApiDataActivationClientControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataActivationClientControllerUpdateResponses, PlatformApiDataActivationClientControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create datalake download link\n *\n * Returns a presigned GET URL for an object stored in one of the datalake's cloud storage buckets (regulated or unregulated). Typical use: read a `DACRawLogFile.object_key` (`s3://bucket/key`) off a data-activation log row, split it into `bucket` and `key`, then POST here to obtain a short-lived download URL.\n */\nexport const platformApiDatalakeControllerCreateDownloadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateDownloadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateDownloadLinkResponses, PlatformApiDatalakeControllerCreateDownloadLinkErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a datalake\n *\n * Deletes a datalake, but only while it is a fresh, un-migrated, metadata-only\n * shell. Returns `409 Conflict` if the datalake is already `:ready` or has run\n * through any migration cycle (its per-tenant schemas are built and may hold\n * tenant data), or if it still owns any child resource (tools, workflows,\n * contracts, clients, tables, …). A deletable datalake has no physical schema,\n * so this is a pure metadata delete.\n *\n */\nexport const platformApiDatalakeControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDatalakeControllerDeleteResponses, PlatformApiDatalakeControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options\n});\n\n/**\n * Get a datalake\n *\n * Returns a single datalake by ID (non-sensitive metadata only).\n */\nexport const platformApiDatalakeControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerShowResponses, PlatformApiDatalakeControllerShowErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options\n});\n\n/**\n * Update a datalake (full replace)\n *\n * Replaces the datalake's configuration with the supplied body. PUT semantics:\n * the request body MUST carry every field — partial updates are not\n * supported. Mirrors the same `DatalakeRequest` schema as create so callers\n * can resend a full manifest unchanged.\n *\n * The platform performs the same gates as create before persisting: DB\n * connection probes against every regulated/unregulated reader/writer\n * declared in the body, plus a cloud-storage reachability probe. Any\n * probe failure surfaces as `422 Unprocessable Entity` with the failing\n * field annotated in the changeset.\n *\n * Used by `alvera apply` when the manifest's `[datalake]` block has\n * drifted from server state. Idempotent: re-applying the same body\n * against a converged datalake is a no-op at the wire level (the\n * changeset detects no changes; the row is rewritten with identical\n * values, lifecycle hooks fire).\n *\n */\nexport const platformApiDatalakeControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDatalakeControllerUpdateResponses, PlatformApiDatalakeControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List accessible tenants\n *\n * Returns a paginated list of tenants accessible to the authenticated identity.\n *\n * - **Bearer token**: returns all tenants the user has membership in.\n * - **X-API-Key**: returns the single tenant the API key is scoped to.\n *\n */\nexport const platformApiTenantControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiTenantControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiTenantControllerIndexResponses, PlatformApiTenantControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants',\n ...options\n});\n\n/**\n * Create a tenant\n *\n * Creates a new tenant and an `:admin` membership for the authenticated user.\n * Wraps `Platform.Tenants.create_tenant/3` verbatim — same primitive that\n * backs the `/app/tenants/new` LiveView.\n *\n * On success returns the freshly-created tenant (`id`, `slug`, `name`,\n * `description`). The caller's tenant-less Bearer remains valid; to obtain\n * a **tenant-scoped Bearer** for subsequent work, call\n * `POST /api/v1/sessions` with `{ tenant_slug }` — same primitive used by\n * every other tenant sign-in.\n *\n * The user must be confirmed (`confirmed_at IS NOT NULL`); unconfirmed\n * callers receive 403. Duplicate tenant names (slug collision) return 422.\n *\n * Requires `Authorization: Bearer <token>` (X-API-Key cannot create tenants —\n * it carries no platform-user identity to bind the membership to).\n *\n */\nexport const platformApiTenantControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTenantControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiTenantControllerCreateResponses, PlatformApiTenantControllerCreateErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Download execution context\n *\n * Returns a presigned URL for downloading the execution context JSON from R2.\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download',\n ...options\n});\n\n/**\n * List generic tables\n *\n * Returns a paginated list of generic tables for the datalake (custom tables + system tables for the data domain).\n */\nexport const platformApiGenericTableControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerIndexResponses, PlatformApiGenericTableControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',\n ...options\n});\n\n/**\n * Create a generic table\n *\n * Creates a new custom generic table within the datalake.\n */\nexport const platformApiGenericTableControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerCreateResponses, PlatformApiGenericTableControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List the authenticated user's pending invitations\n *\n * Returns invitations addressed to the authenticated user that have not\n * yet been accepted. Mirrors the LiveView at `/app/users/tenant-invitations`\n * that recipients see after sign-in. Wraps `Tenants.list_invitations_by_user/1`\n * verbatim — always filtered to the current user, never accepts a query\n * parameter that could leak another user's invitations.\n *\n * Requires any Bearer (tenant-less is fine — recipients typically don't\n * have tenant scope yet at this point in the bootstrap flow).\n *\n */\nexport const platformApiInvitationControllerIndex = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiInvitationControllerIndexData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiInvitationControllerIndexResponses, PlatformApiInvitationControllerIndexErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/invitations',\n ...options\n});\n\n/**\n * List interoperability contracts\n *\n * Returns a paginated list of contracts scoped to the datalake.\n */\nexport const platformApiInteroperabilityContractControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerIndexResponses, PlatformApiInteroperabilityContractControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',\n ...options\n});\n\n/**\n * Create an interoperability contract\n *\n * Creates a new contract. `slug` is auto-generated from `name` on insert.\n */\nexport const platformApiInteroperabilityContractControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerCreateResponses, PlatformApiInteroperabilityContractControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get workflows catalog as markdown\n *\n * Returns one page of the workflow catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each workflow appears with its full variable pipeline (event dataset, MDM, context datasets, enrichment, filter, decision, actions) and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiAgenticWorkflowControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataResponses, PlatformApiAgenticWorkflowControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/metadata',\n ...options\n});\n\n/**\n * Get interoperability contracts catalog as markdown\n *\n * Returns one page of the interoperability contract catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each contract appears with its target-resource field schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiInteroperabilityContractControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataResponses, PlatformApiInteroperabilityContractControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/metadata',\n ...options\n});\n\n/**\n * Get single DAC dataset metadata\n *\n * Returns a markdown document describing the fields of each dataset connected to this data activation client via its interoperability contracts.\n */\nexport const platformApiDataActivationClientControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataDetailsResponses, PlatformApiDataActivationClientControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}/metadata',\n ...options\n});\n\n/**\n * Accept a tenant invitation\n *\n * Accepts a pending invitation addressed to the authenticated user, creating\n * a `Membership` and deleting the invitation. Mirrors the LiveView flow at\n * `/app/users/tenant-invitations` → \"Accept\" button. Wraps\n * `Tenants.accept_invitation!/2` verbatim.\n *\n * The function-level guard `get_invitation_by_user!/2` ensures the invitation\n * is addressed to the caller — cross-user acceptance returns 404.\n *\n * Requires any Bearer (the recipient often has only a tenant-less Bearer at\n * this point — they just signed up and haven't joined a tenant yet).\n *\n */\nexport const platformApiInvitationControllerAccept = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerAcceptData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerAcceptResponses, PlatformApiInvitationControllerAcceptErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/invitations/{id}/accept',\n ...options\n});\n\n/**\n * Cancel a scheduled workflow run\n *\n * Stops a run that has not fired, and cancels the job that would have fired it.\n *\n * Allowed **only while the run is `scheduled`** — before its segment has been\n * resolved and before a single per-record job has been enqueued. Once the run\n * is `processing` the fan-out has begun and those jobs have no way to learn the\n * parent was cancelled; a \"cancellation\" then would report a campaign as\n * stopped while it kept sending. The endpoint returns 422 instead.\n *\n * Safe to call against a run whose job is being picked up at that exact moment:\n * the cancellation and the worker contend for the same row in one statement, so\n * exactly one wins and the other is told. A run that returns 200 here has sent\n * nothing.\n *\n */\nexport const platformApiWorkflowRunControllerCancel = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerCancelData, ThrowOnError>) => (options.client ?? client).post<PlatformApiWorkflowRunControllerCancelResponses, PlatformApiWorkflowRunControllerCancelErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}/cancel',\n ...options\n});\n\n/**\n * Create datalake upload link\n *\n * Returns a presigned PUT URL for uploading a file (NDJSON or CSV) directly to the datalake's regulated cloud storage. The returned key lives under `uploads/<datalake_id>/` and can be passed to downstream endpoints (e.g. data activation client ingest-file) that accept a pre-uploaded storage key.\n */\nexport const platformApiDatalakeControllerCreateUploadLink = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateUploadLinkData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateUploadLinkResponses, PlatformApiDatalakeControllerCreateUploadLinkErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List datalakes\n *\n * Returns a paginated list of datalakes for the authenticated tenant.\n */\nexport const platformApiDatalakeControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerIndexResponses, PlatformApiDatalakeControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes',\n ...options\n});\n\n/**\n * Create a datalake\n *\n * Creates a new datalake for the authenticated tenant.\n */\nexport const platformApiDatalakeControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerCreateResponses, PlatformApiDatalakeControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Show a single DAC processing log\n *\n * Returns a single `DataActivationLog` row scoped to this DAC. Returns 404 if the id belongs to a different client.\n */\nexport const platformApiDataActivationClientControllerLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogShowResponses, PlatformApiDataActivationClientControllerLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}',\n ...options\n});\n\n/**\n * Delete a data source\n *\n * Deletes a data source (addressed by id) within the authenticated datalake.\n */\nexport const platformApiDataSourceControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiDataSourceControllerDeleteResponses, PlatformApiDataSourceControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options\n});\n\n/**\n * Get a data source\n *\n * Returns a single data source by id within the authenticated tenant + datalake.\n */\nexport const platformApiDataSourceControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerShowResponses, PlatformApiDataSourceControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options\n});\n\n/**\n * Replace a data source\n *\n * Replaces a data source with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiDataSourceControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiDataSourceControllerUpdateResponses, PlatformApiDataSourceControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Update message tracking fields for a page\n *\n * Updates tracking timestamps (opened_at, form_submitted_at) on the message\n * linked to a page token. Called by the connected app when a user opens a page\n * or submits a form.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiConnectedAppControllerUpdateMessageTracking = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerUpdateMessageTrackingData, ThrowOnError>) => (options.client ?? client).patch<PlatformApiConnectedAppControllerUpdateMessageTrackingResponses, PlatformApiConnectedAppControllerUpdateMessageTrackingErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/update-message-tracking',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an agentic workflow\n *\n * Deletes a workflow and all associated actions, context datasets, and AI agent attachments. A workflow with run logs cannot be deleted (409 Conflict) — the logs preserve its run history; rename the workflow instead to free its name for a replacement.\n */\nexport const platformApiAgenticWorkflowControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAgenticWorkflowControllerDeleteResponses, PlatformApiAgenticWorkflowControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options\n});\n\n/**\n * Get an agentic workflow\n *\n * Returns a single workflow by ID with nested AI agents.\n */\nexport const platformApiAgenticWorkflowControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerShowResponses, PlatformApiAgenticWorkflowControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options\n});\n\n/**\n * Replace an agentic workflow\n *\n * Replaces a workflow with the full resource body. PUT semantics — all required fields must be present. AI agents are nested under `workflow_ai_agents`; the array replaces the attached set transactionally.\n */\nexport const platformApiAgenticWorkflowControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAgenticWorkflowControllerUpdateResponses, PlatformApiAgenticWorkflowControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Trigger a manual poll of an action status updater\n *\n * Enqueues one poll trampoline on demand — the manual counterpart of the cron tick, mirroring the data activation client's run-manually. Empty body or omitted `updater_body` polls with the updater's persisted `updater_body`. Supplying an `updater_body` map applies a one-shot override for this run only (e.g. a widened historical poll window) — the persisted updater is not modified. The poll runs fully asynchronously: this responds 202 with the updater row as-is; poll the updater and read the outcome from `last_run_status`, `last_run_events_found`, and `last_run_error`. Apply jobs are asynchronous too — observe message status on the message rows.\n */\nexport const platformApiActionStatusUpdaterControllerRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerRefreshResponses, PlatformApiActionStatusUpdaterControllerRefreshErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/refresh',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Resolve a short URL token to a page\n *\n * Given a connected app slug and a Puid short URL token, resolves the token to\n * the pre-stored route path and MDM subject ID. The Cloudflare app calls this\n * endpoint when a customer clicks a short URL, forwarding the original client\n * headers (user-agent, IP, country) in the request body.\n *\n * When the page token is linked to a message (via workflow action execution),\n * the regulated message details (raw body, channel, status) are included in\n * the response.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiConnectedAppControllerResolvePage = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppControllerResolvePageData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppControllerResolvePageResponses, PlatformApiConnectedAppControllerResolvePageErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/resolve-page',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a datalake config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed datalake's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDatalakeControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerChecksumResponses, PlatformApiDatalakeControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Ingest JSON data asynchronously\n *\n * Ingest a single JSON record for processing through the data activation\n * pipeline. Returns `202 Accepted` immediately with `{batch_id, key,\n * jobs_count}`; per-row work runs asynchronously on the data-activation Oban\n * queue.\n *\n * ## Per-batch artifacts (audit trail)\n *\n * The DAC pipeline does NOT use the `<step>.json` convention that workflows\n * do — its byproducts are NDJSON archives, surfaced on the\n * `DataActivationLog` row that the batch produces:\n *\n * | Field | Bucket | Body |\n * | --------------- | ------------ | ---------------------------------------------------------------------------------------- |\n * | `key` (response)| regulated | the raw JSON payload uploaded by THIS request |\n * | `input_files` | regulated | source artifacts consumed by the batch (one per ingest call merged into the batch) |\n * | `output_files` | mixed | merged NDJSON archives, one `{object_key, mode}` per bucket (`regulated` + `unregulated`)|\n *\n * ### Fetching diagnostic artifacts\n *\n * Use the same datalake download-link endpoint as workflow artifacts\n * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`):\n *\n * # raw payload that this ingest call uploaded\n * { \"bucket\": \"<regulated>\", \"key\": \"<response.key>\" }\n *\n * # per-bucket merged archive (after batch completes)\n * { \"bucket\": \"<regulated|unregulated>\", \"key\": \"<output_files[i].object_key>\" }\n *\n * `output_files[i].mode` tells you which bucket each archive lives in\n * (`regulated` for raw attrs, `unregulated` for tokenized). The regulated /\n * unregulated bucket names are exposed on the datalake response as\n * `regulated_cloud_storage.bucket` / `unregulated_cloud_storage.bucket`.\n *\n * ### Failure surfacing\n *\n * On a `{:error, _}` ingest response the platform returns `422` with an\n * `error` string. For pipeline failures (per-row Oban job exceptions),\n * the DataActivationLog row's `rows_ingested` will be lower than the\n * submitted count; per-row diagnostics live in the Oban job table\n * (`oban_jobs.errors`) keyed by `batch_id`. There is no `error.json`\n * artifact on the DAC path — that convention is workflow-only.\n *\n */\nexport const platformApiDataActivationClientControllerIngest = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestResponses, PlatformApiDataActivationClientControllerIngestErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an action status updater\n *\n * Deletes an action status updater (addressed by id) within the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiActionStatusUpdaterControllerDeleteResponses, PlatformApiActionStatusUpdaterControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options\n});\n\n/**\n * Get an action status updater\n *\n * Returns a single action status updater by id within the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerShowResponses, PlatformApiActionStatusUpdaterControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options\n});\n\n/**\n * Replace an action status updater\n *\n * Replaces an action status updater with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiActionStatusUpdaterControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiActionStatusUpdaterControllerUpdateResponses, PlatformApiActionStatusUpdaterControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Tools catalog as markdown\n *\n * Returns one page of the tools catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each tool appears with its wrapper fields, body-side schema, and the test-invocation block. The page's pagination state is written into a narrative line at the top of the body. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiToolControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerMetadataResponses, PlatformApiToolControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/metadata',\n ...options\n});\n\n/**\n * Compute the drift checksum for an AI agent config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed agent's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiAiAgentControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerChecksumResponses, PlatformApiAiAgentControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a connected app config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed app's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiConnectedAppMgmtControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerChecksumResponses, PlatformApiConnectedAppMgmtControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get a workflow run\n *\n * Returns one run with everything known about it so far.\n *\n * Which fields are populated is itself the progress report. A `scheduled` run\n * carries `preview_user_search_id`, `scheduled_at` and `matched_count` and\n * nothing else — nothing has executed. Once it fires it gains\n * `execution_user_search_id` (the search whose results **are** the audience),\n * `batch_id` and `workflow_run_log_id`. A run that failed to resolve its clause\n * carries `failure_reason`.\n *\n */\nexport const platformApiWorkflowRunControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiWorkflowRunControllerShowResponses, PlatformApiWorkflowRunControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}',\n ...options\n});\n\n/**\n * List industry-registered datasets for the datalake\n *\n * Returns the **industry-registered** dataset name strings for this\n * datalake's `data_domain` — e.g. `patient`, `appointment` for\n * healthcare; `legal_entity`, `beneficial_owner` for foundation. Each\n * name is a valid argument to\n * `GET /api/v1/datasets/:dataset_type/metadata` for the rendered\n * schema docs, and to `GET /api/v1/datasets/:dataset_type/search` for\n * row data.\n *\n * **This endpoint does not list user-defined generic tables.** Concern\n * separation: generic tables are CRUD-able resources with their own\n * lifecycle and live under\n * `GET /api/v1/tenants/:tenant_slug/datalakes/:datalake_slug/generic-tables`.\n * To enumerate the full set of queryable datasets a caller must hit\n * both endpoints (`system-datasets` for industry built-ins and\n * `generic-tables` for operator-defined ones). Each surface owns one\n * concern: enumeration here, lifecycle there.\n *\n * Pure read — no DB access on the platform side. Derived from\n * `Platform.Dataset.get_registered_datasets/1`.\n *\n */\nexport const platformApiDatalakeControllerSystemDatasets = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerSystemDatasetsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerSystemDatasetsResponses, PlatformApiDatalakeControllerSystemDatasetsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-datasets',\n ...options\n});\n\n/**\n * List AI agents\n *\n * Returns a paginated list of AI agents for the authenticated tenant.\n */\nexport const platformApiAiAgentControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerIndexResponses, PlatformApiAiAgentControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',\n ...options\n});\n\n/**\n * Create an AI agent\n *\n * Creates a new AI agent for the authenticated tenant.\n */\nexport const platformApiAiAgentControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerCreateResponses, PlatformApiAiAgentControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List workflow runs\n *\n * Returns the datalake's workflow runs, **soonest send first** — the order a\n * campaign screen reads top-down.\n *\n * Filter with `filter[status]` to answer the question the screen opens on:\n * `scheduled` is everything still cancellable, `processing` everything mid\n * fan-out. `mode` and `batch_id` are filterable too; `batch_id` is how you get\n * from a message back to the run that sent it.\n *\n * `global_search` is one box over the two things a row can be recognised by:\n * the **workflow slug** and the `batch_id`. Searching `batch_id` alone finds\n * nothing that has not fired yet — which is every run still worth acting on —\n * so the slug is in the same compound.\n *\n * `matched_count` on each row is the operator's **preview** — how many records\n * the clause matched when the run was scheduled. It is not the delivered\n * count, and it is not re-derived: the run resolves its clause again at send\n * time, so the audience can differ. Read what actually went out from the\n * workflow logs for the run's `batch_id`.\n *\n */\nexport const platformApiWorkflowRunControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiWorkflowRunControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiWorkflowRunControllerIndexResponses, PlatformApiWorkflowRunControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs',\n ...options\n});\n\n/**\n * Get generic tables catalog as markdown\n *\n * Returns one page of the generic table catalog for the datalake, rendered as markdown — operator-defined custom tables plus system tables for the data domain. Accepts the same pagination, filtering, and ordering parameters as `index`; each table appears with its column schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiGenericTableControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerMetadataResponses, PlatformApiGenericTableControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/metadata',\n ...options\n});\n\n/**\n * List workflow execution logs\n *\n * Returns a paginated list of per-event execution logs for a workflow.\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs',\n ...options\n});\n\n/**\n * Get single contract field metadata\n *\n * Returns a markdown document describing the fields of the contract's target resource type. Combines `@moduledoc` (resource description) and `@typedoc` (field definitions) from the schema.\n */\nexport const platformApiInteroperabilityContractControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerMetadataDetailsResponses, PlatformApiInteroperabilityContractControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}/metadata',\n ...options\n});\n\n/**\n * Get datalake domain metadata\n *\n * Returns a markdown document describing the datalake's data domain — its available standard resources and capabilities.\n */\nexport const platformApiDatalakeControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataDetailsResponses, PlatformApiDatalakeControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata',\n ...options\n});\n\n/**\n * Execute an individual action for a dataset record\n *\n * Executes a single workflow action identified by decision_key for the given dataset record, bypassing filter and decision evaluation\n */\nexport const platformApiAgenticWorkflowOperationsControllerExecute = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerExecuteData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerExecuteResponses, PlatformApiAgenticWorkflowOperationsControllerExecuteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/execute',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Page results from a UserSearch — outer SQL chunk + inner resource Flop\n *\n * Two-tier pagination at two layers:\n *\n * * **Outer** — `outer_pagination[page]` / `outer_pagination[page_size]`\n * (defaults `1` / `1000`, max `1000`) pages cached IDs from\n * `search_results`. The cap is dictated by Postgres' `WHERE id IN (^ids)`\n * plan — past ~1k parameters the planner regresses.\n * * **Inner** — `inner_search[page]`, `inner_search[page_size]` (defaults\n * `1` / `20`), `inner_search[order_direction]` (sort on the schema's\n * `:global_search` compound), `inner_search[global_search]` (single\n * ILIKE-OR text-search knob).\n *\n * Response carries both metas under `meta.sql` and `meta.flop`. A caller\n * that only drives the inner page sees `meta.sql.has_next_page=true` when\n * the SQL search isn't exhausted; advancing `outer_pagination[page]`\n * fetches the next chunk.\n *\n */\nexport const platformApiDatasetControllerSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerSearchData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerSearchResponses, PlatformApiDatasetControllerSearchErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/search',\n ...options\n});\n\n/**\n * Create and execute a SQL search for a dataset\n *\n * Creates a `UserSearch` row, runs `INSERT INTO search_results SELECT ... WHERE <search_query>` against the regulated schema, and returns the `UserSearch` resource (including `status`, `results_count`, and `error_message`). The session's `data_access_mode` controls which schema is queried.\n */\nexport const platformApiDatasetControllerCreateUserSearch = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerCreateUserSearchData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatasetControllerCreateUserSearchResponses, PlatformApiDatasetControllerCreateUserSearchErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/user-searches',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a generic table config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed table's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiGenericTableControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiGenericTableControllerChecksumResponses, PlatformApiGenericTableControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a data source config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed data source's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiDataSourceControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerChecksumResponses, PlatformApiDataSourceControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Action status updaters catalog as markdown\n *\n * Returns one page of the action status updater catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + cron + updater body + template configs + bound tools, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiActionStatusUpdaterControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerMetadataResponses, PlatformApiActionStatusUpdaterControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/metadata',\n ...options\n});\n\n/**\n * Ingest previously uploaded file\n *\n * Ingests a file that was uploaded via a presigned URL obtained from the datalake upload-link endpoint. The key must belong to this client's datalake prefix (`uploads/<datalake_id>/...`).\n */\nexport const platformApiDataActivationClientControllerIngestFile = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIngestFileData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerIngestFileResponses, PlatformApiDataActivationClientControllerIngestFileErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List data sources\n *\n * Returns a paginated list of data sources for the authenticated tenant.\n */\nexport const platformApiDataSourceControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerIndexResponses, PlatformApiDataSourceControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',\n ...options\n});\n\n/**\n * Create a data source\n *\n * Creates a new data source for the authenticated tenant.\n */\nexport const platformApiDataSourceControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataSourceControllerCreateResponses, PlatformApiDataSourceControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Admin tenant sign-up — register a tenant user (integration-test only)\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape — wraps `Accounts.register_user/2` verbatim with no\n * business-logic divergence. Used by the integration-test bootstrap to\n * create tenant users (production user creation is UI-driven).\n *\n * The created user is **unconfirmed** and has **no tenant memberships**. To\n * obtain a Bearer token, the user must first be confirmed (via\n * `PUT /api/v1/admin/users/:id/confirm`), then exchange credentials at\n * `POST /api/v1/admin/bootstrap-session` (tenantless) or\n * `POST /api/v1/sessions` (tenant-scoped).\n *\n * Route exists only when `integration_test_only_admin_api?` is enabled\n * (dev/test); prod builds 404.\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerSignUp = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerSignUpData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses, PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors, ThrowOnError>({\n url: '/api/v1/admin/sign-up',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Trigger a manual run of a Data Activation Client\n *\n * Enqueues a one-off fetch/ingest pipeline run. Empty body or omitted `tool_call` runs with the DAC's persisted `tool_call`. Supplying a `tool_call` map applies a one-shot polymorphic override for this run only — the persisted DAC record is not modified.\n */\nexport const platformApiDataActivationClientControllerRunManually = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerRunManuallyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerRunManuallyResponses, PlatformApiDataActivationClientControllerRunManuallyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * AI agents catalog as markdown\n *\n * Returns one page of the AI agent catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + prompt config + bound tool + I/O schemas, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiAiAgentControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerMetadataResponses, PlatformApiAiAgentControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/metadata',\n ...options\n});\n\n/**\n * List action status updaters\n *\n * Returns a paginated list of action status updaters for the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerIndexResponses, PlatformApiActionStatusUpdaterControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters',\n ...options\n});\n\n/**\n * Create an action status updater\n *\n * Creates a new action status updater for the authenticated datalake.\n */\nexport const platformApiActionStatusUpdaterControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerCreateResponses, PlatformApiActionStatusUpdaterControllerCreateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an AI agent\n *\n * Deletes an AI agent. Returns 409 if the agent is attached to a workflow.\n */\nexport const platformApiAiAgentControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiAiAgentControllerDeleteResponses, PlatformApiAiAgentControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options\n});\n\n/**\n * Get an AI agent\n *\n * Returns a single AI agent by ID.\n */\nexport const platformApiAiAgentControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerShowResponses, PlatformApiAiAgentControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options\n});\n\n/**\n * Replace an AI agent\n *\n * Replaces an AI agent with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiAiAgentControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiAiAgentControllerUpdateResponses, PlatformApiAiAgentControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Confirm a user (admin bypass)\n *\n * Marks a user account as confirmed without requiring an email-confirmation\n * token. Idempotent — confirming an already-confirmed user is a 200 no-op\n * that returns the existing `confirmed_at` timestamp.\n *\n * Wraps `Accounts.confirm_user!/1` verbatim — exactly the primitive that\n * backs the dev/admin email-confirm path in the LiveView UI. **Zero new\n * business logic.**\n *\n * Powerful primitive: bypasses the regular email-confirmation flow. Every\n * successful call is structured-logged with `caller_user_id` and\n * `target_user_id` for forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerConfirmUser = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData, ThrowOnError>) => (options.client ?? client).put<PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses, PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/users/{id}/confirm',\n ...options\n});\n\n/**\n * List system templates\n *\n * Returns every system template usable from the datalake's data domain, plus global (domain-agnostic) templates. Each entry includes identifier, Liquid source, and optional output JSON Schema. Companion to `/datasets/:dataset_type/metadata`.\n */\nexport const platformApiTemplatesControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerIndexResponses, PlatformApiTemplatesControllerIndexErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates',\n ...options\n});\n\n/**\n * Compute the drift checksum for an action status updater config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed updater's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiActionStatusUpdaterControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiActionStatusUpdaterControllerChecksumResponses, PlatformApiActionStatusUpdaterControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Invoke an AI agent\n *\n * Executes an AI agent with the provided input variables. The input must conform to the agent's `input_schema` (if defined). Returns the parsed JSON output and usage telemetry.\n */\nexport const platformApiAiAgentControllerInvoke = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerInvokeData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAiAgentControllerInvokeResponses, PlatformApiAiAgentControllerInvokeErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/invoke',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List connected apps\n *\n * Returns a paginated list of connected apps for the authenticated tenant.\n */\nexport const platformApiConnectedAppMgmtControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerIndexResponses, PlatformApiConnectedAppMgmtControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',\n ...options\n});\n\n/**\n * Create a connected app\n *\n * Creates a new connected app with automatic API key provisioning.\n */\nexport const platformApiConnectedAppMgmtControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerCreateResponses, PlatformApiConnectedAppMgmtControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Revoke current session\n *\n * Revokes the current Bearer session — deactivates the session and deletes\n * the linked UserToken. The Bearer token becomes immediately invalid.\n *\n * Only works with `Authorization: Bearer <session_token>` (not X-API-Key\n * alone) — the key rides along as the mandatory companion credential.\n *\n */\nexport const platformApiSessionControllerDelete = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiSessionControllerDeleteData, ThrowOnError>) => (options?.client ?? client).delete<PlatformApiSessionControllerDeleteResponses, PlatformApiSessionControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/sessions',\n ...options\n});\n\n/**\n * Sign in to a tenant (human auth)\n *\n * Exchange user credentials for a tenant-scoped Bearer session token.\n *\n * Send `{email, password, tenant_slug}` — all three required — plus the\n * tenant's publishable `X-API-Key` header. Returns a Bearer carrying the\n * caller's membership role in that tenant (or 401 if the user has no\n * membership). The key must belong to the tenant named by `tenant_slug`\n * (403 otherwise) and is stamped onto the created session's `api_key_id`\n * so it can be traced back to the publishable key that authenticated it.\n *\n * Use the returned `session_token` as `Authorization: Bearer <session_token>`\n * — accompanied by the same `X-API-Key` — on subsequent API requests.\n *\n * Optionally specify `expires_in` (seconds) to control session duration.\n * Default: 86400 (24 hours). Maximum: 2592000 (30 days).\n *\n * The tenantless bootstrap login (platform admin, pre-tenant flows) lives\n * at `POST /api/v1/admin/bootstrap-session` — an integration-test-only\n * route that does not exist in prod builds.\n *\n */\nexport const platformApiSessionControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiSessionControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiSessionControllerCreateResponses, PlatformApiSessionControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/sessions',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get data activation clients catalog as markdown\n *\n * Returns one page of the data activation client catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each client appears with its connected-dataset field schema and the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiDataActivationClientControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerMetadataResponses, PlatformApiDataActivationClientControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/metadata',\n ...options\n});\n\n/**\n * List agentic workflows\n *\n * Returns a paginated list of workflows for a datalake.\n */\nexport const platformApiAgenticWorkflowControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerIndexResponses, PlatformApiAgenticWorkflowControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',\n ...options\n});\n\n/**\n * Create an agentic workflow\n *\n * Creates a new workflow. AI agents are nested directly in the request body under `workflow_ai_agents` and attached transactionally with the workflow.\n */\nexport const platformApiAgenticWorkflowControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowControllerCreateResponses, PlatformApiAgenticWorkflowControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Connected apps catalog as markdown\n *\n * Returns one page of the connected app catalog for the current datalake, rendered as markdown. Accepts the same pagination, filtering, and ordering parameters as `index`; each entry includes wrapper fields + URLs + discovered routes, with the page's pagination state in a narrative line at the top. Trailing `Shared Types` section documents `TemplateConfig` + Solid filters.\n */\nexport const platformApiConnectedAppMgmtControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerMetadataResponses, PlatformApiConnectedAppMgmtControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/metadata',\n ...options\n});\n\n/**\n * List processing logs for a Data Activation Client\n *\n * Returns a Flop-paginated list of `DataActivationLog` rows for this DAC. One log per `(batch_id, dataset_table)` — a single run produces multiple log rows, one per dataset table the DAC writes into. Filter or group client-side on `batch_id` to reconstruct a batch-level view.\n */\nexport const platformApiDataActivationClientControllerLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerLogsIndexResponses, PlatformApiDataActivationClientControllerLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs',\n ...options\n});\n\n/**\n * Test invoke a tool\n *\n * Manually invokes a tool with caller-supplied parameters — the API equivalent of the 'Try It' panel in the tool form. Records a `ManualToolInvocation` for audit and returns the provider response (or error). Does not access tenant datasets, so no capability ceiling check is applied.\n */\nexport const platformApiToolControllerTestInvocation = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerTestInvocationData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerTestInvocationResponses, PlatformApiToolControllerTestInvocationErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/test-invocation',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single AI agent metadata as markdown\n *\n * Returns markdown for one AI agent — wrapper + prompt config + bound tool + I/O schemas. Drill into the bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiAiAgentControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAiAgentControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAiAgentControllerMetadataDetailsResponses, PlatformApiAiAgentControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/metadata',\n ...options\n});\n\n/**\n * List batch run logs\n *\n * Returns a paginated list of batch-level workflow run logs.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogsIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs',\n ...options\n});\n\n/**\n * Get datalakes catalog as markdown\n *\n * Returns one page of the datalake catalog for the tenant, rendered as markdown — each entry carries slug, name, data_domain, status, repo_version and points at the per-datalake metadata endpoint for the full domain inventory. Accepts the same pagination, filtering, and ordering parameters as the datalake `index`; the page's pagination state is written into a narrative line at the top.\n */\nexport const platformApiDatalakeControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatalakeControllerMetadataResponses, PlatformApiDatalakeControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/metadata',\n ...options\n});\n\n/**\n * Single action status updater metadata as markdown\n *\n * Returns markdown for one action status updater — wrapper + cron + updater body + template configs + bound tools. Drill into a bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiActionStatusUpdaterControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiActionStatusUpdaterControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses, PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/metadata',\n ...options\n});\n\n/**\n * Get single workflow metadata\n *\n * Returns a markdown document describing the workflow's variable pipeline — available variables at each node (event dataset, MDM, context datasets, enrichment, filter, decision, actions).\n */\nexport const platformApiAgenticWorkflowControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowControllerMetadataDetailsResponses, PlatformApiAgenticWorkflowControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata',\n ...options\n});\n\n/**\n * Health check\n *\n * Public health check endpoint that returns:\n * - Application version\n * - Database connectivity status (SELECT 1 query)\n * - Current timestamp\n *\n * **No authentication required.**\n *\n */\nexport const platformApiPingControllerPing = <ThrowOnError extends boolean = false>(options?: Options<PlatformApiPingControllerPingData, ThrowOnError>) => (options?.client ?? client).get<PlatformApiPingControllerPingResponses, PlatformApiPingControllerPingErrors, ThrowOnError>({ url: '/api/ping', ...options });\n\n/**\n * Reveal a connected app's publishable API key (admin)\n *\n * Returns the plaintext publishable (`public_api`) API key auto-provisioned for\n * a connected app — Alvera's analogue of a Stripe publishable key. The platform\n * stores the key Cloak-encrypted \"for admin viewing\"; this endpoint decrypts and\n * returns it.\n *\n * Wraps `Platform.ApiKeys.get_api_key_plaintext/1` over the connected app's api\n * key — the same primitive the API-keys UI uses to display a key. **Zero new\n * business logic.** Returns 404 when the app does not exist or its key was revoked.\n *\n * Powerful primitive: exposes a live credential. Every successful call is\n * structured-logged with `caller_user_id`, `connected_app_id`, and `api_key_id`\n * for a forensic trail.\n *\n * **Requires platform-admin authentication** (`User.role == :admin`).\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData, ThrowOnError>) => (options.client ?? client).get<PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses, PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors, ThrowOnError>({\n security: [{ scheme: 'bearer', type: 'http' }],\n url: '/api/v1/admin/connected-apps/{id}/api-key',\n ...options\n});\n\n/**\n * Sync routes\n *\n * Enqueues a background job to fetch routes from the connected app's `/.well-known/routes.json` endpoint and update the stored routes.\n */\nexport const platformApiConnectedAppMgmtControllerSyncRoutes = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerSyncRoutesData, ThrowOnError>) => (options.client ?? client).post<PlatformApiConnectedAppMgmtControllerSyncRoutesResponses, PlatformApiConnectedAppMgmtControllerSyncRoutesErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes',\n ...options\n});\n\n/**\n * List data activation clients\n *\n * Returns a paginated list of DACs for the datalake in the path.\n */\nexport const platformApiDataActivationClientControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataActivationClientControllerIndexResponses, PlatformApiDataActivationClientControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',\n ...options\n});\n\n/**\n * Create a data activation client\n *\n * Creates a new DAC. `slug` is auto-generated from `name`. `tool_call` is a polymorphic object whose shape depends on the `tool_call_type` discriminator — see `tool_call_type` enum for valid variants (RESTCall, SQLQueryCall, SFTPCall, SharePointExcelCall, AWSLambdaCall, ManualUploadCall, S3Call).\n */\nexport const platformApiDataActivationClientControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataActivationClientControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDataActivationClientControllerCreateResponses, PlatformApiDataActivationClientControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Verify subject identity\n *\n * Verify a subject's identity against their master record using the\n * datalake's data-domain matching rules.\n *\n * The body carries `subject_id` plus the subject's identity fields in the\n * **datalake's native vocabulary** — see the `MDMVerifyRequest` schema for\n * the field set per data domain (person identity, company identity, and\n * universal fields such as `identifiers`/`phone`/`email`). String fields are\n * fuzzy-matched (Jaro-Winkler), dates component-fuzzy-matched, and\n * identifiers exact-matched on `(system, value)`; exact rules vary per\n * domain and are documented on each schema property.\n *\n * At least one identity field the datalake's domain recognizes is required —\n * a body with none returns 422 with\n * `errors.base: [\"at least one verification field is required\"]`.\n *\n * **Requires X-API-Key authentication.**\n *\n */\nexport const platformApiMdmControllerVerify = <ThrowOnError extends boolean = false>(options: Options<PlatformApiMdmControllerVerifyData, ThrowOnError>) => (options.client ?? client).post<PlatformApiMdmControllerVerifyResponses, PlatformApiMdmControllerVerifyErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Bootstrap a tenantless platform-admin session (integration-test only)\n *\n * Exchanges email + password for a **tenantless** Bearer session — how the\n * very first Bearer of an environment comes into existence, before any\n * tenant (and therefore any tenant-scoped publishable key) exists. Keyless\n * by structural necessity; tenant logins belong to `POST /api/v1/sessions`,\n * which requires the tenant's `X-API-Key` — supplying `tenant_slug` here is\n * a 422.\n *\n * Route exists only when `integration_test_only_admin_api?` is enabled\n * (dev/test); prod builds 404.\n *\n */\nexport const platformApiIntegrationTestOnlyAdminControllerBootstrapSession = <ThrowOnError extends boolean = false>(options: Options<PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData, ThrowOnError>) => (options.client ?? client).post<PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses, PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors, ThrowOnError>({\n url: '/api/v1/admin/bootstrap-session',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get system templates catalog as markdown\n *\n * Returns one page of the system template catalog for the datalake's data domain, rendered as markdown. Templates are a filesystem corpus: the catalog sorts them alphabetically and fake-paginates the sorted list — it reuses the `page` / `page_size` query parameters but makes no Flop DB call. Each template appears with its identifier, Liquid source, and (when present) the companion `output_schema`; the page's pagination state is written into a narrative line at the top. Trailing `Shared Types` section documents the shared `TemplateConfig` schema + Solid custom filters.\n */\nexport const platformApiTemplatesControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerMetadataResponses, PlatformApiTemplatesControllerMetadataErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/metadata',\n ...options\n});\n\n/**\n * Compute the drift checksum for an interoperability contract config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. A client posts a desired config here and compares the result against the deployed contract's `checksum` (from GET) to detect drift (absent / unchanged / edited).\n */\nexport const platformApiInteroperabilityContractControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerChecksumResponses, PlatformApiInteroperabilityContractControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get schema metadata for a specific dataset type\n *\n * Returns a markdown document describing the fields available on a dataset type. For standard datasets (patient, appointment, etc.) returns the schema moduledoc. For generic tables, pass the generic_table_id query parameter.\n */\nexport const platformApiDatasetControllerDatasetMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerDatasetMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerDatasetMetadataResponses, PlatformApiDatasetControllerDatasetMetadataErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset_type}/metadata',\n ...options\n});\n\n/**\n * Delete a connected app\n *\n * Deletes a connected app (addressed by id) within the authenticated datalake. For managed apps, infrastructure cleanup is queued before the record is removed.\n */\nexport const platformApiConnectedAppMgmtControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiConnectedAppMgmtControllerDeleteResponses, PlatformApiConnectedAppMgmtControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options\n});\n\n/**\n * Get a connected app\n *\n * Returns a single connected app by ID.\n */\nexport const platformApiConnectedAppMgmtControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerShowResponses, PlatformApiConnectedAppMgmtControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options\n});\n\n/**\n * Replace a connected app\n *\n * Replaces a connected app with the full resource body. PUT semantics — all required fields must be present.\n */\nexport const platformApiConnectedAppMgmtControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiConnectedAppMgmtControllerUpdateResponses, PlatformApiConnectedAppMgmtControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Invite a user to the tenant\n *\n * Creates a `tenant_admin`-issued invitation. Mirrors the LiveView flow at\n * `/app/team` → \"Invite new member\". Wraps `Tenants.send_tenant_invitation/3`\n * verbatim, including the email send.\n *\n * The `role` enum is **membership-level** (`member`, `researcher`, `admin`),\n * NOT the platform-wide `User.role` enum — privilege-escalation safe by\n * construction.\n *\n * Requires a tenant-scoped Bearer with membership role `:admin`\n * (`current_role.name == \"tenant_admin\"`).\n *\n */\nexport const platformApiInvitationControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInvitationControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInvitationControllerCreateResponses, PlatformApiInvitationControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/invitations',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List tools\n *\n * Returns a paginated list of tools for the current datalake.\n */\nexport const platformApiToolControllerIndex = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerIndexData, ThrowOnError>) => (options.client ?? client).get<PlatformApiToolControllerIndexResponses, PlatformApiToolControllerIndexErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools',\n ...options\n});\n\n/**\n * Create a tool\n *\n * Creates a new tool for the current datalake. Any `datalake_id` in the request body is ignored — the URL's `:datalake_slug` is authoritative.\n */\nexport const platformApiToolControllerCreate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerCreateData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerCreateResponses, PlatformApiToolControllerCreateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Compute the drift checksum for a tool config\n *\n * Returns the server-computed drift fingerprint a create/update would stamp for the submitted config, without persisting anything. `alvera plan` posts the operator's desired config here and compares the result against the deployed tool's `checksum` (from GET) to decide absent / unchanged / edited.\n */\nexport const platformApiToolControllerChecksum = <ThrowOnError extends boolean = false>(options: Options<PlatformApiToolControllerChecksumData, ThrowOnError>) => (options.client ?? client).post<PlatformApiToolControllerChecksumResponses, PlatformApiToolControllerChecksumErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/checksum',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Get single system template details as markdown\n *\n * Returns markdown for one system template, identified by its basename (`filename`) + `intent` query parameter. The datalake's `data_domain` (derived from `:datalake_slug`) is combined with `intent` to compute the search prefix; the server then resolves `filename` uniquely under that prefix. Out-of-domain templates are unreachable by URL construction. Returns 404 if no match, 409 if the basename is ambiguous within the resolved scope.\n */\nexport const platformApiTemplatesControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiTemplatesControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiTemplatesControllerMetadataDetailsResponses, PlatformApiTemplatesControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/{filename}/metadata',\n ...options\n});\n\n/**\n * Get a batch run log\n *\n * Returns a single batch-level workflow run log with merged artifacts.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}',\n ...options\n});\n\n/**\n * Execute a read-only SQL query against the datalake\n *\n * Executes a read-only `sql` statement (INSERT/UPDATE/DELETE/DDL are rejected) on the\n * mode-appropriate datalake schema, with Flop-inspired pagination (`page` / `page_size`;\n * page size capped server-side). Returns the page of rows in `data` and structural +\n * pagination metadata in `meta`. Pass `?format=csv` to download the page as a CSV attachment.\n *\n */\nexport const platformApiDatalakeControllerExecuteSql = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatalakeControllerExecuteSqlData, ThrowOnError>) => (options.client ?? client).post<PlatformApiDatalakeControllerExecuteSqlResponses, PlatformApiDatalakeControllerExecuteSqlErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/execute-sql',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Schedule a workflow run for matching records\n *\n * Records a **workflow run** for all dataset records matching the SQL WHERE\n * clause, and returns immediately with its id. Pass `scheduled_at` to fire it\n * at a chosen time; omit it to fire as soon as a worker picks it up. Either\n * way a run row exists, so the invocation can be listed, polled and — while\n * still `scheduled` — cancelled.\n *\n * **Breaking change in 0.23.0.** This endpoint used to execute inline and\n * return `enqueued_count`, `batch_id` and `workflow_run_log_id`. It no longer\n * can: the segment is resolved when the run fires, so the batch those fields\n * describe does not exist at response time. Read them from the run once its\n * status leaves `scheduled`.\n *\n * The clause is resolved once at request time to produce `matched_count` —\n * a preview for sanity-checking the clause. It is **not** the audience: the\n * run resolves the clause again at send time, so a run scheduled on Monday for\n * Friday reaches Friday's matches, minus suppressed records.\n *\n * When the run fires it takes the ordinary path — sampled events, workflow\n * jobs, and a WorkflowRunLog tracking batch-level progress, polled by a daily\n * DynamicCron. When that log reports the batch exhausted, the run completes.\n *\n * ## Per-step artifacts (audit trail)\n *\n * Each per-row WorkflowExecutionLog (WEL) writes a fixed set of JSON\n * artifacts to the datalake's regulated cloud-storage bucket. The path is\n * deterministic and convention-driven — there is no separate listing\n * endpoint:\n *\n * workflows/{workflow_id}/executions/{wel_id}/event.json\n * workflows/{workflow_id}/executions/{wel_id}/filter.json\n * workflows/{workflow_id}/executions/{wel_id}/enrichment.json\n * workflows/{workflow_id}/executions/{wel_id}/error.json # only on failure\n *\n * | File | Written by stage | Body |\n * | ----------------- | -------------------------------------- | ------------------------------------------------------------------ |\n * | `event.json` | context build | full WorkflowContext (event_dataset, mdm_output, additional_context)|\n * | `filter.json` | filter eval (both pass and reject) | `{filter_expression, filter_result: bool}` |\n * | `enrichment.json` | enrichment terminal (success / skip / fail) | `{status: \"completed\" \\| \"failed\" \\| \"skipped\", <agent_slug>: ...}` |\n * | `error.json` | ANY pipeline failure | `{stage, error_code, ai_agent_slug, error_message, detail}` |\n *\n * `error.json`'s presence IS the failure signal — `WEL.error_message`\n * carries only a code-grade summary; the rich URL/HTTP-status/transport\n * detail lives ONLY in `error.json[\"detail\"]`. Engineers debugging a\n * failed run should download `error.json` for full context.\n *\n * ### Fetching an artifact\n *\n * Use the standard datalake download-link endpoint\n * (`POST /api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link`)\n * with `bucket = <regulated bucket>` and the convention key above. Example:\n *\n * POST /api/v1/tenants/acme/datalakes/clinical/download-link\n * { \"bucket\": \"clinical-regulated\", \"key\": \"workflows/<wf_id>/executions/<wel_id>/error.json\" }\n *\n * The response carries a short-lived signed URL. The regulated bucket is\n * exposed on the datalake response as `regulated_cloud_storage.bucket`.\n *\n */\nexport const platformApiAgenticWorkflowOperationsControllerRunWorkflow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses, PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/run-workflow',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Single data source metadata as markdown\n *\n * Returns markdown for one data source — wrapper + bound tools listing. Drill into a bound tool's full metadata via `GET /datalakes/:datalake_slug/tools/:id/metadata`.\n */\nexport const platformApiDataSourceControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDataSourceControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDataSourceControllerMetadataDetailsResponses, PlatformApiDataSourceControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}/metadata',\n ...options\n});\n\n/**\n * Force-refresh a batch run log\n *\n * Triggers an immediate refresh of the batch run log metrics and merged artifacts.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogRefresh = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh',\n ...options\n});\n\n/**\n * Single connected app metadata as markdown\n *\n * Returns markdown for one connected app — wrapper + URLs + discovered routes.\n */\nexport const platformApiConnectedAppMgmtControllerMetadataDetails = <ThrowOnError extends boolean = false>(options: Options<PlatformApiConnectedAppMgmtControllerMetadataDetailsData, ThrowOnError>) => (options.client ?? client).get<PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses, PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/metadata',\n ...options\n});\n\n/**\n * Start or restart refresh polling for a batch run log\n *\n * Creates a DynamicCron job to poll this batch. Idempotent — if cron already exists, it's a no-op.\n */\nexport const platformApiAgenticWorkflowOperationsControllerBatchLogStart = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData, ThrowOnError>) => (options.client ?? client).post<PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses, PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start',\n ...options\n});\n\n/**\n * Get a workflow execution log\n *\n * Returns a single execution log with action execution details. Each action\n * execution log carries a `message_body` virtual field populated from the\n * datalake message linked via `message_id`. The `data_access_mode` query\n * parameter selects which datalake schema is read for the body — defaults\n * to the session's `data_access_mode` ceiling.\n *\n */\nexport const platformApiAgenticWorkflowOperationsControllerWorkflowLogShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses, PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}',\n ...options\n});\n\n/**\n * Delete an interoperability contract\n *\n * Deletes a contract (addressed by id). System-created contracts are rejected with 422. DAC mappings to this contract are removed via DB cascade.\n */\nexport const platformApiInteroperabilityContractControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiInteroperabilityContractControllerDeleteResponses, PlatformApiInteroperabilityContractControllerDeleteErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options\n});\n\n/**\n * Get an interoperability contract\n *\n * Returns a single contract by id, scoped to the datalake.\n */\nexport const platformApiInteroperabilityContractControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiInteroperabilityContractControllerShowResponses, PlatformApiInteroperabilityContractControllerShowErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options\n});\n\n/**\n * Replace an interoperability contract\n *\n * Replaces a contract (addressed by id) with the full resource body. PUT semantics — all required fields must be present. `slug` is immutable.\n */\nexport const platformApiInteroperabilityContractControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiInteroperabilityContractControllerUpdateResponses, PlatformApiInteroperabilityContractControllerUpdateErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a generic table\n *\n * Deletes a custom generic table addressed by id. Guarded: returns 409 Conflict when the backing table still holds rows — delete the rows first. When empty, drops both physical tables (regulated + unregulated) and removes the metadata.\n */\nexport const platformApiGenericTableControllerDelete = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerDeleteData, ThrowOnError>) => (options.client ?? client).delete<PlatformApiGenericTableControllerDeleteResponses, PlatformApiGenericTableControllerDeleteErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options\n});\n\n/**\n * Get a generic table\n *\n * Returns a single generic table by id within the datalake. Matches custom tables scoped to the datalake plus system tables for the data domain. Agents enumerate via `list` (the generic-tables index) — or resolve a name to its id via `filter[handle]` — and address by id. Industry-built datasets live separately under `system-datasets`.\n */\nexport const platformApiGenericTableControllerShow = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerShowData, ThrowOnError>) => (options.client ?? client).get<PlatformApiGenericTableControllerShowResponses, PlatformApiGenericTableControllerShowErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options\n});\n\n/**\n * Update a generic table\n *\n * Full-replace update of a custom generic table, addressed by id within the datalake. Every field in the request is required (PUT semantics) — the same body shape as create, so `alvera apply` can resend a full manifest to reconcile drift. Re-runs the regulated mirror + migration for the new column set.\n */\nexport const platformApiGenericTableControllerUpdate = <ThrowOnError extends boolean = false>(options: Options<PlatformApiGenericTableControllerUpdateData, ThrowOnError>) => (options.client ?? client).put<PlatformApiGenericTableControllerUpdateResponses, PlatformApiGenericTableControllerUpdateErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Run a contract against a payload (sandbox)\n *\n * Runs the contract's `filter → transform → mdm_input` pipeline against the supplied JSON row. Stateless — no DB writes. Use for template authoring/testing.\n */\nexport const platformApiInteroperabilityContractControllerRun = <ThrowOnError extends boolean = false>(options: Options<PlatformApiInteroperabilityContractControllerRunData, ThrowOnError>) => (options.client ?? client).post<PlatformApiInteroperabilityContractControllerRunResponses, PlatformApiInteroperabilityContractControllerRunErrors, ThrowOnError>({\n querySerializer: { parameters: { filters: { array: { style: 'deepObject' } } } },\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Dataset-type catalog as markdown\n *\n * Returns the markdown catalog of every dataset type registered to this datalake's data domain, each rendered with its schema documentation. The dataset-type set is small and fixed per domain, so the whole catalog is returned in one document — no pagination.\n */\nexport const platformApiDatasetControllerMetadata = <ThrowOnError extends boolean = false>(options: Options<PlatformApiDatasetControllerMetadataData, ThrowOnError>) => (options.client ?? client).get<PlatformApiDatasetControllerMetadataResponses, PlatformApiDatasetControllerMetadataErrors, ThrowOnError>({\n security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/metadata',\n ...options\n});\n","// This file is auto-generated by @hey-api/openapi-ts\n\nexport type ClientOptions = {\n baseUrl: 'http://localhost:4000' | 'http://localhost:4010' | 'https://platform-hh.alvera.ai' | 'https://app.alvera.ai' | (string & {});\n};\n\n/**\n * TextToSqlRequest\n *\n * Natural-language prompt to generate datalake SQL for, plus the data access mode.\n */\nexport type TextToSqlRequest = {\n /**\n * Which datalake schema to target: `unregulated` (tokenized) or `regulated` (raw)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * Natural-language description of the desired query\n */\n prompt: string;\n};\n\n/**\n * UserSearchResponse\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n *\n */\nexport type UserSearchResponse = {\n /**\n * SQL execution error message when status is `error`; null otherwise\n */\n readonly error_message?: string | null;\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * User search ID\n */\n readonly id?: string;\n /**\n * Resource type the search runs against (e.g. \"patient\", \"appointment\", \"generic_table\"). On `POST /datasets/:dataset/user-searches` this is taken from the URL path; on the response it echoes that value.\n */\n readonly resource_type?: string;\n /**\n * Number of rows the SQL search matched\n */\n readonly results_count?: number | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n /**\n * Search execution status\n */\n readonly status?: 'new' | 'in_progress' | 'completed' | 'error';\n};\n\n/**\n * ActionExecutionLogResponse\n *\n * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.\n */\nexport type ActionExecutionLogResponse = {\n /**\n * Action ID\n */\n action_id: string;\n action_type: ActionType;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n /**\n * Completed-at timestamp\n */\n completed_at?: string | null;\n /**\n * Context key\n */\n context_key?: string | null;\n /**\n * Decision key (denormalised from action)\n */\n decision_key?: string | null;\n /**\n * Error description (no customer data)\n */\n error_message?: string | null;\n /**\n * External system reference (Twilio SID, SES message ID, etc.)\n */\n external_id?: string | null;\n /**\n * Action execution log ID\n */\n id: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Rendered message body for this action (mode-driven; null when no message was sent)\n */\n readonly message_body?: string | null;\n /**\n * Cross-DB UUID of the message produced by this action (datalake-resident; no FK)\n */\n message_id?: string | null;\n /**\n * Execution mode (`live` = normal, `dry_run` = preview only)\n */\n mode: 'live' | 'dry_run';\n /**\n * Retry count\n */\n retry_count?: number;\n /**\n * Result of the action's runtime_filter Liquid expression\n */\n runtime_filter_result?: boolean | null;\n /**\n * Scheduled-at timestamp\n */\n scheduled_at?: string | null;\n /**\n * Started-at timestamp\n */\n started_at?: string | null;\n /**\n * Execution state\n */\n status: 'pending' | 'executing' | 'completed' | 'failed' | 'skipped' | 'filtered' | 'cancelled';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Parent workflow execution log ID\n */\n workflow_execution_log_id: string;\n /**\n * Workflow ID\n */\n workflow_id: string;\n};\n\n/**\n * ManualUploadRequest\n *\n * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows. Request\n */\nexport type ManualUploadRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ContextDatasetResponse\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages.\n */\nexport type ContextDatasetResponse = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Context dataset ID\n */\n readonly id?: string;\n readonly inserted_at?: string;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n readonly updated_at?: string;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n /**\n * Parent workflow id\n */\n readonly workflow_id?: string;\n};\n\n/**\n * ConnectedAppApiKeyResponse\n *\n * A connected app's publishable (public_api) API key, revealed for a platform admin.\n */\nexport type ConnectedAppApiKeyResponse = {\n /**\n * Plaintext publishable (public_api) key — embed in a connected app to call its allowlist routes.\n */\n api_key: string;\n /**\n * ID of the connected app whose key was revealed.\n */\n connected_app_id: string;\n /**\n * Last 4 characters of the key, matching the value shown in the API-keys UI.\n */\n last_four: string;\n};\n\n/**\n * DatalakeRequest\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses. Request\n */\nexport type DatalakeRequest = {\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * ToolRESTAPIRequest\n */\nexport type ToolRestapiRequest = RestapiRequest & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * DataActivationClientListResponse\n *\n * Paginated list of data activation clients\n */\nexport type DataActivationClientListResponse = {\n /**\n * List of data activation clients\n */\n data: Array<DataActivationClientResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * MembershipResponse\n *\n * Tenant membership — binds a user to a tenant with a role.\n */\nexport type MembershipResponse = {\n /**\n * Membership ID\n */\n readonly id: string;\n /**\n * Tenant-membership role.\n */\n readonly role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponse;\n};\n\n/**\n * EmailCallRequest\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body. Request\n */\nexport type EmailCallRequest = {\n body: SimpleTemplateConfigRequest;\n subject: SimpleTemplateConfigRequest;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionEmailCallRequest\n */\nexport type ActionEmailCallRequest = EmailCallRequest & {\n tool_call_type: 'email_request';\n};\n\n/**\n * DatalakeCloudStorageCustomResponse\n */\nexport type DatalakeCloudStorageCustomResponse = CloudStorageCustomResponse & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * AgenticWorkflowResponse\n *\n * Agentic Workflow — event-driven automation pipeline\n */\nexport type AgenticWorkflowResponse = {\n /**\n * Decision actions attached to this workflow (response — includes id, workflow_id and timestamps)\n */\n readonly actions?: Array<ActionResponse>;\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Context-enrichment datasets loaded before the decision stage (response — includes id, workflow_id and timestamps)\n */\n readonly context_datasets?: Array<ContextDatasetResponse>;\n datalake?: DatalakeResponse;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigResponse | null;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigResponse | null;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * URL-friendly slug\n */\n readonly slug?: string;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * AI agents attached to this workflow (response — full detail with nested agent)\n */\n readonly workflow_ai_agents?: Array<WorkflowAiAgentResponse>;\n};\n\n/**\n * ManualToolInvocationResponse\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.\n */\nexport type ManualToolInvocationResponse = {\n /**\n * Provider error message on failure.\n */\n readonly error_message?: string | null;\n /**\n * Invocation ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Provider response payload on success (provider-specific). SQL try-it returns `rows`, `row_count` and `truncated`; other providers return their own shape.\n */\n readonly result?: {\n /**\n * SQL try-it only — number of rows in `rows`.\n */\n row_count?: number;\n /**\n * SQL try-it only — result rows, each an array of column values.\n */\n rows?: Array<Array<unknown>>;\n /**\n * SQL try-it only — `true` when the preview filled its 100-row window, meaning this is a partial view and the query returns at least this many rows. Render it as a partial result, never as the complete answer.\n */\n truncated?: boolean;\n [key: string]: unknown;\n } | null;\n /**\n * Execution status — server-set. `pending` is the initial state, `success`/`error` reflect provider response.\n */\n readonly status?: 'pending' | 'success' | 'error';\n tool_call?: ({\n tool_call_type: 'sms_request';\n } & ManualToolInvocationSmsCallResponse) | ({\n tool_call_type: 'mms_request';\n } & ManualToolInvocationMmsCallResponse) | ({\n tool_call_type: 'email_request';\n } & ManualToolInvocationEmailCallResponse) | ({\n tool_call_type: 'restapi_request';\n } & ManualToolInvocationRestCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & ManualToolInvocationAwsLambdaCallResponse) | ({\n tool_call_type: 'sql_query';\n } & ManualToolInvocationSqlQueryCallResponse);\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * CloudWatchLogGroupResponse\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling.\n */\nexport type CloudWatchLogGroupResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigResponse | null;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * S3CallRequest\n *\n * S3 file-path descriptor — identifies an object for downstream validation/read. Request\n */\nexport type S3CallRequest = {\n /**\n * S3 object key/path (no s3:// prefix)\n */\n file_path: string;\n};\n\n/**\n * CloudflarePagesConfigResponse\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps\n */\nexport type CloudflarePagesConfigResponse = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n /**\n * Cloudflare Pages project name (server-assigned after project creation)\n */\n readonly project_name?: string | null;\n};\n\n/**\n * TenantResponse\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n *\n */\nexport type TenantResponse = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Tenant ID\n */\n readonly id: string;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n /**\n * URL-friendly tenant slug — derived from `name` by the server.\n */\n readonly slug: string;\n};\n\n/**\n * ActionSMSCallRequest\n */\nexport type ActionSmsCallRequest = SmsCallRequest & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ComplexTemplateConfigRequest\n *\n * Inline Liquid template configuration including the rendered-output JSON Schema Request\n */\nexport type ComplexTemplateConfigRequest = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * JSON Schema describing expected rendered output\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * DataActivationClientLogResponse\n *\n * One log row per `(batch_id, dataset_table)`. A batch fans out into one log per dataset table — so a single run (one `batch_id`) produces multiple log rows, one per table the DAC writes into. Once `BatchMergeWorker` has finished, `output_files` carries one entry per bucket mode, each an `object_key` — a cloud-storage key, not a URL. To read an archive, presign the key with `POST /datalakes/{datalake_slug}/download-link`.\n */\nexport type DataActivationClientLogResponse = {\n /**\n * Batch identifier stamped on every Oban job for this run\n */\n batch_id: string;\n /**\n * Owning Data Activation Client ID\n */\n readonly client_id: string;\n /**\n * Target dataset table for this slice (e.g. patients, observations)\n */\n dataset_table: string;\n /**\n * Number of existing rows whose checksum changed (trigger-maintained)\n */\n dataset_updated?: number;\n /**\n * Structured failure reason when `status` is `failed`; null otherwise.\n */\n readonly error?: string | null;\n /**\n * Run log ID\n */\n readonly id?: string;\n /**\n * Source file keys fetched for this slice\n */\n input_files?: Array<string>;\n readonly inserted_at?: string;\n /**\n * Merged NDJSON archives produced by `BatchMergeWorker`, one entry per bucket mode. Empty until the merge completes. Parse `object_key` (`s3://bucket/key`) and fetch a presigned URL via the datalake download-link endpoint.\n */\n readonly output_files?: Array<DacRawLogFileResponse>;\n /**\n * Total source rows ingested by this slice of the batch\n */\n rows_ingested?: number;\n /**\n * `failed` when the batch died before enqueueing any row — the fetch itself errored. `rows_ingested` and `input_files` are 0/[] on such a row; read `error` for the reason.\n */\n status?: 'succeeded' | 'failed';\n readonly updated_at?: string;\n};\n\n/**\n * S3CallResponse\n *\n * S3 file-path descriptor — identifies an object for downstream validation/read.\n */\nexport type S3CallResponse = {\n /**\n * S3 object key/path (no s3:// prefix)\n */\n file_path: string;\n};\n\n/**\n * ActionStatusUpdaterResponse\n *\n * Action Status Updater — automated polling for delivery status updates.\n */\nexport type ActionStatusUpdaterResponse = {\n action_log_config: SimpleTemplateConfigResponse | null;\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * Action Status Updater ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * When the poll worker last completed a run (null until the first run)\n */\n readonly last_run_at?: string | null;\n /**\n * Why the last poll run failed, or why a `partial` run was truncated; null when the run completed and read its whole window\n */\n readonly last_run_error?: string | null;\n /**\n * Events the last poll run fetched from the updater tool\n */\n readonly last_run_events_found?: number | null;\n /**\n * Outcome of the last poll run. `partial` means the run completed but its provider fetch was truncated, so the window was not fully read and the newest events may be missing — read `last_run_error` for detail.\n */\n readonly last_run_status?: 'ok' | 'partial' | 'error';\n message_config: SimpleTemplateConfigResponse;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tenant ID\n */\n readonly tenant_id?: string;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n updater_body: ({\n updater_body_type: 'cloud_watch_request';\n } & ActionStatusUpdaterCloudWatchQueryResponse) | ({\n updater_body_type: 'restapi_request';\n } & ActionStatusUpdaterRestCallResponse);\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * IngestRequest\n *\n * Request body for data ingestion\n */\nexport type IngestRequest = {\n /**\n * JSON data to ingest\n */\n data: {\n [key: string]: unknown;\n };\n};\n\n/**\n * DataActivationClientSharePointExcelCallRequest\n */\nexport type DataActivationClientSharePointExcelCallRequest = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * WorkflowRunResponse\n *\n * A workflow invocation scheduled for a caller-chosen time. Every manual\n * invocation creates one, including an immediate send, which is simply\n * `scheduled_at` = now — there is no separate run-now path.\n *\n * A run is not a workflow run log. The run is the intent and is cancellable\n * while `scheduled`; the run log is the outcome it produces, and run logs also\n * arrive from Data Activation Client ingestion with no run behind them.\n *\n * The segment is resolved when the run **fires**, not when it is scheduled.\n * `matched_count` is the preview the operator saw; the audience is whatever\n * `execution_user_search_id` resolved to at send time, minus suppressed and\n * unreachable records.\n *\n */\nexport type WorkflowRunResponse = {\n /**\n * Batch identifier for correlating with the workflow run log. Null until the run fires.\n */\n readonly batch_id?: string | null;\n /**\n * When the run reached a terminal state.\n */\n readonly completed_at?: string | null;\n /**\n * The search actually resolved when the run fired — its results are the audience that received the send. Null until the run fires; never the same row as `preview_user_search_id`.\n */\n readonly execution_user_search_id?: string | null;\n /**\n * Why the run could not fan out, when status is 'failed'.\n */\n readonly failure_reason?: string | null;\n /**\n * When the fan-out began. Null until the run fires.\n */\n readonly fired_at?: string | null;\n /**\n * Workflow run ID\n */\n readonly id?: string;\n /**\n * Bypasses dedupe and idempotency checks for every record this run matches.\n */\n manual_override?: boolean;\n /**\n * Audience size previewed at schedule time. NOT the number that received the send — the segment is resolved again when the run fires, and suppressed records are excluded then.\n */\n readonly matched_count?: number | null;\n /**\n * 'live' fires real tool calls; 'dry_run' runs the pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * The resolved search this run was scheduled against. Create it with `POST /datasets/:dataset/user-searches`; its `results_count` becomes this run's `matched_count`.\n */\n preview_user_search_id: string;\n /**\n * When this run fires, in UTC. An immediate send is simply now. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at: string;\n /**\n * Run state. Cancellation is refused once processing.\n */\n readonly status?: 'scheduled' | 'processing' | 'completed' | 'cancelled' | 'failed';\n /**\n * The workflow this run invokes\n */\n readonly workflow_id?: string;\n /**\n * The run log this run produced. Null until the run fires.\n */\n readonly workflow_run_log_id?: string | null;\n};\n\n/**\n * AgenticWorkflowRequest\n *\n * Agentic Workflow — event-driven automation pipeline Request\n */\nexport type AgenticWorkflowRequest = {\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigRequest;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ToolIntent\n *\n * Tool intent — what category of capability the tool provides.\n */\nexport enum ToolIntent {\n SMS = 'sms',\n MMS = 'mms',\n EMAIL = 'email',\n EXPORT = 'export',\n VOICE = 'voice',\n DATA_EXCHANGE = 'data_exchange',\n STATUS_POLLER = 'status_poller',\n LLM_ENRICHMENT = 'llm_enrichment'\n}\n\n/**\n * AWSLambdaResponse\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes.\n */\nexport type AwsLambdaResponse = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigResponse | null;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Error message if CloudFormation deployment fails\n */\n readonly error?: string | null;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * ARN of the Secrets Manager secret containing Lambda secrets (server-managed)\n */\n readonly secrets_manager_secret_arn?: string | null;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * CloudFormation stack ARN (populated by async deployment worker)\n */\n readonly stack_id?: string | null;\n /**\n * Human-readable CloudFormation stack name\n */\n readonly stack_name?: string | null;\n /**\n * Current CloudFormation stack status (server-managed)\n */\n readonly stack_status?: 'create_in_progress' | 'create_complete' | 'create_failed' | 'rollback_in_progress' | 'rollback_complete' | 'rollback_failed' | 'delete_in_progress' | 'delete_complete' | 'delete_failed' | 'update_in_progress' | 'update_complete' | 'update_failed' | 'update_rollback_complete' | 'update_rollback_failed';\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ActionSharePointExcelCallResponse\n */\nexport type ActionSharePointExcelCallResponse = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractAiAgentRequest\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline. Request\n */\nexport type InteroperabilityContractAiAgentRequest = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * DataActivationClientSQLQueryCallResponse\n */\nexport type DataActivationClientSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * UserResponse\n *\n * Lean user reference — id, email, and names\n */\nexport type UserResponse = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name?: string | null;\n /**\n * User ID\n */\n readonly id: string;\n /**\n * Last name\n */\n last_name?: string | null;\n};\n\n/**\n * ExecuteActionRequest\n *\n * Request body for executing a workflow action for a dataset record\n */\nexport type ExecuteActionRequest = {\n /**\n * ID of the dataset record to process\n */\n dataset_id: string;\n /**\n * Decision key identifying which action to execute (e.g. 'cahps_survey')\n */\n decision_key: string;\n /**\n * When true, bypasses idempotency and dedupe checks — action will fire even if already executed for this dataset record. Filters still apply. Mirrors `/run-workflow`'s `manual_override` field.\n */\n manual_override?: boolean;\n /**\n * Execution mode. 'live' fires real tool calls; 'dry_run' runs the full pipeline and records the computed payload without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * When true, the action's `trigger_template` schedule is bypassed and the queued job is dispatched immediately. The ActionExecutionLog still records the trigger-rendered `scheduled_at` — only the Oban job is fast-forwarded. Use this to force a future-triggered action (e.g. a year-roll birthday SMS) to fire now, which is the only way to drive such a workflow to completion inside a live test or cookbook run.\n */\n trigger_override?: boolean;\n};\n\n/**\n * MDMNotVerified\n */\nexport type MdmNotVerified = {\n /**\n * Field-level verification failure details\n */\n errors: {\n [key: string]: Array<string>;\n };\n status: 'not_verified';\n /**\n * The subject ID that failed verification\n */\n subject_id: string;\n /**\n * Timestamp of verification attempt\n */\n verified_at: string;\n};\n\n/**\n * InteroperabilityRunResponse\n *\n * Pipeline output for a single row. `stage` indicates the last pipeline stage reached; `transformed`/`mdm_input` are populated only when that stage executed successfully.\n */\nexport type InteroperabilityRunResponse = {\n /**\n * Result of the row-level Liquid filter.\n */\n filter_result: 'pass' | 'skip';\n /**\n * Output of `mdm_input_config` rendering. `null` when filtered or when mdm_input_config is null/identity.\n */\n mdm_input?: {\n [key: string]: unknown;\n } | null;\n /**\n * `completed` = row passed filter, transform, and mdm_input. `filtered` = skipped by filter_template (transform/mdm_input not run).\n */\n stage: 'completed' | 'filtered';\n /**\n * Output of `template_config` rendering. `null` when stage == \"filtered\".\n */\n transformed?: {\n [key: string]: unknown;\n } | null;\n};\n\n/**\n * ErrorResponse\n *\n * Error response\n */\nexport type ErrorResponse = {\n /**\n * Error details - values can be strings or arrays of strings (for validation errors)\n */\n errors?: {\n [key: string]: string | Array<string>;\n };\n};\n\n/**\n * ChecksumResponse\n *\n * Server-computed drift fingerprint for a submitted config.\n */\nexport type ChecksumResponse = {\n /**\n * sha256 fingerprint over the config's authored fields, hex-lowercased\n */\n checksum: string;\n};\n\n/**\n * ResolvePageResponse\n *\n * Resolved page token details for the connected app to render\n */\nexport type ResolvePageResponse = {\n /**\n * Arbitrary context data rendered from workflow action template\n */\n additional_context?: {\n [key: string]: unknown;\n } | null;\n /**\n * When this page token expires\n */\n expires_at: string;\n /**\n * Regulated message from the workflow action that generated this page token (raw body/subject)\n */\n message?: {\n /**\n * Raw message body text (SMS content or email body)\n */\n body?: string | null;\n /**\n * Message channel\n */\n channel: 'sms' | 'mms' | 'email' | 'voice' | 'web_form' | 'push';\n /**\n * When delivery was confirmed\n */\n delivered_at?: string | null;\n /**\n * External system reference (Twilio SID, SES ID)\n */\n external_id?: string | null;\n /**\n * Reason for delivery failure\n */\n failure_reason?: string | null;\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * Regulated message UUID\n */\n id: string;\n /**\n * Message metadata (e.g. recipient phone/email)\n */\n metadata?: {\n [key: string]: unknown;\n } | null;\n /**\n * When the message was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * When the message was queued for delivery\n */\n queued_at?: string | null;\n /**\n * When the message was read by the recipient\n */\n read_at?: string | null;\n /**\n * When the message was sent\n */\n sent_at?: string | null;\n /**\n * SMS carrier of the recipient\n */\n sms_carrier?: string | null;\n /**\n * Delivery status\n */\n status: 'pending' | 'queued' | 'sent' | 'delivered' | 'read' | 'opened' | 'clicked' | 'form_submitted' | 'failed' | 'invalidated' | 'customer_rejected' | 'dry_run' | 'received';\n /**\n * Human-readable detail behind the current status, rendered from the delivery provider's event (e.g. the mailgun event name, or a bounce reason on failure)\n */\n status_description?: string | null;\n /**\n * Raw email subject line (null for SMS)\n */\n subject?: string | null;\n } | null;\n /**\n * Route path within the connected app (e.g. /forms/cahps)\n */\n route_path: string;\n /**\n * MDM subject ID associated with this page token\n */\n subject_id: string;\n /**\n * Puid token that was resolved\n */\n url_hash: string;\n /**\n * Original client User-Agent from the request\n */\n user_agent?: string | null;\n};\n\n/**\n * ActionType\n *\n * Workflow action category — selects the downstream dispatcher.\n */\nexport enum ActionType {\n SMS = 'sms',\n MMS = 'mms',\n EMAIL = 'email',\n VOICE = 'voice',\n DATA_EXCHANGE = 'data_exchange'\n}\n\n/**\n * MDMVerifyRequest\n *\n * Request body for MDM subject identity verification.\n *\n * Every MDM subject is ultimately a **person** or a **company**, so the identity\n * fields are organized along that ontology rather than per industry. All identity\n * fields are optional on the wire; the datalake's own data-domain validator casts\n * only the fields its domain knows and requires **at least one** of them — a body\n * that carries only fields foreign to the datalake's domain (or none at all)\n * returns 422 with `errors.base: [\"at least one verification field is required\"]`.\n *\n * Field vocabulary per data domain:\n *\n * | data_domain | identity fields |\n * |---|---|\n * | `healthcare` | `given_name`, `family_name`, `birth_date`, `gender`, `phone`, `email`, `identifiers` |\n * | `foundation` | `legal_entity_type`, `first_name`, `middle_name`, `last_name`, `preferred_name`, `date_of_birth`, `citizenship_country`, `nationality`, `business_name`, `doing_business_as_names`, `date_formed`, `jurisdiction_country`, `phone`, `email`, `identifiers` |\n * | `subscription` | `customer_type`, `name`, `tax_id`, `phone`, `email`, `identifiers` |\n * | `service_commerce` | `consumer_type`, `name`, `phone`, `email`, `identifiers` |\n * | `core_banking` | `party_type`, `given_name`, `family_name`, `company_name`, `birth_date`, `phone`, `email`, `identifiers` |\n * | `payments` | `account_holder_type`, `given_name`, `family_name`, `company_name`, `birth_date`, `phone`, `email`, `identifiers` (each identifier additionally requires `id_type`) |\n *\n */\nexport type MdmVerifyRequest = {\n /**\n * payments: individual | business\n */\n account_holder_type?: string;\n /**\n * Date of birth — healthcare, core_banking, payments (component-fuzzy match)\n */\n birth_date?: string;\n /**\n * Business name — foundation (fuzzy match incl. doing-business-as names)\n */\n business_name?: string;\n /**\n * Citizenship country — foundation\n */\n citizenship_country?: string;\n /**\n * Company legal name — core_banking (exact match), payments\n */\n company_name?: string;\n /**\n * service_commerce consumer kind\n */\n consumer_type?: string;\n /**\n * subscription customer kind\n */\n customer_type?: string;\n /**\n * Company formation date — foundation (component-fuzzy match)\n */\n date_formed?: string;\n /**\n * Date of birth — foundation (component-fuzzy match)\n */\n date_of_birth?: string;\n /**\n * Doing-business-as names — foundation\n */\n doing_business_as_names?: Array<string>;\n /**\n * Email address\n */\n email?: string;\n /**\n * Family/last name — healthcare, core_banking, payments (fuzzy match)\n */\n family_name?: string;\n /**\n * Given/first name — foundation (fuzzy match over first/middle/preferred)\n */\n first_name?: string;\n /**\n * Administrative gender — healthcare\n */\n gender?: string;\n /**\n * Given/first name — healthcare, core_banking, payments (fuzzy match)\n */\n given_name?: string;\n /**\n * Identifiers for exact (system, value) matching — every domain\n */\n identifiers?: Array<{\n /**\n * Issuing country — foundation\n */\n country?: string;\n /**\n * Identifier kind (e.g. us_ssn, lei, digital_identifier) — required by payments\n */\n id_type?: string;\n /**\n * Identifier system (e.g. MRN, SSN, account_holder_number)\n */\n system: string;\n /**\n * Identifier value\n */\n value: string;\n }>;\n /**\n * Jurisdiction country — foundation\n */\n jurisdiction_country?: string;\n /**\n * Family/last name — foundation (fuzzy match)\n */\n last_name?: string;\n /**\n * foundation: individual | business\n */\n legal_entity_type?: string;\n /**\n * Middle name — foundation\n */\n middle_name?: string;\n /**\n * Subject full name (person or company) — subscription, service_commerce (fuzzy match)\n */\n name?: string;\n /**\n * Nationality — foundation\n */\n nationality?: string;\n /**\n * core_banking: individual | organization | sole_trader | partnership | trust | government\n */\n party_type?: string;\n /**\n * Phone number — service_commerce matches it; other domains accept it\n */\n phone?: string;\n /**\n * Preferred/nickname — foundation\n */\n preferred_name?: string;\n /**\n * The MDM subject ID to verify against\n */\n subject_id: string;\n /**\n * Tax identifier — subscription (exact match)\n */\n tax_id?: string;\n};\n\n/**\n * MMSCallRequest\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL. Request\n */\nexport type MmsCallRequest = {\n body: SimpleTemplateConfigRequest;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionResponse\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator.\n */\nexport type ActionResponse = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Action ID\n */\n readonly id?: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n readonly inserted_at?: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n tool_call: ({\n tool_call_type: 'sms_request';\n } & ActionSmsCallResponse) | ({\n tool_call_type: 'mms_request';\n } & ActionMmsCallResponse) | ({\n tool_call_type: 'email_request';\n } & ActionEmailCallResponse) | ({\n tool_call_type: 'sql_query';\n } & ActionSqlQueryCallResponse) | ({\n tool_call_type: 'restapi_request';\n } & ActionRestCallResponse) | ({\n tool_call_type: 'sftp_request';\n } & ActionSftpCallResponse) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & ActionSharePointExcelCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & ActionAwsLambdaCallResponse) | ({\n tool_call_type: 'manual_upload';\n } & ActionManualUploadCallResponse);\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n readonly updated_at?: string;\n /**\n * Parent workflow id\n */\n readonly workflow_id?: string;\n};\n\n/**\n * ManualUploadCallRequest\n *\n * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload. Request\n */\nexport type ManualUploadCallRequest = {\n [key: string]: unknown;\n};\n\n/**\n * EndUserMessagingRequest\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API. Request\n */\nexport type EndUserMessagingRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractResponse\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.\n */\nexport type InteroperabilityContractResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Owning datalake ID (matches `:datalake_slug` path segment). Server-set on create; request bodies should omit this — it is taken from the path.\n */\n readonly datalake_id?: string;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * AI agents attached to this contract (response — full detail with nested agent)\n */\n readonly interoperability_contract_ai_agents?: Array<InteroperabilityContractAiAgentResponse>;\n mdm_input_config?: SimpleTemplateConfigResponse | null;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n /**\n * Whether this contract was auto-created by the system (read-only, cannot be edited or deleted)\n */\n readonly system_created?: boolean;\n template_config: SimpleTemplateConfigResponse;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DownloadLinkRequest\n *\n * Request body for presigning a GET URL against a datalake's cloud storage. `bucket` must match either the regulated or unregulated storage config of the path-scoped datalake; `key` is the object key within that bucket.\n */\nexport type DownloadLinkRequest = {\n /**\n * Cloud-storage bucket — must belong to the path-scoped datalake.\n */\n bucket: string;\n /**\n * Object key within the bucket (no leading slash).\n */\n key: string;\n};\n\n/**\n * ToolSharePointRequest\n */\nexport type ToolSharePointRequest = SharePointRequest & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ActionSMSCallResponse\n */\nexport type ActionSmsCallResponse = SmsCallResponse & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ToolAWSLambdaResponse\n */\nexport type ToolAwsLambdaResponse = AwsLambdaResponse & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * ToolManualUploadResponse\n */\nexport type ToolManualUploadResponse = ManualUploadResponse & {\n tool_body_type: 'manual_upload';\n};\n\n/**\n * ExecuteSqlMeta\n *\n * Structural and pagination metadata for an `execute-sql` result — enough for an agent to\n * reason about the shape of the result without scanning the rows. The pagination fields\n * (`page`, `page_size`, `total_count`, `total_pages`) mirror `PaginationMeta`; their values\n * come from the Lotus window result, not Flop.\n *\n */\nexport type ExecuteSqlMeta = {\n /**\n * Result column names, in order\n */\n columns: Array<string>;\n /**\n * SQL command tag (e.g. `SELECT`)\n */\n command?: string | null;\n /**\n * Query execution time in milliseconds\n */\n duration_ms?: number | null;\n /**\n * Rows returned in this page\n */\n num_rows: number;\n /**\n * 1-based page number\n */\n page: number;\n /**\n * Rows per page actually applied (after capping)\n */\n page_size: number;\n /**\n * Total rows across all pages (null if uncounted)\n */\n total_count: number | null;\n /**\n * Total pages (null if uncounted)\n */\n total_pages: number | null;\n};\n\n/**\n * UpdatePageRequest\n *\n * Request body for updating message tracking fields on a resolved page\n */\nexport type UpdatePageRequest = {\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * When the page was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * Puid token extracted from the short URL\n */\n short_path: string;\n /**\n * Engagement status reported by the connected app — typically \"opened\", \"clicked\", or \"form_submitted\". Applied through the monotonic status guard, so it only ever advances the message and never regresses it.\n */\n status?: string | null;\n};\n\n/**\n * InvitationResponse\n *\n * Pending tenant invitation — resolved into a Membership on accept.\n */\nexport type InvitationResponse = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Invitation ID\n */\n readonly id?: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponse;\n};\n\n/**\n * ToolRequest\n *\n * Tool — a configurable capability reference for external services. Request\n */\nexport type ToolRequest = {\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigRequest;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * SimpleTemplateConfigRequest\n *\n * Inline Liquid template configuration (output_schema is server-derived, never request-supplied) Request\n */\nexport type SimpleTemplateConfigRequest = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * AWSLambdaRequest\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes. Request\n */\nexport type AwsLambdaRequest = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigRequest;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ToolSQSRequest\n */\nexport type ToolSqsRequest = SqsRequest & {\n tool_body_type: 'sqs';\n};\n\n/**\n * DownloadUrlResponse\n *\n * Presigned download URL for a stored cloud-storage artifact.\n */\nexport type DownloadUrlResponse = {\n /**\n * Presigned URL valid for a short TTL; fetch the artifact within the window.\n */\n url: string;\n};\n\n/**\n * MDMVerified\n */\nexport type MdmVerified = {\n status: 'verified';\n /**\n * The verified subject ID\n */\n subject_id: string;\n /**\n * Timestamp of verification\n */\n verified_at: string;\n};\n\n/**\n * SMSCallResponse\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category.\n */\nexport type SmsCallResponse = {\n body: SimpleTemplateConfigResponse;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ResolvePageRequest\n *\n * Request body for resolving a connected app page from a short URL token\n */\nexport type ResolvePageRequest = {\n /**\n * Client country code (CF-IPCountry)\n */\n country?: string;\n /**\n * Original client IP (CF-Connecting-IP)\n */\n ip?: string;\n /**\n * Additional Cloudflare metadata (CF-Ray, etc.)\n */\n metadata?: {\n [key: string]: unknown;\n };\n /**\n * Puid token extracted from the short URL\n */\n short_path: string;\n /**\n * Original client User-Agent forwarded by Cloudflare\n */\n user_agent?: string;\n};\n\n/**\n * ActionRequest\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator. Request\n */\nexport type ActionRequest = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * DatalakeCloudStorageR2Request\n */\nexport type DatalakeCloudStorageR2Request = CloudStorageR2Request & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * AWSLambdaCallResponse\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.\n */\nexport type AwsLambdaCallResponse = {\n payload: SimpleTemplateConfigResponse;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * DataActivationClientRESTCallRequest\n */\nexport type DataActivationClientRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * RESTCallResponse\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there.\n */\nexport type RestCallResponse = {\n body?: SimpleTemplateConfigResponse | null;\n events_template?: SimpleTemplateConfigResponse | null;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigResponse;\n params?: SimpleTemplateConfigResponse | null;\n path: SimpleTemplateConfigResponse;\n};\n\n/**\n * CloudStorageCustomResponse\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL.\n */\nexport type CloudStorageCustomResponse = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * WorkflowAiAgentRequest\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline. Request\n */\nexport type WorkflowAiAgentRequest = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * AiAgentRequest\n *\n * AI Agent configuration — reusable chat-completion resource Request\n */\nexport type AiAgentRequest = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigRequest;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * UploadLinkRequest\n *\n * Request body for creating a presigned upload link for bulk ingest\n */\nexport type UploadLinkRequest = {\n /**\n * MIME type of the file to be uploaded. Must match one of the supported container formats.\n */\n content_type: 'application/x-ndjson' | 'text/csv' | 'application/pdf' | 'image/png' | 'image/jpeg' | 'image/webp';\n /**\n * Original filename. Used to derive the stored object's extension (.ndjson or .csv).\n */\n filename: string;\n};\n\n/**\n * DataActivationClientManualUploadCallRequest\n */\nexport type DataActivationClientManualUploadCallRequest = ManualUploadCallRequest & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SharePointResponse\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth.\n */\nexport type SharePointResponse = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigResponse | null;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * SimpleTemplateConfigResponse\n *\n * Inline Liquid template configuration (output_schema is server-derived, never request-supplied)\n */\nexport type SimpleTemplateConfigResponse = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * RESTAPIResponse\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.\n */\nexport type RestapiResponse = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigResponse | null;\n base_headers?: SimpleTemplateConfigResponse | null;\n base_path?: SimpleTemplateConfigResponse | null;\n base_query?: SimpleTemplateConfigResponse | null;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DataActivationClientRESTCallResponse\n */\nexport type DataActivationClientRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * SystemTemplateListResponse\n *\n * List of system templates available to this datalake.\n */\nexport type SystemTemplateListResponse = {\n /**\n * Sorted list of system template configs.\n */\n data: Array<SystemTemplateConfig>;\n};\n\n/**\n * DataActivationClientS3CallResponse\n */\nexport type DataActivationClientS3CallResponse = S3CallResponse & {\n tool_call_type: 's3_request';\n};\n\n/**\n * EmailRequest\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates. Request\n */\nexport type EmailRequest = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ConnectedAppListResponse\n *\n * Paginated list of connected apps\n */\nexport type ConnectedAppListResponse = {\n /**\n * List of connected apps\n */\n data: Array<ConnectedAppResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * EmailCallResponse\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body.\n */\nexport type EmailCallResponse = {\n body: SimpleTemplateConfigResponse;\n subject: SimpleTemplateConfigResponse;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSQLQueryCallResponse\n */\nexport type ActionSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SFTPCallResponse\n *\n * SFTP file descriptor — remote path + expected MIME content type.\n */\nexport type SftpCallResponse = {\n /**\n * Expected MIME content type (e.g. application/json)\n */\n content_type: string;\n /**\n * Remote file path on the SFTP server\n */\n path: string;\n};\n\n/**\n * ActionStatusUpdaterRefreshRequest\n *\n * Optional polymorphic updater_body override for this refresh. When omitted or empty, the updater's persisted updater_body is used.\n */\nexport type ActionStatusUpdaterRefreshRequest = {\n /**\n * One-shot polymorphic updater_body override — e.g. a widened start_time/end_time window for a historical backfill. Same `updater_body_type` discriminator and variants as ActionStatusUpdaterRequest.updater_body. The persisted updater is not modified.\n */\n updater_body?: ({\n updater_body_type: 'ActionStatusUpdaterRESTCallRequest';\n } & ActionStatusUpdaterRestCallRequest) | ({\n updater_body_type: 'ActionStatusUpdaterCloudWatchQueryRequest';\n } & ActionStatusUpdaterCloudWatchQueryRequest) | null;\n};\n\n/**\n * S3CloudStorageR2Request\n */\nexport type S3CloudStorageR2Request = CloudStorageR2Request & {\n storage_config_type: 'r2';\n};\n\n/**\n * ToolTwilioRequest\n */\nexport type ToolTwilioRequest = TwilioRequest & {\n tool_body_type: 'twilio';\n};\n\n/**\n * WorkflowAiAgentResponse\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.\n */\nexport type WorkflowAiAgentResponse = {\n ai_agent?: MinimalAiAgentResponse;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigResponse;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * WorkflowLogListResponse\n *\n * Paginated list of workflow execution logs\n */\nexport type WorkflowLogListResponse = {\n /**\n * List of workflow execution logs\n */\n data: Array<WorkflowLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolSQLDatabaseRequest\n */\nexport type ToolSqlDatabaseRequest = SqlDatabaseRequest & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * SystemDatasetListResponse\n *\n * Industry-registered dataset name strings for the datalake's data domain.\n */\nexport type SystemDatasetListResponse = {\n /**\n * Sorted unique dataset name strings (e.g. `patient`, `appointment`, `legal_entity`).\n */\n datasets: Array<string>;\n};\n\n/**\n * GenericTableListResponse\n *\n * Paginated list of generic tables\n */\nexport type GenericTableListResponse = {\n /**\n * List of generic tables\n */\n data: Array<GenericTableResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionRESTCallRequest\n */\nexport type ActionRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * GenericTableRequest\n *\n * Generic Table — custom or system dataset table with column definitions. Request\n */\nexport type GenericTableRequest = {\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * MMSCallResponse\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL.\n */\nexport type MmsCallResponse = {\n body: SimpleTemplateConfigResponse;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ManualToolInvocationEmailCallResponse\n */\nexport type ManualToolInvocationEmailCallResponse = EmailCallResponse & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ToolSharePointResponse\n */\nexport type ToolSharePointResponse = SharePointResponse & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * UpdatePageResponse\n *\n * Confirmation of message tracking update\n */\nexport type UpdatePageResponse = {\n /**\n * Updated message details\n */\n message: {\n /**\n * When the linked form was submitted\n */\n form_submitted_at?: string | null;\n /**\n * Regulated message UUID\n */\n id: string;\n /**\n * When the page was opened by the recipient\n */\n opened_at?: string | null;\n /**\n * Message status after applying the update through the monotonic guard\n */\n status?: 'pending' | 'queued' | 'sent' | 'delivered' | 'read' | 'opened' | 'clicked' | 'form_submitted' | 'failed' | 'invalidated' | 'customer_rejected' | 'dry_run' | 'received';\n };\n};\n\n/**\n * SharePointExcelCallRequest\n *\n * Microsoft SharePoint request descriptor — drive URL + Excel sheet + search params. Request\n */\nexport type SharePointExcelCallRequest = {\n /**\n * Microsoft Azure tenant identifier (UUID)\n */\n azure_tenant_id: string;\n /**\n * SharePoint drive URL\n */\n drive_url: string;\n /**\n * Search parameters applied when locating files\n */\n search_params: string;\n /**\n * Excel sheet number (0-indexed) within the workbook\n */\n sheet_number: number;\n};\n\n/**\n * DACRawLogFileResponse\n *\n * A single merged NDJSON archive produced by BatchMergeWorker, tagged by bucket mode.\n */\nexport type DacRawLogFileResponse = {\n /**\n * Bucket the archive lives in — regulated (raw) or unregulated (tokenized)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * Cloud-storage object key of the merged NDJSON archive\n */\n object_key: string;\n};\n\n/**\n * ToolSFTPRequest\n */\nexport type ToolSftpRequest = SftpRequest & {\n tool_body_type: 'sftp';\n};\n\n/**\n * DataActivationClientManualUploadCallResponse\n */\nexport type DataActivationClientManualUploadCallResponse = ManualUploadCallResponse & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * ManualToolInvocationSMSCallResponse\n */\nexport type ManualToolInvocationSmsCallResponse = SmsCallResponse & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryResponse\n */\nexport type ActionStatusUpdaterCloudWatchQueryResponse = CloudWatchQueryResponse & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionMMSCallResponse\n */\nexport type ActionMmsCallResponse = MmsCallResponse & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * ToolSQLDatabaseResponse\n */\nexport type ToolSqlDatabaseResponse = SqlDatabaseResponse & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * ActionSQLQueryCallRequest\n */\nexport type ActionSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionSFTPCallRequest\n */\nexport type ActionSftpCallRequest = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * SystemTemplateConfig\n *\n * One system template — identifier, Liquid source, and optional output schema.\n */\nexport type SystemTemplateConfig = {\n /**\n * Raw Liquid template source.\n */\n content: string;\n /**\n * JSON Schema describing the template's rendered output, read from the companion `_*.meta.json`. `null` when no schema is declared.\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * System template identifier — the same string the UI stores when a user selects a system template (e.g. `ai_agents/healthcare/contact_message_categorizer`).\n */\n path: string;\n};\n\n/**\n * BatchLogResponse\n *\n * Batch-level workflow run log — aggregation of per-event execution logs\n */\nexport type BatchLogResponse = {\n /**\n * Batch identifier (manual:{user_search_id} or DAC batch_id)\n */\n batch_id: string;\n completed_at?: string | null;\n /**\n * Successfully completed WELs\n */\n completed_wels?: number;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Number of events expected to produce WELs\n */\n expected_events?: number;\n /**\n * Failed WELs\n */\n failed_wels?: number;\n /**\n * Workflow run log ID\n */\n id?: string;\n inserted_at?: string;\n last_refreshed_at?: string | null;\n started_at?: string | null;\n /**\n * Batch status\n */\n status: 'pending' | 'completed' | 'partial' | 'failed';\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Total WELs found at last refresh\n */\n total_wels?: number;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AiAgentInvokeRequest\n *\n * Request body for invoking an AI agent with input variables and optional file attachments.\n */\nexport type AiAgentInvokeRequest = {\n /**\n * Optional file references for multimodal processing. Each entry is a storage key returned by the upload-link endpoint paired with the MIME type used during upload.\n */\n files?: Array<{\n /**\n * MIME type of the uploaded file.\n */\n content_type: 'application/pdf' | 'image/png' | 'image/jpeg' | 'image/webp';\n /**\n * Cloud storage key returned by POST /tenants/:tenant_slug/datalakes/:datalake_slug/upload-link.\n */\n key: string;\n }>;\n /**\n * Input variables passed to the agent's prompt template. Must conform to the agent's input_schema if one is defined.\n */\n input: {\n [key: string]: unknown;\n };\n};\n\n/**\n * AWSLambdaCallRequest\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request\n */\nexport type AwsLambdaCallRequest = {\n payload: SimpleTemplateConfigRequest;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * ToolCloudWatchLogGroupRequest\n */\nexport type ToolCloudWatchLogGroupRequest = CloudWatchLogGroupRequest & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ManualToolInvocationSQLQueryCallRequest\n */\nexport type ManualToolInvocationSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ManualUploadCallResponse\n *\n * Identity manual-upload marker. No fields — the discriminator alone indicates the tool call is a manual upload.\n */\nexport type ManualUploadCallResponse = {\n [key: string]: unknown;\n};\n\n/**\n * ActionStatusUpdaterRESTCallResponse\n */\nexport type ActionStatusUpdaterRestCallResponse = RestCallResponse & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientAWSLambdaCallRequest\n */\nexport type DataActivationClientAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * WorkflowRunListResponse\n *\n * Paginated list of workflow runs\n */\nexport type WorkflowRunListResponse = {\n /**\n * List of workflow runs\n */\n data: Array<WorkflowRunResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * MinimalAiAgentResponse\n *\n * AI Agent — identifier and runtime fields only (no tenant/datalake nesting)\n */\nexport type MinimalAiAgentResponse = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tool?: ToolResponse;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ConnectedAppUrlResponse\n *\n * URL entry for a Connected App\n */\nexport type ConnectedAppUrlResponse = {\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n};\n\n/**\n * GenericTableColumnResponse\n *\n * Generic table column definition.\n */\nexport type GenericTableColumnResponse = {\n /**\n * Column description\n */\n description: string;\n is_array?: boolean;\n is_checksum?: boolean;\n is_required?: boolean;\n is_unique?: boolean;\n /**\n * Column name\n */\n name: string;\n privacy_requirement?: 'none' | 'tokenize' | 'redact_only';\n /**\n * Display title\n */\n title: string;\n /**\n * Column data type\n */\n type: 'string' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime' | 'time' | 'jsonb';\n};\n\n/**\n * DataActivationClientS3CallRequest\n */\nexport type DataActivationClientS3CallRequest = S3CallRequest & {\n tool_call_type: 's3_request';\n};\n\n/**\n * DatasetSearchResponse\n *\n * Double-paginated dataset search results scoped to a `UserSearch`. The\n * `meta` object carries two `Flop.Meta`-shaped sub-objects:\n *\n * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per\n * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`\n * when the request was not bound to a `user_search_id`.\n * - `flop` — inner Flop page over the resource (default 20 rows).\n *\n */\nexport type DatasetSearchResponse = {\n /**\n * Array of dataset records\n */\n data: Array<{\n [key: string]: unknown;\n }>;\n /**\n * Two-tier pagination metadata\n */\n meta: {\n flop: PaginationMeta;\n /**\n * Outer page over search_results — null when no UserSearch bound\n */\n sql?: PaginationMeta | unknown;\n };\n user_search: UserSearchResponse;\n};\n\n/**\n * InvitationRequest\n *\n * Pending tenant invitation — resolved into a Membership on accept. Request\n */\nexport type InvitationRequest = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n};\n\n/**\n * ActionAWSLambdaCallResponse\n */\nexport type ActionAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * EndUserMessagingResponse\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API.\n */\nexport type EndUserMessagingResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ToolS3Response\n */\nexport type ToolS3Response = S3Response & {\n tool_body_type: 's3';\n};\n\n/**\n * S3CloudStorageAwsRequest\n */\nexport type S3CloudStorageAwsRequest = CloudStorageAwsRequest & {\n storage_config_type: 'aws';\n};\n\n/**\n * DataActivationClientSFTPCallResponse\n */\nexport type DataActivationClientSftpCallResponse = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * CloudStorageR2Request\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints. Request\n */\nexport type CloudStorageR2Request = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n};\n\n/**\n * DataSourceRequest\n *\n * Data source — connection to a third-party system or API Request\n */\nexport type DataSourceRequest = {\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * ExecuteSqlRequest\n *\n * A read-only SQL statement to execute against the datalake, the data access mode, and\n * optional Flop-inspired pagination. `page_size` is capped server-side.\n *\n */\nexport type ExecuteSqlRequest = {\n /**\n * Which datalake schema to query: `unregulated` (tokenized) or `regulated` (raw)\n */\n mode: 'regulated' | 'unregulated';\n /**\n * 1-based page number\n */\n page?: number | null;\n /**\n * Rows per page (capped at the server's default page size)\n */\n page_size?: number | null;\n /**\n * Read-only SQL statement to execute\n */\n sql: string;\n};\n\n/**\n * ToolManualUploadRequest\n */\nexport type ToolManualUploadRequest = ManualUploadRequest & {\n tool_body_type: 'manual_upload';\n};\n\n/**\n * SharePointRequest\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth. Request\n */\nexport type SharePointRequest = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigRequest;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * ManualToolInvocationSMSCallRequest\n */\nexport type ManualToolInvocationSmsCallRequest = SmsCallRequest & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ManualToolInvocationRequest\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request\n */\nexport type ManualToolInvocationRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ActionManualUploadCallResponse\n */\nexport type ActionManualUploadCallResponse = ManualUploadCallResponse & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SQLQueryCallRequest\n *\n * SQL query descriptor — Liquid-templated query body. Request\n */\nexport type SqlQueryCallRequest = {\n query: SimpleTemplateConfigRequest;\n};\n\n/**\n * DatalakeResponse\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses.\n */\nexport type DatalakeResponse = {\n /**\n * URL-friendly slug. Server-computed from `name`; read-only on the wire — clients do not author this field.\n */\n readonly slug?: string;\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n regulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsResponse) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2Response) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomResponse);\n unregulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsResponse) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2Response) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomResponse);\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n tenant?: TenantResponse;\n /**\n * Datalake ID\n */\n readonly id?: string;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n /**\n * Datalake setup status\n */\n readonly status?: 'new' | 'processing' | 'ready';\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * AlveraAPIError\n *\n * Uniform JSON:API error response for the Alvera API. See module docs for pointer format, title/detail semantics, and pipeline error codes.\n */\nexport type AlveraApiError = {\n /**\n * One entry per validation failure. A 422 always has at least one error; an empty array is never emitted.\n */\n errors: Array<{\n /**\n * Human-readable message. Validator `%{var}` placeholders are already interpolated server-side; pipeline errors surface the underlying cause (Liquid parser line, JSON decode position, etc.).\n */\n detail: string;\n /**\n * Locates the offending field.\n */\n source: {\n /**\n * RFC 6901 JSON Pointer. For validation errors it points into the request body (`/name`, `/items`); for `/run` pipeline errors it points into the contract field whose template produced the failure (`/template_config/body`, `/mdm_input_config/body`, `/filter_template`).\n */\n pointer: string;\n };\n /**\n * Short error category / machine-readable code. Validation errors: constant \"Invalid value\". Pipeline errors: stage code — \"transform_failed\", \"mdm_input_render_failed\", \"template_body_missing\", \"filter_evaluation_failed\". Clients can pattern-match on this field for programmatic dispatch.\n */\n title: string;\n }>;\n};\n\n/**\n * CloudStorageAwsResponse\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication.\n */\nexport type CloudStorageAwsResponse = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * SFTPResponse\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth.\n */\nexport type SftpResponse = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigResponse | null;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * ToolSNSResponse\n */\nexport type ToolSnsResponse = SnsResponse & {\n tool_body_type: 'sns';\n};\n\n/**\n * UserSearchRequest\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n * Request\n */\nexport type UserSearchRequest = {\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n};\n\n/**\n * AdminApiKeyResponse\n *\n * A newly created API key's plaintext, for an admin caller.\n */\nexport type AdminApiKeyResponse = {\n /**\n * Browser origins permitted to use this key cross-origin.\n */\n allowed_origins: Array<string>;\n /**\n * Plaintext API key — record it now, it is never shown again.\n */\n api_key: string;\n /**\n * Last 4 characters of the key.\n */\n last_four: string;\n /**\n * ID of the tenant the key belongs to.\n */\n tenant_id: string;\n};\n\n/**\n * SQLQueryCallResponse\n *\n * SQL query descriptor — Liquid-templated query body.\n */\nexport type SqlQueryCallResponse = {\n query: SimpleTemplateConfigResponse;\n};\n\n/**\n * ComplexTemplateConfigResponse\n *\n * Inline Liquid template configuration including the rendered-output JSON Schema\n */\nexport type ComplexTemplateConfigResponse = {\n /**\n * Liquid template body (required for :custom type)\n */\n body?: string | null;\n /**\n * JSON Schema describing expected rendered output\n */\n output_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Filesystem path (required for :system type)\n */\n path?: string | null;\n /**\n * Template resolution type\n */\n type: 'system' | 'custom' | 'identity' | 'null';\n};\n\n/**\n * ActionSFTPCallResponse\n */\nexport type ActionSftpCallResponse = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * ManualUploadResponse\n *\n * Manual upload marker tool — no configuration fields, just an identity marker for manual ingestion workflows.\n */\nexport type ManualUploadResponse = {\n [key: string]: unknown;\n};\n\n/**\n * DatalakeCloudStorageR2Response\n */\nexport type DatalakeCloudStorageR2Response = CloudStorageR2Response & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * CloudWatchLogGroupRequest\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling. Request\n */\nexport type CloudWatchLogGroupRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigRequest;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * SNSRequest\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API. Request\n */\nexport type SnsRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallResponse\n */\nexport type ManualToolInvocationAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * PingResponse\n *\n * Health check response with version and database connectivity status\n */\nexport type PingResponse = {\n database_status: 'connected' | 'disconnected';\n /**\n * The platform's own IAM task role — the principal a customer names in the trust policy of\n * the role they create for the platform to assume (`auth_method: assume_role` on an AWS tool).\n *\n * Public by design: it has to reach every customer for onboarding to be possible. The control\n * against a confused deputy is the per-tool external ID the platform generates, not\n * concealment of this ARN. `null` where the platform runs without AWS, as in local development.\n *\n */\n iam_role_arn?: string | null;\n status: 'ok' | 'error';\n timestamp: string;\n version: string;\n};\n\n/**\n * UploadLinkResponse\n *\n * Response containing a presigned PUT URL for uploading a file to object storage\n */\nexport type UploadLinkResponse = {\n /**\n * Seconds until the presigned URL expires\n */\n expires_in: number;\n /**\n * Storage key to use in the subsequent ingest-file call\n */\n key: string;\n /**\n * Presigned HTTPS PUT URL. The file must be uploaded with the same Content-Type that was requested.\n */\n url: string;\n};\n\n/**\n * TenantListResponse\n *\n * Paginated list of tenants\n */\nexport type TenantListResponse = {\n /**\n * List of tenants\n */\n data: Array<TenantResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionEmailCallResponse\n */\nexport type ActionEmailCallResponse = EmailCallResponse & {\n tool_call_type: 'email_request';\n};\n\n/**\n * S3Response\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2).\n */\nexport type S3Response = {\n base_prefix?: ComplexTemplateConfigResponse | null;\n config: ({\n storage_config_type: 'aws';\n } & S3CloudStorageAwsResponse) | ({\n storage_config_type: 'r2';\n } & S3CloudStorageR2Response);\n};\n\n/**\n * RunWorkflowRequest\n *\n * Request body for bulk workflow execution via SQL WHERE clause\n */\nexport type RunWorkflowRequest = {\n /**\n * When true, bypasses dedupe and idempotency key checks so actions can fire again for the same record. Defaults to false.\n */\n manual_override?: boolean;\n /**\n * Execution mode. 'live' fires real tool calls; 'dry_run' runs the full pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * When the run should fire, as an ISO-8601 timestamp **with an offset** (e.g. \"2026-08-12T09:00:00Z\"). Omit to fire as soon as a worker picks it up. The segment is resolved when the run fires, not when it is scheduled, so a run scheduled for Friday reaches Friday's matches. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at?: string | null;\n /**\n * SQL WHERE clause to filter dataset records (e.g. \"status = 'active'\")\n */\n sql_where_clause: string;\n};\n\n/**\n * ConnectedAppRouteResponse\n *\n * Discovered route from a Connected App's .well-known/routes.json\n */\nexport type ConnectedAppRouteResponse = {\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n};\n\n/**\n * SFTPCallRequest\n *\n * SFTP file descriptor — remote path + expected MIME content type. Request\n */\nexport type SftpCallRequest = {\n /**\n * Expected MIME content type (e.g. application/json)\n */\n content_type: string;\n /**\n * Remote file path on the SFTP server\n */\n path: string;\n};\n\n/**\n * ToolEmailRequest\n */\nexport type ToolEmailRequest = EmailRequest & {\n tool_body_type: 'email';\n};\n\n/**\n * ManualToolInvocationRESTCallResponse\n */\nexport type ManualToolInvocationRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * ManualToolInvocationMMSCallRequest\n */\nexport type ManualToolInvocationMmsCallRequest = MmsCallRequest & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * SessionResponse\n *\n * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or\n * derived from an `X-API-Key` header. The `session_token` field carries the\n * plaintext Bearer on creation responses and is null on verify responses.\n * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant\n * sessions; `api_key` is populated for M2M sessions only.\n *\n */\nexport type SessionResponse = {\n api_key?: ApiKeyResponse;\n /**\n * Capability ceiling for the session. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Set at creation time from membership role (researcher locked to `:unregulated`); cannot be widened post-creation.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * Expiration timestamp (null for non-expiring M2M sessions)\n */\n readonly expires_at?: string | null;\n /**\n * Session ID\n */\n readonly id?: string;\n role?: RoleResponse;\n /**\n * Plaintext Bearer token. Returned only on creation; null on verify (token is not re-exposed).\n */\n readonly session_token?: string | null;\n tenant?: TenantResponse;\n /**\n * Session type\n */\n readonly type: 'user' | 'api';\n user?: UserResponse;\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryRequest\n */\nexport type ActionStatusUpdaterCloudWatchQueryRequest = CloudWatchQueryRequest & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionStatusUpdaterRESTCallRequest\n */\nexport type ActionStatusUpdaterRestCallRequest = RestCallRequest & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * IngestResponse\n *\n * Response from data ingestion\n */\nexport type IngestResponse = {\n /**\n * Batch ID for tracking\n */\n batch_id: string;\n /**\n * Number of processing jobs created\n */\n jobs_count: number;\n /**\n * Storage key for the ingested data\n */\n key: string;\n};\n\n/**\n * SQSRequest\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages. Request\n */\nexport type SqsRequest = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * DataActivationClientAWSLambdaCallResponse\n */\nexport type DataActivationClientAwsLambdaCallResponse = AwsLambdaCallResponse & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolResponse\n *\n * Tool — a configurable capability reference for external services.\n */\nexport type ToolResponse = {\n body?: ({\n tool_body_type: 'email';\n } & ToolEmailResponse) | ({\n tool_body_type: 'sns';\n } & ToolSnsResponse) | ({\n tool_body_type: 'twilio';\n } & ToolTwilioResponse) | ({\n tool_body_type: 'end_user_messaging';\n } & ToolEndUserMessagingResponse) | ({\n tool_body_type: 'rest_api';\n } & ToolRestapiResponse) | ({\n tool_body_type: 's3';\n } & ToolS3Response) | ({\n tool_body_type: 'aws_lambda';\n } & ToolAwsLambdaResponse) | ({\n tool_body_type: 'sql_database';\n } & ToolSqlDatabaseResponse) | ({\n tool_body_type: 'sqs';\n } & ToolSqsResponse) | ({\n tool_body_type: 'sftp';\n } & ToolSftpResponse) | ({\n tool_body_type: 'sharepoint';\n } & ToolSharePointResponse) | ({\n tool_body_type: 'cloud_watch_log_group';\n } & ToolCloudWatchLogGroupResponse) | ({\n tool_body_type: 'manual_upload';\n } & ToolManualUploadResponse);\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n /**\n * Tool ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigResponse | null;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * IngestFileResponse\n *\n * Response from scheduling a bulk file ingest. Row extraction and per-row processing jobs are created asynchronously by the EnqueueRows worker.\n */\nexport type IngestFileResponse = {\n /**\n * Oban job id of the scheduled EnqueueRows job\n */\n job_id: number;\n /**\n * Storage key that was accepted for ingestion\n */\n key: string;\n /**\n * Initial state of the scheduled job (typically \"scheduled\" or \"available\")\n */\n status: string;\n};\n\n/**\n * ToolAWSLambdaRequest\n */\nexport type ToolAwsLambdaRequest = AwsLambdaRequest & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * DataSourceListResponse\n *\n * Paginated list of data sources\n */\nexport type DataSourceListResponse = {\n /**\n * List of data sources\n */\n data: Array<DataSourceResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * OuterPagination\n *\n * Outer page over the cached search_results table — chunks of up to 1 000 dataset IDs.\n */\nexport type OuterPagination = {\n page?: number;\n page_size?: number;\n};\n\n/**\n * ActionManualUploadCallRequest\n */\nexport type ActionManualUploadCallRequest = ManualUploadCallRequest & {\n tool_call_type: 'manual_upload';\n};\n\n/**\n * SharePointExcelCallResponse\n *\n * Microsoft SharePoint request descriptor — drive URL + Excel sheet + search params.\n */\nexport type SharePointExcelCallResponse = {\n /**\n * Microsoft Azure tenant identifier (UUID)\n */\n azure_tenant_id: string;\n /**\n * SharePoint drive URL\n */\n drive_url: string;\n /**\n * Search parameters applied when locating files\n */\n search_params: string;\n /**\n * Excel sheet number (0-indexed) within the workbook\n */\n sheet_number: number;\n};\n\n/**\n * SNSResponse\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API.\n */\nexport type SnsResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractAiAgentResponse\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline.\n */\nexport type InteroperabilityContractAiAgentResponse = {\n ai_agent?: MinimalAiAgentResponse;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigResponse;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * InteroperabilityRunRequest\n *\n * Raw source-row payload to run through a contract's filter → transform → mdm_input pipeline. Stateless: no DB writes. Accepts arbitrary keys by design — validation is deferred to the contract.\n */\nexport type InteroperabilityRunRequest = {\n [key: string]: unknown;\n};\n\n/**\n * ActionSharePointExcelCallRequest\n */\nexport type ActionSharePointExcelCallRequest = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractRequest\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request\n */\nexport type InteroperabilityContractRequest = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n mdm_input_config?: SimpleTemplateConfigRequest;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigRequest;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DatalakeMigrateResponse\n *\n * Accepted response for an enqueued datalake migration job\n */\nexport type DatalakeMigrateResponse = {\n /**\n * Datalake whose schemas will be migrated\n */\n datalake_id: string;\n /**\n * When the job was enqueued\n */\n enqueued_at: string;\n /**\n * Oban job ID for tracking\n */\n job_id: number;\n /**\n * Job status (always 'enqueued' at creation)\n */\n status: 'enqueued';\n};\n\n/**\n * RESTCallRequest\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there. Request\n */\nexport type RestCallRequest = {\n body?: SimpleTemplateConfigRequest;\n events_template?: SimpleTemplateConfigRequest;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigRequest;\n params?: SimpleTemplateConfigRequest;\n path: SimpleTemplateConfigRequest;\n};\n\n/**\n * SQLDatabaseResponse\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake).\n */\nexport type SqlDatabaseResponse = {\n base_query?: ComplexTemplateConfigResponse | null;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * MDMVerifyResponse\n *\n * Result of MDM subject identity verification\n */\nexport type MdmVerifyResponse = {\n status: 'verified';\n /**\n * The verified subject ID\n */\n subject_id: string;\n /**\n * Timestamp of verification\n */\n verified_at: string;\n} | {\n /**\n * Field-level verification failure details\n */\n errors: {\n [key: string]: Array<string>;\n };\n status: 'not_verified';\n /**\n * The subject ID that failed verification\n */\n subject_id: string;\n /**\n * Timestamp of verification attempt\n */\n verified_at: string;\n};\n\n/**\n * S3CloudStorageAwsResponse\n */\nexport type S3CloudStorageAwsResponse = CloudStorageAwsResponse & {\n storage_config_type: 'aws';\n};\n\n/**\n * S3CloudStorageR2Response\n */\nexport type S3CloudStorageR2Response = CloudStorageR2Response & {\n storage_config_type: 'r2';\n};\n\n/**\n * ContextDatasetRequest\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages. Request\n */\nexport type ContextDatasetRequest = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * ToolEmailResponse\n */\nexport type ToolEmailResponse = EmailResponse & {\n tool_body_type: 'email';\n};\n\n/**\n * ToolListResponse\n *\n * Paginated list of tools\n */\nexport type ToolListResponse = {\n /**\n * List of tools\n */\n data: Array<ToolResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ManualToolInvocationSQLQueryCallResponse\n */\nexport type ManualToolInvocationSqlQueryCallResponse = SqlQueryCallResponse & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SQSResponse\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages.\n */\nexport type SqsResponse = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * RESTAPIRequest\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates. Request\n */\nexport type RestapiRequest = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigRequest;\n base_headers?: SimpleTemplateConfigRequest;\n base_path?: SimpleTemplateConfigRequest;\n base_query?: SimpleTemplateConfigRequest;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DatalakeCloudStorageCustomRequest\n */\nexport type DatalakeCloudStorageCustomRequest = CloudStorageCustomRequest & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * PaginationMeta\n *\n * Pagination metadata for list responses\n */\nexport type PaginationMeta = {\n /**\n * Current page number (1-indexed)\n */\n page: number;\n /**\n * Number of items per page\n */\n page_size: number;\n /**\n * Total number of items across all pages\n */\n total_count: number;\n /**\n * Total number of pages\n */\n total_pages: number;\n};\n\n/**\n * DataActivationClientSharePointExcelCallResponse\n */\nexport type DataActivationClientSharePointExcelCallResponse = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * ConnectedAppRouteRequest\n *\n * Discovered route from a Connected App's .well-known/routes.json Request\n */\nexport type ConnectedAppRouteRequest = {\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n};\n\n/**\n * EmailResponse\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates.\n */\nexport type EmailResponse = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationMMSCallResponse\n */\nexport type ManualToolInvocationMmsCallResponse = MmsCallResponse & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * WorkflowLogResponse\n *\n * Workflow execution log — per-event execution detail\n */\nexport type WorkflowLogResponse = {\n /**\n * Per-action execution logs scheduled under this WEL (response only, preloaded server-side)\n */\n readonly action_execution_logs?: Array<ActionExecutionLogResponse>;\n /**\n * Completed action count\n */\n actions_completed?: number;\n /**\n * Failed action count\n */\n actions_failed?: number;\n /**\n * Pending action count\n */\n actions_pending?: number;\n /**\n * Total action count\n */\n actions_total?: number;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n completed_at?: string | null;\n /**\n * R2 storage key for context JSON\n */\n context_cloud_storage_key?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Error description\n */\n error_message?: string | null;\n /**\n * Whether the filter passed\n */\n filter_result?: boolean | null;\n /**\n * Execution log ID\n */\n id?: string;\n inserted_at?: string;\n /**\n * Execution mode\n */\n mode: 'live' | 'dry_run';\n /**\n * Sampled event ID\n */\n sampled_event_id?: string | null;\n started_at?: string | null;\n /**\n * Execution status\n */\n status: 'filtered' | 'pending' | 'executing' | 'completed' | 'failed' | 'partial';\n /**\n * Resolved subject ID (cross-DB)\n */\n subject_id?: string | null;\n /**\n * Subject type (e.g. patient, member)\n */\n subject_type?: string | null;\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AiAgentInvokeResponse\n *\n * Response from an AI agent invocation containing the parsed output and usage telemetry.\n */\nexport type AiAgentInvokeResponse = {\n /**\n * The model's reasoning trace, when the tool's response_extractor mapped one out (thinking-enabled providers); null otherwise.\n */\n explanation?: string | null;\n /**\n * Parsed JSON output from the agent's LLM response.\n */\n output: {\n [key: string]: unknown;\n };\n /**\n * Token usage and latency telemetry for the invocation.\n */\n usage: {\n /**\n * Number of input/prompt tokens consumed.\n */\n input_tokens?: number | null;\n /**\n * End-to-end execution latency in milliseconds.\n */\n latency_ms: number;\n /**\n * LLM model identifier used for this invocation.\n */\n model?: string | null;\n /**\n * Number of output/completion tokens generated.\n */\n output_tokens?: number | null;\n /**\n * Total tokens (input + output).\n */\n total_tokens?: number | null;\n };\n};\n\n/**\n * CloudStorageAwsRequest\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication. Request\n */\nexport type CloudStorageAwsRequest = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * ToolSQSResponse\n */\nexport type ToolSqsResponse = SqsResponse & {\n tool_body_type: 'sqs';\n};\n\n/**\n * ApiKeyResponse\n *\n * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)\n */\nexport type ApiKeyResponse = {\n /**\n * Capability ceiling baked into the key. Sessions derived from this key inherit this value. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Cannot be widened post-creation — revoke + re-mint instead.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * API key ID\n */\n readonly id: string;\n /**\n * Last 4 characters of the key\n */\n readonly last_four: string;\n /**\n * API key name\n */\n name: string;\n};\n\n/**\n * SyncRoutesResponse\n *\n * Accepted response for an enqueued route sync job\n */\nexport type SyncRoutesResponse = {\n /**\n * Connected app whose routes will be synced\n */\n connected_app_id: string;\n /**\n * When the job was enqueued\n */\n enqueued_at: string;\n /**\n * Oban job ID for tracking\n */\n job_id: number;\n /**\n * Job status (always 'enqueued' at creation)\n */\n status: 'enqueued';\n};\n\n/**\n * DataActivationClientResponse\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.\n */\nexport type DataActivationClientResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * Owning datalake ID (matches :datalake_slug path segment)\n */\n readonly datalake_id?: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigResponse | null;\n /**\n * DAC ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * True for platform-created default DACs. Cannot be deleted.\n */\n readonly is_default?: boolean;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigResponse | null;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n readonly slug?: string;\n tool_call: ({\n tool_call_type: 'restapi_request';\n } & DataActivationClientRestCallResponse) | ({\n tool_call_type: 'sql_query';\n } & DataActivationClientSqlQueryCallResponse) | ({\n tool_call_type: 'sftp_request';\n } & DataActivationClientSftpCallResponse) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & DataActivationClientSharePointExcelCallResponse) | ({\n tool_call_type: 'aws_lambda_request';\n } & DataActivationClientAwsLambdaCallResponse) | ({\n tool_call_type: 'manual_upload';\n } & DataActivationClientManualUploadCallResponse) | ({\n tool_call_type: 's3_request';\n } & DataActivationClientS3CallResponse);\n /**\n * Owning tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * SFTPRequest\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth. Request\n */\nexport type SftpRequest = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigRequest;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * InnerSearch\n *\n * Inner search input over the resource. Defaults: page 1, page_size 20, order_direction asc. All keys optional; absent values fall through to the resource's `Flop.Schema` defaults.\n */\nexport type InnerSearch = {\n /**\n * Single text-search value applied across the schema's `:global_search` compound (ILIKE-OR over its underlying string fields). Empty / absent → no filter.\n */\n global_search?: string;\n /**\n * Sort direction for the implicit `:global_search` sort key. `asc` or `desc` only — no per-field overrides at this layer. Omit to fall through to the resource's `Flop.Schema` default (no `order_by` injection).\n */\n order_direction?: 'asc' | 'desc';\n page?: number;\n page_size?: number;\n};\n\n/**\n * CloudStorageCustomRequest\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL. Request\n */\nexport type CloudStorageCustomRequest = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * DatalakeListResponse\n *\n * Paginated list of datalakes\n */\nexport type DatalakeListResponse = {\n /**\n * List of datalakes\n */\n data: Array<DatalakeResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * RunWorkflowResponse\n *\n * Acknowledgement that a run has been scheduled.\n *\n * **Changed in 0.23.0.** This endpoint used to run the workflow inline and\n * return `enqueued_count`, `batch_id` and `workflow_run_log_id`. It now records\n * a workflow run and returns immediately, so none of those three are knowable\n * yet: the segment is resolved when the run fires, and the batch it produces\n * does not exist until then. Read them from the run via\n * `GET /tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}`\n * once its status leaves `scheduled`.\n *\n */\nexport type RunWorkflowResponse = {\n /**\n * How many records the clause matched **when it was scheduled**. A preview for sanity-checking the clause, not the audience: the segment is resolved again at send time, and suppressed records are excluded then.\n */\n matched_count?: number | null;\n /**\n * When the run will fire. Echoes the requested time, or the time the request was received when none was given.\n */\n scheduled_at: string;\n /**\n * Run state at the moment of this response — always `scheduled` here.\n */\n status: 'scheduled' | 'processing' | 'completed' | 'cancelled' | 'failed';\n /**\n * The scheduled run. Use it to poll status, or to cancel while still `scheduled`.\n */\n workflow_run_id: string;\n};\n\n/**\n * ExecuteActionResponse\n *\n * Response from executing a workflow action\n */\nexport type ExecuteActionResponse = {\n /**\n * Number of action executions scheduled\n */\n scheduled_count?: number;\n /**\n * Oban job id of the scheduled action execution. Nil when no job was scheduled (e.g. an invalid `trigger_template` produced a failed ActionExecutionLog instead).\n */\n scheduled_job_id?: number | null;\n /**\n * Current status of the workflow execution\n */\n status?: 'pending' | 'completed' | 'filtered' | 'failed';\n /**\n * ID of the workflow execution log (nil when async, populated when synchronous)\n */\n workflow_execution_log_id?: string | null;\n};\n\n/**\n * DatalakeCloudStorageAwsResponse\n */\nexport type DatalakeCloudStorageAwsResponse = CloudStorageAwsResponse & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * ActionRESTCallResponse\n */\nexport type ActionRestCallResponse = RestCallResponse & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientRequest\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request\n */\nexport type DataActivationClientRequest = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigRequest;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * IngestFileRequest\n *\n * Request body for ingesting a file that was previously uploaded via a presigned upload link\n */\nexport type IngestFileRequest = {\n /**\n * Optional business attributes merged into each row extracted from the uploaded file. For a document upload (image/PDF) the extracted row is just `{r2_key, content_type}`; these attrs ride alongside it (e.g. account_holder_number) so the interop contract can resolve the subject. File-derived keys (`r2_key`, `content_type`) always win over `data`.\n */\n data?: {\n [key: string]: unknown;\n } | null;\n /**\n * Storage key returned from the upload-link endpoint. Must belong to the same data activation client.\n */\n key: string;\n};\n\n/**\n * ExecuteSqlResponse\n *\n * Read-only SQL result. `data` is the page of rows as an array-of-arrays (tabular, since\n * arbitrary SQL can have duplicate or expression column names that object keys would\n * collapse); the column names and pagination live in `meta`.\n *\n */\nexport type ExecuteSqlResponse = {\n /**\n * Page of result rows; each row is an array of cell values aligned to `meta.columns`\n */\n data: Array<Array<unknown>>;\n meta: ExecuteSqlMeta;\n};\n\n/**\n * ToolCloudWatchLogGroupResponse\n */\nexport type ToolCloudWatchLogGroupResponse = CloudWatchLogGroupResponse & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ActionAWSLambdaCallRequest\n */\nexport type ActionAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TwilioRequest\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity. Request\n */\nexport type TwilioRequest = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * CloudWatchQueryRequest\n *\n * CloudWatch log group query descriptor — log group name plus Liquid-templated time window. Reusable across any caller that needs CloudWatch polling (currently ActionStatusUpdater.updater_body). Title is CloudWatchQuery (not CloudWatchRequest) to avoid triple-`Request` stacking in the library-generated parent-contextual sibling module names (e.g. ActionStatusUpdaterCloudWatchQueryRequest). Request\n */\nexport type CloudWatchQueryRequest = {\n /**\n * Liquid template for the poll window end time, rendered with `{{ now_msec }}` in unix milliseconds (e.g., \"{{ now_msec }}\")\n */\n end_time: string;\n /**\n * CloudWatch log group name to poll for delivery events\n */\n log_group_name: string;\n /**\n * Liquid template for the poll window start time, rendered with `{{ now }}` in unix milliseconds (e.g., \"{{ now_msec | minutes_ago: 45 }}\")\n */\n start_time: string;\n};\n\n/**\n * GenericTableResponse\n *\n * Generic Table — custom or system dataset table with column definitions.\n */\nexport type GenericTableResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Table column definitions\n */\n readonly columns?: Array<GenericTableColumnResponse>;\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Datalake ID\n */\n readonly datalake_id?: string;\n /**\n * Table description\n */\n description?: string;\n /**\n * Generic Table ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Auto-generated table name (from title)\n */\n readonly name?: string;\n /**\n * Table deployment status\n */\n readonly status?: 'new' | 'stale' | 'processing' | 'deployed';\n /**\n * Tenant ID\n */\n readonly tenant_id?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n /**\n * Table type\n */\n readonly type?: 'custom' | 'system';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n};\n\n/**\n * InteroperabilityContractListResponse\n *\n * Paginated list of interoperability contracts\n */\nexport type InteroperabilityContractListResponse = {\n /**\n * List of interoperability contracts\n */\n data: Array<InteroperabilityContractResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingResponse\n */\nexport type ToolEndUserMessagingResponse = EndUserMessagingResponse & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * TenantRequest\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n * Request\n */\nexport type TenantRequest = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n};\n\n/**\n * CloudflarePagesConfigRequest\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps Request\n */\nexport type CloudflarePagesConfigRequest = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * DataActivationClientSFTPCallRequest\n */\nexport type DataActivationClientSftpCallRequest = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * RunManuallyRequest\n *\n * Optional polymorphic tool_call override for this run. When omitted or empty, the DAC's persisted tool_call is used.\n */\nexport type RunManuallyRequest = {\n /**\n * One-shot polymorphic tool_call override. Same `tool_call_type` discriminator and variants as DataActivationClientRequest.tool_call.\n */\n tool_call?: ({\n tool_call_type: 'DataActivationClientRESTCallRequest';\n } & DataActivationClientRestCallRequest) | ({\n tool_call_type: 'DataActivationClientSQLQueryCallRequest';\n } & DataActivationClientSqlQueryCallRequest) | ({\n tool_call_type: 'DataActivationClientSFTPCallRequest';\n } & DataActivationClientSftpCallRequest) | ({\n tool_call_type: 'DataActivationClientSharePointExcelCallRequest';\n } & DataActivationClientSharePointExcelCallRequest) | ({\n tool_call_type: 'DataActivationClientAWSLambdaCallRequest';\n } & DataActivationClientAwsLambdaCallRequest) | ({\n tool_call_type: 'DataActivationClientManualUploadCallRequest';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 'DataActivationClientS3CallRequest';\n } & DataActivationClientS3CallRequest) | null;\n};\n\n/**\n * ActionStatusUpdaterListResponse\n *\n * Paginated list of action status updaters\n */\nexport type ActionStatusUpdaterListResponse = {\n /**\n * List of action status updaters\n */\n data: Array<ActionStatusUpdaterResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingRequest\n */\nexport type ToolEndUserMessagingRequest = EndUserMessagingRequest & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * ManualToolInvocationEmailCallRequest\n */\nexport type ManualToolInvocationEmailCallRequest = EmailCallRequest & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ConnectedAppResponse\n *\n * External web application connected to the platform via M2M API key\n */\nexport type ConnectedAppResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n /**\n * CF Pages project name\n */\n readonly project_name?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Error message from last failed operation\n */\n readonly error?: string | null;\n /**\n * Connected App ID\n */\n readonly id?: string;\n /**\n * Creation timestamp\n */\n readonly inserted_at?: string;\n /**\n * Last successful route sync\n */\n readonly last_synced_at?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * Discovered form routes from .well-known/routes.json\n */\n readonly routes?: Array<{\n /**\n * Route description\n */\n description?: string | null;\n /**\n * Route display name\n */\n name: string;\n /**\n * Route path within the app\n */\n path: string;\n }>;\n /**\n * URL-friendly slug\n */\n readonly slug?: string;\n /**\n * Current deployment/sync status\n */\n readonly status?: 'pending' | 'deploying' | 'deployed' | 'synced' | 'error';\n /**\n * Last update timestamp\n */\n readonly updated_at?: string;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * TextToSqlResponse\n *\n * Generated SQL for a natural-language prompt. `explanation` is a best-effort plain-language\n * description of the SQL (`null` if the explainer was unavailable). The SQL is returned for\n * review/editing; run it via `POST .../execute-sql`.\n *\n */\nexport type TextToSqlResponse = {\n /**\n * Plain-language explanation of what the SQL does; null when unavailable\n */\n explanation: string | null;\n /**\n * The model that produced the SQL (e.g. `anthropic:claude-opus-4`)\n */\n model: string;\n /**\n * The provider that produced the SQL (e.g. `anthropic`, `ollama`)\n */\n provider: string;\n /**\n * The generated SQL statement\n */\n sql: string;\n};\n\n/**\n * DatalakeCloudStorageAwsRequest\n */\nexport type DatalakeCloudStorageAwsRequest = CloudStorageAwsRequest & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * AgenticWorkflowListResponse\n *\n * Paginated list of agentic workflows\n */\nexport type AgenticWorkflowListResponse = {\n /**\n * List of agentic workflows\n */\n data: Array<AgenticWorkflowResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionMMSCallRequest\n */\nexport type ActionMmsCallRequest = MmsCallRequest & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * RoleResponse\n *\n * Lean role reference — id, name, and description\n */\nexport type RoleResponse = {\n /**\n * Role description\n */\n description?: string | null;\n /**\n * Role ID\n */\n readonly id: string;\n /**\n * Role name (e.g. tenant_admin, platform_admin)\n */\n name: string;\n};\n\n/**\n * BatchLogListResponse\n *\n * Paginated list of batch run logs\n */\nexport type BatchLogListResponse = {\n /**\n * List of batch run logs\n */\n data: Array<BatchLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * RunManuallyResponse\n *\n * Acknowledgement of an enqueued manual run. The `batch_id` can be used to poll per-dataset processing logs (via upcoming runs list/show endpoints).\n */\nexport type RunManuallyResponse = {\n /**\n * Batch ID stamped on every Oban job for this run\n */\n batch_id: string;\n};\n\n/**\n * ToolTwilioResponse\n */\nexport type ToolTwilioResponse = TwilioResponse & {\n tool_body_type: 'twilio';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallRequest\n */\nexport type ManualToolInvocationAwsLambdaCallRequest = AwsLambdaCallRequest & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolSFTPResponse\n */\nexport type ToolSftpResponse = SftpResponse & {\n tool_body_type: 'sftp';\n};\n\n/**\n * SignInRequest\n *\n * Exchange user credentials for a Bearer session token.\n *\n * `tenant_slug` is optional — when omitted, returns a tenant-less Bearer for\n * use on `/api/v1/admin/...` operations and pre-tenant flows like\n * `POST /api/v1/tenants` (creating your first tenant). When provided,\n * returns a tenant-scoped Bearer with the caller's membership role.\n *\n * For M2M authentication, use the `X-API-Key` header directly instead.\n * Request\n */\nexport type SignInRequest = {\n /**\n * User email address\n */\n email: string;\n /**\n * Session duration in seconds. Default: 86400 (24h). Maximum: 2592000 (30 days).\n */\n expires_in?: number | null;\n /**\n * User password\n */\n password: string;\n /**\n * Tenant slug to create session for. Omit to mint a tenant-less Bearer (admin operations, pre-tenant sign-up flow).\n */\n tenant_slug?: string | null;\n};\n\n/**\n * GenericTableColumnRequest\n *\n * Generic table column definition. Request\n */\nexport type GenericTableColumnRequest = {\n /**\n * Column description\n */\n description: string;\n is_array?: boolean;\n is_checksum?: boolean;\n is_required?: boolean;\n is_unique?: boolean;\n /**\n * Column name\n */\n name: string;\n privacy_requirement?: 'none' | 'tokenize' | 'redact_only';\n /**\n * Display title\n */\n title: string;\n /**\n * Column data type\n */\n type: 'string' | 'integer' | 'float' | 'boolean' | 'date' | 'datetime' | 'time' | 'jsonb';\n};\n\n/**\n * ToolS3Request\n */\nexport type ToolS3Request = S3Request & {\n tool_body_type: 's3';\n};\n\n/**\n * ManualToolInvocationRESTCallRequest\n */\nexport type ManualToolInvocationRestCallRequest = RestCallRequest & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * CloudWatchQueryResponse\n *\n * CloudWatch log group query descriptor — log group name plus Liquid-templated time window. Reusable across any caller that needs CloudWatch polling (currently ActionStatusUpdater.updater_body). Title is CloudWatchQuery (not CloudWatchRequest) to avoid triple-`Request` stacking in the library-generated parent-contextual sibling module names (e.g. ActionStatusUpdaterCloudWatchQueryRequest).\n */\nexport type CloudWatchQueryResponse = {\n /**\n * Liquid template for the poll window end time, rendered with `{{ now_msec }}` in unix milliseconds (e.g., \"{{ now_msec }}\")\n */\n end_time: string;\n /**\n * CloudWatch log group name to poll for delivery events\n */\n log_group_name: string;\n /**\n * Liquid template for the poll window start time, rendered with `{{ now }}` in unix milliseconds (e.g., \"{{ now_msec | minutes_ago: 45 }}\")\n */\n start_time: string;\n};\n\n/**\n * SignUpRequest\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape. The created user is **unconfirmed** — caller must\n * confirm separately (e.g. via the email confirmation flow, or via\n * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.\n *\n * No authentication is required.\n * Request\n */\nexport type SignUpRequest = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name: string | null;\n /**\n * Last name\n */\n last_name: string | null;\n};\n\n/**\n * AiAgentResponse\n *\n * AI Agent configuration — reusable chat-completion resource\n */\nexport type AiAgentResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n datalake?: DatalakeResponse;\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tenant?: TenantResponse;\n tool?: ToolResponse;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientSQLQueryCallRequest\n */\nexport type DataActivationClientSqlQueryCallRequest = SqlQueryCallRequest & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ToolSNSRequest\n */\nexport type ToolSnsRequest = SnsRequest & {\n tool_body_type: 'sns';\n};\n\n/**\n * InvitationListResponse\n *\n * Paginated list of invitations\n */\nexport type InvitationListResponse = {\n /**\n * List of invitations\n */\n data: Array<InvitationResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionStatusUpdaterRequest\n *\n * Action Status Updater — automated polling for delivery status updates. Request\n */\nexport type ActionStatusUpdaterRequest = {\n action_log_config: SimpleTemplateConfigRequest;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigRequest;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientLogListResponse\n *\n * Paginated list of data activation client logs\n */\nexport type DataActivationClientLogListResponse = {\n /**\n * List of data activation client logs\n */\n data: Array<DataActivationClientLogResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * AiAgentListResponse\n *\n * Paginated list of AI agents\n */\nexport type AiAgentListResponse = {\n /**\n * List of AI agents\n */\n data: Array<AiAgentResponse>;\n meta: PaginationMeta;\n};\n\n/**\n * ConnectedAppUrlRequest\n *\n * URL entry for a Connected App Request\n */\nexport type ConnectedAppUrlRequest = {\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n};\n\n/**\n * ConnectedAppRequest\n *\n * External web application connected to the platform via M2M API key Request\n */\nexport type ConnectedAppRequest = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n /**\n * CF Pages project name\n */\n readonly project_name?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * AdminCreateTenantApiKeyRequest\n *\n * Attributes for an admin-provisioned public_api key.\n */\nexport type AdminCreateTenantApiKeyRequest = {\n /**\n * Browser origins permitted to use this key cross-origin. Defaults to none.\n */\n allowed_origins?: Array<string>;\n /**\n * Capability ceiling baked into the key — see ApiKey.data_access_mode.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * Human-readable name for the key.\n */\n name: string;\n};\n\n/**\n * CloudStorageR2Response\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints.\n */\nexport type CloudStorageR2Response = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n};\n\n/**\n * S3Request\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2). Request\n */\nexport type S3Request = {\n base_prefix?: ComplexTemplateConfigRequest;\n};\n\n/**\n * DataSourceResponse\n *\n * Data source — connection to a third-party system or API\n */\nexport type DataSourceResponse = {\n /**\n * SHA-256 drift fingerprint over authored fields (server-computed)\n */\n readonly checksum?: string;\n datalake?: DatalakeResponse;\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * TwilioResponse\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity.\n */\nexport type TwilioResponse = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n base_message?: ComplexTemplateConfigResponse | null;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * SQLDatabaseRequest\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake). Request\n */\nexport type SqlDatabaseRequest = {\n base_query?: ComplexTemplateConfigRequest;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * SMSCallRequest\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category. Request\n */\nexport type SmsCallRequest = {\n body: SimpleTemplateConfigRequest;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ToolRESTAPIResponse\n */\nexport type ToolRestapiResponse = RestapiResponse & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * UserSearchResponse\n *\n * User SQL search resource. Created via `POST /datasets/:dataset/user-searches`\n * with a `WHERE`-clause body in `search_query`; the platform executes\n * `INSERT INTO search_results SELECT … WHERE <body>` to populate\n * `search_results` and reports back `status`, `results_count`, and\n * `error_message`.\n *\n * UserSearch carries no `data_access_mode` of its own — the capability check\n * runs at query time via `Platform.RegulatedDatalakeRepo.prepare_query/3`,\n * which reads the ambient session and raises 403 when the ceiling is\n * insufficient. ExOpenApiUtils derives `UserSearchRequest` (writeable subset)\n * and `UserSearchResponse` (full readable shape) from this declaration via\n * the readOnly/writeOnly markers on each property.\n *\n */\nexport type UserSearchResponseWritable = {\n /**\n * Generic-table identifier. Required when the dataset is a generic table; must be omitted otherwise.\n */\n generic_table_id?: string | null;\n /**\n * SQL `WHERE`-clause body. The platform wraps it in `INSERT INTO search_results SELECT … WHERE <body>`. Reference the table aliases exposed by the dataset's base decomposed query (see `GET /datasets/:dataset_type/metadata`).\n */\n search_query: string;\n};\n\n/**\n * ActionExecutionLogResponse\n *\n * Per-action execution log — child of a WorkflowExecutionLog, one row per scheduled action.\n */\nexport type ActionExecutionLogResponseWritable = {\n /**\n * Action ID\n */\n action_id: string;\n action_type: ActionType;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n /**\n * Completed-at timestamp\n */\n completed_at?: string | null;\n /**\n * Context key\n */\n context_key?: string | null;\n /**\n * Decision key (denormalised from action)\n */\n decision_key?: string | null;\n /**\n * Error description (no customer data)\n */\n error_message?: string | null;\n /**\n * External system reference (Twilio SID, SES message ID, etc.)\n */\n external_id?: string | null;\n /**\n * Action execution log ID\n */\n id: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Cross-DB UUID of the message produced by this action (datalake-resident; no FK)\n */\n message_id?: string | null;\n /**\n * Execution mode (`live` = normal, `dry_run` = preview only)\n */\n mode: 'live' | 'dry_run';\n /**\n * Retry count\n */\n retry_count?: number;\n /**\n * Result of the action's runtime_filter Liquid expression\n */\n runtime_filter_result?: boolean | null;\n /**\n * Scheduled-at timestamp\n */\n scheduled_at?: string | null;\n /**\n * Started-at timestamp\n */\n started_at?: string | null;\n /**\n * Execution state\n */\n status: 'pending' | 'executing' | 'completed' | 'failed' | 'skipped' | 'filtered' | 'cancelled';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Parent workflow execution log ID\n */\n workflow_execution_log_id: string;\n /**\n * Workflow ID\n */\n workflow_id: string;\n};\n\n/**\n * ContextDatasetResponse\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages.\n */\nexport type ContextDatasetResponseWritable = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * DatalakeRequest\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses. Request\n */\nexport type DatalakeRequestWritable = {\n /**\n * Unregulated writer DB password\n */\n unregulated_db_writer_pass: string;\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Unregulated writer DB username\n */\n unregulated_db_writer_user: string;\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n regulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsRequestWritable) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2RequestWritable) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomRequestWritable);\n unregulated_cloud_storage: ({\n cloud_storage_type: 'aws';\n } & DatalakeCloudStorageAwsRequestWritable) | ({\n cloud_storage_type: 'r2';\n } & DatalakeCloudStorageR2RequestWritable) | ({\n cloud_storage_type: 'custom';\n } & DatalakeCloudStorageCustomRequestWritable);\n /**\n * Regulated reader DB password\n */\n regulated_data_db_reader_pass: string;\n /**\n * Regulated writer DB username\n */\n regulated_data_db_writer_user: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Regulated reader DB username\n */\n regulated_data_db_reader_user: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Unregulated reader DB username\n */\n unregulated_db_reader_user: string;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Regulated writer DB password\n */\n regulated_data_db_writer_pass: string;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Unregulated reader DB password\n */\n unregulated_db_reader_pass: string;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * ToolRESTAPIRequest\n */\nexport type ToolRestapiRequestWritable = RestapiRequestWritable & {\n tool_body_type: 'rest_api';\n};\n\n/**\n * DataActivationClientListResponse\n *\n * Paginated list of data activation clients\n */\nexport type DataActivationClientListResponseWritable = {\n /**\n * List of data activation clients\n */\n data: Array<DataActivationClientResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * MembershipResponse\n *\n * Tenant membership — binds a user to a tenant with a role.\n */\nexport type MembershipResponseWritable = {\n tenant?: TenantResponseWritable;\n};\n\n/**\n * EmailCallRequest\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body. Request\n */\nexport type EmailCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n subject: SimpleTemplateConfigRequest;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionEmailCallRequest\n */\nexport type ActionEmailCallRequestWritable = EmailCallRequestWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * DatalakeCloudStorageCustomResponse\n */\nexport type DatalakeCloudStorageCustomResponseWritable = CloudStorageCustomResponse & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * AgenticWorkflowResponse\n *\n * Agentic Workflow — event-driven automation pipeline\n */\nexport type AgenticWorkflowResponseWritable = {\n datalake?: DatalakeResponseWritable;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n /**\n * Workflow description\n */\n description: string;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ManualToolInvocationResponse\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response.\n */\nexport type ManualToolInvocationResponseWritable = {\n [key: string]: unknown;\n};\n\n/**\n * CloudWatchLogGroupResponse\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling.\n */\nexport type CloudWatchLogGroupResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * CloudflarePagesConfigResponse\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps\n */\nexport type CloudflarePagesConfigResponseWritable = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * TenantResponse\n *\n * Tenant resource. The auto-generated `TenantRequest` shape carries only\n * the writable fields (`name`, `description`); `TenantResponse` returns the\n * full read surface (`id`, `slug`, `name`, `description`).\n *\n */\nexport type TenantResponseWritable = {\n /**\n * Optional free-text description; max 1000 chars.\n */\n description?: string | null;\n /**\n * Human-readable tenant name. Required on create; max 160 chars.\n */\n name: string;\n};\n\n/**\n * ActionSMSCallRequest\n */\nexport type ActionSmsCallRequestWritable = SmsCallRequestWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * DataActivationClientLogResponse\n *\n * One log row per `(batch_id, dataset_table)`. A batch fans out into one log per dataset table — so a single run (one `batch_id`) produces multiple log rows, one per table the DAC writes into. Once `BatchMergeWorker` has finished, `output_files` carries one entry per bucket mode, each an `object_key` — a cloud-storage key, not a URL. To read an archive, presign the key with `POST /datalakes/{datalake_slug}/download-link`.\n */\nexport type DataActivationClientLogResponseWritable = {\n /**\n * Batch identifier stamped on every Oban job for this run\n */\n batch_id: string;\n /**\n * Target dataset table for this slice (e.g. patients, observations)\n */\n dataset_table: string;\n /**\n * Number of existing rows whose checksum changed (trigger-maintained)\n */\n dataset_updated?: number;\n /**\n * Source file keys fetched for this slice\n */\n input_files?: Array<string>;\n /**\n * Total source rows ingested by this slice of the batch\n */\n rows_ingested?: number;\n /**\n * `failed` when the batch died before enqueueing any row — the fetch itself errored. `rows_ingested` and `input_files` are 0/[] on such a row; read `error` for the reason.\n */\n status?: 'succeeded' | 'failed';\n};\n\n/**\n * ActionStatusUpdaterResponse\n *\n * Action Status Updater — automated polling for delivery status updates.\n */\nexport type ActionStatusUpdaterResponseWritable = {\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigResponse;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientSharePointExcelCallRequest\n */\nexport type DataActivationClientSharePointExcelCallRequestWritable = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * WorkflowRunResponse\n *\n * A workflow invocation scheduled for a caller-chosen time. Every manual\n * invocation creates one, including an immediate send, which is simply\n * `scheduled_at` = now — there is no separate run-now path.\n *\n * A run is not a workflow run log. The run is the intent and is cancellable\n * while `scheduled`; the run log is the outcome it produces, and run logs also\n * arrive from Data Activation Client ingestion with no run behind them.\n *\n * The segment is resolved when the run **fires**, not when it is scheduled.\n * `matched_count` is the preview the operator saw; the audience is whatever\n * `execution_user_search_id` resolved to at send time, minus suppressed and\n * unreachable records.\n *\n */\nexport type WorkflowRunResponseWritable = {\n /**\n * Bypasses dedupe and idempotency checks for every record this run matches.\n */\n manual_override?: boolean;\n /**\n * 'live' fires real tool calls; 'dry_run' runs the pipeline without making external calls.\n */\n mode?: 'live' | 'dry_run';\n /**\n * The resolved search this run was scheduled against. Create it with `POST /datasets/:dataset/user-searches`; its `results_count` becomes this run's `matched_count`.\n */\n preview_user_search_id: string;\n /**\n * When this run fires, in UTC. An immediate send is simply now. Each action still passes through the workflow's action window, so an action may execute later than this.\n */\n scheduled_at: string;\n};\n\n/**\n * AgenticWorkflowRequest\n *\n * Agentic Workflow — event-driven automation pipeline Request\n */\nexport type AgenticWorkflowRequestWritable = {\n /**\n * Decision actions to attach to this workflow (request)\n */\n actions?: Array<ActionRequestWritable>;\n /**\n * Context-enrichment datasets to load before the decision stage (request)\n */\n context_datasets?: Array<ContextDatasetRequestWritable>;\n /**\n * Dataset type the workflow listens on (e.g. patient, appointment, generic_table)\n */\n dataset_type: string;\n decision_config?: ComplexTemplateConfigRequest;\n /**\n * Workflow description\n */\n description: string;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * Generic table ID (required when dataset_type is generic_table)\n */\n generic_table_id?: string | null;\n /**\n * Workflow ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Workflow name\n */\n name: string;\n /**\n * When true, skip MDM subject resolution\n */\n skip_mdm_resolution?: boolean;\n /**\n * Workflow status. live = auto-fired by event sampling; draft = preview only (dry-run); manual = never auto-fired, but runs for real when an operator explicitly invokes it.\n */\n status: 'live' | 'draft' | 'manual';\n /**\n * Operator-authored labels. Free text — no taxonomy, no shared vocabulary. Not read by the execution pipeline, but they DO participate in the workflow checksum, so retagging shifts the drift fingerprint. REQUIRED on every write. Send `[]` for an untagged workflow — deliberately no default, so an omitted key is a 422 rather than a silent reset to empty.\n */\n tags: Array<string>;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * AI agents to attach to this workflow (request)\n */\n workflow_ai_agents?: Array<WorkflowAiAgentRequestWritable>;\n};\n\n/**\n * AWSLambdaResponse\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes.\n */\nexport type AwsLambdaResponseWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ActionSharePointExcelCallResponse\n */\nexport type ActionSharePointExcelCallResponseWritable = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractAiAgentRequest\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline. Request\n */\nexport type InteroperabilityContractAiAgentRequestWritable = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * DataActivationClientSQLQueryCallResponse\n */\nexport type DataActivationClientSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * UserResponse\n *\n * Lean user reference — id, email, and names\n */\nexport type UserResponseWritable = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name?: string | null;\n /**\n * Last name\n */\n last_name?: string | null;\n};\n\n/**\n * MMSCallRequest\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL. Request\n */\nexport type MmsCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ActionResponse\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator.\n */\nexport type ActionResponseWritable = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * EndUserMessagingRequest\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API. Request\n */\nexport type EndUserMessagingRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractResponse\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert.\n */\nexport type InteroperabilityContractResponseWritable = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigResponse;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * ToolSharePointRequest\n */\nexport type ToolSharePointRequestWritable = SharePointRequestWritable & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ActionSMSCallResponse\n */\nexport type ActionSmsCallResponseWritable = SmsCallResponseWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ToolAWSLambdaResponse\n */\nexport type ToolAwsLambdaResponseWritable = AwsLambdaResponseWritable & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * InvitationResponse\n *\n * Pending tenant invitation — resolved into a Membership on accept.\n */\nexport type InvitationResponseWritable = {\n /**\n * Recipient email address. Must be unique per tenant.\n */\n email: string;\n /**\n * Tenant-membership role to grant on acceptance. NOT the platform-wide `User.role` enum — `tenant_admin` here is a tenant-scoped admin, not a platform admin.\n */\n role: 'member' | 'researcher' | 'admin';\n tenant?: TenantResponseWritable;\n};\n\n/**\n * ToolRequest\n *\n * Tool — a configurable capability reference for external services. Request\n */\nexport type ToolRequestWritable = {\n body?: ({\n tool_body_type: 'email';\n } & ToolEmailRequestWritable) | ({\n tool_body_type: 'sns';\n } & ToolSnsRequestWritable) | ({\n tool_body_type: 'twilio';\n } & ToolTwilioRequestWritable) | ({\n tool_body_type: 'end_user_messaging';\n } & ToolEndUserMessagingRequestWritable) | ({\n tool_body_type: 'rest_api';\n } & ToolRestapiRequestWritable) | ({\n tool_body_type: 's3';\n } & ToolS3RequestWritable) | ({\n tool_body_type: 'aws_lambda';\n } & ToolAwsLambdaRequestWritable) | ({\n tool_body_type: 'sql_database';\n } & ToolSqlDatabaseRequestWritable) | ({\n tool_body_type: 'sqs';\n } & ToolSqsRequestWritable) | ({\n tool_body_type: 'sftp';\n } & ToolSftpRequestWritable) | ({\n tool_body_type: 'sharepoint';\n } & ToolSharePointRequestWritable) | ({\n tool_body_type: 'cloud_watch_log_group';\n } & ToolCloudWatchLogGroupRequestWritable) | ({\n tool_body_type: 'manual_upload';\n } & ToolManualUploadRequest);\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n response_extractor?: ComplexTemplateConfigRequest;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * AWSLambdaRequest\n *\n * AWS Lambda tool configuration supporting managed (CloudFormation-deployed) and external (user-provided ARN) modes. Request\n */\nexport type AwsLambdaRequestWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * Authentication method (required when type is external)\n */\n auth_method?: 'access_key' | 'iam_role' | 'cloudformation';\n base_payload?: ComplexTemplateConfigRequest;\n /**\n * User-provided environment variable key-value entries passed to the Lambda function\n */\n env_vars?: Array<unknown>;\n /**\n * Lambda function ARN (required for external type, populated async for managed type)\n */\n function_arn?: string | null;\n /**\n * AWS secret access key (required when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * User-provided secret key-value entries synced to AWS Secrets Manager\n */\n secrets?: Array<unknown>;\n /**\n * SSM configuration key (required for managed type, maps to SSM parameter path)\n */\n ssm_config_key?: string | null;\n /**\n * Lambda deployment type. `managed` = platform deploys Lambda via CloudFormation; `external` = user-provided Lambda ARN.\n */\n type: 'managed' | 'external';\n};\n\n/**\n * ToolSQSRequest\n */\nexport type ToolSqsRequestWritable = SqsRequestWritable & {\n tool_body_type: 'sqs';\n};\n\n/**\n * SMSCallResponse\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category.\n */\nexport type SmsCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionRequest\n *\n * Workflow action — executes when the decision table routes to this `decision_key`. Polymorphic `tool_call` payload is variant-specific via `tool_call_type` discriminator. Request\n */\nexport type ActionRequestWritable = {\n action_type: ActionType;\n /**\n * Hour (0–23) when the action's execution window closes\n */\n action_window_end?: number | null;\n /**\n * Hour (0–23) when the action's execution window opens (failsafe, typically SMS)\n */\n action_window_start?: number | null;\n /**\n * Optional connected app — when set, the executor mints a per-recipient connected_app_form_url template variable; connected_app_route is required\n */\n connected_app_id?: string | null;\n /**\n * Liquid template rendered to JSON at execution time and stored in the connected-app page token (optional)\n */\n connected_app_metadata_template?: string | null;\n /**\n * Route path within the connected app — required when connected_app_id is set\n */\n connected_app_route?: string | null;\n /**\n * Unique decision_key within the workflow — maps to a decision-table outcome\n */\n decision_key: string;\n /**\n * Action ID — echo it back on update to modify the existing action rather than replace it\n */\n id?: string;\n /**\n * Liquid template producing the idempotency key; receives checksum, subject_id, workflow_id, action_id, decision_key\n */\n idempotency_template: string;\n /**\n * Display order within the workflow\n */\n position?: number;\n /**\n * Liquid template evaluated at execution time; when falsy, the action is skipped\n */\n runtime_filter?: string | null;\n tool_call: ({\n tool_call_type: 'sms_request';\n } & ActionSmsCallRequestWritable) | ({\n tool_call_type: 'mms_request';\n } & ActionMmsCallRequestWritable) | ({\n tool_call_type: 'email_request';\n } & ActionEmailCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & ActionSqlQueryCallRequestWritable) | ({\n tool_call_type: 'restapi_request';\n } & ActionRestCallRequestWritable) | ({\n tool_call_type: 'sftp_request';\n } & ActionSftpCallRequestWritable) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & ActionSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & ActionAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'manual_upload';\n } & ActionManualUploadCallRequest);\n /**\n * Tool that executes this action\n */\n tool_id: string;\n /**\n * Liquid template that determines when this action executes\n */\n trigger_template: string;\n};\n\n/**\n * DatalakeCloudStorageR2Request\n */\nexport type DatalakeCloudStorageR2RequestWritable = CloudStorageR2RequestWritable & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * AWSLambdaCallResponse\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout.\n */\nexport type AwsLambdaCallResponseWritable = {\n payload: SimpleTemplateConfigResponse;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * DataActivationClientRESTCallRequest\n */\nexport type DataActivationClientRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * RESTCallResponse\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there.\n */\nexport type RestCallResponseWritable = {\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigResponse;\n path: SimpleTemplateConfigResponse;\n};\n\n/**\n * WorkflowAiAgentRequest\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline. Request\n */\nexport type WorkflowAiAgentRequestWritable = {\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigRequest;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * AiAgentRequest\n *\n * AI Agent configuration — reusable chat-completion resource Request\n */\nexport type AiAgentRequestWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigRequest;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * SharePointResponse\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth.\n */\nexport type SharePointResponseWritable = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * RESTAPIResponse\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates.\n */\nexport type RestapiResponseWritable = {\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DataActivationClientRESTCallResponse\n */\nexport type DataActivationClientRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientS3CallResponse\n */\nexport type DataActivationClientS3CallResponseWritable = S3CallResponse & {\n tool_call_type: 's3_request';\n};\n\n/**\n * EmailRequest\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates. Request\n */\nexport type EmailRequestWritable = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * API key (Mailgun/SendGrid)\n */\n api_key?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * AWS secret access key (SES)\n */\n secret_access_key?: string;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP password\n */\n smtp_password?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ConnectedAppListResponse\n *\n * Paginated list of connected apps\n */\nexport type ConnectedAppListResponseWritable = {\n /**\n * List of connected apps\n */\n data: Array<ConnectedAppResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * EmailCallResponse\n *\n * Email tool-call config — Liquid-templated recipient, subject, and body.\n */\nexport type EmailCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n subject: SimpleTemplateConfigResponse;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSQLQueryCallResponse\n */\nexport type ActionSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionStatusUpdaterRefreshRequest\n *\n * Optional polymorphic updater_body override for this refresh. When omitted or empty, the updater's persisted updater_body is used.\n */\nexport type ActionStatusUpdaterRefreshRequestWritable = {\n /**\n * One-shot polymorphic updater_body override — e.g. a widened start_time/end_time window for a historical backfill. Same `updater_body_type` discriminator and variants as ActionStatusUpdaterRequest.updater_body. The persisted updater is not modified.\n */\n updater_body?: ({\n updater_body_type: 'ActionStatusUpdaterRESTCallRequestWritable';\n } & ActionStatusUpdaterRestCallRequestWritable) | ({\n updater_body_type: 'ActionStatusUpdaterCloudWatchQueryRequestWritable';\n } & ActionStatusUpdaterCloudWatchQueryRequestWritable) | null;\n};\n\n/**\n * S3CloudStorageR2Request\n */\nexport type S3CloudStorageR2RequestWritable = CloudStorageR2RequestWritable & {\n storage_config_type: 'r2';\n};\n\n/**\n * ToolTwilioRequest\n */\nexport type ToolTwilioRequestWritable = TwilioRequestWritable & {\n tool_body_type: 'twilio';\n};\n\n/**\n * WorkflowAiAgentResponse\n *\n * Join entry linking an AI agent to a workflow at a specific execution position in the enrichment pipeline.\n */\nexport type WorkflowAiAgentResponseWritable = {\n ai_agent?: MinimalAiAgentResponseWritable;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: SimpleTemplateConfigResponse;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * WorkflowLogListResponse\n *\n * Paginated list of workflow execution logs\n */\nexport type WorkflowLogListResponseWritable = {\n /**\n * List of workflow execution logs\n */\n data: Array<WorkflowLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolSQLDatabaseRequest\n */\nexport type ToolSqlDatabaseRequestWritable = SqlDatabaseRequestWritable & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * GenericTableListResponse\n *\n * Paginated list of generic tables\n */\nexport type GenericTableListResponseWritable = {\n /**\n * List of generic tables\n */\n data: Array<GenericTableResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionRESTCallRequest\n */\nexport type ActionRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * GenericTableRequest\n *\n * Generic Table — custom or system dataset table with column definitions. Request\n */\nexport type GenericTableRequestWritable = {\n /**\n * Table column definitions\n */\n columns?: Array<GenericTableColumnRequest>;\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * MMSCallResponse\n *\n * MMS tool-call config — Liquid-templated recipient and body, plain public media URL.\n */\nexport type MmsCallResponseWritable = {\n body: SimpleTemplateConfigResponse;\n /**\n * Public http(s) URL of the media to attach — fetched and re-staged into the tool's S3 media bucket\n */\n media_url: string;\n to: SimpleTemplateConfigResponse;\n};\n\n/**\n * ManualToolInvocationEmailCallResponse\n */\nexport type ManualToolInvocationEmailCallResponseWritable = EmailCallResponseWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ToolSharePointResponse\n */\nexport type ToolSharePointResponseWritable = SharePointResponseWritable & {\n tool_body_type: 'sharepoint';\n};\n\n/**\n * ToolSFTPRequest\n */\nexport type ToolSftpRequestWritable = SftpRequestWritable & {\n tool_body_type: 'sftp';\n};\n\n/**\n * ManualToolInvocationSMSCallResponse\n */\nexport type ManualToolInvocationSmsCallResponseWritable = SmsCallResponseWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryResponse\n */\nexport type ActionStatusUpdaterCloudWatchQueryResponseWritable = CloudWatchQueryResponse & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionMMSCallResponse\n */\nexport type ActionMmsCallResponseWritable = MmsCallResponseWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * ToolSQLDatabaseResponse\n */\nexport type ToolSqlDatabaseResponseWritable = SqlDatabaseResponseWritable & {\n tool_body_type: 'sql_database';\n};\n\n/**\n * ActionSQLQueryCallRequest\n */\nexport type ActionSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionSFTPCallRequest\n */\nexport type ActionSftpCallRequestWritable = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * BatchLogResponse\n *\n * Batch-level workflow run log — aggregation of per-event execution logs\n */\nexport type BatchLogResponseWritable = {\n /**\n * Batch identifier (manual:{user_search_id} or DAC batch_id)\n */\n batch_id: string;\n completed_at?: string | null;\n /**\n * Successfully completed WELs\n */\n completed_wels?: number;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Number of events expected to produce WELs\n */\n expected_events?: number;\n /**\n * Failed WELs\n */\n failed_wels?: number;\n /**\n * Workflow run log ID\n */\n id?: string;\n inserted_at?: string;\n last_refreshed_at?: string | null;\n started_at?: string | null;\n /**\n * Batch status\n */\n status: 'pending' | 'completed' | 'partial' | 'failed';\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Total WELs found at last refresh\n */\n total_wels?: number;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * AWSLambdaCallRequest\n *\n * AWS Lambda invocation descriptor — Liquid-templated payload + timeout. Request\n */\nexport type AwsLambdaCallRequestWritable = {\n payload: SimpleTemplateConfigRequest;\n /**\n * Lambda invocation timeout in milliseconds (max 900000 = 15 minutes)\n */\n timeout_ms?: number;\n};\n\n/**\n * ToolCloudWatchLogGroupRequest\n */\nexport type ToolCloudWatchLogGroupRequestWritable = CloudWatchLogGroupRequestWritable & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ManualToolInvocationSQLQueryCallRequest\n */\nexport type ManualToolInvocationSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ActionStatusUpdaterRESTCallResponse\n */\nexport type ActionStatusUpdaterRestCallResponseWritable = RestCallResponseWritable & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientAWSLambdaCallRequest\n */\nexport type DataActivationClientAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * WorkflowRunListResponse\n *\n * Paginated list of workflow runs\n */\nexport type WorkflowRunListResponseWritable = {\n /**\n * List of workflow runs\n */\n data: Array<WorkflowRunResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * MinimalAiAgentResponse\n *\n * AI Agent — identifier and runtime fields only (no tenant/datalake nesting)\n */\nexport type MinimalAiAgentResponseWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tool?: ToolResponseWritable;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientS3CallRequest\n */\nexport type DataActivationClientS3CallRequestWritable = S3CallRequest & {\n tool_call_type: 's3_request';\n};\n\n/**\n * DatasetSearchResponse\n *\n * Double-paginated dataset search results scoped to a `UserSearch`. The\n * `meta` object carries two `Flop.Meta`-shaped sub-objects:\n *\n * - `sql` — outer page over `search_results` (up to 1000 dataset IDs per\n * chunk; cap dictated by Postgres' `WHERE id IN (^ids)` plan). `null`\n * when the request was not bound to a `user_search_id`.\n * - `flop` — inner Flop page over the resource (default 20 rows).\n *\n */\nexport type DatasetSearchResponseWritable = {\n /**\n * Array of dataset records\n */\n data: Array<{\n [key: string]: unknown;\n }>;\n /**\n * Two-tier pagination metadata\n */\n meta: {\n flop: PaginationMeta;\n /**\n * Outer page over search_results — null when no UserSearch bound\n */\n sql?: PaginationMeta | unknown;\n };\n user_search: UserSearchResponseWritable;\n};\n\n/**\n * ActionAWSLambdaCallResponse\n */\nexport type ActionAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * EndUserMessagingResponse\n *\n * AWS End User Messaging tool configuration for sending MMS via the SendMediaMessage API.\n */\nexport type EndUserMessagingResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * AWS End User Messaging configuration set that routes delivery events to CloudWatch\n */\n configuration_set_name: string;\n /**\n * Custom sms-voice endpoint URL (e.g. http://localhost:8080 for the WireMock stub); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * S3 bucket (same region as the sending number) where author media is re-staged for SendMediaMessage\n */\n media_bucket: string;\n /**\n * Origination phone number or identity in E.164 format (e.g., +15551234567); must be MMS-capable\n */\n phone_number: string;\n /**\n * ID of the primary End User Messaging tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-west-2)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ToolS3Response\n */\nexport type ToolS3ResponseWritable = S3ResponseWritable & {\n tool_body_type: 's3';\n};\n\n/**\n * S3CloudStorageAwsRequest\n */\nexport type S3CloudStorageAwsRequestWritable = CloudStorageAwsRequestWritable & {\n storage_config_type: 'aws';\n};\n\n/**\n * DataActivationClientSFTPCallResponse\n */\nexport type DataActivationClientSftpCallResponseWritable = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * CloudStorageR2Request\n *\n * Cloudflare R2 cloud storage configuration — S3-compatible with auto region and account-scoped endpoints. Request\n */\nexport type CloudStorageR2RequestWritable = {\n /**\n * R2 access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * R2 bucket name\n */\n bucket: string;\n /**\n * Account-scoped R2 endpoint URL, e.g. https://<account-id>.r2.cloudflarestorage.com\n */\n endpoint: string;\n /**\n * R2 region (defaults to \"auto\")\n */\n region?: string;\n /**\n * R2 secret access key\n */\n secret_access_key: string;\n};\n\n/**\n * SharePointRequest\n *\n * Microsoft SharePoint integration via the Microsoft Graph API. Supports sites, document libraries, and lists with client-credential or managed-identity auth. Request\n */\nexport type SharePointRequestWritable = {\n /**\n * Microsoft Graph authentication method\n */\n auth_method: 'client_credentials' | 'managed_identity';\n /**\n * Microsoft tenant ID (GUID)\n */\n azure_tenant_id: string;\n base_path?: ComplexTemplateConfigRequest;\n /**\n * Azure AD application/client ID (used when auth_method is client_credentials)\n */\n client_id?: string | null;\n /**\n * Azure AD client secret (used when auth_method is client_credentials)\n */\n client_secret?: string | null;\n /**\n * Optional specific drive ID to access\n */\n drive_id?: string | null;\n /**\n * Optional path within the drive (e.g., Documents/Reports)\n */\n drive_path?: string | null;\n /**\n * Type of SharePoint resource to interact with\n */\n resource_type: 'site' | 'library' | 'list';\n /**\n * SharePoint site URL (e.g., https://contoso.sharepoint.com/sites/finance)\n */\n site_url?: string | null;\n};\n\n/**\n * ManualToolInvocationSMSCallRequest\n */\nexport type ManualToolInvocationSmsCallRequestWritable = SmsCallRequestWritable & {\n tool_call_type: 'sms_request';\n};\n\n/**\n * ManualToolInvocationRequest\n *\n * A manual test invocation of a tool. The request body carries only `tool_call` (polymorphic on `__type__`); all other fields are server-populated and returned in the response. Request\n */\nexport type ManualToolInvocationRequestWritable = {\n tool_call?: ({\n tool_call_type: 'sms_request';\n } & ManualToolInvocationSmsCallRequestWritable) | ({\n tool_call_type: 'mms_request';\n } & ManualToolInvocationMmsCallRequestWritable) | ({\n tool_call_type: 'email_request';\n } & ManualToolInvocationEmailCallRequestWritable) | ({\n tool_call_type: 'restapi_request';\n } & ManualToolInvocationRestCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & ManualToolInvocationAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & ManualToolInvocationSqlQueryCallRequestWritable);\n};\n\n/**\n * SQLQueryCallRequest\n *\n * SQL query descriptor — Liquid-templated query body. Request\n */\nexport type SqlQueryCallRequestWritable = {\n query: SimpleTemplateConfigRequest;\n};\n\n/**\n * DatalakeResponse\n *\n * Datalake configuration. Secrets (DB passwords, credentials) are write-only — accepted on create but never returned in responses.\n */\nexport type DatalakeResponseWritable = {\n /**\n * Unregulated reader auth method\n */\n unregulated_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Regulated reader DB host\n */\n regulated_data_db_reader_host: string;\n /**\n * Regulated reader DB name\n */\n regulated_data_db_reader_name: string;\n /**\n * Regulated reader DB port\n */\n regulated_data_db_reader_port: number;\n /**\n * Unregulated writer DB schema name\n */\n unregulated_db_writer_schema: string;\n /**\n * Unregulated writer DB name\n */\n unregulated_db_writer_name: string;\n /**\n * Regulated reader DB schema name\n */\n regulated_data_db_reader_schema: string;\n /**\n * Unregulated writer DB host\n */\n unregulated_db_writer_host: string;\n /**\n * Regulated writer DB name\n */\n regulated_data_db_writer_name: string;\n /**\n * Unregulated reader DB name\n */\n unregulated_db_reader_name: string;\n /**\n * Unregulated writer auth method\n */\n unregulated_db_writer_auth_method: 'password' | 'iam_role';\n tenant?: TenantResponseWritable;\n /**\n * Datalake name\n */\n name: string;\n /**\n * Datalake description\n */\n description?: string | null;\n /**\n * Database connection pool size\n */\n pool_size: number | null;\n /**\n * Unregulated reader DB port\n */\n unregulated_db_reader_port: number;\n /**\n * Unregulated reader DB host\n */\n unregulated_db_reader_host: string;\n /**\n * Enable SSL for regulated reader\n */\n regulated_data_db_reader_enable_ssl: boolean;\n /**\n * Enable SSL for unregulated reader\n */\n unregulated_db_reader_enable_ssl: boolean;\n /**\n * Regulated writer DB port\n */\n regulated_data_db_writer_port: number;\n /**\n * Unregulated writer DB port\n */\n unregulated_db_writer_port: number;\n /**\n * Enable SSL for unregulated writer\n */\n unregulated_db_writer_enable_ssl: boolean;\n /**\n * Unregulated reader DB schema name\n */\n unregulated_db_reader_schema: string;\n /**\n * Enable SSL for regulated writer\n */\n regulated_data_db_writer_enable_ssl: boolean;\n /**\n * Regulated writer DB schema name\n */\n regulated_data_db_writer_schema: string;\n /**\n * Regulated writer auth method\n */\n regulated_data_db_writer_auth_method: 'password' | 'iam_role';\n /**\n * Regulated writer DB host\n */\n regulated_data_db_writer_host: string;\n /**\n * Regulated reader auth method\n */\n regulated_data_db_reader_auth_method: 'password' | 'iam_role';\n /**\n * Datalake reporting timezone. Closed whitelist of 8 US timezones — general IANA values (including `UTC`) are rejected.\n */\n timezone: 'America/New_York' | 'America/Chicago' | 'America/Denver' | 'America/Los_Angeles' | 'America/Anchorage' | 'America/Adak' | 'Pacific/Honolulu' | 'America/Phoenix';\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n};\n\n/**\n * SFTPResponse\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth.\n */\nexport type SftpResponseWritable = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * ToolSNSResponse\n */\nexport type ToolSnsResponseWritable = SnsResponseWritable & {\n tool_body_type: 'sns';\n};\n\n/**\n * SQLQueryCallResponse\n *\n * SQL query descriptor — Liquid-templated query body.\n */\nexport type SqlQueryCallResponseWritable = {\n query: SimpleTemplateConfigResponse;\n};\n\n/**\n * ActionSFTPCallResponse\n */\nexport type ActionSftpCallResponseWritable = SftpCallResponse & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * DatalakeCloudStorageR2Response\n */\nexport type DatalakeCloudStorageR2ResponseWritable = CloudStorageR2Response & {\n cloud_storage_type: 'r2';\n};\n\n/**\n * CloudWatchLogGroupRequest\n *\n * AWS CloudWatch Logs authentication credential store. Referenced by ActionStatusUpdater for log-group polling. Request\n */\nexport type CloudWatchLogGroupRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_filter_pattern?: ComplexTemplateConfigRequest;\n /**\n * Custom CloudWatch Logs endpoint URL (e.g., http://localhost:4566 for LocalStack)\n */\n endpoint_url?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * SNSRequest\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API. Request\n */\nexport type SnsRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallResponse\n */\nexport type ManualToolInvocationAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TenantListResponse\n *\n * Paginated list of tenants\n */\nexport type TenantListResponseWritable = {\n /**\n * List of tenants\n */\n data: Array<TenantResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionEmailCallResponse\n */\nexport type ActionEmailCallResponseWritable = EmailCallResponseWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * S3Response\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2).\n */\nexport type S3ResponseWritable = {\n [key: string]: unknown;\n};\n\n/**\n * ToolEmailRequest\n */\nexport type ToolEmailRequestWritable = EmailRequestWritable & {\n tool_body_type: 'email';\n};\n\n/**\n * ManualToolInvocationRESTCallResponse\n */\nexport type ManualToolInvocationRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * ManualToolInvocationMMSCallRequest\n */\nexport type ManualToolInvocationMmsCallRequestWritable = MmsCallRequestWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * SessionResponse\n *\n * Authenticated session — issued at sign-in (`POST /api/v1/sessions`) or\n * derived from an `X-API-Key` header. The `session_token` field carries the\n * plaintext Bearer on creation responses and is null on verify responses.\n * `tenant`, `role`, and `user` are nullable for tenant-less / pre-tenant\n * sessions; `api_key` is populated for M2M sessions only.\n *\n */\nexport type SessionResponseWritable = {\n api_key?: ApiKeyResponseWritable;\n /**\n * Capability ceiling for the session. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Set at creation time from membership role (researcher locked to `:unregulated`); cannot be widened post-creation.\n */\n data_access_mode: 'regulated' | 'unregulated';\n role?: RoleResponseWritable;\n tenant?: TenantResponseWritable;\n user?: UserResponseWritable;\n};\n\n/**\n * ActionStatusUpdaterCloudWatchQueryRequest\n */\nexport type ActionStatusUpdaterCloudWatchQueryRequestWritable = CloudWatchQueryRequest & {\n updater_body_type: 'cloud_watch_request';\n};\n\n/**\n * ActionStatusUpdaterRESTCallRequest\n */\nexport type ActionStatusUpdaterRestCallRequestWritable = RestCallRequestWritable & {\n updater_body_type: 'restapi_request';\n};\n\n/**\n * SQSRequest\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages. Request\n */\nexport type SqsRequestWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (used when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * DataActivationClientAWSLambdaCallResponse\n */\nexport type DataActivationClientAwsLambdaCallResponseWritable = AwsLambdaCallResponseWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolResponse\n *\n * Tool — a configurable capability reference for external services.\n */\nexport type ToolResponseWritable = {\n /**\n * Data Source ID\n */\n data_source_id?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Tool description\n */\n description?: string | null;\n intent?: ToolIntent;\n /**\n * Tool name\n */\n name?: string;\n /**\n * Tool status\n */\n status?: 'draft' | 'active' | 'inactive' | 'error' | 'marked_for_deletion';\n};\n\n/**\n * ToolAWSLambdaRequest\n */\nexport type ToolAwsLambdaRequestWritable = AwsLambdaRequestWritable & {\n tool_body_type: 'aws_lambda';\n};\n\n/**\n * DataSourceListResponse\n *\n * Paginated list of data sources\n */\nexport type DataSourceListResponseWritable = {\n /**\n * List of data sources\n */\n data: Array<DataSourceResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * SNSResponse\n *\n * AWS SNS tool configuration for sending SMS messages via the SNS Publish API.\n */\nexport type SnsResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * IAM role ARN to assume in the customer's AWS account (used when auth_method is assume_role)\n */\n assume_role_arn?: string | null;\n /**\n * External ID for the STS AssumeRole call, unique per customer (auto-generated when auth_method is assume_role)\n */\n assume_role_external_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role' | 'assume_role';\n /**\n * Custom SNS endpoint URL (e.g., http://localhost:4566 for LocalStack); leave blank for real AWS\n */\n endpoint_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n phone_number: string;\n /**\n * ID of the primary SNS tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * InteroperabilityContractAiAgentResponse\n *\n * Join entry linking an AI agent to an interoperability contract at a specific execution position in the enrichment pipeline.\n */\nexport type InteroperabilityContractAiAgentResponseWritable = {\n ai_agent?: MinimalAiAgentResponseWritable;\n /**\n * AI agent ID\n */\n ai_agent_id: string;\n context_mapping_config: ComplexTemplateConfigResponse;\n /**\n * Execution order in the enrichment pipeline\n */\n position: number;\n};\n\n/**\n * ActionSharePointExcelCallRequest\n */\nexport type ActionSharePointExcelCallRequestWritable = SharePointExcelCallRequest & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * InteroperabilityContractRequest\n *\n * Declarative execution spec binding a `(datalake, resource_type)` pair to the ingestion pipeline: filter → transform → mdm_input → resolve → upsert. Request\n */\nexport type InteroperabilityContractRequestWritable = {\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Liquid filter body. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter.\n */\n filter_template?: string | null;\n /**\n * Generic table ID (required when resource_type == \"generic_table\")\n */\n generic_table_id?: string | null;\n /**\n * Contract ID\n */\n id?: string;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * AI agents to attach to this contract (request)\n */\n interoperability_contract_ai_agents?: Array<InteroperabilityContractAiAgentRequestWritable>;\n mdm_input_config?: SimpleTemplateConfigRequest;\n /**\n * Human-readable contract name\n */\n name: string;\n /**\n * Dataset this contract targets (e.g. \"patient\", \"observation\", \"generic_table\")\n */\n resource_type: string;\n /**\n * URL-friendly slug (derived from name on insert; immutable)\n */\n slug?: string;\n template_config: SimpleTemplateConfigRequest;\n /**\n * Template type (synced from template_config.type)\n */\n type?: 'system' | 'custom' | 'identity' | 'null';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * RESTCallRequest\n *\n * REST API call descriptor — HTTP method, path, body, params, pagination context template, and events extraction template. Reused across ActionStatusUpdater polling, data activation clients, tool protocols, OAuth token fetching, and chat completion; events_template is the status-poll extraction concern and is required only there. Request\n */\nexport type RestCallRequestWritable = {\n body?: SimpleTemplateConfigRequest;\n events_template?: SimpleTemplateConfigRequest;\n /**\n * HTTP method\n */\n method: 'head' | 'get' | 'put' | 'post' | 'delete' | 'patch';\n pagination_context_template: SimpleTemplateConfigRequest;\n params?: SimpleTemplateConfigRequest;\n path: SimpleTemplateConfigRequest;\n};\n\n/**\n * SQLDatabaseResponse\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake).\n */\nexport type SqlDatabaseResponseWritable = {\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * S3CloudStorageAwsResponse\n */\nexport type S3CloudStorageAwsResponseWritable = CloudStorageAwsResponse & {\n storage_config_type: 'aws';\n};\n\n/**\n * S3CloudStorageR2Response\n */\nexport type S3CloudStorageR2ResponseWritable = CloudStorageR2Response & {\n storage_config_type: 'r2';\n};\n\n/**\n * ContextDatasetRequest\n *\n * Context dataset for a workflow — declares which records the context builder should load (and under what filter) before the enrichment and decision stages. Request\n */\nexport type ContextDatasetRequestWritable = {\n /**\n * Dataset type — either a standard industry resource (e.g. \"patient\", \"appointment\") or \"generic_table\" to reference a custom table\n */\n dataset_type: string;\n /**\n * Required when `dataset_type == \"generic_table\"`\n */\n generic_table_id?: string | null;\n /**\n * Context dataset ID — echo it back on update to modify the existing dataset rather than replace it\n */\n id?: string;\n /**\n * Max records to load for this context dataset\n */\n limit?: number | null;\n /**\n * Ordering within the context-builder pipeline\n */\n position?: number;\n /**\n * Liquid-templated SQL WHERE clause for filtering records at runtime. The context builder appends the MDM subject FK automatically.\n */\n where_clause?: string | null;\n};\n\n/**\n * ToolEmailResponse\n */\nexport type ToolEmailResponseWritable = EmailResponseWritable & {\n tool_body_type: 'email';\n};\n\n/**\n * ToolListResponse\n *\n * Paginated list of tools\n */\nexport type ToolListResponseWritable = {\n /**\n * List of tools\n */\n data: Array<ToolResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ManualToolInvocationSQLQueryCallResponse\n */\nexport type ManualToolInvocationSqlQueryCallResponseWritable = SqlQueryCallResponseWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * SQSResponse\n *\n * AWS SQS (Simple Queue Service) tool configuration for sending and receiving queue messages.\n */\nexport type SqsResponseWritable = {\n /**\n * AWS access key ID (used when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method: 'access_key' | 'iam_role';\n /**\n * Whether the queue is a FIFO queue (URL must end with .fifo)\n */\n fifo?: boolean;\n /**\n * Optional human-readable queue name for identification\n */\n queue_name?: string | null;\n /**\n * Full SQS queue URL\n */\n queue_url: string;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n};\n\n/**\n * RESTAPIRequest\n *\n * REST API tool configuration with OpenAPI-compliant authentication (API key, basic, bearer, OAuth2, OIDC) plus base Liquid templates. Request\n */\nexport type RestapiRequestWritable = {\n /**\n * API key value (used when auth_method is api_key)\n */\n api_key?: string | null;\n /**\n * Where to send the API key (header or query parameter)\n */\n api_key_location?: 'header' | 'query';\n /**\n * Header or query-parameter name for the API key\n */\n api_key_name?: string | null;\n /**\n * Authentication method\n */\n auth_method: 'none' | 'api_key' | 'basic' | 'bearer' | 'oauth2' | 'oidc';\n base_body?: SimpleTemplateConfigRequest;\n base_headers?: SimpleTemplateConfigRequest;\n base_path?: SimpleTemplateConfigRequest;\n base_query?: SimpleTemplateConfigRequest;\n /**\n * Base URL (https) of the REST API endpoint\n */\n base_url: string;\n /**\n * Static bearer token (used when auth_method is bearer)\n */\n bearer_token?: string | null;\n /**\n * OAuth2 client ID\n */\n oauth2_client_id?: string | null;\n /**\n * OAuth2 client secret\n */\n oauth2_client_secret?: string | null;\n /**\n * OAuth2 grant type\n */\n oauth2_grant_type?: 'client_credentials' | 'authorization_code';\n /**\n * OAuth2 refresh token for authorization_code grant. Obtained from the provider's OAuth consent flow and pasted here. The platform auto-rotates it.\n */\n oauth2_refresh_token?: string | null;\n /**\n * OAuth2 scope(s)\n */\n oauth2_scope?: string | null;\n /**\n * OAuth2 token cache TTL in seconds\n */\n oauth2_token_ttl?: number | null;\n /**\n * OAuth2 token endpoint URL\n */\n oauth2_token_url?: string | null;\n /**\n * OIDC client ID\n */\n oidc_client_id?: string | null;\n /**\n * OIDC client secret\n */\n oidc_client_secret?: string | null;\n /**\n * OIDC issuer URL for discovery\n */\n oidc_issuer_url?: string | null;\n /**\n * OIDC token cache TTL in seconds\n */\n oidc_token_ttl?: number | null;\n /**\n * Password (used when auth_method is basic)\n */\n password?: string | null;\n /**\n * Request content type\n */\n request_type: 'json' | 'xml' | 'form_urlencoded' | 'multipart_form';\n /**\n * Response content type\n */\n response_type: 'json' | 'xml' | 'text' | 'binary';\n /**\n * Request timeout in milliseconds (max 300000)\n */\n timeout_ms: number;\n /**\n * Username (used when auth_method is basic)\n */\n username?: string | null;\n};\n\n/**\n * DatalakeCloudStorageCustomRequest\n */\nexport type DatalakeCloudStorageCustomRequestWritable = CloudStorageCustomRequestWritable & {\n cloud_storage_type: 'custom';\n};\n\n/**\n * DataActivationClientSharePointExcelCallResponse\n */\nexport type DataActivationClientSharePointExcelCallResponseWritable = SharePointExcelCallResponse & {\n tool_call_type: 'microsoft_share_point_excel_request';\n};\n\n/**\n * EmailResponse\n *\n * Email tool configuration — SES, Mailgun, SendGrid, SMTP, or mock (dev mailbox) provider plus base Liquid templates.\n */\nexport type EmailResponseWritable = {\n /**\n * AWS access key ID (SES)\n */\n access_key_id?: string;\n /**\n * Sending domain (Mailgun)\n */\n domain?: string;\n /**\n * Custom Mailgun API base URL (e.g., https://api.eu.mailgun.net/v3 for EU domains, or a WireMock endpoint for integration tests); leave blank for real Mailgun\n */\n endpoint_url?: string | null;\n /**\n * Default sender email address\n */\n from_email: string;\n /**\n * Default sender display name\n */\n from_name?: string | null;\n /**\n * ID of the primary Email tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Email provider (mock = in-process dev mailbox, no credentials)\n */\n provider: 'ses' | 'mailgun' | 'sendgrid' | 'smtp' | 'mock';\n /**\n * AWS region (SES)\n */\n region?: string;\n /**\n * Default reply-to address\n */\n reply_to?: string | null;\n /**\n * SMTP server hostname\n */\n smtp_host?: string;\n /**\n * SMTP server port\n */\n smtp_port?: number;\n /**\n * SMTP username\n */\n smtp_username?: string;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type?: 'primary' | 'variant';\n};\n\n/**\n * ManualToolInvocationMMSCallResponse\n */\nexport type ManualToolInvocationMmsCallResponseWritable = MmsCallResponseWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * WorkflowLogResponse\n *\n * Workflow execution log — per-event execution detail\n */\nexport type WorkflowLogResponseWritable = {\n /**\n * Completed action count\n */\n actions_completed?: number;\n /**\n * Failed action count\n */\n actions_failed?: number;\n /**\n * Pending action count\n */\n actions_pending?: number;\n /**\n * Total action count\n */\n actions_total?: number;\n /**\n * Batch identifier\n */\n batch_id?: string | null;\n completed_at?: string | null;\n /**\n * R2 storage key for context JSON\n */\n context_cloud_storage_key?: string | null;\n /**\n * Datalake ID\n */\n datalake_id?: string;\n /**\n * Error description\n */\n error_message?: string | null;\n /**\n * Whether the filter passed\n */\n filter_result?: boolean | null;\n /**\n * Execution log ID\n */\n id?: string;\n inserted_at?: string;\n /**\n * Execution mode\n */\n mode: 'live' | 'dry_run';\n /**\n * Sampled event ID\n */\n sampled_event_id?: string | null;\n started_at?: string | null;\n /**\n * Execution status\n */\n status: 'filtered' | 'pending' | 'executing' | 'completed' | 'failed' | 'partial';\n /**\n * Resolved subject ID (cross-DB)\n */\n subject_id?: string | null;\n /**\n * Subject type (e.g. patient, member)\n */\n subject_type?: string | null;\n /**\n * Tenant ID\n */\n tenant_id?: string;\n /**\n * Parent workflow ID\n */\n workflow_id?: string;\n};\n\n/**\n * CloudStorageAwsRequest\n *\n * AWS S3 cloud storage configuration supporting access key and IAM role authentication. Request\n */\nexport type CloudStorageAwsRequestWritable = {\n /**\n * AWS access key ID (required when auth_method is access_key)\n */\n access_key_id?: string | null;\n /**\n * AWS authentication method\n */\n auth_method?: 'access_key' | 'iam_role';\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * S3 bucket name\n */\n bucket: string;\n /**\n * Custom S3 endpoint URL (optional, defaults to AWS)\n */\n endpoint?: string | null;\n /**\n * AWS region (e.g., us-east-1)\n */\n region: string;\n /**\n * AWS secret access key (required when auth_method is access_key)\n */\n secret_access_key?: string | null;\n};\n\n/**\n * ToolSQSResponse\n */\nexport type ToolSqsResponseWritable = SqsResponseWritable & {\n tool_body_type: 'sqs';\n};\n\n/**\n * ApiKeyResponse\n *\n * Lean API key reference — id, name, last_four, and data_access_mode (no plaintext)\n */\nexport type ApiKeyResponseWritable = {\n /**\n * Capability ceiling baked into the key. Sessions derived from this key inherit this value. `:regulated` permits PHI/PII reads; `:unregulated` is tokenized/redacted. Cannot be widened post-creation — revoke + re-mint instead.\n */\n data_access_mode: 'regulated' | 'unregulated';\n /**\n * API key name\n */\n name: string;\n};\n\n/**\n * DataActivationClientResponse\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation.\n */\nexport type DataActivationClientResponseWritable = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * SFTPRequest\n *\n * SFTP (SSH File Transfer Protocol) server connection configuration with password or SSH key auth. Request\n */\nexport type SftpRequestWritable = {\n /**\n * SFTP authentication method\n */\n auth_method: 'password' | 'ssh_key';\n /**\n * Base directory path on the SFTP server\n */\n base_path: string;\n base_path_template?: ComplexTemplateConfigRequest;\n /**\n * SFTP server hostname or IP address\n */\n host: string;\n /**\n * SFTP password (used when auth_method is password)\n */\n password?: string | null;\n /**\n * SFTP port\n */\n port: number;\n /**\n * SSH private key content (used when auth_method is ssh_key)\n */\n private_key?: string | null;\n /**\n * Optional passphrase for encrypted SSH private key\n */\n private_key_passphrase?: string | null;\n /**\n * SFTP username\n */\n user_name: string;\n};\n\n/**\n * CloudStorageCustomRequest\n *\n * Custom S3-compatible cloud storage configuration — for MinIO, DigitalOcean Spaces, Backblaze B2, and other S3-compatible services. Requires a custom endpoint URL. Request\n */\nexport type CloudStorageCustomRequestWritable = {\n /**\n * Access key ID\n */\n access_key_id: string;\n /**\n * Base path prefix for objects within the bucket\n */\n base_path?: string;\n /**\n * Bucket name\n */\n bucket: string;\n /**\n * Custom S3-compatible endpoint URL (required)\n */\n endpoint: string;\n /**\n * Storage region (e.g., us-east-1)\n */\n region: string;\n /**\n * Secret access key\n */\n secret_access_key: string;\n};\n\n/**\n * DatalakeListResponse\n *\n * Paginated list of datalakes\n */\nexport type DatalakeListResponseWritable = {\n /**\n * List of datalakes\n */\n data: Array<DatalakeResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * DatalakeCloudStorageAwsResponse\n */\nexport type DatalakeCloudStorageAwsResponseWritable = CloudStorageAwsResponse & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * ActionRESTCallResponse\n */\nexport type ActionRestCallResponseWritable = RestCallResponseWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * DataActivationClientRequest\n *\n * Data Activation Client — binds a (datalake, data_source, tool) triple with a polymorphic `tool_call` config describing how to fetch data from the external system, plus optional cron schedule, row-level filter, downstream triggers, and interop contracts for row-level transformation. Request\n */\nexport type DataActivationClientRequestWritable = {\n /**\n * Cron expressions (Crontab syntax, array). Examples: [\"0 *6 * * *\"] for every 6 hours. Omit for on-demand clients.\n */\n cron_expressions?: Array<string>;\n /**\n * Owning data source ID\n */\n data_source_id: string;\n /**\n * DAC description\n */\n description?: string | null;\n /**\n * IDs of downstream DACs triggered after this one completes\n */\n downstream_connection_ids?: Array<string>;\n filter_config?: SimpleTemplateConfigRequest;\n /**\n * IDs of interoperability contracts used to transform each fetched row\n */\n interoperability_contract_ids?: Array<string>;\n /**\n * Which context dimensions the DAC loops over per invocation\n */\n loop_over?: Array<'services' | 'locations' | 'providers'>;\n /**\n * DAC name\n */\n name: string;\n response_extractor?: SimpleTemplateConfigRequest;\n /**\n * Optional row-level Liquid pre-filter. Renders to empty/whitespace → row passes; any non-empty trimmed render → row is skipped (rendered string is the skip reason). Nil/empty body = no filter. Same semantics as InteroperabilityContract.filter_template.\n */\n row_filter?: string | null;\n tool_call: ({\n tool_call_type: 'restapi_request';\n } & DataActivationClientRestCallRequestWritable) | ({\n tool_call_type: 'sql_query';\n } & DataActivationClientSqlQueryCallRequestWritable) | ({\n tool_call_type: 'sftp_request';\n } & DataActivationClientSftpCallRequestWritable) | ({\n tool_call_type: 'microsoft_share_point_excel_request';\n } & DataActivationClientSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'aws_lambda_request';\n } & DataActivationClientAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'manual_upload';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 's3_request';\n } & DataActivationClientS3CallRequestWritable);\n /**\n * Owning tool ID\n */\n tool_id: string;\n};\n\n/**\n * ToolCloudWatchLogGroupResponse\n */\nexport type ToolCloudWatchLogGroupResponseWritable = CloudWatchLogGroupResponseWritable & {\n tool_body_type: 'cloud_watch_log_group';\n};\n\n/**\n * ActionAWSLambdaCallRequest\n */\nexport type ActionAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * TwilioRequest\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity. Request\n */\nexport type TwilioRequestWritable = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n /**\n * Twilio Auth Token (required on a primary; supplied by the primary on a variant)\n */\n auth_token?: string | null;\n base_message?: ComplexTemplateConfigRequest;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * GenericTableResponse\n *\n * Generic Table — custom or system dataset table with column definitions.\n */\nexport type GenericTableResponseWritable = {\n /**\n * Industry data domain. Each value carries a stability tier in the `x-stability` extension — `stable` domains hold their dataset shapes across releases; `experimental` domains may change without notice.\n */\n data_domain?: 'healthcare' | 'core_banking' | 'payments' | 'subscription' | 'service_commerce' | 'trading' | 'foundation';\n /**\n * Table description\n */\n description?: string;\n /**\n * User-friendly table title\n */\n title?: string;\n};\n\n/**\n * InteroperabilityContractListResponse\n *\n * Paginated list of interoperability contracts\n */\nexport type InteroperabilityContractListResponseWritable = {\n /**\n * List of interoperability contracts\n */\n data: Array<InteroperabilityContractResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingResponse\n */\nexport type ToolEndUserMessagingResponseWritable = EndUserMessagingResponseWritable & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * CloudflarePagesConfigRequest\n *\n * Cloudflare Pages deployment configuration for managed Connected Apps Request\n */\nexport type CloudflarePagesConfigRequestWritable = {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token with Pages permissions (never returned in responses)\n */\n api_token: string;\n /**\n * Build command (e.g. \"npm run build\")\n */\n build_command?: string | null;\n /**\n * Build output directory (e.g. \"dist\", \"build\")\n */\n destination_dir?: string | null;\n /**\n * GitHub authentication method — `github_app` uses account-level CF authorization (no per-app credentials), `pat` uses a per-app Personal Access Token\n */\n github_auth_method: 'github_app' | 'pat';\n /**\n * GitHub Personal Access Token (required when github_auth_method=pat, never returned in responses)\n */\n github_pat?: string | null;\n /**\n * Git branch for production deployments\n */\n production_branch?: string | null;\n};\n\n/**\n * DataActivationClientSFTPCallRequest\n */\nexport type DataActivationClientSftpCallRequestWritable = SftpCallRequest & {\n tool_call_type: 'sftp_request';\n};\n\n/**\n * RunManuallyRequest\n *\n * Optional polymorphic tool_call override for this run. When omitted or empty, the DAC's persisted tool_call is used.\n */\nexport type RunManuallyRequestWritable = {\n /**\n * One-shot polymorphic tool_call override. Same `tool_call_type` discriminator and variants as DataActivationClientRequest.tool_call.\n */\n tool_call?: ({\n tool_call_type: 'DataActivationClientRESTCallRequestWritable';\n } & DataActivationClientRestCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSQLQueryCallRequestWritable';\n } & DataActivationClientSqlQueryCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSFTPCallRequestWritable';\n } & DataActivationClientSftpCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientSharePointExcelCallRequestWritable';\n } & DataActivationClientSharePointExcelCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientAWSLambdaCallRequestWritable';\n } & DataActivationClientAwsLambdaCallRequestWritable) | ({\n tool_call_type: 'DataActivationClientManualUploadCallRequest';\n } & DataActivationClientManualUploadCallRequest) | ({\n tool_call_type: 'DataActivationClientS3CallRequestWritable';\n } & DataActivationClientS3CallRequestWritable) | null;\n};\n\n/**\n * ActionStatusUpdaterListResponse\n *\n * Paginated list of action status updaters\n */\nexport type ActionStatusUpdaterListResponseWritable = {\n /**\n * List of action status updaters\n */\n data: Array<ActionStatusUpdaterResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolEndUserMessagingRequest\n */\nexport type ToolEndUserMessagingRequestWritable = EndUserMessagingRequestWritable & {\n tool_body_type: 'end_user_messaging';\n};\n\n/**\n * ManualToolInvocationEmailCallRequest\n */\nexport type ManualToolInvocationEmailCallRequestWritable = EmailCallRequestWritable & {\n tool_call_type: 'email_request';\n};\n\n/**\n * ConnectedAppResponse\n *\n * External web application connected to the platform via M2M API key\n */\nexport type ConnectedAppResponseWritable = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token\n */\n api_token?: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * GitHub PAT (required for pat method)\n */\n github_pat?: string | null;\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * DatalakeCloudStorageAwsRequest\n */\nexport type DatalakeCloudStorageAwsRequestWritable = CloudStorageAwsRequestWritable & {\n cloud_storage_type: 'aws';\n};\n\n/**\n * AgenticWorkflowListResponse\n *\n * Paginated list of agentic workflows\n */\nexport type AgenticWorkflowListResponseWritable = {\n /**\n * List of agentic workflows\n */\n data: Array<AgenticWorkflowResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionMMSCallRequest\n */\nexport type ActionMmsCallRequestWritable = MmsCallRequestWritable & {\n tool_call_type: 'mms_request';\n};\n\n/**\n * RoleResponse\n *\n * Lean role reference — id, name, and description\n */\nexport type RoleResponseWritable = {\n /**\n * Role description\n */\n description?: string | null;\n /**\n * Role name (e.g. tenant_admin, platform_admin)\n */\n name: string;\n};\n\n/**\n * BatchLogListResponse\n *\n * Paginated list of batch run logs\n */\nexport type BatchLogListResponseWritable = {\n /**\n * List of batch run logs\n */\n data: Array<BatchLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ToolTwilioResponse\n */\nexport type ToolTwilioResponseWritable = TwilioResponseWritable & {\n tool_body_type: 'twilio';\n};\n\n/**\n * ManualToolInvocationAWSLambdaCallRequest\n */\nexport type ManualToolInvocationAwsLambdaCallRequestWritable = AwsLambdaCallRequestWritable & {\n tool_call_type: 'aws_lambda_request';\n};\n\n/**\n * ToolSFTPResponse\n */\nexport type ToolSftpResponseWritable = SftpResponseWritable & {\n tool_body_type: 'sftp';\n};\n\n/**\n * ToolS3Request\n */\nexport type ToolS3RequestWritable = S3RequestWritable & {\n tool_body_type: 's3';\n};\n\n/**\n * ManualToolInvocationRESTCallRequest\n */\nexport type ManualToolInvocationRestCallRequestWritable = RestCallRequestWritable & {\n tool_call_type: 'restapi_request';\n};\n\n/**\n * SignUpRequest\n *\n * Register a new user account. Mirrors the `/auth/register` LiveView form\n * submission shape. The created user is **unconfirmed** — caller must\n * confirm separately (e.g. via the email confirmation flow, or via\n * `PUT /api/v1/admin/users/:id/confirm` for tests) before signing in.\n *\n * No authentication is required.\n * Request\n */\nexport type SignUpRequestWritable = {\n /**\n * User email\n */\n email: string;\n /**\n * First name\n */\n first_name: string | null;\n /**\n * Last name\n */\n last_name: string | null;\n /**\n * Password (8–72 characters; mirrors the `/auth/register` LiveView form)\n */\n password: string;\n};\n\n/**\n * AiAgentResponse\n *\n * AI Agent configuration — reusable chat-completion resource\n */\nexport type AiAgentResponseWritable = {\n /**\n * Data access level\n */\n data_access: 'regulated' | 'unregulated';\n datalake?: DatalakeResponseWritable;\n /**\n * Agent description\n */\n description?: string | null;\n /**\n * Whether the agent is enabled\n */\n enabled: boolean;\n /**\n * AI Agent ID\n */\n id?: string;\n /**\n * JSON Schema describing the agent's input contract — validated by the runner against caller context on every invocation.\n */\n input_schema: {\n [key: string]: unknown;\n };\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * JSON Schema for LLM response format\n */\n llm_response_schema: {\n [key: string]: unknown;\n } | null;\n /**\n * Maximum tokens for LLM response\n */\n max_tokens: number;\n /**\n * LLM model identifier\n */\n model: string;\n /**\n * Agent name\n */\n name: string;\n prompt_config: SimpleTemplateConfigResponse;\n /**\n * URL-friendly slug\n */\n slug?: string;\n /**\n * Sampling temperature (0.0–2.0)\n */\n temperature: number;\n tenant?: TenantResponseWritable;\n tool?: ToolResponseWritable;\n /**\n * Tool ID\n */\n tool_id: string;\n /**\n * Last update timestamp\n */\n updated_at?: string;\n};\n\n/**\n * DataActivationClientSQLQueryCallRequest\n */\nexport type DataActivationClientSqlQueryCallRequestWritable = SqlQueryCallRequestWritable & {\n tool_call_type: 'sql_query';\n};\n\n/**\n * ToolSNSRequest\n */\nexport type ToolSnsRequestWritable = SnsRequestWritable & {\n tool_body_type: 'sns';\n};\n\n/**\n * InvitationListResponse\n *\n * Paginated list of invitations\n */\nexport type InvitationListResponseWritable = {\n /**\n * List of invitations\n */\n data: Array<InvitationResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ActionStatusUpdaterRequest\n *\n * Action Status Updater — automated polling for delivery status updates. Request\n */\nexport type ActionStatusUpdaterRequestWritable = {\n action_log_config: SimpleTemplateConfigRequest;\n /**\n * Cron schedule expression (e.g. \"*30 * * * *\")\n */\n cron_expression: string;\n /**\n * Datalake ID\n */\n datalake_id: string;\n /**\n * JSON Schema the rendered events_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an array whose items are objects listing \"external_id\" in \"required\" — every event has to name the message it reconciles, so the events_template maps the provider's own id (messageId / id / sid) into external_id. Add whatever else your provider guarantees on top; the platform only enforces the floor.\n */\n events_output_schema?: {\n [key: string]: unknown;\n } | null;\n message_config: SimpleTemplateConfigRequest;\n /**\n * Updater name\n */\n name: string;\n /**\n * JSON Schema the rendered pagination_context_template output is validated against on every poll (required for restapi updaters). FLOOR: it must describe an object listing \"has_next\" in \"required\" — that key is what ends the page loop. Add the provider's cursor keys on top; the platform only enforces the floor.\n */\n pagination_context_output_schema?: {\n [key: string]: unknown;\n } | null;\n /**\n * IDs of sender tools whose messages this updater monitors\n */\n sender_tool_ids?: Array<string> | null;\n /**\n * Whether this updater may poll. The server sets cycle_detected when a run re-reads events it has already handled, and every later job then fails without calling the provider. Set it back to active to resume polling — nothing else clears it.\n */\n status?: 'active' | 'cycle_detected';\n updater_body: ({\n updater_body_type: 'cloud_watch_request';\n } & ActionStatusUpdaterCloudWatchQueryRequestWritable) | ({\n updater_body_type: 'restapi_request';\n } & ActionStatusUpdaterRestCallRequestWritable);\n /**\n * Tool providing auth credentials for polling\n */\n updater_tool_id: string;\n /**\n * Updater type — determines the updater_body shape\n */\n updater_type: 'cloud_watch' | 'restapi';\n};\n\n/**\n * DataActivationClientLogListResponse\n *\n * Paginated list of data activation client logs\n */\nexport type DataActivationClientLogListResponseWritable = {\n /**\n * List of data activation client logs\n */\n data: Array<DataActivationClientLogResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * AiAgentListResponse\n *\n * Paginated list of AI agents\n */\nexport type AiAgentListResponseWritable = {\n /**\n * List of AI agents\n */\n data: Array<AiAgentResponseWritable>;\n meta: PaginationMeta;\n};\n\n/**\n * ConnectedAppRequest\n *\n * External web application connected to the platform via M2M API key Request\n */\nexport type ConnectedAppRequestWritable = {\n /**\n * Cloudflare Pages deployment config (required for managed mode)\n */\n cloudflare_pages_config?: {\n /**\n * Cloudflare account ID\n */\n account_id: string;\n /**\n * Cloudflare API token\n */\n api_token?: string;\n /**\n * Build command\n */\n build_command?: string | null;\n /**\n * Build output directory\n */\n destination_dir?: string | null;\n /**\n * GitHub auth method\n */\n github_auth_method?: 'github_app' | 'pat';\n /**\n * GitHub PAT (required for pat method)\n */\n github_pat?: string | null;\n /**\n * Git branch for production\n */\n production_branch?: string | null;\n } | null;\n /**\n * Optional description\n */\n description?: string | null;\n /**\n * Deployment mode\n */\n mode: 'managed' | 'self_hosted';\n /**\n * Display name (unique within datalake)\n */\n name: string;\n /**\n * GitHub repo URL (required for managed mode, optional for self-hosted)\n */\n repo_url?: string | null;\n /**\n * App URLs with primary designation (at least one required for self_hosted)\n */\n urls?: Array<{\n /**\n * Whether this is the primary URL\n */\n is_primary?: boolean;\n /**\n * Display label\n */\n label?: string | null;\n /**\n * App URL (http/https)\n */\n url: string;\n }>;\n};\n\n/**\n * S3Request\n *\n * S3-compatible storage tool configuration with a nested polymorphic provider config (AWS or R2). Request\n */\nexport type S3RequestWritable = {\n base_prefix?: ComplexTemplateConfigRequest;\n config: ({\n storage_config_type: 'aws';\n } & S3CloudStorageAwsRequestWritable) | ({\n storage_config_type: 'r2';\n } & S3CloudStorageR2RequestWritable);\n};\n\n/**\n * DataSourceResponse\n *\n * Data source — connection to a third-party system or API\n */\nexport type DataSourceResponseWritable = {\n datalake?: DatalakeResponseWritable;\n /**\n * Data source description\n */\n description?: string | null;\n /**\n * Data Source ID\n */\n id?: string;\n /**\n * Image URL\n */\n image_url?: string | null;\n /**\n * Creation timestamp\n */\n inserted_at?: string;\n /**\n * Whether this is the default data source\n */\n is_default: boolean;\n /**\n * Data source name\n */\n name: string;\n /**\n * Data source status\n */\n status: 'draft' | 'active' | 'inactive';\n /**\n * Last update timestamp\n */\n updated_at?: string;\n /**\n * Data source URI\n */\n uri: string;\n};\n\n/**\n * TwilioResponse\n *\n * Twilio tool configuration for sending SMS via the Programmable Messaging API. A primary holds the account credential; a variant names its primary and carries only its own sender identity.\n */\nexport type TwilioResponseWritable = {\n /**\n * Twilio Account SID (required on a primary; supplied by the primary on a variant)\n */\n account_sid?: string | null;\n /**\n * Custom Twilio API base URL (e.g., http://localhost:8080 for WireMock); leave blank for https://api.twilio.com\n */\n base_url?: string | null;\n /**\n * Origination phone number in E.164 format (e.g., +15551234567)\n */\n from_number?: string | null;\n /**\n * Twilio Messaging Service SID, used instead of a from_number\n */\n messaging_service_sid?: string | null;\n /**\n * ID of the primary Twilio tool supplying credentials; required when variant_type is variant\n */\n primary_tool_id?: string | null;\n /**\n * Request timeout in milliseconds (1–300000)\n */\n timeout_ms?: number | null;\n /**\n * Whether this tool holds the account credential (primary) or borrows another tool's (variant). Defaults to primary.\n */\n variant_type: 'primary' | 'variant';\n};\n\n/**\n * SQLDatabaseRequest\n *\n * SQL database connection configuration (PostgreSQL, MySQL, MSSQL, SQLite, Snowflake). Request\n */\nexport type SqlDatabaseRequestWritable = {\n base_query?: ComplexTemplateConfigRequest;\n /**\n * Database host (hostname or IP address)\n */\n db_host: string;\n /**\n * Database name\n */\n db_name: string;\n /**\n * SQL database engine\n */\n db_type: 'postgres' | 'mysql' | 'mssql' | 'sqlite' | 'snowflake';\n /**\n * Database password\n */\n password: string;\n /**\n * Ecto connection pool size\n */\n pool_size?: number | null;\n /**\n * Database port (defaults based on db_type: postgres=5432, mysql=3306, mssql=1433)\n */\n port?: number | null;\n /**\n * Enable SSL connection\n */\n ssl?: boolean | null;\n /**\n * SSL mode (e.g., 'require', 'verify-full')\n */\n ssl_mode?: string | null;\n /**\n * Database username\n */\n user_name: string;\n};\n\n/**\n * SMSCallRequest\n *\n * SMS tool-call config — Liquid-templated recipient and body plus transactional/promotional category. Request\n */\nexport type SmsCallRequestWritable = {\n body: SimpleTemplateConfigRequest;\n /**\n * SMS category — transactional vs promotional\n */\n sms_type?: 'transactional' | 'promotional';\n to: SimpleTemplateConfigRequest;\n};\n\n/**\n * ToolRESTAPIResponse\n */\nexport type ToolRestapiResponseWritable = RestapiResponseWritable & {\n tool_body_type: 'rest_api';\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumData = {\n /**\n * Full workflow resource (same shape as create/update)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/checksum';\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumError = PlatformApiAgenticWorkflowControllerChecksumErrors[keyof PlatformApiAgenticWorkflowControllerChecksumErrors];\n\nexport type PlatformApiAgenticWorkflowControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerChecksumResponse = PlatformApiAgenticWorkflowControllerChecksumResponses[keyof PlatformApiAgenticWorkflowControllerChecksumResponses];\n\nexport type PlatformApiGenericTableControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}/metadata';\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsError = PlatformApiGenericTableControllerMetadataDetailsErrors[keyof PlatformApiGenericTableControllerMetadataDetailsErrors];\n\nexport type PlatformApiGenericTableControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested generic table\n */\n 200: string;\n};\n\nexport type PlatformApiGenericTableControllerMetadataDetailsResponse = PlatformApiGenericTableControllerMetadataDetailsResponses[keyof PlatformApiGenericTableControllerMetadataDetailsResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyData = {\n /**\n * API key attributes\n */\n body: AdminCreateTenantApiKeyRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/admin/tenants/{tenant_slug}/api-keys';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyError = PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses = {\n /**\n * API key created\n */\n 201: AdminApiKeyResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponse = PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerCreateTenantApiKeyResponses];\n\nexport type PlatformApiToolControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/metadata';\n};\n\nexport type PlatformApiToolControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerMetadataDetailsError = PlatformApiToolControllerMetadataDetailsErrors[keyof PlatformApiToolControllerMetadataDetailsErrors];\n\nexport type PlatformApiToolControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested tool\n */\n 200: string;\n};\n\nexport type PlatformApiToolControllerMetadataDetailsResponse = PlatformApiToolControllerMetadataDetailsResponses[keyof PlatformApiToolControllerMetadataDetailsResponses];\n\nexport type PlatformApiDataSourceControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/metadata';\n};\n\nexport type PlatformApiDataSourceControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerMetadataError = PlatformApiDataSourceControllerMetadataErrors[keyof PlatformApiDataSourceControllerMetadataErrors];\n\nexport type PlatformApiDataSourceControllerMetadataResponses = {\n /**\n * One markdown page of the data source catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiDataSourceControllerMetadataResponse = PlatformApiDataSourceControllerMetadataResponses[keyof PlatformApiDataSourceControllerMetadataResponses];\n\nexport type PlatformApiToolControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Tool is referenced by another resource\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiToolControllerDeleteError = PlatformApiToolControllerDeleteErrors[keyof PlatformApiToolControllerDeleteErrors];\n\nexport type PlatformApiToolControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiToolControllerDeleteResponse = PlatformApiToolControllerDeleteResponses[keyof PlatformApiToolControllerDeleteResponses];\n\nexport type PlatformApiToolControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerShowError = PlatformApiToolControllerShowErrors[keyof PlatformApiToolControllerShowErrors];\n\nexport type PlatformApiToolControllerShowResponses = {\n /**\n * Tool\n */\n 200: ToolResponse;\n};\n\nexport type PlatformApiToolControllerShowResponse = PlatformApiToolControllerShowResponses[keyof PlatformApiToolControllerShowResponses];\n\nexport type PlatformApiToolControllerUpdateData = {\n /**\n * Full Tool resource (PUT semantics — all fields required)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}';\n};\n\nexport type PlatformApiToolControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerUpdateError = PlatformApiToolControllerUpdateErrors[keyof PlatformApiToolControllerUpdateErrors];\n\nexport type PlatformApiToolControllerUpdateResponses = {\n /**\n * Tool updated\n */\n 200: ToolResponse;\n};\n\nexport type PlatformApiToolControllerUpdateResponse = PlatformApiToolControllerUpdateResponses[keyof PlatformApiToolControllerUpdateResponses];\n\nexport type PlatformApiDatalakeControllerTextToSqlData = {\n /**\n * Text-to-SQL request\n */\n body: TextToSqlRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/text-to-sql';\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlError = PlatformApiDatalakeControllerTextToSqlErrors[keyof PlatformApiDatalakeControllerTextToSqlErrors];\n\nexport type PlatformApiDatalakeControllerTextToSqlResponses = {\n /**\n * Generated SQL\n */\n 200: TextToSqlResponse;\n};\n\nexport type PlatformApiDatalakeControllerTextToSqlResponse = PlatformApiDatalakeControllerTextToSqlResponses[keyof PlatformApiDatalakeControllerTextToSqlResponses];\n\nexport type PlatformApiSessionControllerVerifyApiKeyData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/api-keys/verify';\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyErrors = {\n /**\n * Invalid or missing X-API-Key\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Bearer caller\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyError = PlatformApiSessionControllerVerifyApiKeyErrors[keyof PlatformApiSessionControllerVerifyApiKeyErrors];\n\nexport type PlatformApiSessionControllerVerifyApiKeyResponses = {\n /**\n * API-key session details\n */\n 200: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerVerifyApiKeyResponse = PlatformApiSessionControllerVerifyApiKeyResponses[keyof PlatformApiSessionControllerVerifyApiKeyResponses];\n\nexport type PlatformApiDatalakeControllerMigrateData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/migrate';\n};\n\nexport type PlatformApiDatalakeControllerMigrateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerMigrateError = PlatformApiDatalakeControllerMigrateErrors[keyof PlatformApiDatalakeControllerMigrateErrors];\n\nexport type PlatformApiDatalakeControllerMigrateResponses = {\n /**\n * Migration job enqueued\n */\n 202: DatalakeMigrateResponse;\n};\n\nexport type PlatformApiDatalakeControllerMigrateResponse = PlatformApiDatalakeControllerMigrateResponses[keyof PlatformApiDatalakeControllerMigrateResponses];\n\nexport type PlatformApiSessionControllerVerifyData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/sessions/verify';\n};\n\nexport type PlatformApiSessionControllerVerifyErrors = {\n /**\n * Invalid or missing credentials\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Key-only caller\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerVerifyError = PlatformApiSessionControllerVerifyErrors[keyof PlatformApiSessionControllerVerifyErrors];\n\nexport type PlatformApiSessionControllerVerifyResponses = {\n /**\n * Session details\n */\n 200: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerVerifyResponse = PlatformApiSessionControllerVerifyResponses[keyof PlatformApiSessionControllerVerifyResponses];\n\nexport type PlatformApiDataActivationClientControllerChecksumData = {\n /**\n * Full DAC resource (same shape as create/update)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/checksum';\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumError = PlatformApiDataActivationClientControllerChecksumErrors[keyof PlatformApiDataActivationClientControllerChecksumErrors];\n\nexport type PlatformApiDataActivationClientControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerChecksumResponse = PlatformApiDataActivationClientControllerChecksumResponses[keyof PlatformApiDataActivationClientControllerChecksumResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/stop';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopError = PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStopErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses = {\n /**\n * Batch log with polling stopped\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStopResponses];\n\nexport type PlatformApiDataActivationClientControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * DAC is referenced by another resource\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteError = PlatformApiDataActivationClientControllerDeleteErrors[keyof PlatformApiDataActivationClientControllerDeleteErrors];\n\nexport type PlatformApiDataActivationClientControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDataActivationClientControllerDeleteResponse = PlatformApiDataActivationClientControllerDeleteResponses[keyof PlatformApiDataActivationClientControllerDeleteResponses];\n\nexport type PlatformApiDataActivationClientControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerShowError = PlatformApiDataActivationClientControllerShowErrors[keyof PlatformApiDataActivationClientControllerShowErrors];\n\nexport type PlatformApiDataActivationClientControllerShowResponses = {\n /**\n * DAC\n */\n 200: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerShowResponse = PlatformApiDataActivationClientControllerShowResponses[keyof PlatformApiDataActivationClientControllerShowResponses];\n\nexport type PlatformApiDataActivationClientControllerUpdateData = {\n /**\n * Full DAC resource (all required fields must be present)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateError = PlatformApiDataActivationClientControllerUpdateErrors[keyof PlatformApiDataActivationClientControllerUpdateErrors];\n\nexport type PlatformApiDataActivationClientControllerUpdateResponses = {\n /**\n * DAC updated\n */\n 200: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerUpdateResponse = PlatformApiDataActivationClientControllerUpdateResponses[keyof PlatformApiDataActivationClientControllerUpdateResponses];\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkData = {\n /**\n * Download link request\n */\n body: DownloadLinkRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/download-link';\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkError = PlatformApiDatalakeControllerCreateDownloadLinkErrors[keyof PlatformApiDatalakeControllerCreateDownloadLinkErrors];\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkResponses = {\n /**\n * Presigned download URL\n */\n 200: DownloadUrlResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateDownloadLinkResponse = PlatformApiDatalakeControllerCreateDownloadLinkResponses[keyof PlatformApiDatalakeControllerCreateDownloadLinkResponses];\n\nexport type PlatformApiDatalakeControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerDeleteError = PlatformApiDatalakeControllerDeleteErrors[keyof PlatformApiDatalakeControllerDeleteErrors];\n\nexport type PlatformApiDatalakeControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDatalakeControllerDeleteResponse = PlatformApiDatalakeControllerDeleteResponses[keyof PlatformApiDatalakeControllerDeleteResponses];\n\nexport type PlatformApiDatalakeControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerShowError = PlatformApiDatalakeControllerShowErrors[keyof PlatformApiDatalakeControllerShowErrors];\n\nexport type PlatformApiDatalakeControllerShowResponses = {\n /**\n * Datalake\n */\n 200: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerShowResponse = PlatformApiDatalakeControllerShowResponses[keyof PlatformApiDatalakeControllerShowResponses];\n\nexport type PlatformApiDatalakeControllerUpdateData = {\n /**\n * Full Datalake resource (PUT semantics — all fields required)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{id}';\n};\n\nexport type PlatformApiDatalakeControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerUpdateError = PlatformApiDatalakeControllerUpdateErrors[keyof PlatformApiDatalakeControllerUpdateErrors];\n\nexport type PlatformApiDatalakeControllerUpdateResponses = {\n /**\n * Datalake updated\n */\n 200: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerUpdateResponse = PlatformApiDatalakeControllerUpdateResponses[keyof PlatformApiDatalakeControllerUpdateResponses];\n\nexport type PlatformApiTenantControllerIndexData = {\n body?: never;\n path?: never;\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants';\n};\n\nexport type PlatformApiTenantControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTenantControllerIndexError = PlatformApiTenantControllerIndexErrors[keyof PlatformApiTenantControllerIndexErrors];\n\nexport type PlatformApiTenantControllerIndexResponses = {\n /**\n * Tenant list\n */\n 200: TenantListResponse;\n};\n\nexport type PlatformApiTenantControllerIndexResponse = PlatformApiTenantControllerIndexResponses[keyof PlatformApiTenantControllerIndexResponses];\n\nexport type PlatformApiTenantControllerCreateData = {\n /**\n * Tenant attributes\n */\n body: TenantRequest;\n path?: never;\n query?: never;\n url: '/api/v1/tenants';\n};\n\nexport type PlatformApiTenantControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiTenantControllerCreateError = PlatformApiTenantControllerCreateErrors[keyof PlatformApiTenantControllerCreateErrors];\n\nexport type PlatformApiTenantControllerCreateResponses = {\n /**\n * Tenant created\n */\n 201: TenantResponse;\n};\n\nexport type PlatformApiTenantControllerCreateResponse = PlatformApiTenantControllerCreateResponses[keyof PlatformApiTenantControllerCreateResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Execution log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}/download';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses = {\n /**\n * Presigned download URL\n */\n 200: {\n url?: string;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogDownloadResponses];\n\nexport type PlatformApiGenericTableControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables';\n};\n\nexport type PlatformApiGenericTableControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerIndexError = PlatformApiGenericTableControllerIndexErrors[keyof PlatformApiGenericTableControllerIndexErrors];\n\nexport type PlatformApiGenericTableControllerIndexResponses = {\n /**\n * Generic table list\n */\n 200: GenericTableListResponse;\n};\n\nexport type PlatformApiGenericTableControllerIndexResponse = PlatformApiGenericTableControllerIndexResponses[keyof PlatformApiGenericTableControllerIndexResponses];\n\nexport type PlatformApiGenericTableControllerCreateData = {\n /**\n * Full Generic Table resource (PUT semantics — all fields required)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables';\n};\n\nexport type PlatformApiGenericTableControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerCreateError = PlatformApiGenericTableControllerCreateErrors[keyof PlatformApiGenericTableControllerCreateErrors];\n\nexport type PlatformApiGenericTableControllerCreateResponses = {\n /**\n * Generic table created\n */\n 201: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerCreateResponse = PlatformApiGenericTableControllerCreateResponses[keyof PlatformApiGenericTableControllerCreateResponses];\n\nexport type PlatformApiInvitationControllerIndexData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/invitations';\n};\n\nexport type PlatformApiInvitationControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInvitationControllerIndexError = PlatformApiInvitationControllerIndexErrors[keyof PlatformApiInvitationControllerIndexErrors];\n\nexport type PlatformApiInvitationControllerIndexResponses = {\n /**\n * Pending invitations\n */\n 200: InvitationListResponse;\n};\n\nexport type PlatformApiInvitationControllerIndexResponse = PlatformApiInvitationControllerIndexResponses[keyof PlatformApiInvitationControllerIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts';\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexError = PlatformApiInteroperabilityContractControllerIndexErrors[keyof PlatformApiInteroperabilityContractControllerIndexErrors];\n\nexport type PlatformApiInteroperabilityContractControllerIndexResponses = {\n /**\n * Contract list\n */\n 200: InteroperabilityContractListResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerIndexResponse = PlatformApiInteroperabilityContractControllerIndexResponses[keyof PlatformApiInteroperabilityContractControllerIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerCreateData = {\n /**\n * Full contract resource (PUT semantics on update — all required fields must be present)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts';\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateError = PlatformApiInteroperabilityContractControllerCreateErrors[keyof PlatformApiInteroperabilityContractControllerCreateErrors];\n\nexport type PlatformApiInteroperabilityContractControllerCreateResponses = {\n /**\n * Contract created\n */\n 201: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerCreateResponse = PlatformApiInteroperabilityContractControllerCreateResponses[keyof PlatformApiInteroperabilityContractControllerCreateResponses];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/metadata';\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataError = PlatformApiAgenticWorkflowControllerMetadataErrors[keyof PlatformApiAgenticWorkflowControllerMetadataErrors];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataResponses = {\n /**\n * One markdown page of the workflow catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataResponse = PlatformApiAgenticWorkflowControllerMetadataResponses[keyof PlatformApiAgenticWorkflowControllerMetadataResponses];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/metadata';\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataError = PlatformApiInteroperabilityContractControllerMetadataErrors[keyof PlatformApiInteroperabilityContractControllerMetadataErrors];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataResponses = {\n /**\n * One markdown page of the interoperability contract catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataResponse = PlatformApiInteroperabilityContractControllerMetadataResponses[keyof PlatformApiInteroperabilityContractControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{id}/metadata';\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsError = PlatformApiDataActivationClientControllerMetadataDetailsErrors[keyof PlatformApiDataActivationClientControllerMetadataDetailsErrors];\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsResponses = {\n /**\n * Markdown with connected dataset field documentation\n */\n 200: string;\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataDetailsResponse = PlatformApiDataActivationClientControllerMetadataDetailsResponses[keyof PlatformApiDataActivationClientControllerMetadataDetailsResponses];\n\nexport type PlatformApiInvitationControllerAcceptData = {\n body?: never;\n path: {\n /**\n * Invitation ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/invitations/{id}/accept';\n};\n\nexport type PlatformApiInvitationControllerAcceptErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInvitationControllerAcceptError = PlatformApiInvitationControllerAcceptErrors[keyof PlatformApiInvitationControllerAcceptErrors];\n\nexport type PlatformApiInvitationControllerAcceptResponses = {\n /**\n * Membership created\n */\n 201: MembershipResponse;\n};\n\nexport type PlatformApiInvitationControllerAcceptResponse = PlatformApiInvitationControllerAcceptResponses[keyof PlatformApiInvitationControllerAcceptResponses];\n\nexport type PlatformApiWorkflowRunControllerCancelData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow run ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}/cancel';\n};\n\nexport type PlatformApiWorkflowRunControllerCancelErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiWorkflowRunControllerCancelError = PlatformApiWorkflowRunControllerCancelErrors[keyof PlatformApiWorkflowRunControllerCancelErrors];\n\nexport type PlatformApiWorkflowRunControllerCancelResponses = {\n /**\n * Cancelled run\n */\n 200: WorkflowRunResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerCancelResponse = PlatformApiWorkflowRunControllerCancelResponses[keyof PlatformApiWorkflowRunControllerCancelResponses];\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkData = {\n /**\n * Upload link request\n */\n body: UploadLinkRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/upload-link';\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkError = PlatformApiDatalakeControllerCreateUploadLinkErrors[keyof PlatformApiDatalakeControllerCreateUploadLinkErrors];\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkResponses = {\n /**\n * Presigned upload link\n */\n 200: UploadLinkResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateUploadLinkResponse = PlatformApiDatalakeControllerCreateUploadLinkResponses[keyof PlatformApiDatalakeControllerCreateUploadLinkResponses];\n\nexport type PlatformApiDatalakeControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes';\n};\n\nexport type PlatformApiDatalakeControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerIndexError = PlatformApiDatalakeControllerIndexErrors[keyof PlatformApiDatalakeControllerIndexErrors];\n\nexport type PlatformApiDatalakeControllerIndexResponses = {\n /**\n * Datalake list\n */\n 200: DatalakeListResponse;\n};\n\nexport type PlatformApiDatalakeControllerIndexResponse = PlatformApiDatalakeControllerIndexResponses[keyof PlatformApiDatalakeControllerIndexResponses];\n\nexport type PlatformApiDatalakeControllerCreateData = {\n /**\n * Full Datalake resource (POST semantics — all fields required)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes';\n};\n\nexport type PlatformApiDatalakeControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerCreateError = PlatformApiDatalakeControllerCreateErrors[keyof PlatformApiDatalakeControllerCreateErrors];\n\nexport type PlatformApiDatalakeControllerCreateResponses = {\n /**\n * Datalake created\n */\n 201: DatalakeResponse;\n};\n\nexport type PlatformApiDatalakeControllerCreateResponse = PlatformApiDatalakeControllerCreateResponses[keyof PlatformApiDatalakeControllerCreateResponses];\n\nexport type PlatformApiDataActivationClientControllerLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n /**\n * Log row id\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs/{id}';\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowError = PlatformApiDataActivationClientControllerLogShowErrors[keyof PlatformApiDataActivationClientControllerLogShowErrors];\n\nexport type PlatformApiDataActivationClientControllerLogShowResponses = {\n /**\n * DAC log\n */\n 200: DataActivationClientLogResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerLogShowResponse = PlatformApiDataActivationClientControllerLogShowResponses[keyof PlatformApiDataActivationClientControllerLogShowResponses];\n\nexport type PlatformApiDataSourceControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerDeleteError = PlatformApiDataSourceControllerDeleteErrors[keyof PlatformApiDataSourceControllerDeleteErrors];\n\nexport type PlatformApiDataSourceControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiDataSourceControllerDeleteResponse = PlatformApiDataSourceControllerDeleteResponses[keyof PlatformApiDataSourceControllerDeleteResponses];\n\nexport type PlatformApiDataSourceControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerShowError = PlatformApiDataSourceControllerShowErrors[keyof PlatformApiDataSourceControllerShowErrors];\n\nexport type PlatformApiDataSourceControllerShowResponses = {\n /**\n * Data source\n */\n 200: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerShowResponse = PlatformApiDataSourceControllerShowResponses[keyof PlatformApiDataSourceControllerShowResponses];\n\nexport type PlatformApiDataSourceControllerUpdateData = {\n /**\n * Full Data Source resource (PUT semantics — all fields required)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}';\n};\n\nexport type PlatformApiDataSourceControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerUpdateError = PlatformApiDataSourceControllerUpdateErrors[keyof PlatformApiDataSourceControllerUpdateErrors];\n\nexport type PlatformApiDataSourceControllerUpdateResponses = {\n /**\n * Data source updated\n */\n 200: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerUpdateResponse = PlatformApiDataSourceControllerUpdateResponses[keyof PlatformApiDataSourceControllerUpdateResponses];\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingData = {\n /**\n * Page update request\n */\n body: UpdatePageRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/update-message-tracking';\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingErrors = {\n /**\n * Unauthorized\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Token expired\n */\n 410: {\n [key: string]: unknown;\n };\n /**\n * Validation error\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingError = PlatformApiConnectedAppControllerUpdateMessageTrackingErrors[keyof PlatformApiConnectedAppControllerUpdateMessageTrackingErrors];\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingResponses = {\n /**\n * Updated message details\n */\n 200: UpdatePageResponse;\n};\n\nexport type PlatformApiConnectedAppControllerUpdateMessageTrackingResponse = PlatformApiConnectedAppControllerUpdateMessageTrackingResponses[keyof PlatformApiConnectedAppControllerUpdateMessageTrackingResponses];\n\nexport type PlatformApiAgenticWorkflowControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteError = PlatformApiAgenticWorkflowControllerDeleteErrors[keyof PlatformApiAgenticWorkflowControllerDeleteErrors];\n\nexport type PlatformApiAgenticWorkflowControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiAgenticWorkflowControllerDeleteResponse = PlatformApiAgenticWorkflowControllerDeleteResponses[keyof PlatformApiAgenticWorkflowControllerDeleteResponses];\n\nexport type PlatformApiAgenticWorkflowControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowError = PlatformApiAgenticWorkflowControllerShowErrors[keyof PlatformApiAgenticWorkflowControllerShowErrors];\n\nexport type PlatformApiAgenticWorkflowControllerShowResponses = {\n /**\n * Workflow\n */\n 200: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerShowResponse = PlatformApiAgenticWorkflowControllerShowResponses[keyof PlatformApiAgenticWorkflowControllerShowResponses];\n\nexport type PlatformApiAgenticWorkflowControllerUpdateData = {\n /**\n * Full workflow resource (PUT semantics — all required fields must be present)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateError = PlatformApiAgenticWorkflowControllerUpdateErrors[keyof PlatformApiAgenticWorkflowControllerUpdateErrors];\n\nexport type PlatformApiAgenticWorkflowControllerUpdateResponses = {\n /**\n * Workflow updated\n */\n 200: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerUpdateResponse = PlatformApiAgenticWorkflowControllerUpdateResponses[keyof PlatformApiAgenticWorkflowControllerUpdateResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshData = {\n /**\n * Optional updater_body override\n */\n body?: ActionStatusUpdaterRefreshRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/refresh';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshError = PlatformApiActionStatusUpdaterControllerRefreshErrors[keyof PlatformApiActionStatusUpdaterControllerRefreshErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshResponses = {\n /**\n * Poll enqueued; updater row as-is\n */\n 202: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerRefreshResponse = PlatformApiActionStatusUpdaterControllerRefreshResponses[keyof PlatformApiActionStatusUpdaterControllerRefreshResponses];\n\nexport type PlatformApiConnectedAppControllerResolvePageData = {\n /**\n * Page resolution request\n */\n body: ResolvePageRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{slug}/resolve-page';\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageErrors = {\n /**\n * Unauthorized\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Token expired\n */\n 410: {\n [key: string]: unknown;\n };\n /**\n * Validation error\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageError = PlatformApiConnectedAppControllerResolvePageErrors[keyof PlatformApiConnectedAppControllerResolvePageErrors];\n\nexport type PlatformApiConnectedAppControllerResolvePageResponses = {\n /**\n * Resolved page details\n */\n 200: ResolvePageResponse;\n};\n\nexport type PlatformApiConnectedAppControllerResolvePageResponse = PlatformApiConnectedAppControllerResolvePageResponses[keyof PlatformApiConnectedAppControllerResolvePageResponses];\n\nexport type PlatformApiDatalakeControllerChecksumData = {\n /**\n * Full Datalake resource (same shape as create/update)\n */\n body?: DatalakeRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/checksum';\n};\n\nexport type PlatformApiDatalakeControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerChecksumError = PlatformApiDatalakeControllerChecksumErrors[keyof PlatformApiDatalakeControllerChecksumErrors];\n\nexport type PlatformApiDatalakeControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDatalakeControllerChecksumResponse = PlatformApiDatalakeControllerChecksumResponses[keyof PlatformApiDatalakeControllerChecksumResponses];\n\nexport type PlatformApiDataActivationClientControllerIngestData = {\n /**\n * JSON payload\n */\n body: IngestRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest';\n};\n\nexport type PlatformApiDataActivationClientControllerIngestErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestError = PlatformApiDataActivationClientControllerIngestErrors[keyof PlatformApiDataActivationClientControllerIngestErrors];\n\nexport type PlatformApiDataActivationClientControllerIngestResponses = {\n /**\n * Ingest response\n */\n 202: IngestResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestResponse = PlatformApiDataActivationClientControllerIngestResponses[keyof PlatformApiDataActivationClientControllerIngestResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteError = PlatformApiActionStatusUpdaterControllerDeleteErrors[keyof PlatformApiActionStatusUpdaterControllerDeleteErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerDeleteResponse = PlatformApiActionStatusUpdaterControllerDeleteResponses[keyof PlatformApiActionStatusUpdaterControllerDeleteResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowError = PlatformApiActionStatusUpdaterControllerShowErrors[keyof PlatformApiActionStatusUpdaterControllerShowErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerShowResponses = {\n /**\n * Action status updater\n */\n 200: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerShowResponse = PlatformApiActionStatusUpdaterControllerShowResponses[keyof PlatformApiActionStatusUpdaterControllerShowResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateData = {\n /**\n * Full Action Status Updater resource (PUT semantics — all fields required)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateError = PlatformApiActionStatusUpdaterControllerUpdateErrors[keyof PlatformApiActionStatusUpdaterControllerUpdateErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateResponses = {\n /**\n * Action status updater updated\n */\n 200: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerUpdateResponse = PlatformApiActionStatusUpdaterControllerUpdateResponses[keyof PlatformApiActionStatusUpdaterControllerUpdateResponses];\n\nexport type PlatformApiToolControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/metadata';\n};\n\nexport type PlatformApiToolControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerMetadataError = PlatformApiToolControllerMetadataErrors[keyof PlatformApiToolControllerMetadataErrors];\n\nexport type PlatformApiToolControllerMetadataResponses = {\n /**\n * One markdown page of the tools catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiToolControllerMetadataResponse = PlatformApiToolControllerMetadataResponses[keyof PlatformApiToolControllerMetadataResponses];\n\nexport type PlatformApiAiAgentControllerChecksumData = {\n /**\n * Full AI Agent resource (same shape as create/update)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/checksum';\n};\n\nexport type PlatformApiAiAgentControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerChecksumError = PlatformApiAiAgentControllerChecksumErrors[keyof PlatformApiAiAgentControllerChecksumErrors];\n\nexport type PlatformApiAiAgentControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiAiAgentControllerChecksumResponse = PlatformApiAiAgentControllerChecksumResponses[keyof PlatformApiAiAgentControllerChecksumResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumData = {\n /**\n * Full Connected App resource (same shape as create/update)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/checksum';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumError = PlatformApiConnectedAppMgmtControllerChecksumErrors[keyof PlatformApiConnectedAppMgmtControllerChecksumErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerChecksumResponse = PlatformApiConnectedAppMgmtControllerChecksumResponses[keyof PlatformApiConnectedAppMgmtControllerChecksumResponses];\n\nexport type PlatformApiWorkflowRunControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow run ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs/{id}';\n};\n\nexport type PlatformApiWorkflowRunControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiWorkflowRunControllerShowError = PlatformApiWorkflowRunControllerShowErrors[keyof PlatformApiWorkflowRunControllerShowErrors];\n\nexport type PlatformApiWorkflowRunControllerShowResponses = {\n /**\n * Workflow run\n */\n 200: WorkflowRunResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerShowResponse = PlatformApiWorkflowRunControllerShowResponses[keyof PlatformApiWorkflowRunControllerShowResponses];\n\nexport type PlatformApiDatalakeControllerSystemDatasetsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-datasets';\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsError = PlatformApiDatalakeControllerSystemDatasetsErrors[keyof PlatformApiDatalakeControllerSystemDatasetsErrors];\n\nexport type PlatformApiDatalakeControllerSystemDatasetsResponses = {\n /**\n * Industry-registered datasets\n */\n 200: SystemDatasetListResponse;\n};\n\nexport type PlatformApiDatalakeControllerSystemDatasetsResponse = PlatformApiDatalakeControllerSystemDatasetsResponses[keyof PlatformApiDatalakeControllerSystemDatasetsResponses];\n\nexport type PlatformApiAiAgentControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents';\n};\n\nexport type PlatformApiAiAgentControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerIndexError = PlatformApiAiAgentControllerIndexErrors[keyof PlatformApiAiAgentControllerIndexErrors];\n\nexport type PlatformApiAiAgentControllerIndexResponses = {\n /**\n * AI agent list\n */\n 200: AiAgentListResponse;\n};\n\nexport type PlatformApiAiAgentControllerIndexResponse = PlatformApiAiAgentControllerIndexResponses[keyof PlatformApiAiAgentControllerIndexResponses];\n\nexport type PlatformApiAiAgentControllerCreateData = {\n /**\n * Full AI Agent resource (PUT semantics — all fields required)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents';\n};\n\nexport type PlatformApiAiAgentControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerCreateError = PlatformApiAiAgentControllerCreateErrors[keyof PlatformApiAiAgentControllerCreateErrors];\n\nexport type PlatformApiAiAgentControllerCreateResponses = {\n /**\n * AI agent created\n */\n 201: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerCreateResponse = PlatformApiAiAgentControllerCreateResponses[keyof PlatformApiAiAgentControllerCreateResponses];\n\nexport type PlatformApiWorkflowRunControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/workflow-runs';\n};\n\nexport type PlatformApiWorkflowRunControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiWorkflowRunControllerIndexError = PlatformApiWorkflowRunControllerIndexErrors[keyof PlatformApiWorkflowRunControllerIndexErrors];\n\nexport type PlatformApiWorkflowRunControllerIndexResponses = {\n /**\n * Workflow run list\n */\n 200: WorkflowRunListResponse;\n};\n\nexport type PlatformApiWorkflowRunControllerIndexResponse = PlatformApiWorkflowRunControllerIndexResponses[keyof PlatformApiWorkflowRunControllerIndexResponses];\n\nexport type PlatformApiGenericTableControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/metadata';\n};\n\nexport type PlatformApiGenericTableControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerMetadataError = PlatformApiGenericTableControllerMetadataErrors[keyof PlatformApiGenericTableControllerMetadataErrors];\n\nexport type PlatformApiGenericTableControllerMetadataResponses = {\n /**\n * One markdown page of the generic table catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiGenericTableControllerMetadataResponse = PlatformApiGenericTableControllerMetadataResponses[keyof PlatformApiGenericTableControllerMetadataResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses = {\n /**\n * Execution log list\n */\n 200: WorkflowLogListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexResponses];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}/metadata';\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsError = PlatformApiInteroperabilityContractControllerMetadataDetailsErrors[keyof PlatformApiInteroperabilityContractControllerMetadataDetailsErrors];\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsResponses = {\n /**\n * Markdown with resource field documentation\n */\n 200: string;\n};\n\nexport type PlatformApiInteroperabilityContractControllerMetadataDetailsResponse = PlatformApiInteroperabilityContractControllerMetadataDetailsResponses[keyof PlatformApiInteroperabilityContractControllerMetadataDetailsResponses];\n\nexport type PlatformApiDatalakeControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/metadata';\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsError = PlatformApiDatalakeControllerMetadataDetailsErrors[keyof PlatformApiDatalakeControllerMetadataDetailsErrors];\n\nexport type PlatformApiDatalakeControllerMetadataDetailsResponses = {\n /**\n * Markdown document with domain metadata\n */\n 200: string;\n};\n\nexport type PlatformApiDatalakeControllerMetadataDetailsResponse = PlatformApiDatalakeControllerMetadataDetailsResponses[keyof PlatformApiDatalakeControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteData = {\n /**\n * Execute payload\n */\n body: ExecuteActionRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/execute';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteError = PlatformApiAgenticWorkflowOperationsControllerExecuteErrors[keyof PlatformApiAgenticWorkflowOperationsControllerExecuteErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteResponses = {\n /**\n * Execution result\n */\n 200: ExecuteActionResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerExecuteResponse = PlatformApiAgenticWorkflowOperationsControllerExecuteResponses[keyof PlatformApiAgenticWorkflowOperationsControllerExecuteResponses];\n\nexport type PlatformApiDatasetControllerSearchData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type (e.g. patient, member, generic_table)\n */\n dataset: string;\n };\n query?: {\n /**\n * UserSearch ID. Omit to search the resource without a SQL search.\n */\n user_search_id?: string;\n /**\n * Optional override for the data access mode used by this read. Defaults to the session's `data_access_mode`. The session's capability ceiling still applies — escalating beyond it returns 403.\n */\n data_access_mode?: 'regulated' | 'unregulated';\n /**\n * Outer page over the cached search_results chunk.\n */\n outer_pagination?: OuterPagination;\n /**\n * Inner search input over the resource — page, sort, global_search.\n */\n inner_search?: InnerSearch;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/search';\n};\n\nexport type PlatformApiDatasetControllerSearchErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatasetControllerSearchError = PlatformApiDatasetControllerSearchErrors[keyof PlatformApiDatasetControllerSearchErrors];\n\nexport type PlatformApiDatasetControllerSearchResponses = {\n /**\n * Dataset search results\n */\n 200: DatasetSearchResponse;\n};\n\nexport type PlatformApiDatasetControllerSearchResponse = PlatformApiDatasetControllerSearchResponses[keyof PlatformApiDatasetControllerSearchResponses];\n\nexport type PlatformApiDatasetControllerCreateUserSearchData = {\n /**\n * UserSearch request body\n */\n body?: UserSearchRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type (e.g. patient, member, generic_table)\n */\n dataset: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset}/user-searches';\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchError = PlatformApiDatasetControllerCreateUserSearchErrors[keyof PlatformApiDatasetControllerCreateUserSearchErrors];\n\nexport type PlatformApiDatasetControllerCreateUserSearchResponses = {\n /**\n * UserSearch created\n */\n 201: UserSearchResponse;\n};\n\nexport type PlatformApiDatasetControllerCreateUserSearchResponse = PlatformApiDatasetControllerCreateUserSearchResponses[keyof PlatformApiDatasetControllerCreateUserSearchResponses];\n\nexport type PlatformApiGenericTableControllerChecksumData = {\n /**\n * Full Generic Table resource (same shape as create/update)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/checksum';\n};\n\nexport type PlatformApiGenericTableControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerChecksumError = PlatformApiGenericTableControllerChecksumErrors[keyof PlatformApiGenericTableControllerChecksumErrors];\n\nexport type PlatformApiGenericTableControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiGenericTableControllerChecksumResponse = PlatformApiGenericTableControllerChecksumResponses[keyof PlatformApiGenericTableControllerChecksumResponses];\n\nexport type PlatformApiDataSourceControllerChecksumData = {\n /**\n * Full Data Source resource (same shape as create/update)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/checksum';\n};\n\nexport type PlatformApiDataSourceControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerChecksumError = PlatformApiDataSourceControllerChecksumErrors[keyof PlatformApiDataSourceControllerChecksumErrors];\n\nexport type PlatformApiDataSourceControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiDataSourceControllerChecksumResponse = PlatformApiDataSourceControllerChecksumResponses[keyof PlatformApiDataSourceControllerChecksumResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/metadata';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataError = PlatformApiActionStatusUpdaterControllerMetadataErrors[keyof PlatformApiActionStatusUpdaterControllerMetadataErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataResponses = {\n /**\n * One markdown page of the action status updater catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataResponse = PlatformApiActionStatusUpdaterControllerMetadataResponses[keyof PlatformApiActionStatusUpdaterControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerIngestFileData = {\n /**\n * Ingest file request\n */\n body: IngestFileRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/ingest-file';\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileError = PlatformApiDataActivationClientControllerIngestFileErrors[keyof PlatformApiDataActivationClientControllerIngestFileErrors];\n\nexport type PlatformApiDataActivationClientControllerIngestFileResponses = {\n /**\n * Ingest file response\n */\n 200: IngestFileResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIngestFileResponse = PlatformApiDataActivationClientControllerIngestFileResponses[keyof PlatformApiDataActivationClientControllerIngestFileResponses];\n\nexport type PlatformApiDataSourceControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources';\n};\n\nexport type PlatformApiDataSourceControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerIndexError = PlatformApiDataSourceControllerIndexErrors[keyof PlatformApiDataSourceControllerIndexErrors];\n\nexport type PlatformApiDataSourceControllerIndexResponses = {\n /**\n * Data source list\n */\n 200: DataSourceListResponse;\n};\n\nexport type PlatformApiDataSourceControllerIndexResponse = PlatformApiDataSourceControllerIndexResponses[keyof PlatformApiDataSourceControllerIndexResponses];\n\nexport type PlatformApiDataSourceControllerCreateData = {\n /**\n * Full Data Source resource (PUT semantics — all fields required)\n */\n body?: DataSourceRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources';\n};\n\nexport type PlatformApiDataSourceControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataSourceControllerCreateError = PlatformApiDataSourceControllerCreateErrors[keyof PlatformApiDataSourceControllerCreateErrors];\n\nexport type PlatformApiDataSourceControllerCreateResponses = {\n /**\n * Data source created\n */\n 201: DataSourceResponse;\n};\n\nexport type PlatformApiDataSourceControllerCreateResponse = PlatformApiDataSourceControllerCreateResponses[keyof PlatformApiDataSourceControllerCreateResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpData = {\n /**\n * User registration\n */\n body: SignUpRequestWritable;\n path?: never;\n query?: never;\n url: '/api/v1/admin/sign-up';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors = {\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpError = PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerSignUpErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses = {\n /**\n * User registered (unconfirmed)\n */\n 201: UserResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerSignUpResponse = PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerSignUpResponses];\n\nexport type PlatformApiDataActivationClientControllerRunManuallyData = {\n /**\n * Optional tool_call override\n */\n body?: RunManuallyRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/run-manually';\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyError = PlatformApiDataActivationClientControllerRunManuallyErrors[keyof PlatformApiDataActivationClientControllerRunManuallyErrors];\n\nexport type PlatformApiDataActivationClientControllerRunManuallyResponses = {\n /**\n * Run enqueued\n */\n 202: RunManuallyResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerRunManuallyResponse = PlatformApiDataActivationClientControllerRunManuallyResponses[keyof PlatformApiDataActivationClientControllerRunManuallyResponses];\n\nexport type PlatformApiAiAgentControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/metadata';\n};\n\nexport type PlatformApiAiAgentControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerMetadataError = PlatformApiAiAgentControllerMetadataErrors[keyof PlatformApiAiAgentControllerMetadataErrors];\n\nexport type PlatformApiAiAgentControllerMetadataResponses = {\n /**\n * One markdown page of the AI agent catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiAiAgentControllerMetadataResponse = PlatformApiAiAgentControllerMetadataResponses[keyof PlatformApiAiAgentControllerMetadataResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexError = PlatformApiActionStatusUpdaterControllerIndexErrors[keyof PlatformApiActionStatusUpdaterControllerIndexErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerIndexResponses = {\n /**\n * Action status updater list\n */\n 200: ActionStatusUpdaterListResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerIndexResponse = PlatformApiActionStatusUpdaterControllerIndexResponses[keyof PlatformApiActionStatusUpdaterControllerIndexResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerCreateData = {\n /**\n * Full Action Status Updater resource (PUT semantics — all fields required)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateError = PlatformApiActionStatusUpdaterControllerCreateErrors[keyof PlatformApiActionStatusUpdaterControllerCreateErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerCreateResponses = {\n /**\n * Action status updater created\n */\n 201: ActionStatusUpdaterResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerCreateResponse = PlatformApiActionStatusUpdaterControllerCreateResponses[keyof PlatformApiActionStatusUpdaterControllerCreateResponses];\n\nexport type PlatformApiAiAgentControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Agent is attached to a workflow and cannot be deleted\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiAiAgentControllerDeleteError = PlatformApiAiAgentControllerDeleteErrors[keyof PlatformApiAiAgentControllerDeleteErrors];\n\nexport type PlatformApiAiAgentControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiAiAgentControllerDeleteResponse = PlatformApiAiAgentControllerDeleteResponses[keyof PlatformApiAiAgentControllerDeleteResponses];\n\nexport type PlatformApiAiAgentControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerShowError = PlatformApiAiAgentControllerShowErrors[keyof PlatformApiAiAgentControllerShowErrors];\n\nexport type PlatformApiAiAgentControllerShowResponses = {\n /**\n * AI agent\n */\n 200: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerShowResponse = PlatformApiAiAgentControllerShowResponses[keyof PlatformApiAiAgentControllerShowResponses];\n\nexport type PlatformApiAiAgentControllerUpdateData = {\n /**\n * Full AI Agent resource (PUT semantics — all fields required)\n */\n body?: AiAgentRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}';\n};\n\nexport type PlatformApiAiAgentControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerUpdateError = PlatformApiAiAgentControllerUpdateErrors[keyof PlatformApiAiAgentControllerUpdateErrors];\n\nexport type PlatformApiAiAgentControllerUpdateResponses = {\n /**\n * AI agent updated\n */\n 200: AiAgentResponse;\n};\n\nexport type PlatformApiAiAgentControllerUpdateResponse = PlatformApiAiAgentControllerUpdateResponses[keyof PlatformApiAiAgentControllerUpdateResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserData = {\n body?: never;\n path: {\n /**\n * Target user ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/admin/users/{id}/confirm';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserError = PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerConfirmUserErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses = {\n /**\n * User confirmed (or already confirmed)\n */\n 200: UserResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponse = PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerConfirmUserResponses];\n\nexport type PlatformApiTemplatesControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates';\n};\n\nexport type PlatformApiTemplatesControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTemplatesControllerIndexError = PlatformApiTemplatesControllerIndexErrors[keyof PlatformApiTemplatesControllerIndexErrors];\n\nexport type PlatformApiTemplatesControllerIndexResponses = {\n /**\n * System template list\n */\n 200: SystemTemplateListResponse;\n};\n\nexport type PlatformApiTemplatesControllerIndexResponse = PlatformApiTemplatesControllerIndexResponses[keyof PlatformApiTemplatesControllerIndexResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumData = {\n /**\n * Full Action Status Updater resource (same shape as create/update)\n */\n body?: ActionStatusUpdaterRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/checksum';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumError = PlatformApiActionStatusUpdaterControllerChecksumErrors[keyof PlatformApiActionStatusUpdaterControllerChecksumErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerChecksumResponse = PlatformApiActionStatusUpdaterControllerChecksumResponses[keyof PlatformApiActionStatusUpdaterControllerChecksumResponses];\n\nexport type PlatformApiAiAgentControllerInvokeData = {\n /**\n * Input variables for the agent\n */\n body?: AiAgentInvokeRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/invoke';\n};\n\nexport type PlatformApiAiAgentControllerInvokeErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAiAgentControllerInvokeError = PlatformApiAiAgentControllerInvokeErrors[keyof PlatformApiAiAgentControllerInvokeErrors];\n\nexport type PlatformApiAiAgentControllerInvokeResponses = {\n /**\n * Agent invocation result\n */\n 200: AiAgentInvokeResponse;\n};\n\nexport type PlatformApiAiAgentControllerInvokeResponse = PlatformApiAiAgentControllerInvokeResponses[keyof PlatformApiAiAgentControllerInvokeResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexError = PlatformApiConnectedAppMgmtControllerIndexErrors[keyof PlatformApiConnectedAppMgmtControllerIndexErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerIndexResponses = {\n /**\n * Connected app list\n */\n 200: ConnectedAppListResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerIndexResponse = PlatformApiConnectedAppMgmtControllerIndexResponses[keyof PlatformApiConnectedAppMgmtControllerIndexResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerCreateData = {\n /**\n * Full Connected App resource (PUT semantics — all fields required)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateError = PlatformApiConnectedAppMgmtControllerCreateErrors[keyof PlatformApiConnectedAppMgmtControllerCreateErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerCreateResponses = {\n /**\n * Connected app created\n */\n 201: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerCreateResponse = PlatformApiConnectedAppMgmtControllerCreateResponses[keyof PlatformApiConnectedAppMgmtControllerCreateResponses];\n\nexport type PlatformApiSessionControllerDeleteData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/v1/sessions';\n};\n\nexport type PlatformApiSessionControllerDeleteErrors = {\n /**\n * Invalid or missing Bearer token\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Cannot revoke non-Bearer session\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerDeleteError = PlatformApiSessionControllerDeleteErrors[keyof PlatformApiSessionControllerDeleteErrors];\n\nexport type PlatformApiSessionControllerDeleteResponses = {\n /**\n * Session revoked\n */\n 204: unknown;\n};\n\nexport type PlatformApiSessionControllerCreateData = {\n /**\n * User credentials\n */\n body: SignInRequest;\n path?: never;\n query?: never;\n url: '/api/v1/sessions';\n};\n\nexport type PlatformApiSessionControllerCreateErrors = {\n /**\n * Invalid credentials\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Missing required fields\n */\n 422: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiSessionControllerCreateError = PlatformApiSessionControllerCreateErrors[keyof PlatformApiSessionControllerCreateErrors];\n\nexport type PlatformApiSessionControllerCreateResponses = {\n /**\n * Session created\n */\n 201: SessionResponse;\n};\n\nexport type PlatformApiSessionControllerCreateResponse = PlatformApiSessionControllerCreateResponses[keyof PlatformApiSessionControllerCreateResponses];\n\nexport type PlatformApiDataActivationClientControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/metadata';\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataError = PlatformApiDataActivationClientControllerMetadataErrors[keyof PlatformApiDataActivationClientControllerMetadataErrors];\n\nexport type PlatformApiDataActivationClientControllerMetadataResponses = {\n /**\n * One markdown page of the data activation client catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiDataActivationClientControllerMetadataResponse = PlatformApiDataActivationClientControllerMetadataResponses[keyof PlatformApiDataActivationClientControllerMetadataResponses];\n\nexport type PlatformApiAgenticWorkflowControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows';\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexError = PlatformApiAgenticWorkflowControllerIndexErrors[keyof PlatformApiAgenticWorkflowControllerIndexErrors];\n\nexport type PlatformApiAgenticWorkflowControllerIndexResponses = {\n /**\n * Workflow list\n */\n 200: AgenticWorkflowListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerIndexResponse = PlatformApiAgenticWorkflowControllerIndexResponses[keyof PlatformApiAgenticWorkflowControllerIndexResponses];\n\nexport type PlatformApiAgenticWorkflowControllerCreateData = {\n /**\n * Full workflow resource (PUT semantics — all required fields must be present)\n */\n body?: AgenticWorkflowRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows';\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateError = PlatformApiAgenticWorkflowControllerCreateErrors[keyof PlatformApiAgenticWorkflowControllerCreateErrors];\n\nexport type PlatformApiAgenticWorkflowControllerCreateResponses = {\n /**\n * Workflow created\n */\n 201: AgenticWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowControllerCreateResponse = PlatformApiAgenticWorkflowControllerCreateResponses[keyof PlatformApiAgenticWorkflowControllerCreateResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/metadata';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataError = PlatformApiConnectedAppMgmtControllerMetadataErrors[keyof PlatformApiConnectedAppMgmtControllerMetadataErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataResponses = {\n /**\n * One markdown page of the connected app catalog for this datalake\n */\n 200: string;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataResponse = PlatformApiConnectedAppMgmtControllerMetadataResponses[keyof PlatformApiConnectedAppMgmtControllerMetadataResponses];\n\nexport type PlatformApiDataActivationClientControllerLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Activation Client slug\n */\n slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients/{slug}/logs';\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexError = PlatformApiDataActivationClientControllerLogsIndexErrors[keyof PlatformApiDataActivationClientControllerLogsIndexErrors];\n\nexport type PlatformApiDataActivationClientControllerLogsIndexResponses = {\n /**\n * DAC log list\n */\n 200: DataActivationClientLogListResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerLogsIndexResponse = PlatformApiDataActivationClientControllerLogsIndexResponses[keyof PlatformApiDataActivationClientControllerLogsIndexResponses];\n\nexport type PlatformApiToolControllerTestInvocationData = {\n /**\n * Test invocation payload — `tool_call` polymorphic on `__type__`.\n */\n body?: ManualToolInvocationRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Tool ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/{id}/test-invocation';\n};\n\nexport type PlatformApiToolControllerTestInvocationErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerTestInvocationError = PlatformApiToolControllerTestInvocationErrors[keyof PlatformApiToolControllerTestInvocationErrors];\n\nexport type PlatformApiToolControllerTestInvocationResponses = {\n /**\n * Invocation recorded — inspect `status` for outcome\n */\n 200: ManualToolInvocationResponse;\n};\n\nexport type PlatformApiToolControllerTestInvocationResponse = PlatformApiToolControllerTestInvocationResponses[keyof PlatformApiToolControllerTestInvocationResponses];\n\nexport type PlatformApiAiAgentControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * AI Agent ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/ai-agents/{id}/metadata';\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsError = PlatformApiAiAgentControllerMetadataDetailsErrors[keyof PlatformApiAiAgentControllerMetadataDetailsErrors];\n\nexport type PlatformApiAiAgentControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested AI agent\n */\n 200: string;\n};\n\nexport type PlatformApiAiAgentControllerMetadataDetailsResponse = PlatformApiAiAgentControllerMetadataDetailsResponses[keyof PlatformApiAiAgentControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexError = PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses = {\n /**\n * Batch log list\n */\n 200: BatchLogListResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexResponses];\n\nexport type PlatformApiDatalakeControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/metadata';\n};\n\nexport type PlatformApiDatalakeControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatalakeControllerMetadataError = PlatformApiDatalakeControllerMetadataErrors[keyof PlatformApiDatalakeControllerMetadataErrors];\n\nexport type PlatformApiDatalakeControllerMetadataResponses = {\n /**\n * One markdown page of the datalake catalog for this tenant\n */\n 200: string;\n};\n\nexport type PlatformApiDatalakeControllerMetadataResponse = PlatformApiDatalakeControllerMetadataResponses[keyof PlatformApiDatalakeControllerMetadataResponses];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Action Status Updater ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/action-status-updaters/{id}/metadata';\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsError = PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors[keyof PlatformApiActionStatusUpdaterControllerMetadataDetailsErrors];\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested action status updater\n */\n 200: string;\n};\n\nexport type PlatformApiActionStatusUpdaterControllerMetadataDetailsResponse = PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses[keyof PlatformApiActionStatusUpdaterControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{id}/metadata';\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsError = PlatformApiAgenticWorkflowControllerMetadataDetailsErrors[keyof PlatformApiAgenticWorkflowControllerMetadataDetailsErrors];\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsResponses = {\n /**\n * Markdown document with variable pipeline\n */\n 200: string;\n};\n\nexport type PlatformApiAgenticWorkflowControllerMetadataDetailsResponse = PlatformApiAgenticWorkflowControllerMetadataDetailsResponses[keyof PlatformApiAgenticWorkflowControllerMetadataDetailsResponses];\n\nexport type PlatformApiPingControllerPingData = {\n body?: never;\n path?: never;\n query?: never;\n url: '/api/ping';\n};\n\nexport type PlatformApiPingControllerPingErrors = {\n /**\n * Database connection failed\n */\n 500: ErrorResponse;\n};\n\nexport type PlatformApiPingControllerPingError = PlatformApiPingControllerPingErrors[keyof PlatformApiPingControllerPingErrors];\n\nexport type PlatformApiPingControllerPingResponses = {\n /**\n * API is healthy\n */\n 200: PingResponse;\n};\n\nexport type PlatformApiPingControllerPingResponse = PlatformApiPingControllerPingResponses[keyof PlatformApiPingControllerPingResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyData = {\n body?: never;\n path: {\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/admin/connected-apps/{id}/api-key';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyError = PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses = {\n /**\n * Publishable key revealed\n */\n 200: ConnectedAppApiKeyResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponse = PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKeyResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/sync-routes';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesError = PlatformApiConnectedAppMgmtControllerSyncRoutesErrors[keyof PlatformApiConnectedAppMgmtControllerSyncRoutesErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesResponses = {\n /**\n * Route sync enqueued\n */\n 202: SyncRoutesResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerSyncRoutesResponse = PlatformApiConnectedAppMgmtControllerSyncRoutesResponses[keyof PlatformApiConnectedAppMgmtControllerSyncRoutesResponses];\n\nexport type PlatformApiDataActivationClientControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients';\n};\n\nexport type PlatformApiDataActivationClientControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataActivationClientControllerIndexError = PlatformApiDataActivationClientControllerIndexErrors[keyof PlatformApiDataActivationClientControllerIndexErrors];\n\nexport type PlatformApiDataActivationClientControllerIndexResponses = {\n /**\n * DAC list\n */\n 200: DataActivationClientListResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerIndexResponse = PlatformApiDataActivationClientControllerIndexResponses[keyof PlatformApiDataActivationClientControllerIndexResponses];\n\nexport type PlatformApiDataActivationClientControllerCreateData = {\n /**\n * Full DAC resource (all required fields must be present)\n */\n body?: DataActivationClientRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-activation-clients';\n};\n\nexport type PlatformApiDataActivationClientControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDataActivationClientControllerCreateError = PlatformApiDataActivationClientControllerCreateErrors[keyof PlatformApiDataActivationClientControllerCreateErrors];\n\nexport type PlatformApiDataActivationClientControllerCreateResponses = {\n /**\n * DAC created\n */\n 201: DataActivationClientResponse;\n};\n\nexport type PlatformApiDataActivationClientControllerCreateResponse = PlatformApiDataActivationClientControllerCreateResponses[keyof PlatformApiDataActivationClientControllerCreateResponses];\n\nexport type PlatformApiMdmControllerVerifyData = {\n /**\n * Verification attributes\n */\n body: MdmVerifyRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/mdm/verify';\n};\n\nexport type PlatformApiMdmControllerVerifyErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Verification failed\n */\n 422: MdmVerifyResponse;\n};\n\nexport type PlatformApiMdmControllerVerifyError = PlatformApiMdmControllerVerifyErrors[keyof PlatformApiMdmControllerVerifyErrors];\n\nexport type PlatformApiMdmControllerVerifyResponses = {\n /**\n * Verification result\n */\n 200: MdmVerifyResponse;\n};\n\nexport type PlatformApiMdmControllerVerifyResponse = PlatformApiMdmControllerVerifyResponses[keyof PlatformApiMdmControllerVerifyResponses];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionData = {\n /**\n * User credentials\n */\n body: SignInRequest;\n path?: never;\n query?: never;\n url: '/api/v1/admin/bootstrap-session';\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionError = PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors[keyof PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionErrors];\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses = {\n /**\n * Tenantless session created\n */\n 201: SessionResponse;\n};\n\nexport type PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponse = PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses[keyof PlatformApiIntegrationTestOnlyAdminControllerBootstrapSessionResponses];\n\nexport type PlatformApiTemplatesControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/metadata';\n};\n\nexport type PlatformApiTemplatesControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiTemplatesControllerMetadataError = PlatformApiTemplatesControllerMetadataErrors[keyof PlatformApiTemplatesControllerMetadataErrors];\n\nexport type PlatformApiTemplatesControllerMetadataResponses = {\n /**\n * One markdown page of the system template catalog\n */\n 200: string;\n};\n\nexport type PlatformApiTemplatesControllerMetadataResponse = PlatformApiTemplatesControllerMetadataResponses[keyof PlatformApiTemplatesControllerMetadataResponses];\n\nexport type PlatformApiInteroperabilityContractControllerChecksumData = {\n /**\n * Full contract resource (same shape as create/update)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/checksum';\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumError = PlatformApiInteroperabilityContractControllerChecksumErrors[keyof PlatformApiInteroperabilityContractControllerChecksumErrors];\n\nexport type PlatformApiInteroperabilityContractControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerChecksumResponse = PlatformApiInteroperabilityContractControllerChecksumResponses[keyof PlatformApiInteroperabilityContractControllerChecksumResponses];\n\nexport type PlatformApiDatasetControllerDatasetMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Dataset type atom (e.g. 'patient', 'appointment')\n */\n dataset_type: string;\n };\n query?: {\n /**\n * Generic table ID (required when dataset_type is 'generic_table')\n */\n generic_table_id?: string;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/{dataset_type}/metadata';\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataError = PlatformApiDatasetControllerDatasetMetadataErrors[keyof PlatformApiDatasetControllerDatasetMetadataErrors];\n\nexport type PlatformApiDatasetControllerDatasetMetadataResponses = {\n /**\n * Markdown document with field definitions\n */\n 200: string;\n};\n\nexport type PlatformApiDatasetControllerDatasetMetadataResponse = PlatformApiDatasetControllerDatasetMetadataResponses[keyof PlatformApiDatasetControllerDatasetMetadataResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteError = PlatformApiConnectedAppMgmtControllerDeleteErrors[keyof PlatformApiConnectedAppMgmtControllerDeleteErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerDeleteResponse = PlatformApiConnectedAppMgmtControllerDeleteResponses[keyof PlatformApiConnectedAppMgmtControllerDeleteResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowError = PlatformApiConnectedAppMgmtControllerShowErrors[keyof PlatformApiConnectedAppMgmtControllerShowErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerShowResponses = {\n /**\n * Connected app\n */\n 200: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerShowResponse = PlatformApiConnectedAppMgmtControllerShowResponses[keyof PlatformApiConnectedAppMgmtControllerShowResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateData = {\n /**\n * Full Connected App resource (PUT semantics — all fields required)\n */\n body?: ConnectedAppRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateError = PlatformApiConnectedAppMgmtControllerUpdateErrors[keyof PlatformApiConnectedAppMgmtControllerUpdateErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateResponses = {\n /**\n * Connected app updated\n */\n 200: ConnectedAppResponse;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerUpdateResponse = PlatformApiConnectedAppMgmtControllerUpdateResponses[keyof PlatformApiConnectedAppMgmtControllerUpdateResponses];\n\nexport type PlatformApiInvitationControllerCreateData = {\n /**\n * Invitation attributes\n */\n body: InvitationRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/invitations';\n};\n\nexport type PlatformApiInvitationControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Forbidden\n */\n 403: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInvitationControllerCreateError = PlatformApiInvitationControllerCreateErrors[keyof PlatformApiInvitationControllerCreateErrors];\n\nexport type PlatformApiInvitationControllerCreateResponses = {\n /**\n * Invitation created\n */\n 201: InvitationResponse;\n};\n\nexport type PlatformApiInvitationControllerCreateResponse = PlatformApiInvitationControllerCreateResponses[keyof PlatformApiInvitationControllerCreateResponses];\n\nexport type PlatformApiToolControllerIndexData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools';\n};\n\nexport type PlatformApiToolControllerIndexErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiToolControllerIndexError = PlatformApiToolControllerIndexErrors[keyof PlatformApiToolControllerIndexErrors];\n\nexport type PlatformApiToolControllerIndexResponses = {\n /**\n * Tool list\n */\n 200: ToolListResponse;\n};\n\nexport type PlatformApiToolControllerIndexResponse = PlatformApiToolControllerIndexResponses[keyof PlatformApiToolControllerIndexResponses];\n\nexport type PlatformApiToolControllerCreateData = {\n /**\n * Full Tool resource (PUT semantics — all fields required)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools';\n};\n\nexport type PlatformApiToolControllerCreateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerCreateError = PlatformApiToolControllerCreateErrors[keyof PlatformApiToolControllerCreateErrors];\n\nexport type PlatformApiToolControllerCreateResponses = {\n /**\n * Tool created\n */\n 201: ToolResponse;\n};\n\nexport type PlatformApiToolControllerCreateResponse = PlatformApiToolControllerCreateResponses[keyof PlatformApiToolControllerCreateResponses];\n\nexport type PlatformApiToolControllerChecksumData = {\n /**\n * Full Tool resource (same shape as create/update)\n */\n body?: ToolRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/tools/checksum';\n};\n\nexport type PlatformApiToolControllerChecksumErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiToolControllerChecksumError = PlatformApiToolControllerChecksumErrors[keyof PlatformApiToolControllerChecksumErrors];\n\nexport type PlatformApiToolControllerChecksumResponses = {\n /**\n * Drift checksum for the submitted config\n */\n 200: ChecksumResponse;\n};\n\nexport type PlatformApiToolControllerChecksumResponse = PlatformApiToolControllerChecksumResponses[keyof PlatformApiToolControllerChecksumResponses];\n\nexport type PlatformApiTemplatesControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Basename of the system template (no slashes, no `.liquid` extension)\n */\n filename: string;\n };\n query: {\n /**\n * Directory-prefix discriminator for the template\n */\n intent: 'ai_agent' | 'blueprint_datasource' | 'blueprint_workflow' | 'workflow_filter' | 'workflow_decision' | 'data_activation_interoperability' | 'data_activation_tool_calls' | 'status_poller';\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/system-templates/{filename}/metadata';\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Ambiguous filename — multiple matches under the resolved prefix\n */\n 409: {\n errors?: {\n [key: string]: unknown;\n };\n };\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsError = PlatformApiTemplatesControllerMetadataDetailsErrors[keyof PlatformApiTemplatesControllerMetadataDetailsErrors];\n\nexport type PlatformApiTemplatesControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested system template\n */\n 200: string;\n};\n\nexport type PlatformApiTemplatesControllerMetadataDetailsResponse = PlatformApiTemplatesControllerMetadataDetailsResponses[keyof PlatformApiTemplatesControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowError = PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogShowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses = {\n /**\n * Batch log\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogShowResponses];\n\nexport type PlatformApiDatalakeControllerExecuteSqlData = {\n /**\n * Execute-SQL request\n */\n body: ExecuteSqlRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: {\n /**\n * Response format: json (default) or csv\n */\n format?: string;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/execute-sql';\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlError = PlatformApiDatalakeControllerExecuteSqlErrors[keyof PlatformApiDatalakeControllerExecuteSqlErrors];\n\nexport type PlatformApiDatalakeControllerExecuteSqlResponses = {\n /**\n * SQL result page\n */\n 200: ExecuteSqlResponse;\n};\n\nexport type PlatformApiDatalakeControllerExecuteSqlResponse = PlatformApiDatalakeControllerExecuteSqlResponses[keyof PlatformApiDatalakeControllerExecuteSqlResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowData = {\n /**\n * Run workflow payload\n */\n body: RunWorkflowRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/run-workflow';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowError = PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerRunWorkflowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses = {\n /**\n * Run workflow result\n */\n 200: RunWorkflowResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponse = PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerRunWorkflowResponses];\n\nexport type PlatformApiDataSourceControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Data Source ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/data-sources/{id}/metadata';\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsError = PlatformApiDataSourceControllerMetadataDetailsErrors[keyof PlatformApiDataSourceControllerMetadataDetailsErrors];\n\nexport type PlatformApiDataSourceControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested data source\n */\n 200: string;\n};\n\nexport type PlatformApiDataSourceControllerMetadataDetailsResponse = PlatformApiDataSourceControllerMetadataDetailsResponses[keyof PlatformApiDataSourceControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/refresh';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshError = PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses = {\n /**\n * Refreshed batch log\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogRefreshResponses];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Connected App ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/connected-apps/{id}/metadata';\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsError = PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors[keyof PlatformApiConnectedAppMgmtControllerMetadataDetailsErrors];\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses = {\n /**\n * Markdown body for the requested connected app\n */\n 200: string;\n};\n\nexport type PlatformApiConnectedAppMgmtControllerMetadataDetailsResponse = PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses[keyof PlatformApiConnectedAppMgmtControllerMetadataDetailsResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Batch log ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/batch-logs/{id}/start';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartError = PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStartErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses = {\n /**\n * Batch log with polling started\n */\n 200: BatchLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponse = PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses[keyof PlatformApiAgenticWorkflowOperationsControllerBatchLogStartResponses];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Workflow slug\n */\n workflow_slug: string;\n /**\n * Execution log ID\n */\n id: string;\n };\n query?: {\n /**\n * Optional override for the data access mode used to read each AEL's `message_body`. Defaults to the session's `data_access_mode`. The session's capability ceiling still applies.\n */\n data_access_mode?: 'regulated' | 'unregulated';\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/agentic-workflows/{workflow_slug}/workflow-logs/{id}';\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowError = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowErrors];\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses = {\n /**\n * Execution log\n */\n 200: WorkflowLogResponse;\n};\n\nexport type PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponse = PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses[keyof PlatformApiAgenticWorkflowOperationsControllerWorkflowLogShowResponses];\n\nexport type PlatformApiInteroperabilityContractControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteError = PlatformApiInteroperabilityContractControllerDeleteErrors[keyof PlatformApiInteroperabilityContractControllerDeleteErrors];\n\nexport type PlatformApiInteroperabilityContractControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiInteroperabilityContractControllerDeleteResponse = PlatformApiInteroperabilityContractControllerDeleteResponses[keyof PlatformApiInteroperabilityContractControllerDeleteResponses];\n\nexport type PlatformApiInteroperabilityContractControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowError = PlatformApiInteroperabilityContractControllerShowErrors[keyof PlatformApiInteroperabilityContractControllerShowErrors];\n\nexport type PlatformApiInteroperabilityContractControllerShowResponses = {\n /**\n * Contract\n */\n 200: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerShowResponse = PlatformApiInteroperabilityContractControllerShowResponses[keyof PlatformApiInteroperabilityContractControllerShowResponses];\n\nexport type PlatformApiInteroperabilityContractControllerUpdateData = {\n /**\n * Full contract resource (all required fields must be present)\n */\n body?: InteroperabilityContractRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract ID\n */\n id: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{id}';\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateError = PlatformApiInteroperabilityContractControllerUpdateErrors[keyof PlatformApiInteroperabilityContractControllerUpdateErrors];\n\nexport type PlatformApiInteroperabilityContractControllerUpdateResponses = {\n /**\n * Contract updated\n */\n 200: InteroperabilityContractResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerUpdateResponse = PlatformApiInteroperabilityContractControllerUpdateResponses[keyof PlatformApiInteroperabilityContractControllerUpdateResponses];\n\nexport type PlatformApiGenericTableControllerDeleteData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerDeleteErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerDeleteError = PlatformApiGenericTableControllerDeleteErrors[keyof PlatformApiGenericTableControllerDeleteErrors];\n\nexport type PlatformApiGenericTableControllerDeleteResponses = {\n /**\n * No Content\n */\n 204: void;\n};\n\nexport type PlatformApiGenericTableControllerDeleteResponse = PlatformApiGenericTableControllerDeleteResponses[keyof PlatformApiGenericTableControllerDeleteResponses];\n\nexport type PlatformApiGenericTableControllerShowData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerShowErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiGenericTableControllerShowError = PlatformApiGenericTableControllerShowErrors[keyof PlatformApiGenericTableControllerShowErrors];\n\nexport type PlatformApiGenericTableControllerShowResponses = {\n /**\n * Generic table\n */\n 200: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerShowResponse = PlatformApiGenericTableControllerShowResponses[keyof PlatformApiGenericTableControllerShowResponses];\n\nexport type PlatformApiGenericTableControllerUpdateData = {\n /**\n * Full Generic Table resource (PUT semantics — all fields required)\n */\n body?: GenericTableRequestWritable;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Generic Table ID\n */\n id: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/generic-tables/{id}';\n};\n\nexport type PlatformApiGenericTableControllerUpdateErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * The request conflicts with the current state of the target resource.\n * Returned when a delete is refused because the resource still has\n * dependents — e.g. a generic table that still holds rows, or a datalake\n * that still owns child resources. Response body conforms to the\n * `AlveraAPIError` schema.\n *\n */\n 409: AlveraApiError;\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiGenericTableControllerUpdateError = PlatformApiGenericTableControllerUpdateErrors[keyof PlatformApiGenericTableControllerUpdateErrors];\n\nexport type PlatformApiGenericTableControllerUpdateResponses = {\n /**\n * Generic table updated\n */\n 200: GenericTableResponse;\n};\n\nexport type PlatformApiGenericTableControllerUpdateResponse = PlatformApiGenericTableControllerUpdateResponses[keyof PlatformApiGenericTableControllerUpdateResponses];\n\nexport type PlatformApiInteroperabilityContractControllerRunData = {\n /**\n * Raw source row\n */\n body: InteroperabilityRunRequest;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n /**\n * Contract slug\n */\n slug: string;\n };\n query?: {\n /**\n * Page number (1-indexed). Defaults to 1 when omitted.\n */\n page?: number;\n /**\n * Items per page (1-100). Defaults to the resource's Flop default when omitted.\n */\n page_size?: number;\n /**\n * Fields to sort by, in order of precedence. Must appear in the resource schema's Flop `sortable:` list — unknown fields return 422.\n */\n order_by?: Array<string>;\n /**\n * Sort direction(s), pair-wise with `order_by`. `asc` or `desc`. Defaults to `asc` per unpaired `order_by` entry.\n */\n order_directions?: Array<'asc' | 'desc'>;\n /**\n * Flop-native filter array. URL shape: `?filters[][field]=status&filters[][op]=%3D%3D&filters[][value]=pending` (empty brackets — consecutive `[]` entries group into one filter object per element; indexed brackets parse as a map and fail the array cast with 422). `op` is the symbol, percent-encoded — `%3D%3D` for `==`, `%3E%3D` for `>=` — not a word like `equal`; anything outside the enum above is a 422 before the request reaches Flop. Omit `op` entirely for equality. Unknown fields return 422 via Flop validation at the context layer.\n */\n filters?: Array<{\n /**\n * Filterable field name (must be in the resource's `filterable:`)\n */\n field: string;\n /**\n * Comparison operator. Defaults to `==` when omitted.\n */\n op?: '==' | '!=' | '<' | '<=' | '>' | '>=' | 'empty' | 'not_empty' | 'like' | 'ilike' | 'like_and' | 'like_or' | 'ilike_and' | 'ilike_or' | 'in' | 'not_in' | 'contains' | 'not_contains';\n /**\n * Filter value — shape depends on `field` and `op`.\n */\n value: unknown;\n }>;\n };\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/interoperability-contracts/{slug}/run';\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n /**\n * Validation or pipeline error. Response body conforms to the\n * `AlveraAPIError` schema — a JSON:API-style error object with `errors`\n * as a non-empty array of `{detail, source.pointer, title}` entries.\n *\n * `title` is the error category / machine-readable code:\n * `\"Invalid value\"` for request-body validation, or a pipeline stage\n * code (`\"transform_failed\"`, `\"mdm_input_render_failed\"`, etc.) for\n * `/run` endpoint errors.\n *\n * `source.pointer` is an RFC 6901 JSON Pointer: into the request body\n * for validation errors (`/name`, `/template_config/body`), or into the\n * failing contract field for pipeline errors.\n *\n */\n 422: AlveraApiError;\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunError = PlatformApiInteroperabilityContractControllerRunErrors[keyof PlatformApiInteroperabilityContractControllerRunErrors];\n\nexport type PlatformApiInteroperabilityContractControllerRunResponses = {\n /**\n * Pipeline output\n */\n 200: InteroperabilityRunResponse;\n};\n\nexport type PlatformApiInteroperabilityContractControllerRunResponse = PlatformApiInteroperabilityContractControllerRunResponses[keyof PlatformApiInteroperabilityContractControllerRunResponses];\n\nexport type PlatformApiDatasetControllerMetadataData = {\n body?: never;\n path: {\n /**\n * Tenant slug\n */\n tenant_slug: string;\n /**\n * Datalake slug\n */\n datalake_slug: string;\n };\n query?: never;\n url: '/api/v1/tenants/{tenant_slug}/datalakes/{datalake_slug}/datasets/metadata';\n};\n\nexport type PlatformApiDatasetControllerMetadataErrors = {\n /**\n * Unauthorised\n */\n 401: {\n [key: string]: unknown;\n };\n /**\n * Not Found\n */\n 404: {\n [key: string]: unknown;\n };\n};\n\nexport type PlatformApiDatasetControllerMetadataError = PlatformApiDatasetControllerMetadataErrors[keyof PlatformApiDatasetControllerMetadataErrors];\n\nexport type PlatformApiDatasetControllerMetadataResponses = {\n /**\n * Markdown catalog of every dataset type for this datalake's domain\n */\n 200: string;\n};\n\nexport type PlatformApiDatasetControllerMetadataResponse = PlatformApiDatasetControllerMetadataResponses[keyof PlatformApiDatasetControllerMetadataResponses];\n","/**\n * Alvera Platform SDK — typed client.\n *\n * Architecture:\n * generated/ auto-generated by @hey-api/openapi-ts (do not edit)\n * sdk.gen.ts type-safe endpoint methods\n * types.gen.ts request/response types from OpenAPI spec\n * client.gen.ts HTTP client instance\n *\n * client.ts (this file) override layer\n * - configures the hey-api client with auth\n * - exposes a curated, ergonomic resource surface\n * - provides corrected types for fields the OpenAPI spec leaves as `object`\n *\n * Regenerate generated/ with: pnpm regen\n */\n\nimport { client } from './generated/client.gen.js';\nimport { type Client, createClient } from './generated/client/index.js';\nimport type {\n ActionStatusUpdaterCloudWatchQueryRequest,\n ActionStatusUpdaterRefreshRequest,\n ActionStatusUpdaterRestCallRequest,\n AdminCreateTenantApiKeyRequest,\n AgenticWorkflowRequestWritable,\n AiAgentInvokeRequest,\n PlatformApiActionStatusUpdaterControllerIndexData,\n PlatformApiAgenticWorkflowControllerIndexData,\n PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData,\n PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData,\n PlatformApiDataActivationClientControllerLogsIndexData,\n PlatformApiWorkflowRunControllerIndexData,\n PlatformApiTenantControllerIndexData,\n PlatformApiAiAgentControllerIndexData,\n PlatformApiConnectedAppMgmtControllerIndexData,\n PlatformApiDataActivationClientControllerIndexData,\n PlatformApiDataSourceControllerIndexData,\n PlatformApiDatalakeControllerIndexData,\n PlatformApiGenericTableControllerIndexData,\n PlatformApiInteroperabilityContractControllerIndexData,\n PlatformApiToolControllerIndexData,\n ActionStatusUpdaterRequestWritable,\n AiAgentRequestWritable,\n ConnectedAppRequestWritable,\n DataActivationClientRequestWritable,\n DatalakeRequestWritable,\n DataSourceRequest,\n ExecuteActionRequest,\n ExecuteSqlRequest,\n GenericTableRequestWritable,\n IngestRequest,\n InteroperabilityContractRequestWritable,\n InteroperabilityRunRequest,\n InvitationRequest,\n ManualToolInvocationRequestWritable,\n MdmVerifyRequest,\n ResolvePageRequest,\n RunManuallyRequestWritable,\n RunWorkflowRequest,\n SignUpRequestWritable,\n TenantRequest,\n UpdatePageRequest,\n UserSearchRequest,\n ExecuteSqlResponse,\n GenericTableColumnRequest,\n IngestFileRequest,\n TextToSqlRequest,\n ToolRequestWritable,\n UploadLinkRequest,\n} from './generated/types.gen.js';\n\n/**\n * Forward-compat alias for DataSource write paths.\n *\n * Hey-api emits `<Schema>RequestWritable` variants only when a schema\n * has at least one `writeOnly: true` field — otherwise the Writable\n * shape would be byte-identical to the bare Request type, so it skips\n * the duplicate. DataSource has no writeOnly fields today, so\n * `DataSourceRequestWritable` is not generated.\n *\n * Aliasing it here gives every write path a uniform `*Writable` import\n * name (Datalake / Tool / DataSource), matching the Elixir-test\n * convention of typing every Create/Update body explicitly. When a\n * writeOnly field is eventually added to DataSource, hey-api will emit\n * its own `DataSourceRequestWritable`; at that point this alias should\n * be deleted in favour of the generated one, and the TS compiler will\n * surface the structural change at every write call-site.\n */\nexport type DataSourceRequestWritable = DataSourceRequest;\nimport {\n platformApiActionStatusUpdaterControllerCreate,\n platformApiActionStatusUpdaterControllerDelete,\n platformApiActionStatusUpdaterControllerMetadata,\n platformApiActionStatusUpdaterControllerMetadataDetails,\n platformApiActionStatusUpdaterControllerRefresh,\n platformApiIntegrationTestOnlyAdminControllerBootstrapSession,\n platformApiIntegrationTestOnlyAdminControllerConfirmUser,\n platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey,\n platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey,\n platformApiIntegrationTestOnlyAdminControllerSignUp,\n platformApiDatasetControllerCreateUserSearch,\n platformApiInvitationControllerAccept,\n platformApiInvitationControllerCreate,\n platformApiInvitationControllerIndex,\n platformApiTenantControllerCreate,\n platformApiActionStatusUpdaterControllerIndex,\n platformApiActionStatusUpdaterControllerShow,\n platformApiActionStatusUpdaterControllerUpdate,\n platformApiAgenticWorkflowControllerCreate,\n platformApiAgenticWorkflowControllerDelete,\n platformApiAgenticWorkflowControllerIndex,\n platformApiAgenticWorkflowControllerMetadata,\n platformApiAgenticWorkflowControllerMetadataDetails,\n platformApiAgenticWorkflowControllerShow,\n platformApiAgenticWorkflowControllerUpdate,\n platformApiAgenticWorkflowOperationsControllerBatchLogRefresh,\n platformApiAgenticWorkflowOperationsControllerBatchLogShow,\n platformApiAgenticWorkflowOperationsControllerBatchLogStart,\n platformApiAgenticWorkflowOperationsControllerBatchLogStop,\n platformApiAgenticWorkflowOperationsControllerBatchLogsIndex,\n platformApiAgenticWorkflowOperationsControllerExecute,\n platformApiAgenticWorkflowOperationsControllerRunWorkflow,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogShow,\n platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex,\n platformApiAiAgentControllerCreate,\n platformApiAiAgentControllerDelete,\n platformApiAiAgentControllerIndex,\n platformApiAiAgentControllerInvoke,\n platformApiAiAgentControllerMetadata,\n platformApiAiAgentControllerMetadataDetails,\n platformApiAiAgentControllerShow,\n platformApiAiAgentControllerUpdate,\n platformApiConnectedAppControllerResolvePage,\n platformApiConnectedAppControllerUpdateMessageTracking,\n platformApiConnectedAppMgmtControllerCreate,\n platformApiConnectedAppMgmtControllerDelete,\n platformApiConnectedAppMgmtControllerIndex,\n platformApiConnectedAppMgmtControllerMetadata,\n platformApiConnectedAppMgmtControllerMetadataDetails,\n platformApiConnectedAppMgmtControllerShow,\n platformApiConnectedAppMgmtControllerSyncRoutes,\n platformApiConnectedAppMgmtControllerUpdate,\n platformApiDataActivationClientControllerCreate,\n platformApiDataActivationClientControllerDelete,\n platformApiDataActivationClientControllerIndex,\n platformApiDataActivationClientControllerIngest,\n platformApiDataActivationClientControllerIngestFile,\n platformApiDataActivationClientControllerLogShow,\n platformApiDataActivationClientControllerLogsIndex,\n platformApiDataActivationClientControllerMetadata,\n platformApiDataActivationClientControllerMetadataDetails,\n platformApiDataActivationClientControllerRunManually,\n platformApiDataActivationClientControllerShow,\n platformApiDataActivationClientControllerUpdate,\n platformApiDatalakeControllerCreate,\n platformApiDatalakeControllerCreateDownloadLink,\n platformApiDatalakeControllerCreateUploadLink,\n platformApiDatalakeControllerDelete,\n platformApiDatalakeControllerExecuteSql,\n platformApiDatalakeControllerIndex,\n platformApiDatalakeControllerMetadata,\n platformApiDatalakeControllerMetadataDetails,\n platformApiDatalakeControllerMigrate,\n platformApiDatalakeControllerShow,\n platformApiDatalakeControllerSystemDatasets,\n platformApiDatalakeControllerTextToSql,\n platformApiDatalakeControllerUpdate,\n platformApiDatasetControllerDatasetMetadata,\n platformApiDatasetControllerMetadata,\n platformApiDatasetControllerSearch,\n platformApiDataSourceControllerCreate,\n platformApiDataSourceControllerDelete,\n platformApiDataSourceControllerIndex,\n platformApiDataSourceControllerMetadata,\n platformApiDataSourceControllerMetadataDetails,\n platformApiDataSourceControllerShow,\n platformApiDataSourceControllerUpdate,\n platformApiGenericTableControllerCreate,\n platformApiGenericTableControllerDelete,\n platformApiGenericTableControllerIndex,\n platformApiGenericTableControllerMetadata,\n platformApiGenericTableControllerMetadataDetails,\n platformApiGenericTableControllerShow,\n platformApiGenericTableControllerUpdate,\n platformApiInteroperabilityContractControllerCreate,\n platformApiInteroperabilityContractControllerDelete,\n platformApiInteroperabilityContractControllerIndex,\n platformApiInteroperabilityContractControllerMetadata,\n platformApiInteroperabilityContractControllerMetadataDetails,\n platformApiInteroperabilityContractControllerRun,\n platformApiInteroperabilityContractControllerShow,\n platformApiInteroperabilityContractControllerUpdate,\n platformApiMdmControllerVerify,\n platformApiPingControllerPing,\n platformApiSessionControllerCreate,\n platformApiSessionControllerDelete,\n platformApiSessionControllerVerify,\n platformApiSessionControllerVerifyApiKey,\n platformApiTemplatesControllerIndex,\n platformApiTemplatesControllerMetadata,\n platformApiTemplatesControllerMetadataDetails,\n platformApiTenantControllerIndex,\n platformApiToolControllerCreate,\n platformApiToolControllerDelete,\n platformApiToolControllerIndex,\n platformApiToolControllerMetadata,\n platformApiToolControllerMetadataDetails,\n platformApiToolControllerShow,\n platformApiToolControllerTestInvocation,\n platformApiToolControllerUpdate,\n // Drift-checksum endpoints — server computes the would-be checksum for a\n // submitted config body (cast → defaults → stamp, no persist). `alvera plan`\n // POSTs the rendered body here for the desired checksum and compares it to\n // the deployed resource's checksum to decide unchanged vs edited.\n platformApiDatalakeControllerChecksum,\n platformApiDataSourceControllerChecksum,\n platformApiToolControllerChecksum,\n platformApiAiAgentControllerChecksum,\n platformApiActionStatusUpdaterControllerChecksum,\n platformApiConnectedAppMgmtControllerChecksum,\n platformApiGenericTableControllerChecksum,\n platformApiInteroperabilityContractControllerChecksum,\n platformApiDataActivationClientControllerChecksum,\n platformApiAgenticWorkflowControllerChecksum,\n platformApiWorkflowRunControllerIndex,\n platformApiWorkflowRunControllerShow,\n platformApiWorkflowRunControllerCancel,\n} from './generated/sdk.gen.js';\n\n// Runtime enums — TypeScript `enum` declarations carry both a type\n// and a value, so they need a regular `export` (not `export type`).\n// Consumers import them as either narrowing types or value sources\n// (e.g. `Object.values(ActionType)` to enumerate at runtime).\nexport { ActionType, ToolIntent } from './generated/types.gen.js';\n\n// Re-export generated types that are correct as-is\nexport type {\n ActionStatusUpdaterCloudWatchQueryRequest,\n ActionStatusUpdaterResponse,\n ActionStatusUpdaterRestCallRequest,\n AdminApiKeyResponse,\n AdminCreateTenantApiKeyRequest,\n AgenticWorkflowListResponse,\n AgenticWorkflowRequestWritable,\n AgenticWorkflowResponse,\n AiAgentInvokeRequest,\n AiAgentResponse,\n // The JSON:API error envelope the server returns on 4xx — `{ errors: [{\n // detail, source: { pointer }, title }] }`. A 422 always carries it (one\n // entry per validation failure, with an RFC 6901 JSON Pointer to the\n // offending field). Exposed so consumers can type and surface server errors.\n AlveraApiError,\n BatchLogListResponse,\n BatchLogResponse,\n ConnectedAppListResponse,\n ConnectedAppRequestWritable,\n ConnectedAppResponse,\n DataActivationClientListResponse,\n DataActivationClientLogListResponse,\n DataActivationClientLogResponse,\n DataActivationClientRequestWritable,\n DataActivationClientResponse,\n DatalakeRequestWritable,\n DatalakeResponse,\n DatasetSearchResponse,\n DataSourceRequest,\n DataSourceResponse,\n DownloadUrlResponse,\n ErrorResponse,\n ExecuteActionRequest,\n ExecuteActionResponse,\n ExecuteSqlMeta,\n ExecuteSqlRequest,\n ExecuteSqlResponse,\n GenericTableColumnRequest,\n GenericTableColumnResponse,\n GenericTableResponse,\n IngestFileRequest,\n IngestRequest,\n InteroperabilityContractAiAgentRequestWritable,\n InteroperabilityContractListResponse,\n InteroperabilityContractRequestWritable,\n InteroperabilityContractResponse,\n InteroperabilityRunRequest,\n InteroperabilityRunResponse,\n MdmVerifyRequest,\n MdmVerifyResponse,\n PaginationMeta,\n ResolvePageRequest,\n RunManuallyRequestWritable,\n RunManuallyResponse,\n RunWorkflowRequest,\n RunWorkflowResponse,\n SessionResponse,\n SyncRoutesResponse,\n // 0.23 GH-843 — a `workflows.run` now records a run rather than doing the\n // work inline, so the run itself is a readable, cancellable resource.\n WorkflowRunResponse,\n WorkflowRunListResponse,\n // 0.23 GH-843 — Twilio as a first-class sender body. `*Writable` is the one\n // that carries `auth_token` (writeOnly); it appears on no read shape.\n ToolTwilioRequest,\n ToolTwilioRequestWritable,\n ToolTwilioResponse,\n TwilioRequest,\n TwilioRequestWritable,\n TwilioResponse,\n TenantListResponse,\n TenantResponse,\n TextToSqlRequest,\n TextToSqlResponse,\n ToolRequest,\n ToolRequestWritable,\n ToolResponse,\n UpdatePageRequest,\n UploadLinkRequest,\n UploadLinkResponse,\n WorkflowAiAgentRequestWritable,\n WorkflowLogListResponse,\n WorkflowLogResponse,\n} from './generated/types.gen.js';\n\nexport interface CreateGenericTableRequest {\n title: string;\n description?: string;\n data_domain?:\n | 'healthcare'\n | 'core_banking'\n | 'payments'\n | 'subscription'\n | 'service_commerce'\n | 'trading'\n | null;\n columns: GenericTableColumnRequest[];\n}\n\nexport interface TemplateConfig {\n type: 'system' | 'custom';\n path?: string;\n body?: string;\n}\n\nexport interface CreateActionStatusUpdaterRequest {\n name: string;\n cron_expression: string;\n updater_type: 'cloud_watch' | 'restapi';\n updater_tool_id: string;\n datalake_id: string;\n sender_tool_ids?: string[] | null;\n // Required by the platform changeset (cast_embed :message_config,\n // required: true) and the OpenAPI schema's required list. Renders raw\n // poll-result events into the {external_id, set_params} shape the\n // reconciliation pipeline expects.\n message_config: TemplateConfig;\n // Required on create AND update (PUT) — omitting it is a 422 (`Missing field:\n // action_log_config`). Renders each poll result into the action-log write shape:\n // a JSON object with `external_id` plus at least one updatable field (`status`,\n // `sent_at`, `metadata`) — the same contract `message_config` holds for messages.\n // A config that renders `null`/empty is rejected (422 \"must render a JSON object\n // containing external_id\"). The *response* reads this back nullable: rows created\n // before it became required stay `null` until their next edit forces a real\n // template (including status-resume and refresh-with-override edits).\n action_log_config: TemplateConfig;\n // Required for `restapi` updaters, omitted for `cloud_watch`. JSON Schemas the\n // poll driver validates each rendered template output against on every cycle —\n // the events render against `events_output_schema`, the pagination context\n // (keyed on `has_next`) against `pagination_context_output_schema`. Same\n // top-level JSON-schema shape as `CreateAiAgentRequest`'s `input_schema` /\n // `llm_response_schema`.\n events_output_schema?: Record<string, unknown> | null;\n pagination_context_output_schema?: Record<string, unknown> | null;\n // Required. Discriminated by `updater_body_type` (public OpenAPI\n // discriminator); server-side `ex_open_api_utils` maps to internal\n // `:__type__` Ecto routing. Same pattern as `cloud_storage_type` on\n // Datalake and `tool_body_type` on Tool.\n updater_body: ActionStatusUpdaterCloudWatchQueryRequest | ActionStatusUpdaterRestCallRequest;\n}\n\nexport interface CreateAiAgentRequest {\n name: string;\n model: string;\n tool_id: string;\n data_access: 'regulated' | 'unregulated';\n temperature: number;\n max_tokens: number;\n enabled: boolean;\n slug?: string;\n description?: string | null;\n input_schema?: Record<string, unknown> | null;\n llm_response_schema?: Record<string, unknown> | null;\n prompt_config?: Record<string, unknown> | null;\n}\n\n// ---------------------------------------------------------------------------\n// Auth — session-based (Bearer token)\n// ---------------------------------------------------------------------------\n\nexport interface CreateSessionParams {\n baseUrl: string;\n email: string;\n password: string;\n /**\n * Publishable API key of the tenant named by `tenantSlug`, sent as\n * `X-API-Key`. Required — the server 401s without one and 403s a key\n * belonging to a different tenant. The key is stamped onto the resulting\n * session for lineage, and the same key must accompany every subsequent\n * request alongside the Bearer.\n */\n apiKey: string;\n /**\n * Tenant slug to sign in to. Required — `POST /sessions` is tenant login\n * only; the tenantless bootstrap login lives at\n * `POST /api/v1/admin/bootstrap-session` (`createBootstrapSession`, an\n * integration-test-only route absent from prod builds).\n */\n tenantSlug: string;\n /** Session duration in seconds. Default 86400 (24h). Max 2592000 (30d). */\n expiresIn?: number;\n}\n\nexport interface SessionResult {\n /** Bearer token to pass into createPlatformApi. */\n sessionToken: string;\n /** ISO-8601 expiration timestamp, or null for non-expiring sessions. */\n expiresAt: string | null;\n /** Null for tenantless sessions (admin / pre-tenant bootstrap). */\n tenant: { id: string; slug: string; name: string } | null;\n /** Null for tenantless sessions. */\n role: { id: string; name: string } | null;\n user: { id: string; firstName: string | null; lastName: string | null } | null;\n}\n\n/**\n * Sign in to a tenant: exchange user credentials + the tenant's publishable\n * key for a tenant-scoped Bearer session token. For the tenantless\n * platform-admin bootstrap login use `createBootstrapSession` (an\n * integration-test-only route absent from prod builds).\n *\n * Throws on any non-2xx response (e.g. 401 invalid credentials).\n */\nexport async function createSession(\n params: CreateSessionParams,\n): Promise<SessionResult> {\n client.setConfig({ baseUrl: params.baseUrl.replace(/\\/$/, '') });\n\n const { data } = await platformApiSessionControllerCreate({\n headers: { 'X-API-Key': params.apiKey },\n body: {\n email: params.email,\n password: params.password,\n tenant_slug: params.tenantSlug,\n ...(params.expiresIn !== undefined ? { expires_in: params.expiresIn } : {}),\n },\n throwOnError: true,\n });\n\n if (!data.session_token) {\n throw new Error('Session created but no session_token was returned.');\n }\n\n return {\n sessionToken: data.session_token,\n expiresAt: data.expires_at ?? null,\n tenant: data.tenant\n ? { id: data.tenant.id, slug: data.tenant.slug, name: data.tenant.name }\n : null,\n role: data.role ? { id: data.role.id, name: data.role.name } : null,\n user: data.user\n ? {\n id: data.user.id,\n firstName: data.user.first_name ?? null,\n lastName: data.user.last_name ?? null,\n }\n : null,\n };\n}\n\n/**\n * Bootstrap a TENANTLESS Bearer session (platform-admin / pre-tenant flows)\n * via `POST /api/v1/admin/bootstrap-session` — keyless by structural\n * necessity (it mints the very first Bearer of an environment, before any\n * tenant key exists). Integration-test-only: the route does not exist in\n * prod builds. Returned `tenant` and `role` are always null.\n */\nexport async function createBootstrapSession(params: {\n baseUrl: string;\n email: string;\n password: string;\n expiresIn?: number;\n}): Promise<SessionResult> {\n client.setConfig({ baseUrl: params.baseUrl.replace(/\\/$/, '') });\n\n const { data } = await platformApiIntegrationTestOnlyAdminControllerBootstrapSession({\n body: {\n email: params.email,\n password: params.password,\n ...(params.expiresIn !== undefined ? { expires_in: params.expiresIn } : {}),\n },\n throwOnError: true,\n });\n\n if (!data.session_token) {\n throw new Error('Session created but no session_token was returned.');\n }\n\n return {\n sessionToken: data.session_token,\n expiresAt: data.expires_at ?? null,\n tenant: null,\n role: null,\n user: data.user\n ? {\n id: data.user.id,\n firstName: data.user.first_name ?? null,\n lastName: data.user.last_name ?? null,\n }\n : null,\n };\n}\n\n/**\n * Revoke the currently-configured session token. After calling this,\n * the api instance will reject every subsequent request with 401.\n */\nexport async function revokeSession(): Promise<void> {\n await platformApiSessionControllerDelete({ throwOnError: true });\n}\n\n// ---------------------------------------------------------------------------\n// Config\n// ---------------------------------------------------------------------------\n\n/**\n * Optional HTTP-layer instrumentation hook. When provided, the SDK\n * attaches request + response interceptors to its hey-api client and\n * invokes `log` once per request and once per response.\n *\n * The SDK is logger-agnostic — `log` is a plain callback. Consumer\n * (CLI, tests, downstream apps) decides where the line goes. The same\n * pattern Stripe, AWS SDK v3, Octokit, and the OpenAI SDK use.\n *\n * `redactStrings` is consumer-supplied: every literal occurrence of\n * each entry in the formatted request / response string is replaced\n * with `********` before `log` is called. This is how secret values\n * substituted client-side (e.g. resolved from the CLI's\n * `infra.secrets.toml`) stay out of debug logs even though the SDK\n * itself never sees the placeholder syntax — it only sees the\n * resolved literal in the outgoing body, and the redaction list says\n * which literals to scrub.\n *\n * `log` receives a fully-formatted line. The URL is ABSOLUTE — origin\n * included — because the origin is the only thing distinguishing one\n * environment from another. A path-only line reads identically whether\n * the call went to localhost or to a demo server, which makes the log\n * useless for the question it is most often asked: *where did this\n * actually go?*\n *\n * `→ POST https://demo.example.com/api/v1/tenants/foo/datalakes\n * {\n * \"slug\": \"demo\",\n * \"...\": \"...\"\n * }`\n *\n * `← 422 https://demo.example.com/api/v1/tenants/foo/datalakes\n * {\n * \"errors\": { ... }\n * }`\n *\n * Newlines are part of the message — caller decides whether to\n * append another. Method/status arrows (`→` `←`) make request /\n * response easy to grep.\n */\nexport interface ApiDebugConfig {\n log: (message: string) => void;\n redactStrings?: readonly string[];\n}\n\n/**\n * `sessionToken` and `apiKey` travel together on an authorized request —\n * Firebase's \"API key + ID token\" split, not an either/or. `apiKey` identifies\n * the publishable client (and is what a server-side CORS check matches the\n * request's `Origin` against); `sessionToken` (Bearer) is what actually\n * authorizes the call. Neither ever substitutes for the other.\n *\n * `sessionToken` is OPTIONAL: a key-only client — every deployed connected\n * app authenticating machine-to-machine on its tenant's publishable key —\n * constructs with just `{ baseUrl, apiKey }` and sends no `Authorization`\n * header at all (never a fabricated `Bearer ` with an empty token). It\n * reaches only the limited surface the publishable key permits; everything\n * else 401s server-side, which is the intended ceiling.\n */\nexport interface ApiConfig {\n baseUrl: string;\n sessionToken?: string;\n apiKey: string;\n debug?: ApiDebugConfig;\n}\n\n// ---------------------------------------------------------------------------\n// Factories — two named entry points\n//\n// createPlatformApi(config) singleton mode (default)\n// Mutates the shared, generated client. Cheap, single-bearer-at-a-time.\n// Right for CLIs and single-user web apps where one logged-in user holds\n// exactly one bearer at any moment.\n//\n// createIsolatedPlatformApi(config) private-client mode\n// Builds its own Client via createClient() and threads it on every call.\n// Right for code that needs MULTIPLE concurrent APIs bound to DIFFERENT\n// bearers in the same process — integration tests holding a root session\n// and a tenant-scoped session at once, or multi-tenant background jobs.\n//\n// Both factories return the same PlatformApi shape, built by _buildApi().\n// ---------------------------------------------------------------------------\n\nexport type PlatformApi = ReturnType<typeof _buildApi>;\n\n// Public-facing alias for the authenticated client. `PlatformApi` names the\n// builder's return type; `AlveraClient` is the name consumers reach for —\n// notably the `$alvera` ambient global the CLI injects into contract files.\n// Pure alias, no distinct shape.\nexport type AlveraClient = PlatformApi;\n\nexport interface DatasetSearchOptions {\n userSearchId?: string;\n /**\n * Optional override for the data access mode used by this read.\n * Defaults to the session's `data_access_mode`. The session's capability\n * ceiling still applies — escalating beyond it returns 403.\n */\n dataAccessMode?: 'regulated' | 'unregulated';\n /**\n * Outer SQL-chunk pagination. Defaults page=1, page_size=1000 (max 1000).\n * Pages cached IDs from `search_results`; the cap is dictated by\n * Postgres' `WHERE id IN (^ids)` plan (planner regresses past ~1k params).\n */\n outerPagination?: { page?: number; pageSize?: number };\n /**\n * Inner resource Flop pagination. Defaults page=1, page_size=20.\n * Also accepts an `orderDirection` (sorts on the schema's `:global_search`\n * compound) and `globalSearch` (single ILIKE-OR text-search knob).\n */\n innerSearch?: {\n page?: number;\n pageSize?: number;\n orderDirection?: 'asc' | 'desc';\n globalSearch?: string;\n };\n}\n\nexport interface DatasetMetadataOptions {\n genericTableId?: string;\n}\n\nfunction authHeaders(config: ApiConfig): Record<string, string> {\n // Key-only (no session): X-API-Key alone — omitting Authorization entirely\n // beats sending `Bearer ` junk that a strict middleware would 401.\n return {\n ...(config.sessionToken ? { Authorization: `Bearer ${config.sessionToken}` } : {}),\n 'X-API-Key': config.apiKey,\n };\n}\n\n// Serializes query params in the bracket style the API parses natively:\n// scalars as `k=v`, objects as `k[a]=v`, and arrays as repeated `k[]=v` —\n// including the case that matters, arrays of objects as `k[][a]=v`. The\n// list endpoints take `filters` as an array of `{field, op, value}`\n// objects (`filters[][field]=handle&filters[][op]=ilike&filters[][value]=x`);\n// the server groups consecutive `[]` entries into one object per element\n// (a repeated inner key starts the next element). Indexed brackets\n// (`filters[0][field]=…`) do NOT work — the server parses them into a\n// map keyed by the index string and rejects it as a non-array.\n//\n// The generated client can't produce this shape: its serializer refuses\n// arrays of objects outright (\"Deeply-nested arrays/objects aren't\n// supported\"). And client-level config alone is NOT enough — every\n// generated list function carries its own `querySerializer: {parameters:\n// {filters: …deepObject}}` option that shadows the client config at\n// request time (`...options` spreads last in the generated call). The\n// curated list wrappers therefore pass this function per call — a\n// per-call function takes precedence over the generated options object.\nexport function bracketQuerySerializer(query: Record<string, unknown>): string {\n const params = new URLSearchParams();\n const append = (key: string, value: unknown): void => {\n if (value === undefined || value === null) return;\n if (Array.isArray(value)) {\n for (const item of value) append(`${key}[]`, item);\n return;\n }\n if (typeof value === 'object') {\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n append(`${key}[${k}]`, v);\n }\n return;\n }\n params.append(key, String(value));\n };\n for (const [key, value] of Object.entries(query)) append(key, value);\n return params.toString();\n}\n\nexport function createPlatformApi(config: ApiConfig): PlatformApi {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n client.setConfig({\n baseUrl,\n headers: authHeaders(config),\n querySerializer: bracketQuerySerializer,\n });\n if (config.debug) _attachDebugInterceptors(client, config.debug);\n return _buildApi(client);\n}\n\nexport function createIsolatedPlatformApi(config: ApiConfig): PlatformApi {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n const myClient = createClient({\n baseUrl,\n headers: authHeaders(config),\n querySerializer: bracketQuerySerializer,\n });\n if (config.debug) _attachDebugInterceptors(myClient, config.debug);\n return _buildApi(myClient);\n}\n\n// Decorates every thrown 4xx/5xx error with the HTTP status of the\n// originating Response. hey-api otherwise throws only the parsed body,\n// which makes 404 (a valid \"empty result\" outcome for the metadata\n// endpoints) indistinguishable from a malformed response. Consumers\n// (CLI `get-metadata`, agents driving the SDK) can then short-circuit\n// on `(err as { _httpStatus?: number })._httpStatus === 404` without\n// pattern-matching on body strings.\n//\n// Three input shapes the interceptor must survive:\n//\n// 1. HTTP 4xx/5xx — `response` is the real Response, `error` is the\n// parsed body. Decorate `error` with `_httpStatus`.\n//\n// 2. HTTP 4xx/5xx with primitive body (`Not Found` plain text) —\n// `response` is the real Response, `error` is a string. Wrap into\n// `{_httpStatus, message}` so the status survives.\n//\n// 3. Transport failure (server down, DNS miss, abort) — `response` is\n// undefined, `error` is the underlying TypeError (\"fetch failed\"\n// etc.). NEVER read `.status` off undefined — that turns an\n// already-recoverable error into a cryptic JS crash. Pass the\n// error through unchanged so the caller's catch handler sees the\n// real cause.\n// Pure function lifted out of the interceptor body so it's directly\n// testable without spinning up a real Client. The interceptor is one\n// thin wiring call; this is the actual logic.\nexport function decorateErrorWithStatus(\n error: unknown,\n response: Response | undefined,\n): unknown {\n if (!response) {\n return error;\n }\n const status = response.status;\n if (error && typeof error === 'object') {\n (error as Record<string, unknown>)._httpStatus = status;\n return error;\n }\n return {\n _httpStatus: status,\n message: typeof error === 'string' ? error : String(error ?? response.statusText),\n };\n}\n\nfunction _attachStatusInterceptor(myClient: Client): void {\n myClient.interceptors.error.use(decorateErrorWithStatus);\n}\n\n/**\n * Replaces every literal occurrence of each entry in `redactStrings`\n * with `********`. Uses `split / join` — same approach as the CLI's\n * `redactInstalled` helper. Linear in `text.length × redactStrings.length`;\n * not optimized for speed (debug-mode only, off the hot path).\n *\n * Entries that are empty / falsy are skipped (avoids the infinite\n * replace loop that an empty needle produces in some implementations).\n */\nfunction redactLiterals(text: string, redactStrings: readonly string[] | undefined): string {\n if (!redactStrings || redactStrings.length === 0) return text;\n let out = text;\n for (const literal of redactStrings) {\n if (!literal) continue;\n out = out.split(literal).join('********');\n }\n return out;\n}\n\n/**\n * Attaches request + response interceptors that produce a formatted log\n * line per call and hand it to `debug.log`.\n *\n * Format:\n *\n * `→ POST /api/v1/tenants/foo/datalakes`\n * ` <body JSON, indented 4 spaces, secrets redacted>`\n *\n * `← 422 /api/v1/tenants/foo/datalakes`\n * ` <response body JSON, indented 4 spaces, secrets redacted>`\n *\n * Request body extraction reads `request.clone().text()` so the original\n * stream stays consumable by the underlying fetch (clone() is the\n * standard fetch-API pattern for stream-double-read). Response body\n * extraction does the same on the response side. Both happen\n * asynchronously inside the interceptor; hey-api's middleware chain\n * awaits the returned promise before continuing.\n *\n * Errors thrown inside `debug.log` are caught and swallowed — a buggy\n * caller-supplied logger must never break the actual HTTP call.\n */\n/**\n * `origin + pathname` — the server, then the route. The query string is\n * deliberately left off: it carries filter values, not routing, and the\n * body below the line is where those are read.\n *\n * Falls back to the raw string if the URL will not parse, so a debug\n * logger can never be the thing that breaks a call.\n */\nfunction absoluteUrl(rawUrl: string): string {\n try {\n const parsed = new URL(rawUrl);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return rawUrl;\n }\n}\n\nfunction _attachDebugInterceptors(myClient: Client, debug: ApiDebugConfig): void {\n const { log, redactStrings } = debug;\n\n myClient.interceptors.request.use(async (request) => {\n try {\n const url = absoluteUrl(request.url);\n const cloned = request.clone();\n const body = cloned.body ? await cloned.text() : '';\n const formatted = body\n ? `→ ${request.method} ${url}\\n${indent(redactLiterals(body, redactStrings), 4)}`\n : `→ ${request.method} ${url}`;\n log(formatted);\n } catch {\n // never break the request because the debug logger failed\n }\n return request;\n });\n\n myClient.interceptors.response.use(async (response, request) => {\n try {\n const url = absoluteUrl(request.url);\n const cloned = response.clone();\n const body = await cloned.text();\n const formatted = body\n ? `← ${response.status} ${url}\\n${indent(redactLiterals(body, redactStrings), 4)}`\n : `← ${response.status} ${url}`;\n log(formatted);\n } catch {\n // never break the response chain because the debug logger failed\n }\n return response;\n });\n}\n\nfunction indent(text: string, spaces: number): string {\n const pad = ' '.repeat(spaces);\n return text\n .split('\\n')\n .map((line) => pad + line)\n .join('\\n');\n}\n\nfunction _buildApi(myClient: Client) {\n _attachStatusInterceptor(myClient);\n return {\n ping: () =>\n platformApiPingControllerPing({ client: myClient, throwOnError: true }),\n\n sessions: {\n verify: () =>\n platformApiSessionControllerVerify({ client: myClient, throwOnError: true }),\n // Key-only companion (GET /api-keys/verify, split from verify by\n // GH-753): proves the X-API-Key alone resolves — no Bearer required.\n verifyApiKey: () =>\n platformApiSessionControllerVerifyApiKey({ client: myClient, throwOnError: true }),\n },\n\n admin: {\n // Admin tenant sign-up (moved from /auth/sign-up): the test harness\n // creating tenant users; production user creation is UI-driven.\n signUp: (body: SignUpRequestWritable) =>\n platformApiIntegrationTestOnlyAdminControllerSignUp({ body, client: myClient, throwOnError: true }),\n confirmUser: (id: string) =>\n platformApiIntegrationTestOnlyAdminControllerConfirmUser({ path: { id }, client: myClient, throwOnError: true }),\n // Admin side door: reveal a connected app's publishable (public_api) key plaintext.\n revealConnectedAppApiKey: (id: string) =>\n platformApiIntegrationTestOnlyAdminControllerRevealConnectedAppApiKey({\n path: { id },\n client: myClient,\n throwOnError: true,\n }),\n // Admin side door: mint a public_api key for a tenant. Exists for the\n // integration-test bootstrap flow, which has no LiveView console to\n // use the normal API-keys UI. Returns the plaintext once — record it,\n // it is never shown again.\n createTenantApiKey: (tenantSlug: string, body: AdminCreateTenantApiKeyRequest) =>\n platformApiIntegrationTestOnlyAdminControllerCreateTenantApiKey({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient,\n throwOnError: true,\n }),\n },\n\n tenants: {\n list: (query?: PlatformApiTenantControllerIndexData['query']) =>\n platformApiTenantControllerIndex({\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n create: (body: TenantRequest) =>\n platformApiTenantControllerCreate({ body: body as never, client: myClient, throwOnError: true }),\n },\n\n invitations: {\n list: () =>\n platformApiInvitationControllerIndex({ client: myClient, throwOnError: true }),\n create: (tenantSlug: string, body: InvitationRequest) =>\n platformApiInvitationControllerCreate({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n accept: (id: string) =>\n platformApiInvitationControllerAccept({ path: { id }, client: myClient, throwOnError: true }),\n },\n\n datasets: {\n // Dataset endpoints are datalake-slug-scoped:\n // /tenants/:tenant_slug/datalakes/:datalake_slug/datasets/...\n // The datalake is mandatory + explicit in the URL — there is no\n // `datalake_id` query param and no tenant-derived default.\n search: (\n tenantSlug: string,\n datalakeSlug: string,\n dataset: string,\n options: DatasetSearchOptions = {},\n ) => {\n // Platform uses two-tier nested pagination — `outer_pagination[page]`\n // / `outer_pagination[page_size]` for the SQL chunk + `inner_search[*]`\n // for the resource Flop. Flat `page` / `page_size` are NOT accepted by\n // the strict OpenAPI plug.\n const outer = options.outerPagination ?? {};\n const inner = options.innerSearch ?? {};\n const outerQuery =\n outer.page !== undefined || outer.pageSize !== undefined\n ? {\n outer_pagination: {\n ...(outer.page !== undefined ? { page: outer.page } : {}),\n ...(outer.pageSize !== undefined ? { page_size: outer.pageSize } : {}),\n },\n }\n : {};\n const innerQuery =\n inner.page !== undefined ||\n inner.pageSize !== undefined ||\n inner.orderDirection !== undefined ||\n inner.globalSearch !== undefined\n ? {\n inner_search: {\n ...(inner.page !== undefined ? { page: inner.page } : {}),\n ...(inner.pageSize !== undefined ? { page_size: inner.pageSize } : {}),\n ...(inner.orderDirection !== undefined\n ? { order_direction: inner.orderDirection }\n : {}),\n ...(inner.globalSearch !== undefined\n ? { global_search: inner.globalSearch }\n : {}),\n },\n }\n : {};\n\n return platformApiDatasetControllerSearch({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset },\n query: {\n ...(options.userSearchId !== undefined ? { user_search_id: options.userSearchId } : {}),\n ...(options.dataAccessMode !== undefined\n ? { data_access_mode: options.dataAccessMode }\n : {}),\n ...outerQuery,\n ...innerQuery,\n },\n client: myClient,\n throwOnError: true,\n });\n },\n // `metadata` is the whole-catalog markdown of every dataset type\n // registered to this datalake's domain (the platform's\n // `DatasetController.metadata` action — siblings with\n // `tools.metadata` / `dataSources.metadata` / etc.).\n metadata: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatasetControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n // `metadataDetails` is per-dataset-type metadata — pass a system\n // dataset name (e.g. `patient`) or `'generic_table'` with a\n // `genericTableId` option for an operator-defined table.\n metadataDetails: (\n tenantSlug: string,\n datalakeSlug: string,\n datasetType: string,\n options: DatasetMetadataOptions = {},\n ) =>\n platformApiDatasetControllerDatasetMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset_type: datasetType },\n query: {\n ...(options.genericTableId !== undefined\n ? { generic_table_id: options.genericTableId }\n : {}),\n },\n client: myClient, throwOnError: true,\n }),\n createUserSearch: (\n tenantSlug: string,\n datalakeSlug: string,\n dataset: string,\n body: UserSearchRequest,\n ) =>\n platformApiDatasetControllerCreateUserSearch({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, dataset },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n datalakes: {\n list: (\n tenantSlug: string,\n query?: PlatformApiDatalakeControllerIndexData['query'],\n ) =>\n platformApiDatalakeControllerIndex({\n path: { tenant_slug: tenantSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, id: string) =>\n platformApiDatalakeControllerShow({\n path: { tenant_slug: tenantSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerCreate({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerChecksum({\n path: { tenant_slug: tenantSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, id: string, body: DatalakeRequestWritable) =>\n platformApiDatalakeControllerUpdate({\n path: { tenant_slug: tenantSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, id: string) =>\n platformApiDatalakeControllerDelete({\n path: { tenant_slug: tenantSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (tenantSlug: string, query?: { page?: number; page_size?: number }) =>\n platformApiDatalakeControllerMetadata({\n path: { tenant_slug: tenantSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n systemDatasets: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerSystemDatasets({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n migrate: (tenantSlug: string, datalakeSlug: string) =>\n platformApiDatalakeControllerMigrate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n createUploadLink: (\n tenantSlug: string,\n datalakeSlug: string,\n body: UploadLinkRequest,\n ) =>\n platformApiDatalakeControllerCreateUploadLink({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n createDownloadLink: (\n tenantSlug: string,\n datalakeSlug: string,\n body: { bucket: string; key: string },\n ) =>\n platformApiDatalakeControllerCreateDownloadLink({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // Talk to data — generate SQL from a natural-language prompt. Only the\n // prompt + the datalake schema cross the LLM boundary (never rows), so this\n // is safe in both modes. Returns SQL for review; run it via executeSql.\n textToSql: (\n tenantSlug: string,\n datalakeSlug: string,\n body: TextToSqlRequest,\n ) =>\n platformApiDatalakeControllerTextToSql({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // Talk to data — run a read-only SQL statement against the datalake. The\n // JSON path returns `{ data, meta }` (data = array-of-arrays rows aligned to\n // meta.columns). `{ format: 'csv' }` makes the server return a text/csv\n // attachment, so `data` resolves to the raw CSV string; the curated return\n // is widened to the documented `ExecuteSqlResponse | string` union.\n executeSql: (\n tenantSlug: string,\n datalakeSlug: string,\n body: ExecuteSqlRequest,\n options?: { format?: 'csv' },\n ) => {\n const result = platformApiDatalakeControllerExecuteSql({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n ...(options?.format === 'csv'\n ? { query: { format: 'csv' }, parseAs: 'text' as const }\n : {}),\n client: myClient, throwOnError: true,\n });\n return result as Promise<\n Omit<Awaited<typeof result>, 'data'> & { data: ExecuteSqlResponse | string }\n >;\n },\n },\n\n dataSources: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiDataSourceControllerIndexData['query'],\n ) =>\n platformApiDataSourceControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: DataSourceRequestWritable) =>\n platformApiDataSourceControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: DataSourceRequest) =>\n platformApiDataSourceControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: DataSourceRequestWritable,\n ) =>\n platformApiDataSourceControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiDataSourceControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataSourceControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n tools: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiToolControllerIndexData['query'],\n ) =>\n platformApiToolControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: ToolRequestWritable) =>\n platformApiToolControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ToolRequestWritable) =>\n platformApiToolControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: ToolRequestWritable) =>\n platformApiToolControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n testInvocation: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: ManualToolInvocationRequestWritable,\n ) =>\n platformApiToolControllerTestInvocation({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiToolControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiToolControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n genericTables: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiGenericTableControllerIndexData['query'],\n ) =>\n platformApiGenericTableControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: CreateGenericTableRequest) =>\n platformApiGenericTableControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: CreateGenericTableRequest) =>\n platformApiGenericTableControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: GenericTableRequestWritable) =>\n platformApiGenericTableControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiGenericTableControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiGenericTableControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n actionStatusUpdaters: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiActionStatusUpdaterControllerIndexData['query'],\n ) =>\n platformApiActionStatusUpdaterControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (\n tenantSlug: string,\n datalakeSlug: string,\n body: CreateActionStatusUpdaterRequest,\n ) =>\n platformApiActionStatusUpdaterControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ActionStatusUpdaterRequestWritable) =>\n platformApiActionStatusUpdaterControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: CreateActionStatusUpdaterRequest,\n ) =>\n platformApiActionStatusUpdaterControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // Enqueues one poll cycle on demand — the manual counterpart of the cron\n // tick. Responds 202 with the updater row AS-IS (the poll runs\n // asynchronously); poll the row's last_run_status / last_run_events_found\n // / last_run_error fields for the outcome, and observe delivery status on\n // the message rows, not in this response. An optional body carries a\n // one-shot polymorphic updater_body override (e.g. a widened\n // start_time/end_time window for a backfill) that does not mutate the\n // persisted updater.\n refresh: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body?: ActionStatusUpdaterRefreshRequest,\n ) =>\n platformApiActionStatusUpdaterControllerRefresh({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiActionStatusUpdaterControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiActionStatusUpdaterControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n templates: {\n systemTemplates: (tenantSlug: string, datalakeSlug: string) =>\n platformApiTemplatesControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiTemplatesControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (\n tenantSlug: string,\n datalakeSlug: string,\n filename: string,\n intent:\n | 'ai_agent'\n | 'blueprint_datasource'\n | 'blueprint_workflow'\n | 'workflow_filter'\n | 'workflow_decision'\n | 'data_activation_interoperability'\n | 'data_activation_tool_calls'\n | 'status_poller',\n ) =>\n platformApiTemplatesControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, filename },\n query: { intent },\n client: myClient, throwOnError: true,\n }),\n },\n\n aiAgents: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiAiAgentControllerIndexData['query'],\n ) =>\n platformApiAiAgentControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: CreateAiAgentRequest) =>\n platformApiAiAgentControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: AiAgentRequestWritable) =>\n platformApiAiAgentControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: CreateAiAgentRequest) =>\n platformApiAiAgentControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n invoke: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: AiAgentInvokeRequest,\n ) =>\n platformApiAiAgentControllerInvoke({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body: body as never,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiAiAgentControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAiAgentControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n connectedApps: {\n // datalake-scoped management\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiConnectedAppMgmtControllerIndexData['query'],\n ) =>\n platformApiConnectedAppMgmtControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (tenantSlug: string, datalakeSlug: string, id: string, body: ConnectedAppRequestWritable) =>\n platformApiConnectedAppMgmtControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n syncRoutes: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerSyncRoutes({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // datalake-scoped runtime actions (by slug)\n resolvePage: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: ResolvePageRequest,\n ) =>\n platformApiConnectedAppControllerResolvePage({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n updateMessageTracking: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: UpdatePageRequest,\n ) =>\n platformApiConnectedAppControllerUpdateMessageTracking({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiConnectedAppMgmtControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiConnectedAppMgmtControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n dataActivationClients: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiDataActivationClientControllerIndexData['query'],\n ) =>\n platformApiDataActivationClientControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: DataActivationClientRequestWritable) =>\n platformApiDataActivationClientControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: DataActivationClientRequestWritable) =>\n platformApiDataActivationClientControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: DataActivationClientRequestWritable,\n ) =>\n platformApiDataActivationClientControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiDataActivationClientControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiDataActivationClientControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n runManually: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body?: RunManuallyRequestWritable,\n ) =>\n platformApiDataActivationClientControllerRunManually({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body: body ?? {},\n client: myClient, throwOnError: true,\n }),\n ingest: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: IngestRequest,\n ) =>\n platformApiDataActivationClientControllerIngest({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n ingestFile: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: IngestFileRequest,\n ) =>\n platformApiDataActivationClientControllerIngestFile({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n logs: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n query?: PlatformApiDataActivationClientControllerLogsIndexData['query'],\n ) =>\n platformApiDataActivationClientControllerLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, slug: string, id: string) =>\n platformApiDataActivationClientControllerLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug, id },\n client: myClient, throwOnError: true,\n }),\n },\n },\n\n interoperabilityContracts: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiInteroperabilityContractControllerIndexData['query'],\n ) =>\n platformApiInteroperabilityContractControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n create: (tenantSlug: string, datalakeSlug: string, body: InteroperabilityContractRequestWritable) =>\n platformApiInteroperabilityContractControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n checksum: (tenantSlug: string, datalakeSlug: string, body: InteroperabilityContractRequestWritable) =>\n platformApiInteroperabilityContractControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: InteroperabilityContractRequestWritable,\n ) =>\n platformApiInteroperabilityContractControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiInteroperabilityContractControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiInteroperabilityContractControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n run: (\n tenantSlug: string,\n datalakeSlug: string,\n slug: string,\n body: InteroperabilityRunRequest,\n ) =>\n platformApiInteroperabilityContractControllerRun({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, slug },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n mdm: {\n verify: (tenantSlug: string, datalakeSlug: string, body: MdmVerifyRequest) =>\n platformApiMdmControllerVerify({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n },\n\n workflows: {\n // CRUD — datalake-scoped, addressed by workflow id\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiAgenticWorkflowControllerIndexData['query'],\n ) =>\n platformApiAgenticWorkflowControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // create/update take the real generated body type rather than\n // `Record<string, unknown>`. Both POST/PUT `AgenticWorkflowRequest`, and\n // PUT is full-replacement (there is no PATCH and no add/remove-tag\n // endpoint), so an omitted required key is a 422 rather than \"leave it\n // alone\". Typing the body makes the next required field a compile error\n // instead of a production 422 — the `tags` addition shipped 15 wrong\n // examples through a green gate precisely because this was untyped.\n create: (tenantSlug: string, datalakeSlug: string, body: AgenticWorkflowRequestWritable) =>\n platformApiAgenticWorkflowControllerCreate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n // checksum is typed too. It POSTs the same `AgenticWorkflowRequest`, and\n // tags participate in the drift fingerprint — so a checksum computed off\n // a body missing them is a WRONG ANSWER rather than a rejected call,\n // which is the worse failure: it returns 200 with a fingerprint that\n // silently disagrees with the server's.\n //\n // This is knowingly stricter than the other resources' checksum, which\n // still take the loose shape. The CLI dispatches all of them through one\n // generic call site (`contracts/server-checksum.ts`); that caller needs\n // updating for workflows.\n checksum: (tenantSlug: string, datalakeSlug: string, body: AgenticWorkflowRequestWritable) =>\n platformApiAgenticWorkflowControllerChecksum({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n update: (\n tenantSlug: string,\n datalakeSlug: string,\n id: string,\n body: AgenticWorkflowRequestWritable,\n ) =>\n platformApiAgenticWorkflowControllerUpdate({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n body,\n client: myClient, throwOnError: true,\n }),\n delete: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerDelete({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n metadata: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: { page?: number; page_size?: number },\n ) =>\n platformApiAgenticWorkflowControllerMetadata({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n client: myClient, throwOnError: true,\n }),\n metadataDetails: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiAgenticWorkflowControllerMetadataDetails({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n\n // Operations — datalake-scoped, addressed by workflow slug\n execute: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n body: ExecuteActionRequest,\n ) =>\n platformApiAgenticWorkflowOperationsControllerExecute({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n run: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n body: RunWorkflowRequest,\n ) =>\n platformApiAgenticWorkflowOperationsControllerRunWorkflow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n body,\n client: myClient, throwOnError: true,\n }),\n\n batchLogs: {\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n query?: PlatformApiAgenticWorkflowOperationsControllerBatchLogsIndexData['query'],\n ) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n start: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogStart({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n stop: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogStop({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n refresh: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerBatchLogRefresh({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n\n workflowLogs: {\n // Full Flop surface (the endpoint declares page/page_size/order_by/\n // order_directions/filters) — without it the wrapper is page-1-only\n // and older dispatches drown under newer rehearsal logs.\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n query?: PlatformApiAgenticWorkflowOperationsControllerWorkflowLogsIndexData['query'],\n ) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogsIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug },\n query,\n // Flop arrays need empty-bracket serialization; the generated\n // per-call options shadow the client config, so pass it here.\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (\n tenantSlug: string,\n datalakeSlug: string,\n workflowSlug: string,\n id: string,\n opts?: { dataAccessMode?: 'regulated' | 'unregulated' },\n ) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n ...(opts?.dataAccessMode\n ? { query: { data_access_mode: opts.dataAccessMode } }\n : {}),\n client: myClient, throwOnError: true,\n }),\n download: (tenantSlug: string, datalakeSlug: string, workflowSlug: string, id: string) =>\n platformApiAgenticWorkflowOperationsControllerWorkflowLogDownload({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, workflow_slug: workflowSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n },\n\n // Workflow runs — one row per `workflows.run` invocation. Deliberately\n // datalake-scoped, NOT nested under `workflows`: the question a campaign\n // screen asks is \"what is going out from this datalake\", across workflows.\n // Nested under a workflow slug, a caller would have to fan out over every\n // workflow to build one list.\n //\n // `workflows.run` now only SCHEDULES — its response carries\n // workflow_run_id/status/scheduled_at and no longer carries\n // enqueued_count/batch_id/workflow_run_log_id, because the segment is\n // resolved when the run fires, not when it is scheduled. Those three\n // become readable here, via `get`, once status leaves `scheduled`.\n workflowRuns: {\n // Full Flop surface (page/page_size/order_by/order_directions/filters)\n // — without the query type + bracket serializer this wrapper is\n // page-1-only, which is the exact defect the sibling list wrappers hit.\n list: (\n tenantSlug: string,\n datalakeSlug: string,\n query?: PlatformApiWorkflowRunControllerIndexData['query'],\n ) =>\n platformApiWorkflowRunControllerIndex({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug },\n query,\n querySerializer: bracketQuerySerializer,\n client: myClient, throwOnError: true,\n }),\n get: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiWorkflowRunControllerShow({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n // POST to a named sub-resource, not a status PUT: cancelling races the\n // worker on a single conditional UPDATE, so exactly one side wins and\n // the loser is told. Refused once a run reaches `processing` — the\n // fan-out has begun and an executing Oban job cannot be stopped.\n cancel: (tenantSlug: string, datalakeSlug: string, id: string) =>\n platformApiWorkflowRunControllerCancel({\n path: { tenant_slug: tenantSlug, datalake_slug: datalakeSlug, id },\n client: myClient, throwOnError: true,\n }),\n },\n };\n}\n","import { ENVIRONMENTS, type EnvironmentName } from './environments.generated.js';\n\nexport {\n ActionType,\n type ActionStatusUpdaterCloudWatchQueryRequest,\n type ActionStatusUpdaterResponse,\n type ActionStatusUpdaterRestCallRequest,\n type AgenticWorkflowListResponse,\n type AgenticWorkflowRequestWritable,\n type AgenticWorkflowResponse,\n type AiAgentResponse,\n type AlveraApiError,\n type AlveraClient,\n type ApiConfig,\n type ApiDebugConfig,\n type BatchLogListResponse,\n type BatchLogResponse,\n type ConnectedAppListResponse,\n type ConnectedAppRequestWritable,\n type ConnectedAppResponse,\n type CreateActionStatusUpdaterRequest,\n type CreateAiAgentRequest,\n type CreateGenericTableRequest,\n createIsolatedPlatformApi,\n createPlatformApi,\n createBootstrapSession,\n createSession,\n type CreateSessionParams,\n type DataActivationClientListResponse,\n type DataActivationClientLogListResponse,\n type DataActivationClientLogResponse,\n type DataActivationClientRequestWritable,\n type DataActivationClientResponse,\n type DatalakeRequestWritable,\n type DatalakeResponse,\n type DatasetMetadataOptions,\n type DatasetSearchOptions,\n type DatasetSearchResponse,\n type DataSourceRequest,\n type DataSourceRequestWritable,\n type DataSourceResponse,\n type DownloadUrlResponse,\n type ErrorResponse,\n type ExecuteActionRequest,\n type ExecuteActionResponse,\n type ExecuteSqlMeta,\n type ExecuteSqlRequest,\n type ExecuteSqlResponse,\n type GenericTableColumnRequest,\n type GenericTableColumnResponse,\n type GenericTableResponse,\n type IngestFileRequest,\n type IngestRequest,\n type InteroperabilityContractAiAgentRequestWritable,\n type InteroperabilityContractListResponse,\n type InteroperabilityContractRequestWritable,\n type InteroperabilityContractResponse,\n type InteroperabilityRunRequest,\n type InteroperabilityRunResponse,\n type MdmVerifyRequest,\n type MdmVerifyResponse,\n type PaginationMeta,\n type PlatformApi,\n type ResolvePageRequest,\n revokeSession,\n type RunManuallyRequestWritable,\n type RunManuallyResponse,\n type RunWorkflowRequest,\n type RunWorkflowResponse,\n type WorkflowRunResponse,\n type WorkflowRunListResponse,\n type ToolTwilioRequest,\n type ToolTwilioRequestWritable,\n type ToolTwilioResponse,\n type TwilioRequest,\n type TwilioRequestWritable,\n type TwilioResponse,\n type SessionResponse,\n type SessionResult,\n type SyncRoutesResponse,\n type TemplateConfig,\n type TenantListResponse,\n type TenantResponse,\n type TextToSqlRequest,\n type TextToSqlResponse,\n ToolIntent,\n type ToolRequest,\n type ToolRequestWritable,\n type ToolResponse,\n type UpdatePageRequest,\n type UploadLinkRequest,\n type UploadLinkResponse,\n type WorkflowAiAgentRequestWritable,\n type WorkflowLogListResponse,\n type WorkflowLogResponse,\n} from './client.js';\n\n// Environment catalogue (generated from <monorepo-root>/openapi.yaml#servers\n// per v10 reversal). Exposed here so the CLI package can resolve `--env`\n// against the same canonical list the SDK uses to construct default base URLs.\nexport {\n DEFAULT_ENVIRONMENT,\n ENVIRONMENTS,\n type EnvironmentName,\n} from './environments.generated.js';\n\n// Membership narrow over the env catalogue above. This is NOT a request/response\n// validator (the package still ships none — see the note below); it only checks an\n// arbitrary string against the SDK's own canonical env list, letting consumers\n// validate `ALVERA_ENV`-style input instead of an unchecked `as EnvironmentName` cast.\nexport function isEnvironmentName(name: string): name is EnvironmentName {\n return Object.prototype.hasOwnProperty.call(ENVIRONMENTS, name);\n}\n\n// NOTE: there is intentionally NO `export *` from a generated module here.\n// The SDK ships TYPES + a fetch client only — it exposes no runtime\n// validators. Body validation is server-authoritative (requests → 422\n// `AlveraApiError`, responses → OpenApiSpex cast). The `alvera` CLI does its\n// own local AJV pre-flight at `plan` time, off the same `openapi.yaml`; it is\n// CLI-internal and not part of this package's surface.\n"],"mappings":"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"}
|