@postrun/js 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-E75IP76L.js → chunk-C4MYARB5.js} +341 -12
- package/dist/chunk-C4MYARB5.js.map +1 -0
- package/dist/{chunk-FH5WJE2D.js → chunk-HY5QFRKO.js} +3 -3
- package/dist/{chunk-FH5WJE2D.js.map → chunk-HY5QFRKO.js.map} +1 -1
- package/dist/index.cjs +349 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -6
- package/dist/index.d.ts +14 -6
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/query.cjs.map +1 -1
- package/dist/query.d.cts +195 -81
- package/dist/query.d.ts +195 -81
- package/dist/query.js.map +1 -1
- package/dist/schemas/index.cjs +339 -9
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +7732 -4193
- package/dist/schemas/index.d.ts +7732 -4193
- package/dist/schemas/index.js +1 -1
- package/dist/server.cjs +338 -9
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +2 -2
- package/dist/{types.gen-BwX9xx6y.d.cts → types.gen-Ca6kUFtq.d.cts} +139 -25
- package/dist/{types.gen-BwX9xx6y.d.ts → types.gen-Ca6kUFtq.d.ts} +139 -25
- package/package.json +1 -1
- package/dist/chunk-E75IP76L.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/core/bodySerializer.gen.ts","../src/client/core/serverSentEvents.gen.ts","../src/client/core/pathSerializer.gen.ts","../src/client/core/utils.gen.ts","../src/client/core/auth.gen.ts","../src/client/client/utils.gen.ts","../src/client/client/client.gen.ts","../src/client/zod.gen.ts","../src/errors.ts","../src/token-cache.ts","../src/client.ts","../src/client/client.gen.ts","../src/client/sdk.gen.ts","../src/resources.ts","../src/upload/casing.ts","../src/upload/upload-error.ts","../src/upload/upload-file.ts","../src/media.ts","../src/tiktok.ts","../src/linkedin.ts","../src/x.ts","../src/analytics.ts","../src/tiktok-options.ts","../src/compose.ts"],"names":["url","joinedValues","config","request","z","z2","client","Uppy","AwsS3","pWaitFor","unit"],"mappings":"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","file":"index.cjs","sourcesContent":["// 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';\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): ',' | '|' | '%20' => {\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}): string => {\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): string => {\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}): string => {\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: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\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}): string => {\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}): unknown {\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 * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\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 = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\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 async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.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 may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\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(opts);\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 throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n 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\n response = await _fetch(request);\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 throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\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 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 * as z from 'zod';\n\n/**\n * ErrorCode\n *\n * The closed set of machine-readable Postrun error codes. Branch on this. Each links to https://docs.postrun.ai/errors/<code>.\n */\nexport const zErrorCode = z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n]);\n\n/**\n * Structured detail from the wrapped platform: its own error code, the offending field path + value, and its request id (for that platform’s support).\n */\nexport const zErrorSource = z.object({\n platform: z.enum([\n 'x',\n 'linkedin',\n 'instagram',\n 'facebook',\n 'tiktok',\n 'youtube'\n ]),\n platform_code: z.string().optional(),\n field: z.string().optional(),\n value: z.string().optional(),\n platform_request_id: z.string().optional()\n});\n\nexport const zProfile = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullable(),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\n/**\n * Lifetime metrics for one TikTok post, as reported by TikTok. TikTok updates them 24–48 hours after the activity and stops updating a post 365 days after it was published. A metric TikTok did not report is null.\n */\nexport const zTikTokPostMetrics = z.object({\n platform: z.literal('tiktok'),\n video_views: z.number().nullable(),\n reach: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n favorites: z.number().nullable(),\n average_time_watched: z.number().nullable(),\n total_time_watched: z.number().nullable(),\n full_video_watched_rate: z.number().nullable(),\n new_followers: z.number().nullable(),\n profile_views: z.number().nullable()\n});\n\n/**\n * One UTC day of account activity.\n */\nexport const zTikTokAccountDay = z.object({\n date: z.string(),\n followers_count: z.number().nullable(),\n daily_new_followers: z.number().nullable(),\n daily_lost_followers: z.number().nullable(),\n video_views: z.number().nullable(),\n profile_views: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable()\n});\n\n/**\n * A TikTok account’s current totals plus its daily activity, as reported by TikTok. A metric TikTok did not report is null.\n */\nexport const zTikTokAccountMetrics = z.object({\n platform: z.literal('tiktok'),\n followers_count: z.number().nullable(),\n following_count: z.number().nullable(),\n total_likes: z.number().nullable(),\n videos_count: z.number().nullable(),\n daily: z.array(zTikTokAccountDay)\n});\n\n/**\n * Lifetime metrics for one Instagram post, as reported by Meta under Meta’s own names. Single image and carousel posts report different metrics from Reels: a field that does not apply to the post’s type is null, and its description names the types that report it. Meta can take up to 48 hours to report a new post. A metric Meta did not report is null.\n */\nexport const zInstagramPostMetrics = z.object({\n platform: z.literal('instagram'),\n views: z.number().nullable(),\n reach: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n saved: z.number().nullable(),\n reposts: z.number().nullable(),\n total_interactions: z.number().nullable(),\n follows: z.number().nullable(),\n profile_visits: z.number().nullable(),\n profile_activity: z.number().nullable(),\n ig_reels_avg_watch_time: z.number().nullable(),\n ig_reels_video_view_total_time: z.number().nullable(),\n reels_skip_rate: z.number().nullable()\n});\n\n/**\n * One day of Instagram account reach.\n */\nexport const zInstagramAccountDay = z.object({\n date: z.string(),\n reach: z.number().nullable()\n});\n\n/**\n * An Instagram account’s current totals, its last 30 days and its daily reach, as reported by Meta under Meta’s own names. A metric Meta did not report is null.\n */\nexport const zInstagramAccountMetrics = z.object({\n platform: z.literal('instagram'),\n followers_count: z.number().nullable(),\n follows_count: z.number().nullable(),\n media_count: z.number().nullable(),\n last_30_days: z.object({\n views: z.number().nullable(),\n reach: z.number().nullable(),\n accounts_engaged: z.number().nullable(),\n total_interactions: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n saves: z.number().nullable(),\n reposts: z.number().nullable(),\n replies: z.number().nullable(),\n profile_links_taps: z.number().nullable(),\n follows_and_unfollows: z.record(z.string(), z.number()).nullable()\n }),\n daily: z.array(zInstagramAccountDay)\n});\n\n/**\n * Lifetime metrics for one Facebook Page post or Reel, as reported by Meta under Meta’s own names. Text, photo and album posts report different metrics from Reels: a field that does not apply is null, and its description says which reports it. Meta reports no reach for Reels. A metric Meta did not report is null.\n */\nexport const zFacebookPostMetrics = z.object({\n platform: z.literal('facebook_page'),\n post_media_view: z.number().nullable(),\n post_total_media_view_unique: z.number().nullable(),\n post_reactions_by_type_total: z.record(z.string(), z.number()).nullable(),\n post_clicks: z.number().nullable(),\n post_clicks_by_type: z.record(z.string(), z.number()).nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n blue_reels_play_count: z.number().nullable(),\n fb_reels_total_plays: z.number().nullable(),\n fb_reels_replay_count: z.number().nullable(),\n post_video_avg_time_watched: z.number().nullable(),\n post_video_view_time: z.number().nullable(),\n post_video_followers: z.number().nullable(),\n post_video_likes_by_reaction_type: z.record(z.string(), z.number()).nullable()\n});\n\n/**\n * One day of Facebook Page activity.\n */\nexport const zFacebookPageDay = z.object({\n date: z.string(),\n page_media_view: z.number().nullable(),\n page_total_media_view_unique: z.number().nullable(),\n page_follows: z.number().nullable(),\n page_daily_follows_unique: z.number().nullable(),\n page_daily_unfollows_unique: z.number().nullable(),\n page_post_engagements: z.number().nullable(),\n page_views_total: z.number().nullable(),\n page_video_views: z.number().nullable(),\n page_total_actions: z.number().nullable()\n});\n\n/**\n * A Facebook Page’s current followers plus its daily activity, as reported by Meta under Meta’s own names. Meta reports Page insights only for Pages with 100 or more likes, and they leave out Reels interactions. A metric Meta did not report is null.\n */\nexport const zFacebookPageMetrics = z.object({\n platform: z.literal('facebook_page'),\n followers_count: z.number().nullable(),\n daily: z.array(zFacebookPageDay)\n});\n\n/**\n * One variant’s metrics in its network’s own shape. Branch on `platform`.\n */\nexport const zPostMetrics = z.union([\n zTikTokPostMetrics,\n zInstagramPostMetrics,\n zFacebookPostMetrics\n]);\n\n/**\n * A connected account’s metrics in its network’s own shape. Branch on `platform`.\n */\nexport const zAccountMetrics = z.union([\n zTikTokAccountMetrics,\n zInstagramAccountMetrics,\n zFacebookPageMetrics\n]);\n\n/**\n * A connected account’s metrics, read live from the platform.\n */\nexport const zConnectionAnalytics = z.object({\n object: z.literal('connection_analytics'),\n connection_id: z.string(),\n fetched_at: z.iso.datetime({ offset: true }),\n metrics: zAccountMetrics\n});\n\n/**\n * An external account reachable through a connection’s OAuth grant, offered for selection.\n */\nexport const zDiscoverableAccount = z.object({\n external_account_id: z.string(),\n name: z.string().nullable(),\n currency: z.string().nullable(),\n username: z.string().nullish(),\n avatar_url: z.string().nullish(),\n profile_url: z.string().nullish(),\n instagram: z.object({\n external_account_id: z.string(),\n name: z.string().nullable(),\n username: z.string().nullish(),\n avatar_url: z.string().nullish(),\n profile_url: z.string().nullish()\n }).nullish()\n});\n\nexport const zConnectSession = z.object({\n hosted_connect_url: z.string(),\n connect_token: z.string(),\n connect_session_token: z.string(),\n provider_config_key: z.string(),\n nango_host: z.string(),\n expires_at: z.string()\n});\n\nexport const zMediaKind = z.enum([\n 'image',\n 'video',\n 'gif',\n 'document'\n]);\n\nexport const zMediaStatus = z.enum([\n 'uploading',\n 'processing',\n 'ready',\n 'failed'\n]);\n\nexport const zMediaStage = z.enum([\n 'queued',\n 'analyzing',\n 'transcoding',\n 'done'\n]);\n\nexport const zMedia = z.object({\n id: z.string(),\n object: z.literal('media'),\n profile_id: z.string(),\n kind: zMediaKind.nullable(),\n content_type: z.string().nullable(),\n status: zMediaStatus,\n progress: z.object({\n stage: zMediaStage,\n percent: z.int().gte(0).lte(100)\n }),\n raw: z.boolean(),\n error: z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }).nullable(),\n source: z.object({\n format: z.string(),\n bytes: z.int().gte(0).lte(9007199254740991),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n duration_ms: z.int().gte(0).lte(9007199254740991).nullable()\n }).nullable(),\n alt_text: z.string().max(1000).nullable(),\n per_platform: z.record(z.string(), z.object({\n status: z.enum([\n 'processing',\n 'ready',\n 'failed'\n ]),\n url: z.string().nullable(),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n bytes: z.int().gte(0).lte(9007199254740991).nullable(),\n warnings: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n })),\n errors: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }))\n })),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zPostPlatform = z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n]);\n\n/**\n * One variant’s metrics. Exactly one of `metrics` and `error` is set: `error` explains why there are no metrics (`analytics_not_supported` or `analytics_no_data`).\n */\nexport const zPostVariantAnalytics = z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: zPostPlatform,\n metrics: zPostMetrics.nullable(),\n error: z.object({\n code: z.enum(['analytics_not_supported', 'analytics_no_data']),\n message: z.string(),\n display_error: z.string()\n }).nullable()\n});\n\n/**\n * Metrics for each of a post’s variants, read live from each platform.\n */\nexport const zPostAnalytics = z.object({\n object: z.literal('post_analytics'),\n post_id: z.string(),\n fetched_at: z.iso.datetime({ offset: true }),\n variants: z.array(zPostVariantAnalytics)\n});\n\nexport const zPostType = z.enum([\n 'text',\n 'single_image',\n 'multi_image',\n 'video',\n 'reel',\n 'carousel'\n]);\n\nexport const zPostStatus = z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n]);\n\nexport const zPostVariantStatus = z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n]);\n\n/**\n * Whether the connection targets a posting social network (`posting`) or a legacy, no-longer-supported ads platform (`ads`). Computed from the platform.\n */\nexport const zConnectionKind = z.enum(['posting', 'ads']);\n\n/**\n * Lifecycle status: `pending` (no account chosen), `active` (account selected, grant healthy), or `needs_reauth` (the OAuth grant died — reconnect needed). Computed from reauth_at and external_account_id.\n */\nexport const zConnectionStatus = z.enum([\n 'pending',\n 'active',\n 'needs_reauth'\n]);\n\nexport const zConnection = z.object({\n id: z.string(),\n profile_id: z.string(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]),\n kind: zConnectionKind,\n status: zConnectionStatus,\n external_account_id: z.string().nullable(),\n external_account_name: z.string().nullable(),\n username: z.string().nullable(),\n avatar_url: z.string().nullable(),\n profile_url: z.string().nullable(),\n reauth_at: z.string().nullable(),\n currency: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\nexport const zTikTokPrivacyLevel = z.enum([\n 'PUBLIC_TO_EVERYONE',\n 'MUTUAL_FOLLOW_FRIENDS',\n 'FOLLOWER_OF_CREATOR',\n 'SELF_ONLY'\n]);\n\nexport const zPostVariant = z.union([\n z.object({\n platform: z.literal('x'),\n settings: z.object({\n reply_settings: z.enum([\n 'everyone',\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional(),\n quote_tweet_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n poll: z.object({\n options: z.array(z.string().min(1).max(25)).min(2).max(4),\n duration_minutes: z.int().gte(5).lte(10080),\n reply_settings: z.enum([\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional()\n }).optional(),\n reply: z.object({\n in_reply_to_tweet_id: z.string().regex(/^[0-9]{1,19}$/),\n exclude_reply_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).optional(),\n auto_populate_reply_metadata: z.boolean().optional()\n }).optional(),\n community_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n for_super_followers_only: z.boolean().optional(),\n geo: z.object({\n place_id: z.string()\n }).optional(),\n card_uri: z.string().optional(),\n media_tagged_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).max(10).optional(),\n thread_items: z.array(z.object({\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).max(4).optional()\n })).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n }),\n z.object({\n platform: z.literal('linkedin'),\n settings: z.object({\n visibility: z.enum(['PUBLIC', 'CONNECTIONS']),\n article: z.object({\n source: z.url(),\n title: z.string().max(400).optional(),\n description: z.string().max(4086).optional(),\n thumbnail_media_id: z.string().optional()\n }).optional(),\n poll: z.object({\n question: z.string().min(1).max(140),\n options: z.array(z.string().min(1).max(30)).min(2).max(4),\n duration: z.enum([\n 'ONE_DAY',\n 'THREE_DAYS',\n 'SEVEN_DAYS',\n 'FOURTEEN_DAYS'\n ])\n }).optional(),\n document: z.object({\n title: z.string().min(1).max(400)\n }).optional(),\n disable_reshare: z.boolean().optional(),\n mentions: z.array(z.object({\n type: z.enum(['person', 'organization']),\n name: z.string().min(1),\n urn: z.string().regex(/^urn:li:(person|organization):/)\n })).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n })),\n content_kind: z.enum([\n 'text',\n 'single_image',\n 'video',\n 'multi_image',\n 'document',\n 'article',\n 'poll'\n ]).nullable()\n }),\n z.object({\n platform: z.literal('facebook_page'),\n settings: z.object({\n link: z.url().optional(),\n first_comment: z.string().min(1).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n }),\n z.object({\n platform: z.literal('instagram'),\n settings: z.object({\n location_id: z.string().optional(),\n user_tags: z.array(z.object({\n username: z.string().min(1),\n x: z.number().gte(0).lte(1),\n y: z.number().gte(0).lte(1)\n })).optional(),\n collaborators: z.array(z.string().min(1)).max(3).optional(),\n share_to_feed: z.boolean().optional(),\n thumb_offset: z.int().gte(0).lte(9007199254740991).optional(),\n cover_url: z.url().optional(),\n audio_name: z.string().optional(),\n first_comment: z.string().min(1).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n })),\n media_type: z.enum([\n 'IMAGE',\n 'CAROUSEL',\n 'REELS'\n ]).nullable()\n }),\n z.object({\n platform: z.literal('tiktok'),\n settings: z.object({\n privacy_level: zTikTokPrivacyLevel.optional(),\n disable_comment: z.boolean().optional(),\n disable_duet: z.boolean().optional(),\n disable_stitch: z.boolean().optional(),\n thumbnail_offset: z.int().gte(0).lte(9007199254740991).optional(),\n photo_cover_index: z.int().gte(0).lte(9007199254740991).optional(),\n auto_add_music: z.boolean().optional(),\n is_branded_content: z.boolean().optional(),\n is_brand_organic: z.boolean().optional(),\n is_ai_generated: z.boolean().optional(),\n is_ads_only: z.boolean().optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n })\n]);\n\nexport const zPost = z.object({\n id: z.string(),\n object: z.literal('post'),\n profile_id: z.string(),\n external_id: z.string().nullable(),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n schedule_at: z.string().nullable(),\n tags: z.array(z.string()),\n notes: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n variants: z.array(zPostVariant),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zPostWriteResult = z.object({\n id: z.string(),\n object: z.literal('post'),\n profile_id: z.string(),\n external_id: z.string().nullable(),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n schedule_at: z.string().nullable(),\n tags: z.array(z.string()),\n notes: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n variants: z.array(zPostVariant),\n created_at: z.string(),\n updated_at: z.string(),\n dry_run: z.boolean(),\n executed: z.boolean()\n});\n\n/**\n * A TikTok account's publish options, fetched live from TikTok. privacy_options are the audiences available for photo posts (videos are always published publicly). The interaction flags say which of Comment/Duet/Stitch the account allows (true = ALLOWED); an unavailable interaction can only be disabled on a post. max_video_duration_sec caps a video's length for this account.\n */\nexport const zTikTokCreatorInfo = z.object({\n creator: z.object({\n nickname: z.string(),\n username: z.string(),\n avatar_url: z.string().nullable()\n }),\n privacy_options: z.array(zTikTokPrivacyLevel),\n interaction: z.object({\n comment: z.boolean(),\n duet: z.boolean(),\n stitch: z.boolean()\n }),\n max_video_duration_sec: z.int().gte(-9007199254740991).lte(9007199254740991)\n});\n\n/**\n * A single platform variant of a post: connection, platform, body, ordered media, and native typed settings. The post SHAPE (post_type, and LinkedIn content_kind / Instagram media_type) is DERIVED from the media — never sent.\n */\nexport const zPostVariantInput = z.union([\n z.object({\n platform: z.literal('x'),\n settings: z.object({\n reply_settings: z.enum([\n 'everyone',\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional(),\n quote_tweet_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n poll: z.object({\n options: z.array(z.string().min(1).max(25)).min(2).max(4),\n duration_minutes: z.int().gte(5).lte(10080),\n reply_settings: z.enum([\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional()\n }).optional(),\n reply: z.object({\n in_reply_to_tweet_id: z.string().regex(/^[0-9]{1,19}$/),\n exclude_reply_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).optional(),\n auto_populate_reply_metadata: z.boolean().optional()\n }).optional(),\n community_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n for_super_followers_only: z.boolean().optional(),\n geo: z.object({\n place_id: z.string()\n }).optional(),\n card_uri: z.string().optional(),\n media_tagged_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).max(10).optional(),\n thread_items: z.array(z.object({\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).max(4).optional()\n })).optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('linkedin'),\n settings: z.object({\n visibility: z.enum(['PUBLIC', 'CONNECTIONS']),\n article: z.object({\n source: z.url(),\n title: z.string().max(400).optional(),\n description: z.string().max(4086).optional(),\n thumbnail_media_id: z.string().optional()\n }).optional(),\n poll: z.object({\n question: z.string().min(1).max(140),\n options: z.array(z.string().min(1).max(30)).min(2).max(4),\n duration: z.enum([\n 'ONE_DAY',\n 'THREE_DAYS',\n 'SEVEN_DAYS',\n 'FOURTEEN_DAYS'\n ])\n }).optional(),\n document: z.object({\n title: z.string().min(1).max(400)\n }).optional(),\n disable_reshare: z.boolean().optional(),\n mentions: z.array(z.object({\n type: z.enum(['person', 'organization']),\n name: z.string().min(1),\n urn: z.string().regex(/^urn:li:(person|organization):/)\n })).optional()\n }),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('instagram'),\n settings: z.object({\n location_id: z.string().optional(),\n user_tags: z.array(z.object({\n username: z.string().min(1),\n x: z.number().gte(0).lte(1),\n y: z.number().gte(0).lte(1)\n })).optional(),\n collaborators: z.array(z.string().min(1)).max(3).optional(),\n share_to_feed: z.boolean().optional(),\n thumb_offset: z.int().gte(0).lte(9007199254740991).optional(),\n cover_url: z.url().optional(),\n audio_name: z.string().optional(),\n first_comment: z.string().min(1).optional()\n }),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('facebook_page'),\n settings: z.object({\n link: z.url().optional(),\n first_comment: z.string().min(1).optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('tiktok'),\n settings: z.object({\n privacy_level: zTikTokPrivacyLevel.optional(),\n disable_comment: z.boolean().optional(),\n disable_duet: z.boolean().optional(),\n disable_stitch: z.boolean().optional(),\n thumbnail_offset: z.int().gte(0).lte(9007199254740991).optional(),\n photo_cover_index: z.int().gte(0).lte(9007199254740991).optional(),\n auto_add_music: z.boolean().optional(),\n is_branded_content: z.boolean().optional(),\n is_brand_organic: z.boolean().optional(),\n is_ai_generated: z.boolean().optional(),\n is_ads_only: z.boolean().optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n })\n]);\n\nexport const zCreatePostBody = z.object({\n profile_id: z.string(),\n publish: z.enum([\n 'now',\n 'schedule',\n 'draft'\n ]).optional().default('draft'),\n schedule_at: z.iso.datetime({ offset: true }).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n tags: z.array(z.string()).optional(),\n notes: z.string().optional(),\n dry_run: z.boolean().optional().default(false),\n variants: z.array(zPostVariantInput).min(1)\n});\n\n/**\n * Optional. A unique key (1–255 chars; a UUID is ideal) that makes this write safe to retry: the first request executes and its outcome is stored; an identical retry replays that exact outcome instead of re-executing. A retry with the same key but a different body returns 422; a retry while the first is still in flight returns 409. See https://docs.postrun.ai/idempotency.\n */\nexport const zIdempotencyKey = z.string().min(1).max(255);\n\nexport const zProfilesListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\n/**\n * OK\n */\nexport const zProfilesListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zProfile),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zProfilesCreateBody = z.object({\n name: z.string().min(1).max(255),\n description: z.string().max(280).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zProfilesCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zProfilesCreateResponse = zProfile;\n\nexport const zProfilesDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('profile'),\n deleted: z.literal(true)\n});\n\nexport const zProfilesGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesGetResponse = zProfile;\n\nexport const zProfilesUpdateBody = z.object({\n name: z.string().min(1).max(255).optional(),\n description: z.string().max(280).nullish(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zProfilesUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesUpdateResponse = zProfile;\n\nexport const zConnectionsListByProfilePath = z.object({\n id: z.string()\n});\n\nexport const zConnectionsListByProfileQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n nango_connection_id: z.string().min(1).optional(),\n kind: zConnectionKind.optional(),\n status: zConnectionStatus.optional()\n});\n\n/**\n * OK\n */\nexport const zConnectionsListByProfileResponse = z.object({\n object: z.literal('list'),\n data: z.array(zConnection),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zConnectionsDeleteHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('connection'),\n deleted: z.literal(true)\n});\n\nexport const zConnectionsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsGetResponse = zConnection;\n\nexport const zConnectionsSelectBody = z.object({\n external_account_id: z.string().min(1)\n});\n\nexport const zConnectionsSelectHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsSelectPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsSelectResponse = zConnection;\n\nexport const zConnectionsListAccountsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsListAccountsResponse = z.object({\n object: z.literal('list'),\n data: z.array(zDiscoverableAccount)\n});\n\nexport const zConnectionsConnectBody = z.object({\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ])\n});\n\nexport const zConnectionsConnectHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsConnectPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsConnectResponse = zConnectSession;\n\nexport const zConnectionsGetAnalyticsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsGetAnalyticsResponse = zConnectionAnalytics;\n\nexport const zMediaListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n status: zMediaStatus.optional(),\n kind: zMediaKind.optional(),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\n/**\n * OK\n */\nexport const zMediaListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zMedia),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\n/**\n * Create a media asset — either via the signed direct upload target (omit source_url) or by importing from a public https source_url (we fetch + validate + transform + store). Size limits (same for direct upload and source_url): a video may be up to 4 GB; every other kind must be 1 GB or smaller. A file over its limit is rejected with `media_too_large`.\n */\nexport const zMediaCreateBody = z.object({\n profile_id: z.string(),\n source_url: z.url().optional(),\n targets: z.array(zPostPlatform).min(1).optional(),\n raw: z.boolean().optional().default(false),\n alt_text: z.string().max(1000).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zMediaCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zMediaCreateResponse = z.object({\n id: z.string(),\n object: z.literal('media'),\n profile_id: z.string(),\n kind: zMediaKind.nullable(),\n content_type: z.string().nullable(),\n status: zMediaStatus,\n progress: z.object({\n stage: zMediaStage,\n percent: z.int().gte(0).lte(100)\n }),\n raw: z.boolean(),\n error: z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }).nullable(),\n source: z.object({\n format: z.string(),\n bytes: z.int().gte(0).lte(9007199254740991),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n duration_ms: z.int().gte(0).lte(9007199254740991).nullable()\n }).nullable(),\n alt_text: z.string().max(1000).nullable(),\n per_platform: z.record(z.string(), z.object({\n status: z.enum([\n 'processing',\n 'ready',\n 'failed'\n ]),\n url: z.string().nullable(),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n bytes: z.int().gte(0).lte(9007199254740991).nullable(),\n warnings: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n })),\n errors: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }))\n })),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string(),\n updated_at: z.string(),\n upload: z.object({\n upload_id: z.string(),\n key: z.string(),\n part_size: z.int().gt(0).lte(9007199254740991),\n expires_at: z.string()\n }).nullable()\n});\n\nexport const zMediaDeleteHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zMediaDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('media'),\n deleted: z.literal(true)\n});\n\nexport const zMediaGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaGetResponse = zMedia;\n\nexport const zMediaUpdateBody = z.object({\n alt_text: z.string().max(1000).nullish(),\n external_id: z.string().min(1).max(255).nullish(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n targets: z.array(zPostPlatform).min(1).optional()\n});\n\nexport const zMediaUpdateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zMediaUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaUpdateResponse = zMedia;\n\nexport const zMediaSignPartBody = z.object({\n part_number: z.int().gte(1).lte(10000)\n});\n\nexport const zMediaSignPartPath = z.object({\n id: z.string()\n});\n\n/**\n * A presigned URL for one multipart part.\n */\nexport const zMediaSignPartResponse = z.object({\n url: z.url()\n});\n\nexport const zMediaListPartsPath = z.object({\n id: z.string()\n});\n\n/**\n * The parts R2 already holds for this upload (ascending). Skip re-uploading these to resume after a dropped connection.\n */\nexport const zMediaListPartsResponse = z.object({\n parts: z.array(z.object({\n part_number: z.int().gte(1).lte(9007199254740991),\n etag: z.string(),\n size: z.int().gte(0).lte(9007199254740991)\n }))\n});\n\nexport const zMediaCompleteBody = z.object({\n parts: z.array(z.object({\n part_number: z.int().gte(1).lte(10000),\n etag: z.string().min(1)\n })).min(1)\n});\n\nexport const zMediaCompletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaCompleteResponse = zMedia;\n\nexport const zMediaAbortPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaAbortResponse = zMedia;\n\nexport const zPostsListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n scheduled_after: z.iso.datetime({ offset: true }).optional(),\n scheduled_before: z.iso.datetime({ offset: true }).optional(),\n updated_after: z.iso.datetime({ offset: true }).optional(),\n status: z.array(zPostStatus).optional()\n});\n\n/**\n * OK\n */\nexport const zPostsListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zPost),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zPostsCreateBody = zCreatePostBody;\n\nexport const zPostsCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zPostsCreateResponse = zPostWriteResult;\n\nexport const zPostsDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('post'),\n deleted: z.literal(true)\n});\n\nexport const zPostsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsGetResponse = zPost;\n\nexport const zPostsUpdateBody = z.object({\n publish: z.enum([\n 'now',\n 'schedule',\n 'draft'\n ]).optional(),\n schedule_at: z.iso.datetime({ offset: true }).nullish(),\n external_id: z.string().min(1).max(255).nullish(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n tags: z.array(z.string()).optional(),\n notes: z.string().nullish(),\n dry_run: z.boolean().optional().default(false),\n variants: z.array(zPostVariantInput).min(1).optional()\n});\n\nexport const zPostsUpdateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zPostsUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsUpdateResponse = zPostWriteResult;\n\nexport const zPostsRetryBody = z.object({\n dry_run: z.boolean().optional().default(false)\n});\n\nexport const zPostsRetryHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zPostsRetryPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsRetryResponse = zPostWriteResult;\n\nexport const zPostsValidateBody = z.object({\n profile_id: z.string(),\n variants: z.array(zPostVariantInput).min(1)\n});\n\n/**\n * OK\n */\nexport const zPostsValidateResponse = z.object({\n object: z.literal('validation'),\n publishable: z.boolean(),\n issues: z.array(z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n source: zErrorSource.optional(),\n variant_index: z.int().gte(-9007199254740991).lte(9007199254740991),\n path: z.array(z.union([z.string(), z.number()])),\n platform: zPostPlatform.optional(),\n display_error: z.string()\n }))\n});\n\nexport const zPostsGetAnalyticsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsGetAnalyticsResponse = zPostAnalytics;\n\nexport const zTiktokCreatorInfoPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zTiktokCreatorInfoResponse = zTikTokCreatorInfo;\n\nexport const zLogsListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n connection_id: z.string().optional(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]).optional(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]).optional(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]).optional(),\n action: z.string().min(1).optional(),\n created_after: z.iso.datetime({ offset: true }).optional(),\n created_before: z.iso.datetime({ offset: true }).optional()\n});\n\n/**\n * OK\n */\nexport const zLogsListResponse = z.object({\n object: z.literal('list'),\n data: z.array(z.object({\n id: z.string(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]),\n action: z.string(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]),\n status_code: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]).nullable(),\n request_method: z.string().nullable(),\n request_path: z.string().nullable(),\n request_body: z.unknown().nullish(),\n response_body: z.unknown().nullish(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string()\n }).nullable(),\n outcome: z.object({\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n targets: z.array(z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n ]),\n platform_post_id: z.string().nullable(),\n permalink: z.string().nullable(),\n published_at: z.string().nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n warning: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).optional()\n }))\n }).nullable(),\n external_id: z.string().nullable(),\n idempotency_key: z.string().nullable(),\n request_id: z.string().nullable(),\n duration_ms: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n profile_id: z.string().nullable(),\n connection_id: z.string().nullable(),\n api_key_id: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n })),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zLogsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zLogsGetResponse = z.object({\n id: z.string(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]),\n action: z.string(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]),\n status_code: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]).nullable(),\n request_method: z.string().nullable(),\n request_path: z.string().nullable(),\n request_body: z.unknown().nullish(),\n response_body: z.unknown().nullish(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string()\n }).nullable(),\n outcome: z.object({\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n targets: z.array(z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok'\n ]),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n ]),\n platform_post_id: z.string().nullable(),\n permalink: z.string().nullable(),\n published_at: z.string().nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n warning: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).optional()\n }))\n }).nullable(),\n external_id: z.string().nullable(),\n idempotency_key: z.string().nullable(),\n request_id: z.string().nullable(),\n duration_ms: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n profile_id: z.string().nullable(),\n connection_id: z.string().nullable(),\n api_key_id: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\nexport const zWebhooksListEndpointsQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0)\n});\n\n/**\n * OK\n */\nexport const zWebhooksListEndpointsResponse = z.object({\n object: z.literal('list'),\n data: z.array(z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n })),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zWebhooksCreateEndpointBody = z.object({\n url: z.url(),\n description: z.string().max(255).optional(),\n event_types: z.array(z.enum([\n 'webhook.ping',\n 'post.published',\n 'post.failed',\n 'post.completed',\n 'connection.needs_reauth',\n 'connection.restored'\n ]))\n});\n\nexport const zWebhooksCreateEndpointHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zWebhooksCreateEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zWebhooksDeleteEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksDeleteEndpointResponse = z.object({\n id: z.string(),\n object: z.literal('webhook_endpoint'),\n deleted: z.literal(true)\n});\n\nexport const zWebhooksGetEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksGetEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zWebhooksUpdateEndpointBody = z.object({\n url: z.url().optional(),\n description: z.string().max(255).optional(),\n disabled: z.boolean().optional(),\n event_types: z.array(z.enum([\n 'webhook.ping',\n 'post.published',\n 'post.failed',\n 'post.completed',\n 'connection.needs_reauth',\n 'connection.restored'\n ])).optional()\n});\n\nexport const zWebhooksUpdateEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksUpdateEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksCreatePortalResponse = z.object({\n url: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksListEventTypesResponse = z.array(z.object({\n name: z.string(),\n group: z.string(),\n description: z.string()\n}));\n\nexport const zWebhooksPingBody = z.object({\n message: z.string().max(255).optional().default('Hello from Postrun')\n});\n\n/**\n * OK\n */\nexport const zWebhooksPingResponse = z.object({\n id: z.string()\n});\n\n/**\n * Mint a short-lived, profile-scoped frontend token. Called by your backend with a secret `pr_` key; the returned token is safe to hand to a browser.\n */\nexport const zTokensMintBody = z.object({\n profile_scope: z.union([\n z.object({\n type: z.literal('profile_ids'),\n values: z.array(z.string()).min(1).max(100)\n }),\n z.object({\n type: z.literal('external_id'),\n values: z.array(z.string().min(1).max(255)).min(1).max(50)\n }),\n z.object({\n type: z.literal('all')\n })\n ]),\n scopes: z.array(z.enum([\n 'profiles:read',\n 'profiles:write',\n 'profiles:delete',\n 'connections:read',\n 'connections:write',\n 'connections:delete',\n 'posts:read',\n 'posts:write',\n 'posts:delete',\n 'media:read',\n 'media:write',\n 'media:delete'\n ])).min(1),\n ttl_seconds: z.int().gte(60).lte(1800).optional().default(900)\n});\n\n/**\n * OK\n */\nexport const zTokensMintResponse = z.object({\n token: z.string(),\n expires_at: z.string()\n});\n","import * as z from 'zod';\n\nimport { zErrorCode } from './client/zod.gen';\nimport type { ErrorCode } from './client/types.gen';\n\n/**\n * The closed set of machine-readable Postrun error codes — DERIVED from the\n * generated `ErrorCode` component union (emitted from the API's `ErrorCodeSchema`\n * via the OpenAPI spec), never hand-listed. Branch on `PostrunError.code` and the\n * compiler narrows + autocompletes the exact set the API can return. Each member\n * documents itself at https://docs.postrun.ai/errors/<code>.\n */\nexport type PostrunErrorCode = ErrorCode;\n\n/**\n * The RFC 9457 problem body the Postrun API returns on every transport error —\n * its `encodeProblem` emits `{ type, title, status, code, detail, request_id?,\n * errors? }`, with the human message in `detail`.\n *\n * Modeled here with a tolerant Zod schema rather than DERIVED from the generated\n * types ON PURPOSE: the OpenAPI spec narrows `code` per-endpoint+status, so there\n * is no single generated \"problem body\" type to derive from — we parse the real\n * body here and surface the closed `code` union via `PostrunErrorCode`.\n */\nconst ProblemSchema = z.object({\n type: z.string().optional(),\n title: z.string().optional(),\n status: z.number().optional(),\n code: z.string().optional(),\n detail: z.string().optional(),\n // RFC 9457 calls the occurrence id `instance`; our bodies emit it as\n // `request_id`. Tolerate both, preferring `request_id`.\n request_id: z.string().optional(),\n instance: z.string().optional(),\n errors: z\n .array(z.object({ field: z.string(), code: z.string(), detail: z.string() }))\n .optional(),\n});\n\nexport type PostrunProblem = z.infer<typeof ProblemSchema>;\n\n/** One invalid field on a validation (422) failure. */\nexport type PostrunFieldError = NonNullable<PostrunProblem['errors']>[number];\n\n/** A typed error thrown by the client on a failed request. */\nexport class PostrunError extends Error {\n readonly status: number;\n /** The machine-readable code to branch on (closed union), if the body had one. */\n readonly code?: PostrunErrorCode;\n /** The request id for support/debugging (our `request_id`, or RFC `instance`). */\n readonly request_id?: string;\n /** Per-field validation problems on a 422, surfaced for convenience. */\n readonly fieldErrors: PostrunFieldError[];\n readonly problem?: PostrunProblem;\n\n constructor(status: number, rawProblem?: unknown) {\n const problem = ProblemSchema.safeParse(rawProblem).data;\n super(problem?.detail ?? problem?.title ?? `Postrun API error (${status})`);\n this.name = 'PostrunError';\n this.status = status;\n // Re-validate the body's `code` against the generated closed set so the field\n // is the typed union, not a bare string — an unknown code stays `undefined`\n // (no swallowed surprise) rather than being cast in.\n this.code = zErrorCode.safeParse(problem?.code).data;\n this.request_id = problem?.request_id ?? problem?.instance;\n this.fieldErrors = problem?.errors ?? [];\n this.problem = problem;\n }\n}\n","/**\n * In-memory token cache for the Postrun client. The host app's `getToken`\n * becomes a trivial \"mint a token from my backend\"; this cache holds the result\n * and reuses it for every request. There is no expiry math, JWT decoding, or\n * timer — a stale token is detected reactively when a request returns `401`,\n * which calls `refresh()`. Concurrent fetches share one in-flight promise, so N\n * parallel requests (first load, or N concurrent 401s) mint exactly one token.\n */\n\nexport interface TokenCache {\n /** The cached token, minting one on first use. */\n current(): Promise<string>;\n /** Discard the cached token and mint a new one (use after a 401). */\n refresh(): Promise<string>;\n}\n\nexport function createTokenCache(\n getToken: () => string | Promise<string>,\n): TokenCache {\n let cached: string | undefined;\n let inFlight: Promise<string> | undefined;\n\n const mint = (): Promise<string> => {\n if (!inFlight) {\n inFlight = Promise.resolve()\n .then(getToken)\n .then((token) => {\n cached = token;\n return token;\n })\n .finally(() => {\n inFlight = undefined;\n });\n }\n return inFlight;\n };\n\n return {\n current() {\n return cached !== undefined ? Promise.resolve(cached) : mint();\n },\n refresh() {\n cached = undefined;\n return mint();\n },\n };\n}\n","import { createClient, createConfig } from './client/client';\nimport type { Client } from './client/client';\nimport { PostrunError } from './errors';\nimport { createTokenCache } from './token-cache';\nimport type { TokenCache } from './token-cache';\n\n/**\n * The strongly-typed Postrun API client (Hey API). Pass it to any generated SDK\n * function via `{ client }`; every path, param, body, and response is inferred\n * from the OpenAPI spec, so the SDK can never drift from the live API.\n */\nexport type PostrunClient = Client;\n\nexport interface PostrunClientOptions {\n /** Override the API base URL (defaults to the production gateway). */\n baseUrl?: string;\n /**\n * Returns a short-lived scoped token. The host app's backend mints it from a\n * secret `pr_` key (`POST /v1/tokens`); the secret never reaches the browser.\n * The client caches the result and only re-fetches reactively on a `401`, so\n * this can be a trivial \"fetch a token from my backend\" — it is NOT called\n * per request.\n */\n getToken: () => string | Promise<string>;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.postrun.ai/v1';\n\n/** The one status a fresh token can fix; 403/404 are scope/tenancy, not auth. */\nconst UNAUTHORIZED = 401;\n\n/**\n * Wrap `fetch` so a single `401` triggers one token refresh + retry. The request\n * is cloned BEFORE the first send so its body survives the retry; on retry only\n * `Authorization` is overridden — every other header (idempotency key,\n * content-type, …) is preserved. A refresh failure surfaces the original `401`.\n * Bounded to one retry (no recursion), so a genuinely bad credential just\n * returns the second `401` for the error interceptor to surface.\n */\nfunction createRetryingFetch(tokenCache: TokenCache): typeof fetch {\n const realFetch: typeof fetch = (...args) => globalThis.fetch(...args);\n\n return async (input, init) => {\n const request = new Request(input, init);\n const retryable = request.clone();\n\n const response = await realFetch(request);\n if (response.status !== UNAUTHORIZED) {\n return response;\n }\n\n try {\n const token = await tokenCache.refresh();\n const headers = new Headers(retryable.headers);\n headers.set('Authorization', `Bearer ${token}`);\n return await realFetch(new Request(retryable, { headers }));\n } catch {\n return response;\n }\n };\n}\n\n/** Append `key=value` (URL-encoded) for one scalar to the running parts list. */\nfunction appendScalar(parts: string[], key: string, value: unknown): void {\n parts.push(\n `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`,\n );\n}\n\n/**\n * Serialize the query string for every Postrun request, by value shape:\n *\n * - **Array** (e.g. `status`) → repeated params (`status=a&status=b`), the\n * OpenAPI `form`/`explode` form the API parses into a `.in(...)` filter. A\n * JSON-encoded array would fail the array-of-enum validation.\n * - **Object** (e.g. `metadata`) → one URL-encoded JSON blob, because the API's\n * schema runs a `JSON.parse` preprocess on it; bracket form would mean the\n * server never sees a `metadata` key and silently drops the filter.\n * - **Scalar** → the value as-is.\n *\n * Operations needing a different shape (the ads reads' `metrics`/`segments`\n * params) carry their own per-call serializer in the generated SDK, which\n * overrides this.\n */\nfunction serializeQuery(query: Record<string, unknown>): string {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item !== undefined && item !== null) {\n appendScalar(parts, key, item);\n }\n }\n } else if (typeof value === 'object') {\n appendScalar(parts, key, JSON.stringify(value));\n } else {\n appendScalar(parts, key, value);\n }\n }\n\n return parts.join('&');\n}\n\n/**\n * Construct a typed client. The browser only ever holds the scoped token —\n * the cached token is sent as `Bearer <token>` for the spec's `bearerAuth`\n * security scheme, re-fetched only when a request returns `401`.\n *\n * Calls throw on failure (`throwOnError`), so SDK functions return the value\n * directly (no `{ data, error }` to unwrap) — the throw-based shape every major\n * SDK uses. The error interceptor maps the raw failure to a typed `PostrunError`\n * (status + machine `code` + RFC 9457 problem), so `catch` always gets the same\n * actionable shape.\n */\nexport function createPostrunClient(\n options: PostrunClientOptions,\n): PostrunClient {\n const tokenCache = createTokenCache(options.getToken);\n\n const client = createClient(\n createConfig({\n baseUrl: options.baseUrl ?? DEFAULT_BASE_URL,\n auth: () => tokenCache.current(),\n fetch: createRetryingFetch(tokenCache),\n querySerializer: serializeQuery,\n throwOnError: true,\n }),\n );\n\n client.interceptors.error.use((error, response) =>\n error instanceof PostrunError\n ? error\n : new PostrunError(response?.status ?? 0, error),\n );\n\n return client;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, 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: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://api.postrun.ai/v1', throwOnError: true }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { ConnectionsConnectData, ConnectionsConnectErrors, ConnectionsConnectResponses, ConnectionsDeleteData, ConnectionsDeleteErrors, ConnectionsDeleteResponses, ConnectionsGetAnalyticsData, ConnectionsGetAnalyticsErrors, ConnectionsGetAnalyticsResponses, ConnectionsGetData, ConnectionsGetErrors, ConnectionsGetResponses, ConnectionsListAccountsData, ConnectionsListAccountsErrors, ConnectionsListAccountsResponses, ConnectionsListByProfileData, ConnectionsListByProfileErrors, ConnectionsListByProfileResponses, ConnectionsSelectData, ConnectionsSelectErrors, ConnectionsSelectResponses, LogsGetData, LogsGetErrors, LogsGetResponses, LogsListData, LogsListErrors, LogsListResponses, MediaAbortData, MediaAbortErrors, MediaAbortResponses, MediaCompleteData, MediaCompleteErrors, MediaCompleteResponses, MediaCreateData, MediaCreateErrors, MediaCreateResponses, MediaDeleteData, MediaDeleteErrors, MediaDeleteResponses, MediaGetData, MediaGetErrors, MediaGetResponses, MediaListData, MediaListErrors, MediaListPartsData, MediaListPartsErrors, MediaListPartsResponses, MediaListResponses, MediaSignPartData, MediaSignPartErrors, MediaSignPartResponses, MediaUpdateData, MediaUpdateErrors, MediaUpdateResponses, PostsCreateData, PostsCreateErrors, PostsCreateResponses, PostsDeleteData, PostsDeleteErrors, PostsDeleteResponses, PostsGetAnalyticsData, PostsGetAnalyticsErrors, PostsGetAnalyticsResponses, PostsGetData, PostsGetErrors, PostsGetResponses, PostsListData, PostsListErrors, PostsListResponses, PostsRetryData, PostsRetryErrors, PostsRetryResponses, PostsUpdateData, PostsUpdateErrors, PostsUpdateResponses, PostsValidateData, PostsValidateErrors, PostsValidateResponses, ProfilesCreateData, ProfilesCreateErrors, ProfilesCreateResponses, ProfilesDeleteData, ProfilesDeleteErrors, ProfilesDeleteResponses, ProfilesGetData, ProfilesGetErrors, ProfilesGetResponses, ProfilesListData, ProfilesListErrors, ProfilesListResponses, ProfilesUpdateData, ProfilesUpdateErrors, ProfilesUpdateResponses, TiktokCreatorInfoData, TiktokCreatorInfoErrors, TiktokCreatorInfoResponses, TokensMintData, TokensMintErrors, TokensMintResponses, WebhooksCreateEndpointData, WebhooksCreateEndpointErrors, WebhooksCreateEndpointResponses, WebhooksCreatePortalData, WebhooksCreatePortalErrors, WebhooksCreatePortalResponses, WebhooksDeleteEndpointData, WebhooksDeleteEndpointErrors, WebhooksDeleteEndpointResponses, WebhooksGetEndpointData, WebhooksGetEndpointErrors, WebhooksGetEndpointResponses, WebhooksListEndpointsData, WebhooksListEndpointsErrors, WebhooksListEndpointsResponses, WebhooksListEventTypesData, WebhooksListEventTypesErrors, WebhooksListEventTypesResponses, WebhooksPingData, WebhooksPingErrors, WebhooksPingResponses, WebhooksUpdateEndpointData, WebhooksUpdateEndpointErrors, WebhooksUpdateEndpointResponses } 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?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\n/**\n * List profiles\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the profiles under your account, newest first.\n */\nexport const profilesList = <ThrowOnError extends boolean = true>(options?: Options<ProfilesListData, ThrowOnError>): RequestResult<ProfilesListResponses, ProfilesListErrors, ThrowOnError> => (options?.client ?? client).get<ProfilesListResponses, ProfilesListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles',\n ...options\n});\n\n/**\n * Create a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:write` with account-wide profile scope (`all`); a profile-scoped token cannot create.\n *\n * Creates a profile — a client/brand workspace under your account, and the unit connections attach to.\n */\nexport const profilesCreate = <ThrowOnError extends boolean = true>(options: Options<ProfilesCreateData, ThrowOnError>): RequestResult<ProfilesCreateResponses, ProfilesCreateErrors, ThrowOnError> => (options.client ?? client).post<ProfilesCreateResponses, ProfilesCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:delete` scoped to the target profile.\n *\n * Deletes a profile. The profile must have no connections — delete its connections first (and a connection in turn cannot be deleted while a post still publishes through it).\n */\nexport const profilesDelete = <ThrowOnError extends boolean = true>(options: Options<ProfilesDeleteData, ThrowOnError>): RequestResult<ProfilesDeleteResponses, ProfilesDeleteErrors, ThrowOnError> => (options.client ?? client).delete<ProfilesDeleteResponses, ProfilesDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options\n});\n\n/**\n * Retrieve a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:read` scoped to the target profile.\n *\n * Retrieves a single profile by id.\n */\nexport const profilesGet = <ThrowOnError extends boolean = true>(options: Options<ProfilesGetData, ThrowOnError>): RequestResult<ProfilesGetResponses, ProfilesGetErrors, ThrowOnError> => (options.client ?? client).get<ProfilesGetResponses, ProfilesGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options\n});\n\n/**\n * Update a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:write` scoped to the target profile.\n *\n * Updates a profile. Send only the fields you want to change; provide at least one.\n */\nexport const profilesUpdate = <ThrowOnError extends boolean = true>(options: Options<ProfilesUpdateData, ThrowOnError>): RequestResult<ProfilesUpdateResponses, ProfilesUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProfilesUpdateResponses, ProfilesUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List a profile's connections\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the target profile.\n *\n * Lists the external accounts connected to a profile, most recent first. Returns 404 if the profile doesn't exist in your account.\n */\nexport const connectionsListByProfile = <ThrowOnError extends boolean = true>(options: Options<ConnectionsListByProfileData, ThrowOnError>): RequestResult<ConnectionsListByProfileResponses, ConnectionsListByProfileErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsListByProfileResponses, ConnectionsListByProfileErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}/connections',\n ...options\n});\n\n/**\n * Delete a connection\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:delete` scoped to the profile that owns the connection.\n *\n * Disconnects a connection. Returns a deletion marker; returns 404 if it does not exist in your account. Disconnect is unconditional — any scheduled posts that target this connection are not blocked; they fail gracefully at publish time with a `connection_removed` error until you reconnect and reschedule.\n */\nexport const connectionsDelete = <ThrowOnError extends boolean = true>(options: Options<ConnectionsDeleteData, ThrowOnError>): RequestResult<ConnectionsDeleteResponses, ConnectionsDeleteErrors, ThrowOnError> => (options.client ?? client).delete<ConnectionsDeleteResponses, ConnectionsDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options\n});\n\n/**\n * Retrieve a connection\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Retrieves a single connection by id.\n */\nexport const connectionsGet = <ThrowOnError extends boolean = true>(options: Options<ConnectionsGetData, ThrowOnError>): RequestResult<ConnectionsGetResponses, ConnectionsGetErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsGetResponses, ConnectionsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options\n});\n\n/**\n * Select a connection account\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:write` scoped to the profile that owns the connection.\n *\n * Activates a pending connection by choosing which external account (e.g. which Facebook Page) it uses. The account must be one reachable through the connection’s OAuth grant; its canonical name + currency are resolved server-side from discovery, so the stored display values can’t be spoofed by the caller.\n */\nexport const connectionsSelect = <ThrowOnError extends boolean = true>(options: Options<ConnectionsSelectData, ThrowOnError>): RequestResult<ConnectionsSelectResponses, ConnectionsSelectErrors, ThrowOnError> => (options.client ?? client).patch<ConnectionsSelectResponses, ConnectionsSelectErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List a connection’s discoverable accounts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Lists the external accounts reachable through this connection’s OAuth grant — the picker shown after OAuth, while the connection is still pending account selection. Returns 404 if the connection does not exist in your account, and 501 if account discovery is not yet supported for the connection’s platform.\n */\nexport const connectionsListAccounts = <ThrowOnError extends boolean = true>(options: Options<ConnectionsListAccountsData, ThrowOnError>): RequestResult<ConnectionsListAccountsResponses, ConnectionsListAccountsErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsListAccountsResponses, ConnectionsListAccountsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/accounts',\n ...options\n});\n\n/**\n * Connect a platform account\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:write` scoped to the target profile.\n *\n * Starts an OAuth connect flow for a platform on this profile. Returns a short-lived session the client uses to authorize; the connection is created once authorization succeeds.\n */\nexport const connectionsConnect = <ThrowOnError extends boolean = true>(options: Options<ConnectionsConnectData, ThrowOnError>): RequestResult<ConnectionsConnectResponses, ConnectionsConnectErrors, ThrowOnError> => (options.client ?? client).post<ConnectionsConnectResponses, ConnectionsConnectErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}/connect',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve account analytics\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Reads a connected account’s totals and its daily activity live from the platform: the last 60 days for TikTok, 30 for Instagram and 90 for Facebook Pages. TikTok, Instagram and Facebook Page connections are supported. TikTok finalizes a day 24–48 hours after it ends, and Meta updates Page insights about once a day. Returns 404 if the connection does not exist in your account, 501 if its platform has no analytics yet, 409 if the account must be reconnected, and 502 if the platform’s call fails.\n */\nexport const connectionsGetAnalytics = <ThrowOnError extends boolean = true>(options: Options<ConnectionsGetAnalyticsData, ThrowOnError>): RequestResult<ConnectionsGetAnalyticsResponses, ConnectionsGetAnalyticsErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsGetAnalyticsResponses, ConnectionsGetAnalyticsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/analytics',\n ...options\n});\n\n/**\n * List media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the media assets under your account, newest first. Filter by profile, status, kind, your own external_id, or metadata.\n */\nexport const mediaList = <ThrowOnError extends boolean = true>(options?: Options<MediaListData, ThrowOnError>): RequestResult<MediaListResponses, MediaListErrors, ThrowOnError> => (options?.client ?? client).get<MediaListResponses, MediaListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media',\n ...options\n});\n\n/**\n * Upload media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the target profile.\n *\n * Creates a media asset. Two ways to supply the bytes: (1) omit `source_url` and upload the bytes with the returned multipart `upload` session — chunk the file at `part_size`, sign each part via `POST /media/{id}/multipart/sign`, PUT the bytes, then `POST /media/{id}/multipart/complete` (the direct-upload path; `upload` is non-null and resumable), or (2) supply a public `https` `source_url` and we fetch the bytes server-side, validate, transform, and store them (the import path; `upload` is null). Either way the asset settles through the same probe/transform flow.\n */\nexport const mediaCreate = <ThrowOnError extends boolean = true>(options: Options<MediaCreateData, ThrowOnError>): RequestResult<MediaCreateResponses, MediaCreateErrors, ThrowOnError> => (options.client ?? client).post<MediaCreateResponses, MediaCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:delete` scoped to the profile that owns the media asset.\n *\n * Deletes a media asset and its stored renditions.\n */\nexport const mediaDelete = <ThrowOnError extends boolean = true>(options: Options<MediaDeleteData, ThrowOnError>): RequestResult<MediaDeleteResponses, MediaDeleteErrors, ThrowOnError> => (options.client ?? client).delete<MediaDeleteResponses, MediaDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options\n});\n\n/**\n * Retrieve media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:read` scoped to the profile that owns the media asset.\n *\n * Retrieves a media asset, including its per-platform processing status and renditions.\n */\nexport const mediaGet = <ThrowOnError extends boolean = true>(options: Options<MediaGetData, ThrowOnError>): RequestResult<MediaGetResponses, MediaGetErrors, ThrowOnError> => (options.client ?? client).get<MediaGetResponses, MediaGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options\n});\n\n/**\n * Update media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Updates a media asset (alt text, metadata, external_id) or adds `targets` to pre-warm more platforms. Send only the fields to change.\n */\nexport const mediaUpdate = <ThrowOnError extends boolean = true>(options: Options<MediaUpdateData, ThrowOnError>): RequestResult<MediaUpdateResponses, MediaUpdateErrors, ThrowOnError> => (options.client ?? client).patch<MediaUpdateResponses, MediaUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sign an upload part\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Returns a presigned URL to PUT one part of a multipart upload. Chunk the file at the session’s `part_size` and sign each 1-indexed part; read each part PUT’s `ETag` for `complete`.\n */\nexport const mediaSignPart = <ThrowOnError extends boolean = true>(options: Options<MediaSignPartData, ThrowOnError>): RequestResult<MediaSignPartResponses, MediaSignPartErrors, ThrowOnError> => (options.client ?? client).post<MediaSignPartResponses, MediaSignPartErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/sign',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List uploaded parts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Lists the parts already uploaded for this asset’s multipart upload (ascending). Skip re-uploading these to resume after a dropped connection.\n */\nexport const mediaListParts = <ThrowOnError extends boolean = true>(options: Options<MediaListPartsData, ThrowOnError>): RequestResult<MediaListPartsResponses, MediaListPartsErrors, ThrowOnError> => (options.client ?? client).get<MediaListPartsResponses, MediaListPartsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/parts',\n ...options\n});\n\n/**\n * Complete an upload\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Finishes a multipart upload by assembling the uploaded parts. Send every part as `{ part_number, etag }`. Idempotent: completing an already-finished upload returns the asset.\n */\nexport const mediaComplete = <ThrowOnError extends boolean = true>(options: Options<MediaCompleteData, ThrowOnError>): RequestResult<MediaCompleteResponses, MediaCompleteErrors, ThrowOnError> => (options.client ?? client).post<MediaCompleteResponses, MediaCompleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Abort an upload\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Aborts an in-flight multipart upload and discards its parts. Idempotent: aborting an already-finished or unknown upload still returns the asset.\n */\nexport const mediaAbort = <ThrowOnError extends boolean = true>(options: Options<MediaAbortData, ThrowOnError>): RequestResult<MediaAbortResponses, MediaAbortErrors, ThrowOnError> => (options.client ?? client).post<MediaAbortResponses, MediaAbortErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/abort',\n ...options\n});\n\n/**\n * List posts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the posts under your account, newest first. Filter by profile or your own external_id.\n */\nexport const postsList = <ThrowOnError extends boolean = true>(options?: Options<PostsListData, ThrowOnError>): RequestResult<PostsListResponses, PostsListErrors, ThrowOnError> => (options?.client ?? client).get<PostsListResponses, PostsListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts',\n ...options\n});\n\n/**\n * Create a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the target profile.\n *\n * Composes a post + its per-channel variants. `publish` decides the outcome: `now` publishes immediately, `schedule` publishes at `schedule_at`, `draft` just stores it.\n */\nexport const postsCreate = <ThrowOnError extends boolean = true>(options: Options<PostsCreateData, ThrowOnError>): RequestResult<PostsCreateResponses, PostsCreateErrors, ThrowOnError> => (options.client ?? client).post<PostsCreateResponses, PostsCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:delete` scoped to the profile that owns the post.\n *\n * Deletes a post and its variants. Returns a deletion marker; 404 if it does not exist in your account. Already-published posts are not retracted from the platform.\n */\nexport const postsDelete = <ThrowOnError extends boolean = true>(options: Options<PostsDeleteData, ThrowOnError>): RequestResult<PostsDeleteResponses, PostsDeleteErrors, ThrowOnError> => (options.client ?? client).delete<PostsDeleteResponses, PostsDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options\n});\n\n/**\n * Retrieve a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the profile that owns the post.\n *\n * Retrieves a single post by id, including its per-channel variants and their derived status.\n */\nexport const postsGet = <ThrowOnError extends boolean = true>(options: Options<PostsGetData, ThrowOnError>): RequestResult<PostsGetResponses, PostsGetErrors, ThrowOnError> => (options.client ?? client).get<PostsGetResponses, PostsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options\n});\n\n/**\n * Update a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the profile that owns the post.\n *\n * Edits a post and/or transitions its publish state (`draft` / `schedule` / `now`). Valid only while the post is draft or scheduled. Send only the fields to change; providing `variants` replaces the whole set.\n */\nexport const postsUpdate = <ThrowOnError extends boolean = true>(options: Options<PostsUpdateData, ThrowOnError>): RequestResult<PostsUpdateResponses, PostsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<PostsUpdateResponses, PostsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retry a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the profile that owns the post.\n *\n * Re-publishes the post’s failed variants now, through the same path as `publish: \"now\"`. Published variants are never touched, and a failure that may already be live on the platform (e.g. `x_publish_failed`) is never re-sent, so a retry can’t post twice. Failed attempts are never billed.\n */\nexport const postsRetry = <ThrowOnError extends boolean = true>(options: Options<PostsRetryData, ThrowOnError>): RequestResult<PostsRetryResponses, PostsRetryErrors, ThrowOnError> => (options.client ?? client).post<PostsRetryResponses, PostsRetryErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}/retry',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Validate a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the target profile.\n *\n * Runs the exact ownership + publish-readiness checks the create path runs under dry_run, with no side effects. Returns a per-issue verdict (`publishable` + `issues[]`) on 200; a reference to a connection/media outside the profile is a typed 422.\n */\nexport const postsValidate = <ThrowOnError extends boolean = true>(options: Options<PostsValidateData, ThrowOnError>): RequestResult<PostsValidateResponses, PostsValidateErrors, ThrowOnError> => (options.client ?? client).post<PostsValidateResponses, PostsValidateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve post analytics\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the profile that owns the post.\n *\n * Reads each variant’s metrics live from its platform. TikTok, Instagram and Facebook Page variants return metrics; X and LinkedIn variants return `analytics_not_supported`. A variant with nothing to read (not published, connection removed, not public, deleted, or not yet reported by the platform) returns `analytics_no_data`. TikTok updates metrics 24–48 hours after the activity, and Meta can take up to 48 hours to report a new post. Returns 404 if the post does not exist in your account, 409 if an account must be reconnected, and 502 if the platform’s call fails.\n */\nexport const postsGetAnalytics = <ThrowOnError extends boolean = true>(options: Options<PostsGetAnalyticsData, ThrowOnError>): RequestResult<PostsGetAnalyticsResponses, PostsGetAnalyticsErrors, ThrowOnError> => (options.client ?? client).get<PostsGetAnalyticsResponses, PostsGetAnalyticsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}/analytics',\n ...options\n});\n\n/**\n * Retrieve TikTok creator info\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Retrieves a TikTok account’s publish options live from TikTok: the creator nickname + avatar, the audiences (`privacy_options`) available for photo posts, the Comment/Duet/Stitch availability, and the maximum video length. Returns 404 if the connection does not exist in your account or is not a TikTok connection, 409 if the TikTok account must be reconnected, and 502 if TikTok’s call fails.\n */\nexport const tiktokCreatorInfo = <ThrowOnError extends boolean = true>(options: Options<TiktokCreatorInfoData, ThrowOnError>): RequestResult<TiktokCreatorInfoResponses, TiktokCreatorInfoErrors, ThrowOnError> => (options.client ?? client).get<TiktokCreatorInfoResponses, TiktokCreatorInfoErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/tiktok/creator-info',\n ...options\n});\n\n/**\n * List request logs\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the API activity for your account — one entry per action, newest first. Filter by profile, connection, platform, status, source, action, or time range.\n */\nexport const logsList = <ThrowOnError extends boolean = true>(options?: Options<LogsListData, ThrowOnError>): RequestResult<LogsListResponses, LogsListErrors, ThrowOnError> => (options?.client ?? client).get<LogsListResponses, LogsListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/logs',\n ...options\n});\n\n/**\n * Retrieve a request log\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Retrieves a single request log entry by id.\n */\nexport const logsGet = <ThrowOnError extends boolean = true>(options: Options<LogsGetData, ThrowOnError>): RequestResult<LogsGetResponses, LogsGetErrors, ThrowOnError> => (options.client ?? client).get<LogsGetResponses, LogsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/logs/{id}',\n ...options\n});\n\n/**\n * List webhook endpoints\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the webhook endpoints registered for your account.\n */\nexport const webhooksListEndpoints = <ThrowOnError extends boolean = true>(options?: Options<WebhooksListEndpointsData, ThrowOnError>): RequestResult<WebhooksListEndpointsResponses, WebhooksListEndpointsErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListEndpointsResponses, WebhooksListEndpointsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints',\n ...options\n});\n\n/**\n * Create a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Registers a URL to receive the chosen event types. Delivery, retries, and signing are handled for you.\n */\nexport const webhooksCreateEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksCreateEndpointData, ThrowOnError>): RequestResult<WebhooksCreateEndpointResponses, WebhooksCreateEndpointErrors, ThrowOnError> => (options.client ?? client).post<WebhooksCreateEndpointResponses, WebhooksCreateEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Deletes a webhook endpoint. Delivery to it stops immediately.\n */\nexport const webhooksDeleteEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksDeleteEndpointData, ThrowOnError>): RequestResult<WebhooksDeleteEndpointResponses, WebhooksDeleteEndpointErrors, ThrowOnError> => (options.client ?? client).delete<WebhooksDeleteEndpointResponses, WebhooksDeleteEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options\n});\n\n/**\n * Retrieve a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Retrieves a single webhook endpoint by id.\n */\nexport const webhooksGetEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksGetEndpointData, ThrowOnError>): RequestResult<WebhooksGetEndpointResponses, WebhooksGetEndpointErrors, ThrowOnError> => (options.client ?? client).get<WebhooksGetEndpointResponses, WebhooksGetEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options\n});\n\n/**\n * Update a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Updates a webhook endpoint. Send only the fields you want to change; provide at least one.\n */\nexport const webhooksUpdateEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksUpdateEndpointData, ThrowOnError>): RequestResult<WebhooksUpdateEndpointResponses, WebhooksUpdateEndpointErrors, ThrowOnError> => (options.client ?? client).patch<WebhooksUpdateEndpointResponses, WebhooksUpdateEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create a webhook portal link\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Mints a one-time App Portal URL where you (or your customer) self-serve webhook delivery logs and signing secrets.\n */\nexport const webhooksCreatePortal = <ThrowOnError extends boolean = true>(options?: Options<WebhooksCreatePortalData, ThrowOnError>): RequestResult<WebhooksCreatePortalResponses, WebhooksCreatePortalErrors, ThrowOnError> => (options?.client ?? client).post<WebhooksCreatePortalResponses, WebhooksCreatePortalErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/portal',\n ...options\n});\n\n/**\n * List webhook event types\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the event types you can subscribe an endpoint to (the catalog).\n */\nexport const webhooksListEventTypes = <ThrowOnError extends boolean = true>(options?: Options<WebhooksListEventTypesData, ThrowOnError>): RequestResult<WebhooksListEventTypesResponses, WebhooksListEventTypesErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListEventTypesResponses, WebhooksListEventTypesErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/event-types',\n ...options\n});\n\n/**\n * Send a test event\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Emits a `webhook.ping` event to your subscribed endpoints so you can verify delivery end to end.\n */\nexport const webhooksPing = <ThrowOnError extends boolean = true>(options: Options<WebhooksPingData, ThrowOnError>): RequestResult<WebhooksPingResponses, WebhooksPingErrors, ThrowOnError> => (options.client ?? client).post<WebhooksPingResponses, WebhooksPingErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/ping',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Mint a scoped frontend token\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Mints a short-lived, profile-scoped token from your secret `pr_` key. Call this from your backend; the returned token is safe to hand to a browser, which then calls the Postrun API directly. The secret key never touches the browser.\n */\nexport const tokensMint = <ThrowOnError extends boolean = true>(options: Options<TokensMintData, ThrowOnError>): RequestResult<TokensMintResponses, TokensMintErrors, ThrowOnError> => (options.client ?? client).post<TokensMintResponses, TokensMintErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/tokens',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n","import type {\n ConnectionsConnectData,\n ConnectionsConnectResponse,\n ConnectionsGetResponse,\n ConnectionsListAccountsResponse,\n ConnectionsListByProfileData,\n ConnectionsListByProfileResponse,\n ConnectionsSelectData,\n MediaCreateData,\n MediaCreateResponse,\n MediaGetResponse,\n MediaListData,\n MediaListResponse,\n MediaUpdateData,\n PostsCreateData,\n PostsGetResponse,\n PostsListData,\n PostsListResponse,\n PostsUpdateData,\n PostsValidateData,\n PostsValidateResponse,\n ProfilesCreateData,\n ProfilesGetResponse,\n ProfilesListData,\n ProfilesListResponse,\n ProfilesUpdateData,\n TiktokCreatorInfoResponse,\n} from './client/types.gen';\n\n/**\n * Resource and input shapes, DERIVED from the generated Hey API operation types\n * (`*Data` = request `{ body, path, query }`, `*Response` = success body). Never\n * hand-declared — there is exactly one definition of each, sourced from the\n * contract, so `pnpm generate` keeps them in lockstep with the live API.\n */\n\n/** A profile — a client/brand workspace. */\nexport type Profile = ProfilesGetResponse;\n\n/** A page of profiles (the list envelope). */\nexport type ProfileList = ProfilesListResponse;\n\n/** Query parameters for listing profiles (filters + pagination). */\nexport type ListProfilesQuery = NonNullable<ProfilesListData['query']>;\n\n/** Request body to create a profile. */\nexport type CreateProfileInput = NonNullable<ProfilesCreateData['body']>;\n\n/** Request body to update a profile (send only what changes). */\nexport type UpdateProfileInput = NonNullable<ProfilesUpdateData['body']>;\n\n/** A connected social/ads account on a profile. */\nexport type Connection = ConnectionsGetResponse;\n\n/** A page of a profile's connections. */\nexport type ConnectionList = ConnectionsListByProfileResponse;\n\n/** Query filters for listing a profile's connections (kind / status / pagination). */\nexport type ListConnectionsQuery = NonNullable<\n ConnectionsListByProfileData['query']\n>;\n\n/** A connection's kind — `posting` (social) or `ads`. From the contract. */\nexport type ConnectionKind = NonNullable<ListConnectionsQuery['kind']>;\n\n/** A connection's lifecycle status — `pending` / `active` / `needs_reauth`. */\nexport type ConnectionStatus = NonNullable<ListConnectionsQuery['status']>;\n\n/** The session returned when starting a connect (OAuth) flow. */\nexport type ConnectSession = ConnectionsConnectResponse;\n\n/** A platform a connection can start an OAuth connect flow for. */\nexport type ConnectablePlatform =\n NonNullable<ConnectionsConnectData['body']>['platform'];\n\n/** Accounts discoverable on a pending connection, for the selection step. */\nexport type DiscoverableAccountList = ConnectionsListAccountsResponse;\n\n/**\n * A TikTok creator's live publish options for a connection — the data TikTok's\n * publishing UI renders: `creator` (nickname + avatar), the `privacy_options` to\n * offer for PHOTO posts (with NO default — videos publish publicly), the\n * positive `interaction` (allowed) flags for Comment/Duet/Stitch toggles, and\n * `max_video_duration_sec`. Derived from the contract, never hand-declared.\n */\nexport type TikTokCreatorInfo = TiktokCreatorInfoResponse;\n\n/**\n * One TikTok privacy level — a member of the closed audience union\n * (`PUBLIC_TO_EVERYONE` / `MUTUAL_FOLLOW_FRIENDS` / `FOLLOWER_OF_CREATOR` /\n * `SELF_ONLY`). The per-account ALLOWED subset is `TikTokCreatorInfo.privacy_options`;\n * this is one value from it (what you bind a dropdown option to). Derived from\n * the contract, never hand-declared; render it with {@link tiktokPrivacyLabel}.\n */\nexport type TikTokPrivacyLevel = TikTokCreatorInfo['privacy_options'][number];\n\n/** Request body to select an account on a pending connection. */\nexport type SelectAccountInput = NonNullable<ConnectionsSelectData['body']>;\n\n/** The create/update post body, derived from the contract. */\ntype CreatePostBody = NonNullable<PostsCreateData['body']>;\n\n/**\n * One channel's variant on WRITE — the per-platform discriminated-union member\n * with fully typed native `settings`. Preferred over the read resource's variant\n * for anything that inspects settings (on read, `settings` is an opaque record);\n * it is also the compose-time shape, which is exactly what a live preview renders.\n */\nexport type PostVariantInput = CreatePostBody['variants'][number];\n\n/** The X (Twitter) member of the write variant union — typed native settings\n * (`quote_tweet_id`, `reply`, `poll`, …). Narrowed from the contract, never\n * hand-declared. */\nexport type XPostVariant = Extract<PostVariantInput, { platform: 'x' }>;\n\n/** The LinkedIn member of the write variant union — typed native settings\n * (`visibility`, `article`, `poll`, `document`, `mentions`). The `content_kind`\n * shape is server-DERIVED and read-only (see {@link PostVariant}). Narrowed from\n * the contract, never hand-declared. */\nexport type LinkedInPostVariant = Extract<\n PostVariantInput,\n { platform: 'linkedin' }\n>;\n\n/** The TikTok member of the write variant union — typed native settings\n * (photo-only `privacy_level`, `disable_comment`/`disable_duet`/`disable_stitch`,\n * `is_branded_content`/`is_brand_organic`, `is_ai_generated`, photo/video cover).\n * Narrowed from the contract, never hand-declared — it is the compose-time shape a\n * live TikTok preview renders. */\nexport type TikTokPostVariant = Extract<\n PostVariantInput,\n { platform: 'tiktok' }\n>;\n\n/** The Instagram member of the write variant union — typed native settings\n * (`collaborators`, `user_tags`, `location_id`, and the reel-only\n * `share_to_feed`/`audio_name`/`cover_url`/`thumb_offset`). The `media_type` shape\n * is server-DERIVED and read-only (see {@link PostVariant}). Narrowed from the\n * contract, never hand-declared — the compose-time shape an IG preview renders. */\nexport type InstagramPostVariant = Extract<\n PostVariantInput,\n { platform: 'instagram' }\n>;\n\n/** A post — its variants, schedule, and derived status (the read resource). */\nexport type Post = PostsGetResponse;\n\n/**\n * One per-platform variant on a RETURNED post (the read resource): its own\n * `status`, a typed `error` ({@link PostVariantError}) when it failed, and a\n * `result` (platform id + permalink) when it published. Derived from the post\n * resource, never hand-declared. (For inspecting compose-time native `settings`,\n * prefer {@link PostVariantInput}; on read `settings` is opaque.)\n */\nexport type PostVariant = Post['variants'][number];\n\n/**\n * A variant's typed publish failure — `{ code, message }`. The `code` is the\n * adapter's own minted reason (`x_access_not_permitted`, `linkedin_auth_expired`,\n * …); it stays a `string` because adapter codes are minted outside the API's\n * closed registry. Derived from the variant, never hand-declared.\n */\nexport type PostVariantError = NonNullable<PostVariant['error']>;\n\n/**\n * Did the post fully publish? `true` ONLY when the rollup `status` is\n * `'published'` — `partially_published` and `failed` are NOT success. The single\n * pure predicate every surface (SDK, React hook, composer) shares, so \"success\"\n * has exactly one definition.\n */\nexport const isPublished = (post: Post): boolean =>\n post.status === 'published';\n\n/**\n * The variants that FAILED to publish, each carrying its typed {@link\n * PostVariantError}. Empty when none failed. The pure helper behind\n * `useCreatePost().failedVariants` — usable directly from a non-React caller so\n * the \"which platforms failed, and why\" projection has one definition.\n */\nexport const failedVariants = (post: Post): PostVariant[] =>\n post.variants.filter((variant) => variant.status === 'failed');\n\n/** A page of posts (the calendar/queue list). */\nexport type PostList = PostsListResponse;\n\n/** Query parameters for listing posts (filters + pagination). */\nexport type ListPostsQuery = NonNullable<PostsListData['query']>;\n\n/**\n * A post's derived rollup status — the values accepted by the list `status`\n * filter (draft / scheduled / publishing / partially_published / published /\n * failed). Sourced from the generated query contract, never hand-listed.\n */\nexport type PostStatus = NonNullable<ListPostsQuery['status']>[number];\n\n/** The full create-post request body — what `buildCreatePost` produces. */\nexport type CreatePostInput = CreatePostBody;\n\n/** The update-post request body — what `buildUpdatePost` produces. */\nexport type UpdatePostInput = NonNullable<PostsUpdateData['body']>;\n\n/**\n * The validate-post request body — the composition-only subset of the create\n * body (`profile_id` + `variants`). `buildCreatePost` produces a superset, so\n * its output is structurally assignable here. Derived from the contract.\n */\nexport type ValidatePostInput = NonNullable<PostsValidateData['body']>;\n\n/**\n * The server's publish-readiness verdict for a composed post — `{ object,\n * publishable, issues }`. The SERVER is the sole authority on validity; the SDK\n * only builds a best-effort payload and relays this result. Derived from the\n * contract, never hand-declared.\n */\nexport type PostValidation = PostsValidateResponse;\n\n/**\n * One typed, per-variant problem in a `PostValidation` — a closed-registry\n * `code`, a human `message`, the `variant_index` + `path` it applies to, and the\n * optional `hint`/`allowed`/`got` the rule produced. Narrowed from the contract.\n */\nexport type ValidationIssue = PostValidation['issues'][number];\n\n/** A posting platform — the variant discriminator (x / linkedin / …). */\nexport type PostPlatform = PostVariantInput['platform'];\n\n/**\n * The post shape (`text` / `single_image` / `multi_image` / `video` / `reel` /\n * `carousel`) — DERIVED server-side from the attached media, never sent on write.\n * It surfaces on the READ variant (`PostVariant.post_type`, null while\n * undetermined); this strips that null to the concrete union. Derived from the\n * contract, never hand-listed.\n */\nexport type PostType = NonNullable<PostVariant['post_type']>;\n\n/** The native `settings` shape for a given platform (typed per channel). */\nexport type SettingsFor<P extends PostPlatform> = Extract<\n PostVariantInput,\n { platform: P }\n>['settings'];\n\n/** Publish mode: `now` | `schedule` | `draft`. */\nexport type PublishMode = NonNullable<CreatePostBody['publish']>;\n\n/** Customer metadata on a post (the shared scalar map). */\nexport type PostMetadata = NonNullable<CreatePostBody['metadata']>;\n\n/** A media asset (image/video/gif/document) with its per-platform renditions. */\nexport type MediaResource = MediaGetResponse;\n\n/**\n * A media asset's kind (image / video / gif / document), from the contract. The\n * resource's `kind` is nullable only in the transient pre-detection `uploading`\n * window; this is the concrete family, so it strips that null — what you pass to\n * create/upload and switch over on a settled asset.\n */\nexport type MediaKind = NonNullable<MediaResource['kind']>;\n\n/** A media render target — one of the post platforms. */\nexport type MediaTarget = NonNullable<\n NonNullable<MediaCreateData['body']>['targets']\n>[number];\n\n/** The create-media response: the resource plus a multipart upload session. */\nexport type CreateMediaResult = MediaCreateResponse;\n\n/** Request body to create a media asset. */\nexport type CreateMediaInput = NonNullable<MediaCreateData['body']>;\n\n/** Request body to update a media asset (alt text / metadata / extend targets). */\nexport type UpdateMediaInput = NonNullable<MediaUpdateData['body']>;\n\n/** A page of media assets (the list envelope). */\nexport type MediaList = MediaListResponse;\n\n/** Query parameters for listing media (filters + pagination). */\nexport type ListMediaQuery = NonNullable<MediaListData['query']>;\n\n/**\n * A media asset's lifecycle state — the values the list `status` filter accepts\n * (uploading / processing / ready / failed). From the contract, never hand-listed.\n */\nexport type MediaStatus = NonNullable<ListMediaQuery['status']>;\n\n/**\n * Customer metadata — a flat scalar map (`string | number | boolean`; ≤50 keys,\n * keys ≤40 chars, ≤500-char strings, 16 KiB serialized). The contract uses this\n * SAME shape on every stored resource (profiles / posts / media); this alias is\n * derived from the media write body as a stable representative, so it's the type\n * to annotate metadata you send — never `Record<string, unknown>`. (The three\n * resources share one structural shape in the spec; were the API ever to diverge\n * one, prefer that resource's own `*['metadata']` for it.)\n */\nexport type Metadata = NonNullable<CreateMediaInput['metadata']>;\n\n/**\n * A metadata filter for list endpoints — the same scalar map, matched by exact\n * containment (multiple keys ANDed; omit for no filter). Pass the object directly\n * from the SDK/React hooks; the client URL-encodes it for the REST query.\n */\nexport type MetadataFilter = NonNullable<ListMediaQuery['metadata']>;\n","import type { AwsS3Part } from '@uppy/aws-s3';\n\nimport type {\n MediaCompleteData,\n MediaListPartsResponse,\n} from '../client/types.gen';\n\n/**\n * The casing seam between Uppy's `@uppy/aws-s3` callbacks (which speak S3\n * PascalCase — `{ PartNumber, ETag, Size }`) and our endpoints (which speak the\n * API's snake_case — `{ part_number, etag, size }`). Uppy reads the parts we hand\n * it back from `listParts` and hands us the parts to send to `complete`, so a\n * silent mismatch here would break resume/complete with no error. Both maps are\n * pure and tested; the shapes are DERIVED from the generated client + Uppy types,\n * never hand-declared.\n */\n\n/** One part as our `GET /media/{id}/multipart/parts` endpoint returns it. */\ntype ApiListedPart = MediaListPartsResponse['parts'][number];\n\n/** One part as our `POST /media/{id}/multipart/complete` body carries it. */\ntype ApiCompletePart = NonNullable<MediaCompleteData['body']>['parts'][number];\n\n/**\n * Map our snake_case listed parts → Uppy's S3 `AwsS3Part[]` so a resume after a\n * dropped connection skips the parts R2 already holds. A 1:1 field map — the\n * endpoint's `parts` contract guarantees `part_number`/`etag`/`size` on every\n * entry, so there's nothing to drop.\n */\nexport function listedPartsToS3(\n parts: readonly ApiListedPart[],\n): AwsS3Part[] {\n return parts.map((part) => ({\n PartNumber: part.part_number,\n ETag: part.etag,\n Size: part.size,\n }));\n}\n\n/**\n * Map Uppy's S3 `AwsS3Part[]` (handed to `completeMultipartUpload`) → our\n * snake_case `complete` body parts. `AwsS3Part` types `PartNumber`/`ETag` as\n * optional; a part Uppy completes with always has both, but we assert the\n * invariant explicitly rather than cast — a missing field is a hard error, not a\n * silently-dropped part.\n */\nexport function s3PartsToComplete(\n parts: readonly AwsS3Part[],\n): ApiCompletePart[] {\n return parts.map((part) => {\n if (part.PartNumber === undefined || part.ETag === undefined) {\n throw new Error(\n 'Multipart complete received a part without PartNumber/ETag.',\n );\n }\n return { part_number: part.PartNumber, etag: part.ETag };\n });\n}\n","/**\n * A failed direct-to-storage (multipart) upload. `cause` carries the underlying\n * Uppy / network / API error so callers can inspect the real reason; `message` is\n * a short human summary. Thrown by {@link uploadFile} on a hard upload failure\n * (one or more parts could not be uploaded, or `complete` failed).\n */\nexport class UploadError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'UploadError';\n }\n}\n","import Uppy from '@uppy/core';\nimport AwsS3 from '@uppy/aws-s3';\n\nimport type { PostrunClient } from '../client';\nimport {\n mediaAbort,\n mediaComplete,\n mediaListParts,\n mediaSignPart,\n} from '../client/sdk.gen';\nimport type { MediaCreateResponse } from '../client/types.gen';\nimport { listedPartsToS3, s3PartsToComplete } from './casing';\nimport { UploadError } from './upload-error';\n\n/**\n * The multipart session the create response carries on its `upload` field — the\n * cached `{ upload_id, key, part_size, expires_at }` Uppy's `createMultipartUpload`\n * returns without a second HTTP call. Derived from the contract, never declared.\n */\nexport type MultipartSession = NonNullable<MediaCreateResponse['upload']>;\n\nexport interface UploadFileOptions {\n /** The media id the create call returned — binds the multipart sub-endpoints. */\n mediaId: string;\n /** The cached `upload` session from the create response (`upload_id`/`key`/…). */\n session: MultipartSession;\n /** The typed client the sub-endpoint calls go through (auth + base URL). */\n client: PostrunClient;\n /** Fraction uploaded, 0..1, as bytes flow; called once with 1 on success. */\n onProgress?: (fraction: number) => void;\n /** Abort the in-flight upload (cancels Uppy and aborts the R2 session). */\n signal?: AbortSignal;\n}\n\n/**\n * Upload ONE file's bytes to R2 with a resilient, resumable multipart upload,\n * driving `@uppy/aws-s3` headless (no DOM). Uppy owns the bug-prone mechanics —\n * fixed-size chunking, parallel parts, per-part retry, resume via `listParts`,\n * and progress — wired to OUR signing endpoints (`createMultipartUpload` returns\n * the cached create-response session, so there's no extra round-trip to start).\n *\n * Resolves when the upload is fully assembled on R2 (the object then settles\n * through the same probe/transform pipeline a `source_url` import does). Throws\n * {@link UploadError} on a hard failure, or a `DOMException('AbortError')` when\n * `signal` fires.\n */\nexport async function uploadFile(\n file: Blob,\n options: UploadFileOptions,\n): Promise<void> {\n const { mediaId, session, client, onProgress, signal } = options;\n\n if (signal?.aborted) {\n throw new DOMException('Upload aborted', 'AbortError');\n }\n\n const uppy = new Uppy({ autoProceed: false }).use(AwsS3, {\n // Every file is one resumable multipart upload — no size-threshold split, so\n // the path is uniform and a tiny file is just a 1-part upload (PLAN §2). The\n // literal `true` (not a `() => true`) selects Uppy's always-multipart variant.\n shouldUseMultipart: true,\n // Pin Uppy's chunk size to the server's part size — every part except the\n // last MUST be exactly this (an R2 requirement the session encodes).\n getChunkSize: () => session.part_size,\n\n // Start: hand back the cached session from the create response — NO HTTP.\n createMultipartUpload: () => ({\n uploadId: session.upload_id,\n key: session.key,\n }),\n\n // Sign one part → POST /media/{id}/multipart/sign. The sub-endpoint reads the\n // upload id from the asset row, so the body carries only the part number.\n signPart: async (_file, { partNumber }) => {\n const { data } = await mediaSignPart({\n client,\n path: { id: mediaId },\n body: { part_number: partNumber },\n });\n return { url: data.url };\n },\n\n // Resume: GET /media/{id}/multipart/parts → map snake_case → S3 PascalCase so\n // Uppy skips the parts R2 already holds after a dropped connection.\n listParts: async () => {\n const { data } = await mediaListParts({\n client,\n path: { id: mediaId },\n });\n return listedPartsToS3(data.parts);\n },\n\n // Finish: map Uppy's S3 parts → snake_case → POST /media/{id}/multipart/complete.\n completeMultipartUpload: async (_file, { parts }) => {\n await mediaComplete({\n client,\n path: { id: mediaId },\n body: { parts: s3PartsToComplete(parts) },\n });\n return {};\n },\n\n // Cancel: POST /media/{id}/multipart/abort (idempotent server-side).\n abortMultipartUpload: async () => {\n await mediaAbort({ client, path: { id: mediaId } });\n },\n });\n\n // Uppy's `progress` event is the overall 0–100 across all parts of the queue\n // (one file here) — forward it as a 0..1 fraction.\n uppy.on('progress', (percent) => onProgress?.(percent / 100));\n\n const onAbort = () => {\n uppy.cancelAll();\n };\n signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n uppy.addFile({ name: fileName(file), type: file.type, data: file });\n const result = await uppy.upload();\n\n if (signal?.aborted) {\n throw new DOMException('Upload aborted', 'AbortError');\n }\n\n const failed = result?.failed ?? [];\n if (failed.length > 0) {\n throw new UploadError('Multipart upload failed.', {\n cause: failed[0]?.error,\n });\n }\n\n onProgress?.(1);\n } finally {\n signal?.removeEventListener('abort', onAbort);\n uppy.destroy();\n }\n}\n\n/** Uppy needs a file name; a bare `Blob` has none, so fall back to a stable one. */\nfunction fileName(file: Blob): string {\n return file instanceof File ? file.name : 'upload';\n}\n","import pWaitFor from 'p-wait-for';\n\nimport type { PostrunClient } from './client';\nimport { mediaGet } from './client/sdk.gen';\nimport type { MediaResource } from './resources';\n\n/** Default delay between status polls. */\nconst DEFAULT_POLL_INTERVAL_MS = 1_500;\n\n/**\n * Default ceiling before giving up. Server-side video transcode can legitimately\n * take many minutes on a busy worker, so this backstop is generous — a short one\n * marks still-processing-but-eventually-ready videos as a timeout. 30 minutes is\n * a backstop, NOT the expectation; assets normally settle in seconds-to-minutes.\n */\nconst DEFAULT_POLL_TIMEOUT_MS = 30 * 60 * 1_000;\n\nexport interface WaitForMediaOptions {\n /** Typed client to poll through; falls back to the SDK's default client. */\n client?: PostrunClient;\n /** Milliseconds between polls (default 1500). */\n pollInterval?: number;\n /** Milliseconds before giving up and rejecting (default 30 minutes). */\n timeout?: number;\n /** Abort the wait early. */\n signal?: AbortSignal;\n /** Each polled snapshot — surface `progress.percent` while it processes. */\n onPoll?: (media: MediaResource) => void;\n}\n\n/**\n * Resolve once a media asset stops processing. Polls `GET /v1/media/{id}` until\n * `status` is `ready` OR `failed`, returning that settled resource — a `failed`\n * asset RESOLVES (the caller inspects `status`/`error`), it does not throw. Rejects\n * on timeout or when `signal` aborts (a `DOMException('…', 'AbortError')`).\n */\nexport async function waitForMedia(\n mediaId: string,\n options: WaitForMediaOptions = {},\n): Promise<MediaResource> {\n const {\n client,\n pollInterval = DEFAULT_POLL_INTERVAL_MS,\n timeout = DEFAULT_POLL_TIMEOUT_MS,\n signal,\n onPoll,\n } = options;\n\n let latest: MediaResource | undefined;\n await pWaitFor(\n async () => {\n if (signal?.aborted) {\n throw new DOMException('Media wait aborted', 'AbortError');\n }\n latest = (await mediaGet({ client, path: { id: mediaId } })).data;\n onPoll?.(latest);\n return latest.status === 'ready' || latest.status === 'failed';\n },\n { interval: pollInterval, timeout },\n );\n\n if (!latest) {\n throw new Error('Media polling returned no result.');\n }\n return latest;\n}\n","import type { TikTokPrivacyLevel } from './resources';\n\n/**\n * Map a TikTok privacy level to a short, human label for the composer's privacy\n * dropdown — the presentation the API deliberately keeps OFF the wire (the\n * `creator-info` response returns the typed `privacy_options`; the SDK owns how\n * they read).\n *\n * Exhaustive over the closed `TikTokPrivacyLevel` union with no `default` branch,\n * so adding a TikTok privacy level upstream surfaces as a compile error here\n * rather than silently rendering a raw enum string.\n */\nexport function tiktokPrivacyLabel(value: TikTokPrivacyLevel): string {\n switch (value) {\n case 'PUBLIC_TO_EVERYONE':\n return 'Everyone';\n case 'MUTUAL_FOLLOW_FRIENDS':\n return 'Friends';\n case 'FOLLOWER_OF_CREATOR':\n return 'Followers';\n case 'SELF_ONLY':\n return 'Only you';\n }\n}\n","import type { LinkedInPostVariant } from './resources';\n\n/**\n * One LinkedIn poll duration — DERIVED from the contract (the poll `duration`\n * field), never hand-listed, so it can't drift from the API shape.\n */\nexport type LinkedInPollDuration = NonNullable<\n NonNullable<LinkedInPostVariant['settings']>['poll']\n>['duration'];\n\n/**\n * Map a poll duration to the short \"time left\" label LinkedIn shows on the poll\n * card — the presentation the wire keeps enum-only. Exhaustive over the closed\n * union with no `default` branch, so adding a duration upstream surfaces as a\n * compile error here rather than silently rendering a raw enum string.\n */\nexport function linkedinPollDurationLabel(value: LinkedInPollDuration): string {\n switch (value) {\n case 'ONE_DAY':\n return '1 day left';\n case 'THREE_DAYS':\n return '3 days left';\n case 'SEVEN_DAYS':\n return '1 week left';\n case 'FOURTEEN_DAYS':\n return '2 weeks left';\n }\n}\n","import type { XPostVariant } from './resources';\n\n/** An X poll's settings shape — DERIVED from the contract, never re-declared. */\nexport type XPoll = NonNullable<\n NonNullable<XPostVariant['settings']>['poll']\n>;\n\n/** `n unit left`, pluralizing the unit. */\nfunction plural(n: number, unit: string): string {\n return `${n} ${unit}${n === 1 ? '' : 's'} left`;\n}\n\n/**\n * Turn an X poll's `duration_minutes` (5–10080, i.e. 5 min – 7 days) into the\n * \"time left\" label the poll card shows, floored to the coarsest sensible unit\n * (days ≥ 1 day, else hours ≥ 1 hour, else minutes). Pure — pin it in tests.\n */\nexport function xPollDurationLabel(durationMinutes: number): string {\n if (durationMinutes >= 1440) {\n return plural(Math.floor(durationMinutes / 1440), 'day');\n }\n if (durationMinutes >= 60) {\n return plural(Math.floor(durationMinutes / 60), 'hour');\n }\n return plural(durationMinutes, 'minute');\n}\n","import type {\n AccountMetrics,\n FacebookPageMetrics,\n FacebookPostMetrics,\n InstagramAccountMetrics,\n InstagramPostMetrics,\n PostMetrics,\n PostVariantStatus,\n TikTokAccountMetrics,\n TikTokPostMetrics,\n} from './client/types.gen';\n// From `./resources`, which re-declares these names: importing the generated\n// ones too gives the d.ts bundle two symbols under one exported name, and\n// @postrun/react's inferred hook types then fail TS2742.\nimport type { PostPlatform, PostType } from './resources';\n\n/**\n * Presentation helpers for the analytics reads (`postsGetAnalytics`,\n * `connectionsGetAnalytics`). The wire keeps each network's own field names;\n * these carry the domain knowledge a UI needs on top: which metrics apply to a\n * post type, their labels, and their units. Pure — pin them in tests.\n */\n\n/** How to read a metric's number: `ratio` is 0–1, `percent` is 0–100. */\nexport type MetricFormat =\n | 'count'\n | 'seconds'\n | 'milliseconds'\n | 'ratio'\n | 'percent';\n\n/** A count, a breakdown keyed by the network's own type names, or `null` when\n * the network didn't report it. */\nexport type MetricValue = number | Record<string, number> | null;\n\nexport interface MetricRow {\n key: string;\n label: string;\n format: MetricFormat;\n value: MetricValue;\n}\n\nexport interface MetricPoint {\n date: string;\n value: number;\n}\n\nconst ANALYTICS_PLATFORMS = [\n 'tiktok',\n 'instagram',\n 'facebook_page',\n] as const satisfies readonly PostPlatform[];\n\nexport type AnalyticsPlatform = (typeof ANALYTICS_PLATFORMS)[number];\n\n/** Whether Postrun reads analytics for this network. */\nexport function hasAnalytics(platform: string): platform is AnalyticsPlatform {\n return ANALYTICS_PLATFORMS.some((supported) => supported === platform);\n}\n\n/** Only a published variant on a network with analytics has metrics to read.\n * Narrows `platform`, so the variant can go straight to code keyed by\n * `AnalyticsPlatform`. */\nexport function hasPostAnalytics<\n Variant extends { platform: PostPlatform; status: PostVariantStatus },\n>(variant: Variant): variant is Variant & { platform: AnalyticsPlatform } {\n return variant.status === 'published' && hasAnalytics(variant.platform);\n}\n\ninterface MetricField<Key> {\n key: Key;\n label: string;\n format?: MetricFormat;\n}\n\ntype Fields<Metrics> = readonly MetricField<\n Exclude<keyof Metrics, 'platform'>\n>[];\n\n// `total_time_watched` is left out: next to views and average watch time it\n// adds nothing a reader acts on.\nconst TIKTOK_POST: Fields<TikTokPostMetrics> = [\n { key: 'video_views', label: 'Views' },\n { key: 'reach', label: 'Reach' },\n { key: 'likes', label: 'Likes' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n { key: 'favorites', label: 'Saves' },\n { key: 'average_time_watched', label: 'Avg. watch time', format: 'seconds' },\n { key: 'full_video_watched_rate', label: 'Completion', format: 'ratio' },\n { key: 'new_followers', label: 'New followers' },\n { key: 'profile_views', label: 'Profile views' },\n];\n\nconst INSTAGRAM_SHARED: Fields<InstagramPostMetrics> = [\n { key: 'views', label: 'Views' },\n { key: 'reach', label: 'Reach' },\n { key: 'likes', label: 'Likes' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n { key: 'saved', label: 'Saves' },\n { key: 'reposts', label: 'Reposts' },\n { key: 'total_interactions', label: 'Interactions' },\n];\n\n// Meta reports these for single image and carousel posts only.\nconst INSTAGRAM_FEED: Fields<InstagramPostMetrics> = [\n ...INSTAGRAM_SHARED,\n { key: 'follows', label: 'Follows' },\n { key: 'profile_visits', label: 'Profile visits' },\n { key: 'profile_activity', label: 'Profile activity' },\n];\n\nconst INSTAGRAM_REEL: Fields<InstagramPostMetrics> = [\n ...INSTAGRAM_SHARED,\n {\n key: 'ig_reels_avg_watch_time',\n label: 'Avg. watch time',\n format: 'milliseconds',\n },\n {\n key: 'ig_reels_video_view_total_time',\n label: 'Watch time',\n format: 'milliseconds',\n },\n { key: 'reels_skip_rate', label: 'Skip rate', format: 'percent' },\n];\n\nconst FACEBOOK_FEED: Fields<FacebookPostMetrics> = [\n { key: 'post_media_view', label: 'Views' },\n { key: 'post_total_media_view_unique', label: 'Viewers' },\n { key: 'post_reactions_by_type_total', label: 'Reactions' },\n { key: 'post_clicks', label: 'Clicks' },\n { key: 'post_clicks_by_type', label: 'Clicks by type' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n];\n\nconst FACEBOOK_REEL: Fields<FacebookPostMetrics> = [\n { key: 'blue_reels_play_count', label: 'Plays' },\n { key: 'fb_reels_total_plays', label: 'Total plays' },\n { key: 'fb_reels_replay_count', label: 'Replays' },\n {\n key: 'post_video_avg_time_watched',\n label: 'Avg. watch time',\n format: 'milliseconds',\n },\n { key: 'post_video_view_time', label: 'Watch time', format: 'milliseconds' },\n { key: 'post_video_followers', label: 'New followers' },\n { key: 'post_video_likes_by_reaction_type', label: 'Reactions' },\n];\n\nfunction rowsOf<Key extends string>(\n fields: readonly MetricField<Key>[],\n metrics: Record<Key, MetricValue>,\n): MetricRow[] {\n return fields.map(({ key, label, format = 'count' }) => ({\n key,\n label,\n format,\n value: metrics[key],\n }));\n}\n\n/**\n * The metrics that apply to a post, in display order. Meta reports different\n * metrics for Reels than for other posts, so `postType` (the variant's\n * `post_type`) picks the set; a metric that doesn't apply is left out rather\n * than shown as unreported.\n */\nexport function postMetricRows(\n metrics: PostMetrics,\n postType: PostType | null,\n): MetricRow[] {\n switch (metrics.platform) {\n case 'tiktok':\n return rowsOf(TIKTOK_POST, metrics);\n case 'instagram':\n return rowsOf(\n postType === 'reel' ? INSTAGRAM_REEL : INSTAGRAM_FEED,\n metrics,\n );\n case 'facebook_page':\n return rowsOf(\n postType === 'reel' ? FACEBOOK_REEL : FACEBOOK_FEED,\n metrics,\n );\n }\n}\n\nconst TIKTOK_ACCOUNT: Fields<Omit<TikTokAccountMetrics, 'daily'>> = [\n { key: 'followers_count', label: 'Followers' },\n { key: 'following_count', label: 'Following' },\n { key: 'total_likes', label: 'Likes' },\n { key: 'videos_count', label: 'Videos' },\n];\n\nconst INSTAGRAM_ACCOUNT: Fields<\n Omit<InstagramAccountMetrics, 'daily' | 'last_30_days'>\n> = [\n { key: 'followers_count', label: 'Followers' },\n { key: 'follows_count', label: 'Following' },\n { key: 'media_count', label: 'Posts' },\n];\n\nconst INSTAGRAM_LAST_30_DAYS: Fields<InstagramAccountMetrics['last_30_days']> =\n [\n { key: 'views', label: 'Views · 30d' },\n { key: 'reach', label: 'Reach · 30d' },\n { key: 'accounts_engaged', label: 'Engaged · 30d' },\n { key: 'total_interactions', label: 'Interactions · 30d' },\n ];\n\nconst FACEBOOK_ACCOUNT: Fields<Omit<FacebookPageMetrics, 'daily'>> = [\n { key: 'followers_count', label: 'Followers' },\n];\n\n/** An account's headline numbers, in display order. */\nexport function accountMetricRows(metrics: AccountMetrics): MetricRow[] {\n switch (metrics.platform) {\n case 'tiktok':\n return rowsOf(TIKTOK_ACCOUNT, metrics);\n case 'instagram':\n return [\n ...rowsOf(INSTAGRAM_ACCOUNT, metrics),\n ...rowsOf(INSTAGRAM_LAST_30_DAYS, metrics.last_30_days),\n ];\n case 'facebook_page':\n return rowsOf(FACEBOOK_ACCOUNT, metrics);\n }\n}\n\nfunction pointsOf<Key extends string>(\n daily: ReadonlyArray<{ date: string } & Record<Key, number | null>>,\n key: Key,\n): MetricPoint[] {\n return daily.flatMap((day) => {\n const value = day[key];\n\n return value === null ? [] : [{ date: day.date, value }];\n });\n}\n\n/**\n * The account's main daily series for a trend line, oldest first, leaving out\n * days the network didn't report. Instagram's is reach: it is the only account\n * metric Meta reports per day.\n */\nexport function accountTrend(metrics: AccountMetrics): {\n label: string;\n points: MetricPoint[];\n} {\n switch (metrics.platform) {\n case 'tiktok':\n return {\n label: 'Followers',\n points: pointsOf(metrics.daily, 'followers_count'),\n };\n case 'instagram':\n return { label: 'Reach', points: pointsOf(metrics.daily, 'reach') };\n case 'facebook_page':\n return {\n label: 'Followers',\n points: pointsOf(metrics.daily, 'page_follows'),\n };\n }\n}\n\n// Pinned to en-US to match the English labels: a reader's locale would turn\n// \"1.2K\" into \"12L\" (en-IN) next to them.\nconst COUNT = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n maximumFractionDigits: 1,\n});\nconst PERCENT = new Intl.NumberFormat('en-US', {\n style: 'percent',\n maximumFractionDigits: 1,\n});\nconst unit = (name: 'second' | 'minute' | 'hour') =>\n new Intl.NumberFormat('en-US', {\n style: 'unit',\n unit: name,\n unitDisplay: 'narrow',\n maximumFractionDigits: 1,\n });\nconst SECONDS = unit('second');\nconst MINUTES = unit('minute');\nconst HOURS = unit('hour');\n\n// Compared after rounding to the shown precision, so 59.96 s reads \"1m\", not \"60s\".\nconst roundsBelow = (value: number, limit: number) =>\n Math.round(value * 10) / 10 < limit;\n\nfunction formatDuration(seconds: number): string {\n if (roundsBelow(seconds, 60)) {\n return SECONDS.format(seconds);\n }\n\n const minutes = seconds / 60;\n\n return roundsBelow(minutes, 60)\n ? MINUTES.format(minutes)\n : HOURS.format(minutes / 60);\n}\n\nfunction formatNumber(value: number, format: MetricFormat): string {\n switch (format) {\n case 'count':\n return COUNT.format(value);\n case 'seconds':\n return formatDuration(value);\n case 'milliseconds':\n return formatDuration(value / 1000);\n case 'ratio':\n return PERCENT.format(value);\n case 'percent':\n return PERCENT.format(value / 100);\n }\n}\n\nconst capitalize = (text: string) =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\n/**\n * A metric for display. `null` (not reported) reads \"—\", never a made-up 0. A\n * breakdown lists its types largest first: \"Like 1.2K · Love 3\".\n */\nexport function formatMetric(\n value: MetricValue,\n format: MetricFormat = 'count',\n): string {\n if (value === null) {\n return '—';\n }\n\n if (typeof value === 'number') {\n return formatNumber(value, format);\n }\n\n const entries = Object.entries(value).sort(([, a], [, b]) => b - a);\n\n return entries.length === 0\n ? '0'\n : entries\n .map(([type, count]) => `${capitalize(type)} ${COUNT.format(count)}`)\n .join(' · ');\n}\n","import type {\n MediaResource,\n Post,\n PostType,\n SettingsFor,\n TikTokCreatorInfo,\n} from './resources';\nimport { type TikTokPrivacyLevel } from './resources';\nimport { tiktokPrivacyLabel } from './tiktok';\n\n/**\n * The TikTok composer's publish-options model — the framework-agnostic glue\n * between the live `creator-info` payload and a TikTok post's settings. This is\n * the SINGLE source for the audience / creator-gated interaction / commercial\n * disclosure rules; the React panel and the dashboard composer both consume it\n * (never re-implement it). The no-default audience and explicit-consent flow are\n * Postrun's own UX choices, not API requirements.\n *\n * The creator-info shape, the privacy union, and the privacy label come from the\n * contract (`./resources`, `./tiktok`) — never re-declared. This module owns the\n * controlled FORM value, the selection rules, and the mapping into the SDK's\n * per-platform `tiktok` settings.\n */\n\n/** TikTok caption caps, mirrored from the publish contract (`BODY_MAX.tiktok_*`).\n * A video post caps the title (2200), a photo post the description (4000). Lives\n * here (not in React) so non-React consumers (MCP, API client, scripts) can use\n * it. The server enforces these; the editor surfaces them. */\nexport const TIKTOK_CAPTION_MAX = { video: 2200, photo: 4000 } as const;\n\n/** The caption cap for a given post_type (video → title cap, photo → description).\n * `post_type` is server-derived from the media (read-only) — the composer passes\n * the shape it knows it's building (a video post vs a photo post). */\nexport function captionMaxFor(postType: PostType): number {\n return postType === 'video'\n ? TIKTOK_CAPTION_MAX.video\n : TIKTOK_CAPTION_MAX.photo;\n}\n\n/** The creator-gated interactions we surface — DERIVED from the creator-info\n * contract (`interaction` keys), never hand-listed, so it can never drift from\n * the API shape. */\nexport type TikTokInteractionKey = keyof TikTokCreatorInfo['interaction'];\n\n/** Which commercial-disclosure brand option a control maps to. */\nexport type TikTokBrandKind = 'your_brand' | 'branded_content';\n\n/**\n * The controlled value a TikTok composer/preview owns. `privacy_level` is\n * PHOTO-ONLY (TikTok publishes every video publicly) and optional because we\n * make the user pick — there is NO default (an absent value is the \"must choose\"\n * state the photo publish gate keys off). Interaction flags are POSITIVE\n * (\"allow\"); `tiktokSettings` inverts them to the API's `disable_*` shape.\n */\nexport interface TikTokOptionsValue {\n privacy_level?: TikTokPrivacyLevel;\n allow_comment: boolean;\n allow_duet: boolean;\n allow_stitch: boolean;\n /** Commercial Content Disclosure master toggle (off by default). When on, at\n * least one of `your_brand` / `branded_content` must be chosen. */\n commercial_disclosure: boolean;\n your_brand: boolean;\n branded_content: boolean;\n /** AI-generated content disclosure → the API's `is_ai_generated`. Video-only,\n * off by default. */\n ai_generated: boolean;\n}\n\nexport interface AudiencePrivacyChoice {\n level: TikTokPrivacyLevel;\n label: string;\n disabled: boolean;\n /** Why the option is disabled; present only when disabled. */\n disabledReason?: string;\n}\n\nexport interface TikTokInteractionRow {\n key: TikTokInteractionKey;\n label: string;\n /** Disabled (and forced off) when the creator forbids it — TikTok mandate. */\n disabled: boolean;\n}\n\n/* --------------------------- required wording --------------------------- */\n\n/** TikTok's Music Usage Confirmation — the legal URL the declaration links to. */\nexport const TIKTOK_MUSIC_CONFIRMATION_URL =\n 'https://www.tiktok.com/legal/page/global/music-usage-confirmation/en';\n\n/** TikTok's Branded Content Policy — linked when a paid partnership is disclosed. */\nexport const TIKTOK_BRANDED_CONTENT_POLICY_URL =\n 'https://www.tiktok.com/legal/page/global/bc-policy/en';\n\n/** TikTok's exact required prompt when disclosure is on but nothing is chosen. */\nexport const TIKTOK_DISCLOSURE_REQUIRED_HINT =\n 'You need to indicate if your content promotes yourself, a third party, or both.';\n\n/** Shown when a photo post has no audience picked yet. */\nexport const TIKTOK_AUDIENCE_REQUIRED_HINT =\n 'Choose who can view this post before publishing.';\n\n/** Why branded content can't be combined with a private audience. */\nexport const TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON =\n 'Branded content visibility cannot be set to private.';\n\n/** A published post may take a few minutes to process; tells the user so. */\nexport const TIKTOK_PROCESSING_NOTICE =\n 'After you publish, it may take a few minutes for your post to process and appear on your TikTok profile.';\n\n/* ------------------------------ defaults ------------------------------ */\n\n/**\n * The initial value for a TikTok post: nothing pre-selected. We make the user\n * actively choose — no default audience, every interaction OFF, no disclosure.\n * The panel still greys the interactions the creator forbids.\n */\nexport function defaultTikTokOptions(): TikTokOptionsValue {\n return {\n privacy_level: undefined,\n allow_comment: false,\n allow_duet: false,\n allow_stitch: false,\n commercial_disclosure: false,\n your_brand: false,\n branded_content: false,\n ai_generated: false,\n };\n}\n\n/* ------------------------------ audience ------------------------------ */\n\n/** Narrow a raw dropdown value to a `TikTokPrivacyLevel` against the creator's\n * allowed options — returns `undefined` for anything not offered (no cast). */\nexport function parsePrivacyLevel(\n value: string,\n options: readonly TikTokPrivacyLevel[],\n): TikTokPrivacyLevel | undefined {\n return options.find((option) => option === value);\n}\n\n/** Effective brand flags (only meaningful while disclosure is on). */\nfunction discloses(value: TikTokOptionsValue, kind: TikTokBrandKind): boolean {\n return value.commercial_disclosure && value[kind];\n}\n\n/**\n * The audience choices for a PHOTO post — one per creator-allowed level. While\n * branded content is disclosed, `SELF_ONLY` stays visible but disabled with the\n * reason (branded content can't be private); it is never silently removed or\n * swapped, so the user's selection is never changed behind their back.\n */\nexport function audiencePrivacyOptions(\n options: readonly TikTokPrivacyLevel[],\n value: TikTokOptionsValue,\n): AudiencePrivacyChoice[] {\n const brandedContent = discloses(value, 'branded_content');\n\n return options.map((level) => {\n const disabled = brandedContent && level === 'SELF_ONLY';\n return {\n level,\n label: tiktokPrivacyLabel(level),\n disabled,\n ...(disabled\n ? { disabledReason: TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON }\n : {}),\n };\n });\n}\n\n/** A photo post with no audience picked yet — must BLOCK publish (the API\n * requires `privacy_level` on photos and we offer no default). A video never\n * needs one: TikTok publishes every video publicly. */\nexport function audienceUnselected(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): boolean {\n return !isVideo && value.privacy_level === undefined;\n}\n\n/* --------------------------- commercial disclosure --------------------------- */\n\n/** Disclosure is on but neither brand option is chosen — TikTok requires ≥1. */\nexport function commercialDisclosureIncomplete(\n value: TikTokOptionsValue,\n): boolean {\n return (\n value.commercial_disclosure && !value.your_brand && !value.branded_content\n );\n}\n\n/** True when the post is disclosed as branded content (drives the BC declaration). */\nexport function brandedContentDeclared(value: TikTokOptionsValue): boolean {\n return discloses(value, 'branded_content');\n}\n\n/**\n * TikTok's required label notice for the disclosed content — branded content\n * (alone OR with your-brand) is \"Paid partnership\"; your-brand alone is\n * \"Promotional content\". `null` when nothing is disclosed. Wording is verbatim.\n */\nexport function commercialLabelNotice(\n value: TikTokOptionsValue,\n): string | null {\n if (discloses(value, 'branded_content')) {\n return \"Your photo/video will be labeled as 'Paid partnership'\";\n }\n if (discloses(value, 'your_brand')) {\n return \"Your photo/video will be labeled as 'Promotional content'\";\n }\n return null;\n}\n\n/** Toggle the master disclosure switch. Turning it OFF clears both brand\n * selections (a hidden control must not keep sending a stale selection). */\nexport function setCommercialDisclosure(\n value: TikTokOptionsValue,\n on: boolean,\n): TikTokOptionsValue {\n return on\n ? { ...value, commercial_disclosure: true }\n : {\n ...value,\n commercial_disclosure: false,\n your_brand: false,\n branded_content: false,\n };\n}\n\n/** Set one brand option. Never touches the audience (see\n * `brandedContentDisabledReason` for how a private audience locks branded content). */\nexport function setBrandKind(\n value: TikTokOptionsValue,\n kind: TikTokBrandKind,\n on: boolean,\n): TikTokOptionsValue {\n return { ...value, [kind]: on };\n}\n\n/* ------------------------------ interactions ------------------------------ */\n\n/**\n * Why \"Branded content\" is locked, or undefined when it can be toggled. With a\n * private audience already picked the option stays visible but disabled WITH the\n * reason — an already-checked box stays untickable.\n */\nexport function brandedContentDisabledReason(\n value: TikTokOptionsValue,\n): string | undefined {\n return value.privacy_level === 'SELF_ONLY' && !value.branded_content\n ? TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON\n : undefined;\n}\n\n/** True when the creator does NOT permit this interaction (so it's locked off). */\nexport function isInteractionForbidden(\n info: TikTokCreatorInfo,\n key: TikTokInteractionKey,\n): boolean {\n return !info.interaction[key];\n}\n\nconst INTERACTION_LABELS: Record<TikTokInteractionKey, string> = {\n comment: 'Comment',\n duet: 'Duet',\n stitch: 'Stitch',\n};\n\n/** Duet & Stitch are video-only — the API rejects `disable_duet` /\n * `disable_stitch` on a photo post — so a photo post shows only Comment. */\nconst VIDEO_INTERACTIONS: readonly TikTokInteractionKey[] = [\n 'comment',\n 'duet',\n 'stitch',\n];\nconst PHOTO_INTERACTIONS: readonly TikTokInteractionKey[] = ['comment'];\n\nconst INTERACTION_VALUE_KEY = {\n comment: 'allow_comment',\n duet: 'allow_duet',\n stitch: 'allow_stitch',\n} as const satisfies Record<TikTokInteractionKey, keyof TikTokOptionsValue>;\n\n/** The interaction toggles to render — video shows Comment/Duet/Stitch (each\n * disabled iff the creator forbids it); photo shows only Comment. */\nexport function interactionRows(\n info: TikTokCreatorInfo,\n isVideo: boolean,\n): TikTokInteractionRow[] {\n const order = isVideo ? VIDEO_INTERACTIONS : PHOTO_INTERACTIONS;\n return order.map((key) => ({\n key,\n label: INTERACTION_LABELS[key],\n disabled: isInteractionForbidden(info, key),\n }));\n}\n\n/** The `TikTokOptionsValue` flag an interaction key maps to. */\nexport function interactionValueKey(\n key: TikTokInteractionKey,\n): keyof TikTokOptionsValue {\n return INTERACTION_VALUE_KEY[key];\n}\n\n/** Immutably set an interaction flag — returns a new value, never mutates. */\nexport function toggleInteraction(\n value: TikTokOptionsValue,\n key: TikTokInteractionKey,\n on: boolean,\n): TikTokOptionsValue {\n return { ...value, [INTERACTION_VALUE_KEY[key]]: on };\n}\n\n/* -------------------------------- mapping -------------------------------- */\n\n/**\n * Map the composer's positive value into the SDK's `tiktok` settings — INVERTING\n * `allow_*` into TikTok's `disable_*`. The API rejects video-only fields\n * (`disable_duet`/`disable_stitch`/`is_ai_generated`) on a photo and\n * `privacy_level` on a video (`field_placement_invalid`), so each post kind sends\n * only its own.\n */\nexport function tiktokSettings(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): NonNullable<SettingsFor<'tiktok'>> {\n const base = {\n disable_comment: !value.allow_comment,\n is_brand_organic: discloses(value, 'your_brand'),\n is_branded_content: discloses(value, 'branded_content'),\n };\n\n return isVideo\n ? {\n ...base,\n disable_duet: !value.allow_duet,\n disable_stitch: !value.allow_stitch,\n is_ai_generated: value.ai_generated,\n }\n : { ...base, privacy_level: value.privacy_level };\n}\n\n/** A fetched post's TikTok variant settings (the read shape) — derived from the\n * contract, never re-declared. */\ntype TikTokVariantSettings = Extract<\n Post['variants'][number],\n { platform: 'tiktok' }\n>['settings'];\n\n/**\n * The inverse of {@link tiktokSettings}: rebuild the composer's controlled\n * options from a fetched post's TikTok settings — the open-a-draft / scheduled\n * path. `disable_*` flags invert back to positive \"allow\"; disclosure is on when\n * either brand flag is.\n */\nexport function tiktokOptionsFromSettings(\n settings: TikTokVariantSettings,\n): TikTokOptionsValue {\n const yourBrand = settings.is_brand_organic ?? false;\n const brandedContent = settings.is_branded_content ?? false;\n\n return {\n privacy_level: settings.privacy_level,\n allow_comment: !(settings.disable_comment ?? false),\n allow_duet: !(settings.disable_duet ?? false),\n allow_stitch: !(settings.disable_stitch ?? false),\n commercial_disclosure: yourBrand || brandedContent,\n your_brand: yourBrand,\n branded_content: brandedContent,\n ai_generated: settings.is_ai_generated ?? false,\n };\n}\n\n/* ------------------------------ readiness ------------------------------ */\n\n/**\n * A render-ready block message when the selected video exceeds the creator's\n * `max_video_duration_sec`, else `null`. Video-only. Never false-blocks: missing\n * creator-info (still loading), no video asset, or a duration the probe hasn't\n * reported yet (`source.duration_ms === null`) all return `null` — it only fires\n * on a KNOWN over-limit duration.\n */\nexport function tiktokDurationError(\n media: readonly MediaResource[],\n info: TikTokCreatorInfo | null,\n isVideo: boolean,\n): string | null {\n if (!isVideo || !info) return null;\n\n const durationMs = media.find((asset) => asset.kind === 'video')?.source\n ?.duration_ms;\n if (durationMs == null) return null;\n if (durationMs / 1000 <= info.max_video_duration_sec) return null;\n\n return `This video is longer than your TikTok account allows (max ${info.max_video_duration_sec}s).`;\n}\n\n/**\n * Is the TikTok post ready to publish (client-side gate mirroring the API)?\n * A photo needs an audience; any post with disclosure on needs a brand kind.\n * The caption-cap + media-count checks live with their own components.\n */\nexport function tiktokOptionsReady(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): boolean {\n // Branded content can't be private (the API rejects it) — checked here so a\n // host that builds the options object directly (bypassing setBrandKind's\n // clearing) still can't enable Post on a state the wire will refuse.\n const brandedPrivate =\n !isVideo &&\n discloses(value, 'branded_content') &&\n value.privacy_level === 'SELF_ONLY';\n return (\n !audienceUnselected(value, isVideo) &&\n !commercialDisclosureIncomplete(value) &&\n !brandedPrivate\n );\n}\n","import type {\n Connection,\n CreatePostInput,\n MediaResource,\n PostMetadata,\n PostPlatform,\n PostVariantInput,\n PublishMode,\n SettingsFor,\n UpdatePostInput,\n} from './resources';\n\n/* --------------------------------- types --------------------------------- */\n\n/**\n * A media attachment — just the uploaded asset's id. The post SHAPE (`post_type`\n * and the LinkedIn `content_kind` / Instagram `media_type`) is DERIVED server-side\n * from the media's byte-detected kind, so the customer never declares a media\n * `kind` here — they attach the asset and we figure out the rest.\n */\nexport type MediaInput = Pick<MediaResource, 'id'>;\n\n/** Base content, shared across channels unless a channel overrides it. */\nexport interface PostContent {\n body?: string;\n media?: readonly MediaInput[];\n}\n\n/**\n * One channel's config. The SDK owns the plumbing (connection, media, assembly);\n * the CUSTOMER owns `settings` — the platform's native, fully-typed config. An\n * Instagram setting on an X channel is a compile error. The post shape is never\n * specified here — the server derives it from the attached media.\n */\nexport interface ChannelConfig<P extends PostPlatform> {\n settings: SettingsFor<P>;\n body?: string;\n media?: readonly MediaInput[];\n connectionId?: string;\n}\n\n/** Channels keyed by platform — each value typed to that platform. */\nexport type Channels = { [P in PostPlatform]?: ChannelConfig<P> };\n\nexport interface ComposePostInput {\n profileId: string;\n content?: PostContent;\n channels: Channels;\n publish?: PublishMode;\n scheduleAt?: string;\n externalId?: string;\n metadata?: PostMetadata;\n tags?: readonly string[];\n notes?: string;\n dryRun?: boolean;\n}\n\n/** A post edit. Omit `channels` for a light edit; include it to rebuild variants. */\nexport interface ComposeUpdateInput {\n content?: PostContent;\n channels?: Channels;\n publish?: PublishMode;\n scheduleAt?: string;\n externalId?: string;\n metadata?: PostMetadata;\n tags?: readonly string[];\n notes?: string;\n dryRun?: boolean;\n}\n\n/** The connections a build resolves against (accepts a full `Connection[]`). */\nexport type ConnectionRef = Pick<Connection, 'id' | 'platform'>;\n\n/**\n * Thrown only for a genuine USAGE error the SDK can't paper over — an\n * unresolvable connection, or a build with zero channels. It is NEVER thrown for\n * a media combination: validity (which media a platform accepts, document\n * support, count limits, …) is the SERVER's job — it derives the post shape from\n * the media and surfaces any problem as a typed `ValidationIssue` from\n * `POST /v1/posts/validate`. So the SDK can always build an in-progress composition.\n */\nexport class ComposeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ComposeError';\n }\n}\n\ntype VariantFor<P extends PostPlatform> = Extract<PostVariantInput, { platform: P }>;\n\n/* ----------------------------- platform handlers -------------------------- */\n\n/** What a handler receives to assemble one variant. */\ninterface ResolvedChannel<P extends PostPlatform> {\n settings: SettingsFor<P>;\n connectionId: string;\n body: string | undefined;\n media: readonly { media_id: string }[];\n}\n\n/**\n * A per-platform variant builder: assemble the typed variant from a resolved\n * channel, passing `settings` straight through (the customer owns it). Each\n * platform gets its own builder so the literal `platform` discriminant ties the\n * result to the right union member with no cast — and so the registry is\n * exhaustive over `PostPlatform`. The post shape is NOT set here: the server\n * derives it from the media.\n */\ninterface PlatformHandler<P extends PostPlatform> {\n buildVariant(resolved: ResolvedChannel<P>): VariantFor<P>;\n}\n\nconst xHandler: PlatformHandler<'x'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'x',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst linkedInHandler: PlatformHandler<'linkedin'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'linkedin',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst facebookHandler: PlatformHandler<'facebook_page'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'facebook_page',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst instagramHandler: PlatformHandler<'instagram'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'instagram',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst tiktokHandler: PlatformHandler<'tiktok'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'tiktok',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\n/**\n * The handler registry. A `Record<PostPlatform, …>` (no optional keys), so a\n * platform the contract defines without a handler here is a COMPILE ERROR.\n */\nconst PLATFORM_HANDLERS: { [P in PostPlatform]: PlatformHandler<P> } = {\n x: xHandler,\n linkedin: linkedInHandler,\n facebook_page: facebookHandler,\n instagram: instagramHandler,\n tiktok: tiktokHandler,\n};\n\n/** Narrow any platform string to a posting platform. */\nexport function isPostPlatform(value: string): value is PostPlatform {\n return Object.prototype.hasOwnProperty.call(PLATFORM_HANDLERS, value);\n}\n\n/** Posting platforms — the single source, derived from the handler registry\n * (the `.filter` type-guard narrows `string[]` → `PostPlatform[]`, cast-free). */\nexport const POST_PLATFORMS: PostPlatform[] =\n Object.keys(PLATFORM_HANDLERS).filter(isPostPlatform);\n\n/* -------------------------------- assembly -------------------------------- */\n\nfunction resolveConnectionId(\n platform: PostPlatform,\n connectionId: string | undefined,\n connections: readonly ConnectionRef[],\n): string {\n if (connectionId) return connectionId;\n const match = connections.find((connection) => connection.platform === platform);\n if (!match) {\n throw new ComposeError(\n `No connection for \"${platform}\" on this profile. Connect the account or pass connectionId.`,\n );\n }\n return match.id;\n}\n\n/** Resolve one channel into its typed variant. Generic over the concrete `P`, so\n * the handler / config / result stay correlated with no cast. */\nfunction buildChannel<P extends PostPlatform>(\n handler: PlatformHandler<P>,\n platform: P,\n config: ChannelConfig<P>,\n content: PostContent,\n connections: readonly ConnectionRef[],\n): VariantFor<P> {\n const media = config.media ?? content.media ?? [];\n return handler.buildVariant({\n settings: config.settings,\n connectionId: resolveConnectionId(platform, config.connectionId, connections),\n body: config.body ?? content.body,\n media: media.map((item) => ({ media_id: item.id })),\n });\n}\n\n/**\n * Resolve ONE platform's channel, or `undefined` when the caller didn't include\n * it. Generic over the concrete `P`, so `channels[platform]` and\n * `PLATFORM_HANDLERS[platform]` stay correlated to the same platform with no cast.\n * Wrapping the registry lookup in this generic is what lets `buildVariants`\n * iterate `POST_PLATFORMS` (a union) without the per-member variance error.\n */\nfunction collectChannel<P extends PostPlatform>(\n platform: P,\n channels: Channels,\n content: PostContent,\n connections: readonly ConnectionRef[],\n): VariantFor<P> | undefined {\n const config = channels[platform];\n if (!config) return undefined;\n return buildChannel(\n PLATFORM_HANDLERS[platform],\n platform,\n config,\n content,\n connections,\n );\n}\n\nfunction buildVariants(\n content: PostContent,\n channels: Channels,\n connections: readonly ConnectionRef[],\n): PostVariantInput[] {\n // Driven by POST_PLATFORMS (derived from the exhaustive PLATFORM_HANDLERS), so a\n // new platform added to the registry is dispatched here automatically — no\n // hand-maintained per-platform branch to forget (the gap that once dropped TikTok).\n const variants = POST_PLATFORMS.flatMap((platform) => {\n const variant = collectChannel(platform, channels, content, connections);\n return variant ? [variant] : [];\n });\n\n if (variants.length === 0) {\n // The ONE retained composition-level guard: \"you called build with no\n // channels\" is a programmer USAGE error, not a per-end-user validity judgment.\n // It is NOT a verdict on whether the media is publishable — that authority\n // (and the post-shape derivation) lives entirely on the server.\n throw new ComposeError('At least one channel is required.');\n }\n return variants;\n}\n\n/**\n * Turn an ergonomic `{ content, channels }` input into the exact\n * `CreatePostInput` the API expects — resolving each channel's connection and\n * attaching the shared/overridden media. The server derives the post shape from\n * that media, so the build is TOTAL: it never throws for a media combination and\n * an in-progress post can always be built to validate. The customer never\n * assembles `variants[]` or sees a `connection_id`, and owns each channel's typed\n * `settings`.\n */\nexport function buildCreatePost(\n input: ComposePostInput,\n connections: readonly ConnectionRef[],\n): CreatePostInput {\n return {\n profile_id: input.profileId,\n publish: input.publish,\n schedule_at: input.scheduleAt,\n external_id: input.externalId,\n metadata: input.metadata,\n tags: input.tags ? [...input.tags] : undefined,\n notes: input.notes,\n dry_run: input.dryRun,\n variants: buildVariants(input.content ?? {}, input.channels, connections),\n };\n}\n\n/** The envelope fields the API counts as a real edit (`dry_run` deliberately not). */\nconst MUTABLE_ENVELOPE_KEYS = [\n 'publish',\n 'scheduleAt',\n 'externalId',\n 'metadata',\n 'tags',\n 'notes',\n] as const satisfies readonly (keyof ComposeUpdateInput)[];\n\n/**\n * Build an `UpdatePostInput`. With `channels`, the full variant set is rebuilt\n * (the API's PATCH replaces it); without it, only the envelope changes.\n */\nexport function buildUpdatePost(\n input: ComposeUpdateInput,\n connections: readonly ConnectionRef[] = [],\n): UpdatePostInput {\n const changesEnvelope = MUTABLE_ENVELOPE_KEYS.some((key) => input[key] !== undefined);\n if (!input.channels && !changesEnvelope) {\n throw new ComposeError(\n 'A post update must change at least one field — pass content/channels or an ' +\n 'envelope field (publish, scheduleAt, tags, …).',\n );\n }\n\n return {\n publish: input.publish,\n schedule_at: input.scheduleAt,\n external_id: input.externalId,\n metadata: input.metadata,\n tags: input.tags ? [...input.tags] : undefined,\n notes: input.notes,\n dry_run: input.dryRun,\n variants: input.channels\n ? buildVariants(input.content ?? {}, input.channels, connections)\n : undefined,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/client/core/bodySerializer.gen.ts","../src/client/core/serverSentEvents.gen.ts","../src/client/core/pathSerializer.gen.ts","../src/client/core/utils.gen.ts","../src/client/core/auth.gen.ts","../src/client/client/utils.gen.ts","../src/client/client/client.gen.ts","../src/client/zod.gen.ts","../src/errors.ts","../src/token-cache.ts","../src/client.ts","../src/client/client.gen.ts","../src/client/sdk.gen.ts","../src/resources.ts","../src/upload/casing.ts","../src/upload/upload-error.ts","../src/upload/upload-file.ts","../src/media.ts","../src/tiktok.ts","../src/linkedin.ts","../src/x.ts","../src/analytics.ts","../src/tiktok-options.ts","../src/compose.ts"],"names":["url","joinedValues","config","request","z","z2","client","Uppy","AwsS3","pWaitFor","unit"],"mappings":"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","file":"index.cjs","sourcesContent":["// 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';\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): ',' | '|' | '%20' => {\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}): string => {\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): string => {\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}): string => {\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: RegExp = /\\{[^{}]+\\}/g;\n\nexport const defaultPathSerializer = ({ path, url: _url }: PathSerializer): string => {\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}): string => {\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}): unknown {\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 * A unique identifier for the security scheme.\n *\n * Defined only when there are multiple security schemes whose `Auth`\n * shape would otherwise be identical.\n */\n key?: string;\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 = {}): ((queryParams: T) => string) => {\n const querySerializer = (queryParams: T): string => {\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 async function setAuthParams(\n options: Pick<RequestOptions, 'auth' | 'query' | 'security'> & {\n headers: Headers;\n },\n): Promise<void> {\n for (const auth of options.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 may be undefined due to a network error where no response object is produced */\n response: Res | undefined,\n /** request may be undefined, because error may be from building the request object itself */\n request: Req | undefined,\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(opts);\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 throwOnError = options.throwOnError ?? _config.throwOnError;\n const responseStyle = options.responseStyle ?? _config.responseStyle;\n\n let request: Request | undefined;\n let response: Response | undefined;\n\n try {\n const { opts, url } = await beforeRequest(options);\n const requestInit: ReqInit = {\n redirect: 'follow',\n ...opts,\n body: getValidRequestBody(opts),\n };\n\n 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\n response = await _fetch(request);\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 throw jsonError ?? textError;\n } catch (error) {\n let finalError = error;\n\n for (const fn of interceptors.error.fns) {\n if (fn) {\n finalError = await fn(finalError, response, request, options as ResolvedRequestOptions);\n }\n }\n\n finalError = finalError || {};\n\n if (throwOnError) {\n throw finalError;\n }\n\n // TODO: we probably want to return error and improve types\n return responseStyle === 'data'\n ? undefined\n : {\n error: finalError,\n request,\n response,\n };\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 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 * as z from 'zod';\n\n/**\n * ErrorCode\n *\n * The closed set of machine-readable Postrun error codes. Branch on this. Each links to https://docs.postrun.ai/errors/<code>.\n */\nexport const zErrorCode = z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n]);\n\n/**\n * Structured detail from the wrapped platform: its own error code, the offending field path + value, and its request id (for that platform’s support).\n */\nexport const zErrorSource = z.object({\n platform: z.enum([\n 'x',\n 'linkedin',\n 'instagram',\n 'facebook',\n 'tiktok',\n 'youtube'\n ]),\n platform_code: z.string().optional(),\n field: z.string().optional(),\n value: z.string().optional(),\n platform_request_id: z.string().optional()\n});\n\nexport const zProfile = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().nullable(),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\n/**\n * YouTube video settings (videos and Shorts).\n */\nexport const zYouTubePostSettings = z.object({\n title: z.string().optional(),\n privacy_status: z.enum([\n 'public',\n 'unlisted',\n 'private'\n ]).optional(),\n self_declared_made_for_kids: z.boolean().optional(),\n contains_synthetic_media: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n category_id: z.string().regex(/^[0-9]+$/).optional(),\n thumbnail_media_id: z.string().optional()\n});\n\n/**\n * Lifetime metrics for one TikTok post, as reported by TikTok. TikTok updates them 24–48 hours after the activity and stops updating a post 365 days after it was published. A metric TikTok did not report is null.\n */\nexport const zTikTokPostMetrics = z.object({\n platform: z.literal('tiktok'),\n video_views: z.number().nullable(),\n reach: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n favorites: z.number().nullable(),\n average_time_watched: z.number().nullable(),\n total_time_watched: z.number().nullable(),\n full_video_watched_rate: z.number().nullable(),\n new_followers: z.number().nullable(),\n profile_views: z.number().nullable()\n});\n\n/**\n * One UTC day of account activity.\n */\nexport const zTikTokAccountDay = z.object({\n date: z.string(),\n followers_count: z.number().nullable(),\n daily_new_followers: z.number().nullable(),\n daily_lost_followers: z.number().nullable(),\n video_views: z.number().nullable(),\n profile_views: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable()\n});\n\n/**\n * A TikTok account’s current totals plus its daily activity, as reported by TikTok. A metric TikTok did not report is null.\n */\nexport const zTikTokAccountMetrics = z.object({\n platform: z.literal('tiktok'),\n followers_count: z.number().nullable(),\n following_count: z.number().nullable(),\n total_likes: z.number().nullable(),\n videos_count: z.number().nullable(),\n daily: z.array(zTikTokAccountDay)\n});\n\n/**\n * Lifetime metrics for one Instagram post, as reported by Meta under Meta’s own names. Single image and carousel posts report different metrics from Reels: a field that does not apply to the post’s type is null, and its description names the types that report it. Meta can take up to 48 hours to report a new post. A metric Meta did not report is null.\n */\nexport const zInstagramPostMetrics = z.object({\n platform: z.literal('instagram'),\n views: z.number().nullable(),\n reach: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n saved: z.number().nullable(),\n reposts: z.number().nullable(),\n total_interactions: z.number().nullable(),\n follows: z.number().nullable(),\n profile_visits: z.number().nullable(),\n profile_activity: z.number().nullable(),\n ig_reels_avg_watch_time: z.number().nullable(),\n ig_reels_video_view_total_time: z.number().nullable(),\n reels_skip_rate: z.number().nullable()\n});\n\n/**\n * One day of Instagram account reach.\n */\nexport const zInstagramAccountDay = z.object({\n date: z.string(),\n reach: z.number().nullable()\n});\n\n/**\n * An Instagram account’s current totals, its last 30 days and its daily reach, as reported by Meta under Meta’s own names. A metric Meta did not report is null.\n */\nexport const zInstagramAccountMetrics = z.object({\n platform: z.literal('instagram'),\n followers_count: z.number().nullable(),\n follows_count: z.number().nullable(),\n media_count: z.number().nullable(),\n last_30_days: z.object({\n views: z.number().nullable(),\n reach: z.number().nullable(),\n accounts_engaged: z.number().nullable(),\n total_interactions: z.number().nullable(),\n likes: z.number().nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n saves: z.number().nullable(),\n reposts: z.number().nullable(),\n replies: z.number().nullable(),\n profile_links_taps: z.number().nullable(),\n follows_and_unfollows: z.record(z.string(), z.number()).nullable()\n }),\n daily: z.array(zInstagramAccountDay)\n});\n\n/**\n * Lifetime metrics for one Facebook Page post or Reel, as reported by Meta under Meta’s own names. Text, photo and album posts report different metrics from Reels: a field that does not apply is null, and its description says which reports it. Meta reports no reach for Reels. A metric Meta did not report is null.\n */\nexport const zFacebookPostMetrics = z.object({\n platform: z.literal('facebook_page'),\n post_media_view: z.number().nullable(),\n post_total_media_view_unique: z.number().nullable(),\n post_reactions_by_type_total: z.record(z.string(), z.number()).nullable(),\n post_clicks: z.number().nullable(),\n post_clicks_by_type: z.record(z.string(), z.number()).nullable(),\n comments: z.number().nullable(),\n shares: z.number().nullable(),\n blue_reels_play_count: z.number().nullable(),\n fb_reels_total_plays: z.number().nullable(),\n fb_reels_replay_count: z.number().nullable(),\n post_video_avg_time_watched: z.number().nullable(),\n post_video_view_time: z.number().nullable(),\n post_video_followers: z.number().nullable(),\n post_video_likes_by_reaction_type: z.record(z.string(), z.number()).nullable()\n});\n\n/**\n * One day of Facebook Page activity.\n */\nexport const zFacebookPageDay = z.object({\n date: z.string(),\n page_media_view: z.number().nullable(),\n page_total_media_view_unique: z.number().nullable(),\n page_follows: z.number().nullable(),\n page_daily_follows_unique: z.number().nullable(),\n page_daily_unfollows_unique: z.number().nullable(),\n page_post_engagements: z.number().nullable(),\n page_views_total: z.number().nullable(),\n page_video_views: z.number().nullable(),\n page_total_actions: z.number().nullable()\n});\n\n/**\n * A Facebook Page’s current followers plus its daily activity, as reported by Meta under Meta’s own names. Meta reports Page insights only for Pages with 100 or more likes, and they leave out Reels interactions. A metric Meta did not report is null.\n */\nexport const zFacebookPageMetrics = z.object({\n platform: z.literal('facebook_page'),\n followers_count: z.number().nullable(),\n daily: z.array(zFacebookPageDay)\n});\n\n/**\n * One variant’s metrics in its network’s own shape. Branch on `platform`.\n */\nexport const zPostMetrics = z.union([\n zTikTokPostMetrics,\n zInstagramPostMetrics,\n zFacebookPostMetrics\n]);\n\n/**\n * A connected account’s metrics in its network’s own shape. Branch on `platform`.\n */\nexport const zAccountMetrics = z.union([\n zTikTokAccountMetrics,\n zInstagramAccountMetrics,\n zFacebookPageMetrics\n]);\n\n/**\n * A connected account’s metrics, read live from the platform.\n */\nexport const zConnectionAnalytics = z.object({\n object: z.literal('connection_analytics'),\n connection_id: z.string(),\n fetched_at: z.iso.datetime({ offset: true }),\n metrics: zAccountMetrics\n});\n\n/**\n * An external account reachable through a connection’s OAuth grant, offered for selection.\n */\nexport const zDiscoverableAccount = z.object({\n external_account_id: z.string(),\n name: z.string().nullable(),\n currency: z.string().nullable(),\n username: z.string().nullish(),\n avatar_url: z.string().nullish(),\n profile_url: z.string().nullish(),\n instagram: z.object({\n external_account_id: z.string(),\n name: z.string().nullable(),\n username: z.string().nullish(),\n avatar_url: z.string().nullish(),\n profile_url: z.string().nullish()\n }).nullish()\n});\n\nexport const zConnectSession = z.object({\n hosted_connect_url: z.string(),\n connect_token: z.string(),\n connect_session_token: z.string(),\n provider_config_key: z.string(),\n nango_host: z.string(),\n expires_at: z.string()\n});\n\nexport const zMediaKind = z.enum([\n 'image',\n 'video',\n 'gif',\n 'document'\n]);\n\nexport const zMediaStatus = z.enum([\n 'uploading',\n 'processing',\n 'ready',\n 'failed'\n]);\n\nexport const zMediaStage = z.enum([\n 'queued',\n 'analyzing',\n 'transcoding',\n 'done'\n]);\n\nexport const zMedia = z.object({\n id: z.string(),\n object: z.literal('media'),\n profile_id: z.string(),\n kind: zMediaKind.nullable(),\n content_type: z.string().nullable(),\n status: zMediaStatus,\n progress: z.object({\n stage: zMediaStage,\n percent: z.int().gte(0).lte(100)\n }),\n raw: z.boolean(),\n error: z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }).nullable(),\n source: z.object({\n format: z.string(),\n bytes: z.int().gte(0).lte(9007199254740991),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n duration_ms: z.int().gte(0).lte(9007199254740991).nullable()\n }).nullable(),\n alt_text: z.string().max(1000).nullable(),\n per_platform: z.record(z.string(), z.object({\n status: z.enum([\n 'processing',\n 'ready',\n 'failed'\n ]),\n url: z.string().nullable(),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n bytes: z.int().gte(0).lte(9007199254740991).nullable(),\n warnings: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n })),\n errors: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }))\n })),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zPostPlatform = z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n]);\n\n/**\n * One variant’s metrics. Exactly one of `metrics` and `error` is set: `error` explains why there are no metrics (`analytics_not_supported` or `analytics_no_data`).\n */\nexport const zPostVariantAnalytics = z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: zPostPlatform,\n metrics: zPostMetrics.nullable(),\n error: z.object({\n code: z.enum(['analytics_not_supported', 'analytics_no_data']),\n message: z.string(),\n display_error: z.string()\n }).nullable()\n});\n\n/**\n * Metrics for each of a post’s variants, read live from each platform.\n */\nexport const zPostAnalytics = z.object({\n object: z.literal('post_analytics'),\n post_id: z.string(),\n fetched_at: z.iso.datetime({ offset: true }),\n variants: z.array(zPostVariantAnalytics)\n});\n\nexport const zPostType = z.enum([\n 'text',\n 'single_image',\n 'multi_image',\n 'video',\n 'reel',\n 'carousel',\n 'short'\n]);\n\nexport const zPostStatus = z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n]);\n\nexport const zPostVariantStatus = z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n]);\n\n/**\n * Whether the connection targets a posting social network (`posting`) or a legacy, no-longer-supported ads platform (`ads`). Computed from the platform.\n */\nexport const zConnectionKind = z.enum(['posting', 'ads']);\n\n/**\n * Lifecycle status: `pending` (no account chosen), `active` (account selected, grant healthy), or `needs_reauth` (the OAuth grant died — reconnect needed). Computed from reauth_at and external_account_id.\n */\nexport const zConnectionStatus = z.enum([\n 'pending',\n 'active',\n 'needs_reauth'\n]);\n\nexport const zConnection = z.object({\n id: z.string(),\n profile_id: z.string(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]),\n kind: zConnectionKind,\n status: zConnectionStatus,\n external_account_id: z.string().nullable(),\n external_account_name: z.string().nullable(),\n username: z.string().nullable(),\n avatar_url: z.string().nullable(),\n profile_url: z.string().nullable(),\n reauth_at: z.string().nullable(),\n currency: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\nexport const zTikTokPrivacyLevel = z.enum([\n 'PUBLIC_TO_EVERYONE',\n 'MUTUAL_FOLLOW_FRIENDS',\n 'FOLLOWER_OF_CREATOR',\n 'SELF_ONLY'\n]);\n\nexport const zPostVariant = z.union([\n z.object({\n platform: z.literal('x'),\n settings: z.object({\n reply_settings: z.enum([\n 'everyone',\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional(),\n quote_tweet_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n poll: z.object({\n options: z.array(z.string().min(1).max(25)).min(2).max(4),\n duration_minutes: z.int().gte(5).lte(10080),\n reply_settings: z.enum([\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional()\n }).optional(),\n reply: z.object({\n in_reply_to_tweet_id: z.string().regex(/^[0-9]{1,19}$/),\n exclude_reply_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).optional(),\n auto_populate_reply_metadata: z.boolean().optional()\n }).optional(),\n community_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n for_super_followers_only: z.boolean().optional(),\n geo: z.object({\n place_id: z.string()\n }).optional(),\n card_uri: z.string().optional(),\n media_tagged_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).max(10).optional(),\n thread_items: z.array(z.object({\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).max(4).optional()\n })).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n }),\n z.object({\n platform: z.literal('linkedin'),\n settings: z.object({\n visibility: z.enum(['PUBLIC', 'CONNECTIONS']),\n article: z.object({\n source: z.url(),\n title: z.string().max(400).optional(),\n description: z.string().max(4086).optional(),\n thumbnail_media_id: z.string().optional()\n }).optional(),\n poll: z.object({\n question: z.string().min(1).max(140),\n options: z.array(z.string().min(1).max(30)).min(2).max(4),\n duration: z.enum([\n 'ONE_DAY',\n 'THREE_DAYS',\n 'SEVEN_DAYS',\n 'FOURTEEN_DAYS'\n ])\n }).optional(),\n document: z.object({\n title: z.string().min(1).max(400)\n }).optional(),\n disable_reshare: z.boolean().optional(),\n mentions: z.array(z.object({\n type: z.enum(['person', 'organization']),\n name: z.string().min(1),\n urn: z.string().regex(/^urn:li:(person|organization):/)\n })).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n })),\n content_kind: z.enum([\n 'text',\n 'single_image',\n 'video',\n 'multi_image',\n 'document',\n 'article',\n 'poll'\n ]).nullable()\n }),\n z.object({\n platform: z.literal('facebook_page'),\n settings: z.object({\n link: z.url().optional(),\n first_comment: z.string().min(1).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n }),\n z.object({\n platform: z.literal('instagram'),\n settings: z.object({\n location_id: z.string().optional(),\n user_tags: z.array(z.object({\n username: z.string().min(1),\n x: z.number().gte(0).lte(1),\n y: z.number().gte(0).lte(1)\n })).optional(),\n collaborators: z.array(z.string().min(1)).max(3).optional(),\n share_to_feed: z.boolean().optional(),\n thumb_offset: z.int().gte(0).lte(9007199254740991).optional(),\n cover_url: z.url().optional(),\n audio_name: z.string().optional(),\n first_comment: z.string().min(1).optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n })),\n media_type: z.enum([\n 'IMAGE',\n 'CAROUSEL',\n 'REELS'\n ]).nullable()\n }),\n z.object({\n platform: z.literal('tiktok'),\n settings: z.object({\n privacy_level: zTikTokPrivacyLevel.optional(),\n disable_comment: z.boolean().optional(),\n disable_duet: z.boolean().optional(),\n disable_stitch: z.boolean().optional(),\n thumbnail_offset: z.int().gte(0).lte(9007199254740991).optional(),\n photo_cover_index: z.int().gte(0).lte(9007199254740991).optional(),\n auto_add_music: z.boolean().optional(),\n is_branded_content: z.boolean().optional(),\n is_brand_organic: z.boolean().optional(),\n is_ai_generated: z.boolean().optional(),\n is_ads_only: z.boolean().optional()\n }),\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n }),\n z.object({\n platform: z.literal('youtube'),\n settings: zYouTubePostSettings,\n id: z.string(),\n object: z.literal('post_variant'),\n post_type: zPostType.nullable(),\n connection_id: z.string().nullable(),\n body: z.string().nullable(),\n status: zPostVariantStatus,\n schedule_at: z.string().nullable(),\n result: z.object({\n platform_post_id: z.string(),\n permalink: z.string().nullable(),\n published_at: z.string()\n }).nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n media: z.array(z.object({\n media_id: z.string(),\n position: z.int().gte(-9007199254740991).lte(9007199254740991),\n alt_text_override: z.string().nullable(),\n media: zMedia\n }))\n })\n]);\n\nexport const zPost = z.object({\n id: z.string(),\n object: z.literal('post'),\n profile_id: z.string(),\n external_id: z.string().nullable(),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n schedule_at: z.string().nullable(),\n tags: z.array(z.string()),\n notes: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n variants: z.array(zPostVariant),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zPostWriteResult = z.object({\n id: z.string(),\n object: z.literal('post'),\n profile_id: z.string(),\n external_id: z.string().nullable(),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n schedule_at: z.string().nullable(),\n tags: z.array(z.string()),\n notes: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n variants: z.array(zPostVariant),\n created_at: z.string(),\n updated_at: z.string(),\n dry_run: z.boolean(),\n executed: z.boolean()\n});\n\n/**\n * A TikTok account's publish options, fetched live from TikTok. privacy_options are the audiences available for photo posts (videos are always published publicly). The interaction flags say which of Comment/Duet/Stitch the account allows (true = ALLOWED); an unavailable interaction can only be disabled on a post. max_video_duration_sec caps a video's length for this account.\n */\nexport const zTikTokCreatorInfo = z.object({\n creator: z.object({\n nickname: z.string(),\n username: z.string(),\n avatar_url: z.string().nullable()\n }),\n privacy_options: z.array(zTikTokPrivacyLevel),\n interaction: z.object({\n comment: z.boolean(),\n duet: z.boolean(),\n stitch: z.boolean()\n }),\n max_video_duration_sec: z.int().gte(-9007199254740991).lte(9007199254740991)\n});\n\n/**\n * A single platform variant of a post: connection, platform, body, ordered media, and native typed settings. The post SHAPE (post_type, and LinkedIn content_kind / Instagram media_type) is DERIVED from the media — never sent.\n */\nexport const zPostVariantInput = z.union([\n z.object({\n platform: z.literal('x'),\n settings: z.object({\n reply_settings: z.enum([\n 'everyone',\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional(),\n quote_tweet_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n poll: z.object({\n options: z.array(z.string().min(1).max(25)).min(2).max(4),\n duration_minutes: z.int().gte(5).lte(10080),\n reply_settings: z.enum([\n 'following',\n 'mentionedUsers',\n 'subscribers',\n 'verified'\n ]).optional()\n }).optional(),\n reply: z.object({\n in_reply_to_tweet_id: z.string().regex(/^[0-9]{1,19}$/),\n exclude_reply_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).optional(),\n auto_populate_reply_metadata: z.boolean().optional()\n }).optional(),\n community_id: z.string().regex(/^[0-9]{1,19}$/).optional(),\n for_super_followers_only: z.boolean().optional(),\n geo: z.object({\n place_id: z.string()\n }).optional(),\n card_uri: z.string().optional(),\n media_tagged_user_ids: z.array(z.string().regex(/^[0-9]{1,19}$/)).max(10).optional(),\n thread_items: z.array(z.object({\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).max(4).optional()\n })).optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('linkedin'),\n settings: z.object({\n visibility: z.enum(['PUBLIC', 'CONNECTIONS']),\n article: z.object({\n source: z.url(),\n title: z.string().max(400).optional(),\n description: z.string().max(4086).optional(),\n thumbnail_media_id: z.string().optional()\n }).optional(),\n poll: z.object({\n question: z.string().min(1).max(140),\n options: z.array(z.string().min(1).max(30)).min(2).max(4),\n duration: z.enum([\n 'ONE_DAY',\n 'THREE_DAYS',\n 'SEVEN_DAYS',\n 'FOURTEEN_DAYS'\n ])\n }).optional(),\n document: z.object({\n title: z.string().min(1).max(400)\n }).optional(),\n disable_reshare: z.boolean().optional(),\n mentions: z.array(z.object({\n type: z.enum(['person', 'organization']),\n name: z.string().min(1),\n urn: z.string().regex(/^urn:li:(person|organization):/)\n })).optional()\n }),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('instagram'),\n settings: z.object({\n location_id: z.string().optional(),\n user_tags: z.array(z.object({\n username: z.string().min(1),\n x: z.number().gte(0).lte(1),\n y: z.number().gte(0).lte(1)\n })).optional(),\n collaborators: z.array(z.string().min(1)).max(3).optional(),\n share_to_feed: z.boolean().optional(),\n thumb_offset: z.int().gte(0).lte(9007199254740991).optional(),\n cover_url: z.url().optional(),\n audio_name: z.string().optional(),\n first_comment: z.string().min(1).optional()\n }),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('facebook_page'),\n settings: z.object({\n link: z.url().optional(),\n first_comment: z.string().min(1).optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('tiktok'),\n settings: z.object({\n privacy_level: zTikTokPrivacyLevel.optional(),\n disable_comment: z.boolean().optional(),\n disable_duet: z.boolean().optional(),\n disable_stitch: z.boolean().optional(),\n thumbnail_offset: z.int().gte(0).lte(9007199254740991).optional(),\n photo_cover_index: z.int().gte(0).lte(9007199254740991).optional(),\n auto_add_music: z.boolean().optional(),\n is_branded_content: z.boolean().optional(),\n is_brand_organic: z.boolean().optional(),\n is_ai_generated: z.boolean().optional(),\n is_ads_only: z.boolean().optional()\n }).optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n }),\n z.object({\n platform: z.literal('youtube'),\n settings: zYouTubePostSettings.optional().default({}),\n connection_id: z.string(),\n body: z.string().optional(),\n media: z.array(z.object({\n media_id: z.string(),\n alt_text_override: z.string().nullish()\n })).optional().default([])\n })\n]);\n\nexport const zCreatePostBody = z.object({\n profile_id: z.string(),\n publish: z.enum([\n 'now',\n 'schedule',\n 'draft'\n ]).optional().default('draft'),\n schedule_at: z.iso.datetime({ offset: true }).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n tags: z.array(z.string()).optional(),\n notes: z.string().optional(),\n dry_run: z.boolean().optional().default(false),\n variants: z.array(zPostVariantInput).min(1)\n});\n\n/**\n * Optional. A unique key (1–255 chars; a UUID is ideal) that makes this write safe to retry: the first request executes and its outcome is stored; an identical retry replays that exact outcome instead of re-executing. A retry with the same key but a different body returns 422; a retry while the first is still in flight returns 409. See https://docs.postrun.ai/idempotency.\n */\nexport const zIdempotencyKey = z.string().min(1).max(255);\n\nexport const zProfilesListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\n/**\n * OK\n */\nexport const zProfilesListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zProfile),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zProfilesCreateBody = z.object({\n name: z.string().min(1).max(255),\n description: z.string().max(280).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zProfilesCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zProfilesCreateResponse = zProfile;\n\nexport const zProfilesDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('profile'),\n deleted: z.literal(true)\n});\n\nexport const zProfilesGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesGetResponse = zProfile;\n\nexport const zProfilesUpdateBody = z.object({\n name: z.string().min(1).max(255).optional(),\n description: z.string().max(280).nullish(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zProfilesUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zProfilesUpdateResponse = zProfile;\n\nexport const zConnectionsListByProfilePath = z.object({\n id: z.string()\n});\n\nexport const zConnectionsListByProfileQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n nango_connection_id: z.string().min(1).optional(),\n kind: zConnectionKind.optional(),\n status: zConnectionStatus.optional()\n});\n\n/**\n * OK\n */\nexport const zConnectionsListByProfileResponse = z.object({\n object: z.literal('list'),\n data: z.array(zConnection),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zConnectionsDeleteHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('connection'),\n deleted: z.literal(true)\n});\n\nexport const zConnectionsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsGetResponse = zConnection;\n\nexport const zConnectionsSelectBody = z.object({\n external_account_id: z.string().min(1)\n});\n\nexport const zConnectionsSelectHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsSelectPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsSelectResponse = zConnection;\n\nexport const zConnectionsListAccountsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsListAccountsResponse = z.object({\n object: z.literal('list'),\n data: z.array(zDiscoverableAccount)\n});\n\nexport const zConnectionsConnectBody = z.object({\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ])\n});\n\nexport const zConnectionsConnectHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zConnectionsConnectPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsConnectResponse = zConnectSession;\n\nexport const zConnectionsGetAnalyticsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zConnectionsGetAnalyticsResponse = zConnectionAnalytics;\n\nexport const zMediaListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n status: zMediaStatus.optional(),\n kind: zMediaKind.optional(),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\n/**\n * OK\n */\nexport const zMediaListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zMedia),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\n/**\n * Create a media asset — either via the signed direct upload target (omit source_url) or by importing from a public https source_url (we fetch + validate + transform + store). Size limits (same for direct upload and source_url): a video may be up to 4 GB; every other kind must be 1 GB or smaller. A file over its limit is rejected with `media_too_large`.\n */\nexport const zMediaCreateBody = z.object({\n profile_id: z.string(),\n source_url: z.url().optional(),\n targets: z.array(zPostPlatform).min(1).optional(),\n raw: z.boolean().optional().default(false),\n alt_text: z.string().max(1000).optional(),\n external_id: z.string().min(1).max(255).optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional()\n});\n\nexport const zMediaCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zMediaCreateResponse = z.object({\n id: z.string(),\n object: z.literal('media'),\n profile_id: z.string(),\n kind: zMediaKind.nullable(),\n content_type: z.string().nullable(),\n status: zMediaStatus,\n progress: z.object({\n stage: zMediaStage,\n percent: z.int().gte(0).lte(100)\n }),\n raw: z.boolean(),\n error: z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }).nullable(),\n source: z.object({\n format: z.string(),\n bytes: z.int().gte(0).lte(9007199254740991),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n duration_ms: z.int().gte(0).lte(9007199254740991).nullable()\n }).nullable(),\n alt_text: z.string().max(1000).nullable(),\n per_platform: z.record(z.string(), z.object({\n status: z.enum([\n 'processing',\n 'ready',\n 'failed'\n ]),\n url: z.string().nullable(),\n width: z.int().gt(0).lte(9007199254740991).nullable(),\n height: z.int().gt(0).lte(9007199254740991).nullable(),\n bytes: z.int().gte(0).lte(9007199254740991).nullable(),\n warnings: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n })),\n errors: z.array(z.object({\n code: z.enum([\n 'media_unprobeable',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n display_error: z.string()\n }))\n })),\n external_id: z.string().nullable(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])),\n created_at: z.string(),\n updated_at: z.string(),\n upload: z.object({\n upload_id: z.string(),\n key: z.string(),\n part_size: z.int().gt(0).lte(9007199254740991),\n expires_at: z.string()\n }).nullable()\n});\n\nexport const zMediaDeleteHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zMediaDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('media'),\n deleted: z.literal(true)\n});\n\nexport const zMediaGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaGetResponse = zMedia;\n\nexport const zMediaUpdateBody = z.object({\n alt_text: z.string().max(1000).nullish(),\n external_id: z.string().min(1).max(255).nullish(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n targets: z.array(zPostPlatform).min(1).optional()\n});\n\nexport const zMediaUpdateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zMediaUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaUpdateResponse = zMedia;\n\nexport const zMediaSignPartBody = z.object({\n part_number: z.int().gte(1).lte(10000)\n});\n\nexport const zMediaSignPartPath = z.object({\n id: z.string()\n});\n\n/**\n * A presigned URL for one multipart part.\n */\nexport const zMediaSignPartResponse = z.object({\n url: z.url()\n});\n\nexport const zMediaListPartsPath = z.object({\n id: z.string()\n});\n\n/**\n * The parts R2 already holds for this upload (ascending). Skip re-uploading these to resume after a dropped connection.\n */\nexport const zMediaListPartsResponse = z.object({\n parts: z.array(z.object({\n part_number: z.int().gte(1).lte(9007199254740991),\n etag: z.string(),\n size: z.int().gte(0).lte(9007199254740991)\n }))\n});\n\nexport const zMediaCompleteBody = z.object({\n parts: z.array(z.object({\n part_number: z.int().gte(1).lte(10000),\n etag: z.string().min(1)\n })).min(1)\n});\n\nexport const zMediaCompletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaCompleteResponse = zMedia;\n\nexport const zMediaAbortPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zMediaAbortResponse = zMedia;\n\nexport const zPostsListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n external_id: z.string().optional(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n scheduled_after: z.iso.datetime({ offset: true }).optional(),\n scheduled_before: z.iso.datetime({ offset: true }).optional(),\n updated_after: z.iso.datetime({ offset: true }).optional(),\n status: z.array(zPostStatus).optional()\n});\n\n/**\n * OK\n */\nexport const zPostsListResponse = z.object({\n object: z.literal('list'),\n data: z.array(zPost),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zPostsCreateBody = zCreatePostBody;\n\nexport const zPostsCreateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zPostsCreateResponse = zPostWriteResult;\n\nexport const zPostsDeletePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsDeleteResponse = z.object({\n id: z.string(),\n object: z.literal('post'),\n deleted: z.literal(true)\n});\n\nexport const zPostsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsGetResponse = zPost;\n\nexport const zPostsUpdateBody = z.object({\n publish: z.enum([\n 'now',\n 'schedule',\n 'draft'\n ]).optional(),\n schedule_at: z.iso.datetime({ offset: true }).nullish(),\n external_id: z.string().min(1).max(255).nullish(),\n metadata: z.record(z.string(), z.union([\n z.string().max(500),\n z.number(),\n z.boolean()\n ])).optional(),\n tags: z.array(z.string()).optional(),\n notes: z.string().nullish(),\n dry_run: z.boolean().optional().default(false),\n variants: z.array(zPostVariantInput).min(1).optional()\n});\n\nexport const zPostsUpdateHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zPostsUpdatePath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsUpdateResponse = zPostWriteResult;\n\nexport const zPostsRetryBody = z.object({\n dry_run: z.boolean().optional().default(false)\n});\n\nexport const zPostsRetryHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\nexport const zPostsRetryPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsRetryResponse = zPostWriteResult;\n\nexport const zPostsValidateBody = z.object({\n profile_id: z.string(),\n variants: z.array(zPostVariantInput).min(1)\n});\n\n/**\n * OK\n */\nexport const zPostsValidateResponse = z.object({\n object: z.literal('validation'),\n publishable: z.boolean(),\n issues: z.array(z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n hint: z.string().optional(),\n allowed: z.array(z.string()).optional(),\n got: z.string().optional(),\n source: zErrorSource.optional(),\n variant_index: z.int().gte(-9007199254740991).lte(9007199254740991),\n path: z.array(z.union([z.string(), z.number()])),\n platform: zPostPlatform.optional(),\n display_error: z.string()\n }))\n});\n\nexport const zPostsGetAnalyticsPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zPostsGetAnalyticsResponse = zPostAnalytics;\n\nexport const zTiktokCreatorInfoPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zTiktokCreatorInfoResponse = zTikTokCreatorInfo;\n\nexport const zLogsListQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0),\n profile_id: z.string().optional(),\n connection_id: z.string().optional(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]).optional(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]).optional(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]).optional(),\n action: z.string().min(1).optional(),\n created_after: z.iso.datetime({ offset: true }).optional(),\n created_before: z.iso.datetime({ offset: true }).optional()\n});\n\n/**\n * OK\n */\nexport const zLogsListResponse = z.object({\n object: z.literal('list'),\n data: z.array(z.object({\n id: z.string(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]),\n action: z.string(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]),\n status_code: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]).nullable(),\n request_method: z.string().nullable(),\n request_path: z.string().nullable(),\n request_body: z.unknown().nullish(),\n response_body: z.unknown().nullish(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string()\n }).nullable(),\n outcome: z.object({\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n targets: z.array(z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n ]),\n platform_post_id: z.string().nullable(),\n permalink: z.string().nullable(),\n published_at: z.string().nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n warning: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).optional()\n }))\n }).nullable(),\n external_id: z.string().nullable(),\n idempotency_key: z.string().nullable(),\n request_id: z.string().nullable(),\n duration_ms: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n profile_id: z.string().nullable(),\n connection_id: z.string().nullable(),\n api_key_id: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n })),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zLogsGetPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zLogsGetResponse = z.object({\n id: z.string(),\n source: z.enum([\n 'api',\n 'dashboard',\n 'mcp',\n 'scheduler'\n ]),\n action: z.string(),\n status: z.enum([\n 'pending',\n 'success',\n 'error'\n ]),\n status_code: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n platform: z.enum([\n 'meta_ads',\n 'google_ads',\n 'tiktok_ads',\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]).nullable(),\n request_method: z.string().nullable(),\n request_path: z.string().nullable(),\n request_body: z.unknown().nullish(),\n response_body: z.unknown().nullish(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string()\n }).nullable(),\n outcome: z.object({\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'partially_published',\n 'published',\n 'failed'\n ]),\n targets: z.array(z.object({\n variant_id: z.string(),\n connection_id: z.string().nullable(),\n platform: z.enum([\n 'x',\n 'linkedin',\n 'facebook_page',\n 'instagram',\n 'tiktok',\n 'youtube'\n ]),\n status: z.enum([\n 'draft',\n 'scheduled',\n 'publishing',\n 'published',\n 'failed'\n ]),\n platform_post_id: z.string().nullable(),\n permalink: z.string().nullable(),\n published_at: z.string().nullable(),\n error: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).nullable(),\n warning: z.object({\n code: z.enum([\n 'unauthorized',\n 'forbidden',\n 'not_found',\n 'conflict',\n 'validation_failed',\n 'rate_limited',\n 'internal_error',\n 'idempotency_key_invalid',\n 'idempotency_key_reused',\n 'idempotency_request_in_progress',\n 'account_not_available',\n 'connection_reauth_required',\n 'connection_not_pending',\n 'not_implemented',\n 'connection_discovery_failed',\n 'tiktok_creator_info_unavailable',\n 'tiktok_analytics_unavailable',\n 'instagram_analytics_unavailable',\n 'facebook_analytics_unavailable',\n 'media_processing',\n 'media_upload_init_failed',\n 'media_upload_incomplete',\n 'media_upload_invalid_parts',\n 'not_publishable',\n 'post_not_retryable',\n 'invalid_connection',\n 'invalid_media',\n 'profile_scope_invalid',\n 'media_unprobeable',\n 'media_too_large',\n 'media_aspect_ratio_unsupported',\n 'media_resolution_too_low',\n 'media_gif_unsupported',\n 'media_format_recompressed',\n 'media_resolution_downscaled',\n 'video_container_unsupported',\n 'video_codec_unsupported',\n 'video_audio_codec_unsupported',\n 'video_too_large',\n 'video_too_small',\n 'video_dimensions_unsupported',\n 'video_dimensions_too_large',\n 'video_fps_unsupported',\n 'video_fps_too_low',\n 'video_aspect_unsupported',\n 'video_duration_too_short',\n 'video_duration_exceeds_max',\n 'video_transform_failed',\n 'media_fetch_failed',\n 'document_format_unsupported',\n 'document_too_large',\n 'document_too_many_pages',\n 'media_format_indeterminate',\n 'media_format_unsupported',\n 'media_count_invalid',\n 'body_too_long',\n 'content_missing',\n 'content_conflict',\n 'content_incomplete',\n 'media_type_mismatch',\n 'tag_limit_exceeded',\n 'reel_field_on_non_reel',\n 'field_placement_invalid',\n 'title_too_long',\n 'characters_not_allowed',\n 'media_not_ready',\n 'media_failed',\n 'media_unsupported',\n 'media_kind_mismatch',\n 'variant_unparseable',\n 'publishing_unavailable',\n 'x_duplicate_content',\n 'x_not_authorized',\n 'x_access_not_permitted',\n 'x_rate_limited',\n 'x_publish_failed',\n 'x_media_upload_failed',\n 'x_thread_incomplete',\n 'linkedin_duplicate_content',\n 'linkedin_auth_expired',\n 'linkedin_permission_denied',\n 'linkedin_rate_limited',\n 'linkedin_media_processing',\n 'linkedin_media_failed',\n 'linkedin_media_upload_failed',\n 'linkedin_publish_failed',\n 'instagram_media_processing',\n 'instagram_container_expired',\n 'instagram_container_failed',\n 'instagram_rate_limited',\n 'instagram_daily_limit_reached',\n 'instagram_aspect_ratio_unsupported',\n 'instagram_media_unsupported',\n 'instagram_not_authorized',\n 'instagram_publish_failed',\n 'instagram_comment_failed',\n 'facebook_reel_processing',\n 'facebook_reel_failed',\n 'facebook_rate_limited',\n 'facebook_duplicate_content',\n 'facebook_temporarily_blocked',\n 'facebook_not_authorized',\n 'facebook_publish_failed',\n 'facebook_comment_failed',\n 'tiktok_privacy_not_allowed',\n 'tiktok_interaction_not_allowed',\n 'tiktok_thumbnail_offset_invalid',\n 'tiktok_duration_exceeds_max',\n 'tiktok_media_processing',\n 'tiktok_not_authorized',\n 'tiktok_rate_limited',\n 'tiktok_spam_risk',\n 'tiktok_file_format_invalid',\n 'tiktok_duration_invalid',\n 'tiktok_frame_rate_invalid',\n 'tiktok_resolution_invalid',\n 'tiktok_media_pull_failed',\n 'tiktok_server_error',\n 'tiktok_publish_failed',\n 'youtube_long_upload_not_allowed',\n 'youtube_not_authorized',\n 'youtube_daily_limit_reached',\n 'youtube_upload_failed',\n 'youtube_upload_unconfirmed',\n 'youtube_video_rejected',\n 'youtube_processing_failed',\n 'youtube_thumbnail_failed',\n 'post_publish_failed',\n 'post_partially_published',\n 'connection_platform_mismatch',\n 'connection_removed',\n 'publish_interrupted',\n 'publish_outcome_unknown',\n 'plan_limit_reached',\n 'billing_required',\n 'x_link_requires_paid_plan',\n 'analytics_not_supported',\n 'analytics_no_data'\n ]),\n message: z.string(),\n source: zErrorSource.optional(),\n display_error: z.string()\n }).optional()\n }))\n }).nullable(),\n external_id: z.string().nullable(),\n idempotency_key: z.string().nullable(),\n request_id: z.string().nullable(),\n duration_ms: z.int().gte(-9007199254740991).lte(9007199254740991).nullable(),\n profile_id: z.string().nullable(),\n connection_id: z.string().nullable(),\n api_key_id: z.string().nullable(),\n created_at: z.string().nullable(),\n updated_at: z.string().nullable()\n});\n\nexport const zWebhooksListEndpointsQuery = z.object({\n limit: z.int().gte(1).lte(100).optional().default(20),\n offset: z.int().gte(0).lte(9007199254740991).optional().default(0)\n});\n\n/**\n * OK\n */\nexport const zWebhooksListEndpointsResponse = z.object({\n object: z.literal('list'),\n data: z.array(z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n })),\n total: z.int().gte(-9007199254740991).lte(9007199254740991),\n limit: z.int().gte(-9007199254740991).lte(9007199254740991),\n offset: z.int().gte(-9007199254740991).lte(9007199254740991),\n has_more: z.boolean()\n});\n\nexport const zWebhooksCreateEndpointBody = z.object({\n url: z.url(),\n description: z.string().max(255).optional(),\n event_types: z.array(z.enum([\n 'webhook.ping',\n 'post.published',\n 'post.failed',\n 'post.completed',\n 'connection.needs_reauth',\n 'connection.restored'\n ]))\n});\n\nexport const zWebhooksCreateEndpointHeaders = z.object({\n 'Idempotency-Key': z.string().min(1).max(255).optional()\n});\n\n/**\n * OK\n */\nexport const zWebhooksCreateEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zWebhooksDeleteEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksDeleteEndpointResponse = z.object({\n id: z.string(),\n object: z.literal('webhook_endpoint'),\n deleted: z.literal(true)\n});\n\nexport const zWebhooksGetEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksGetEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\nexport const zWebhooksUpdateEndpointBody = z.object({\n url: z.url().optional(),\n description: z.string().max(255).optional(),\n disabled: z.boolean().optional(),\n event_types: z.array(z.enum([\n 'webhook.ping',\n 'post.published',\n 'post.failed',\n 'post.completed',\n 'connection.needs_reauth',\n 'connection.restored'\n ])).optional()\n});\n\nexport const zWebhooksUpdateEndpointPath = z.object({\n id: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksUpdateEndpointResponse = z.object({\n id: z.string(),\n url: z.string(),\n description: z.string(),\n event_types: z.array(z.string()),\n disabled: z.boolean(),\n created_at: z.string(),\n updated_at: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksCreatePortalResponse = z.object({\n url: z.string()\n});\n\n/**\n * OK\n */\nexport const zWebhooksListEventTypesResponse = z.array(z.object({\n name: z.string(),\n group: z.string(),\n description: z.string()\n}));\n\nexport const zWebhooksPingBody = z.object({\n message: z.string().max(255).optional().default('Hello from Postrun')\n});\n\n/**\n * OK\n */\nexport const zWebhooksPingResponse = z.object({\n id: z.string()\n});\n\n/**\n * Mint a short-lived, profile-scoped frontend token. Called by your backend with a secret `pr_` key; the returned token is safe to hand to a browser.\n */\nexport const zTokensMintBody = z.object({\n profile_scope: z.union([\n z.object({\n type: z.literal('profile_ids'),\n values: z.array(z.string()).min(1).max(100)\n }),\n z.object({\n type: z.literal('external_id'),\n values: z.array(z.string().min(1).max(255)).min(1).max(50)\n }),\n z.object({\n type: z.literal('all')\n })\n ]),\n scopes: z.array(z.enum([\n 'profiles:read',\n 'profiles:write',\n 'profiles:delete',\n 'connections:read',\n 'connections:write',\n 'connections:delete',\n 'posts:read',\n 'posts:write',\n 'posts:delete',\n 'media:read',\n 'media:write',\n 'media:delete'\n ])).min(1),\n ttl_seconds: z.int().gte(60).lte(1800).optional().default(900)\n});\n\n/**\n * OK\n */\nexport const zTokensMintResponse = z.object({\n token: z.string(),\n expires_at: z.string()\n});\n","import * as z from 'zod';\n\nimport { zErrorCode } from './client/zod.gen';\nimport type { ErrorCode } from './client/types.gen';\n\n/**\n * The closed set of machine-readable Postrun error codes — DERIVED from the\n * generated `ErrorCode` component union (emitted from the API's `ErrorCodeSchema`\n * via the OpenAPI spec), never hand-listed. Branch on `PostrunError.code` and the\n * compiler narrows + autocompletes the exact set the API can return. Each member\n * documents itself at https://docs.postrun.ai/errors/<code>.\n */\nexport type PostrunErrorCode = ErrorCode;\n\n/**\n * The RFC 9457 problem body the Postrun API returns on every transport error —\n * its `encodeProblem` emits `{ type, title, status, code, detail, request_id?,\n * errors? }`, with the human message in `detail`.\n *\n * Modeled here with a tolerant Zod schema rather than DERIVED from the generated\n * types ON PURPOSE: the OpenAPI spec narrows `code` per-endpoint+status, so there\n * is no single generated \"problem body\" type to derive from — we parse the real\n * body here and surface the closed `code` union via `PostrunErrorCode`.\n */\nconst ProblemSchema = z.object({\n type: z.string().optional(),\n title: z.string().optional(),\n status: z.number().optional(),\n code: z.string().optional(),\n detail: z.string().optional(),\n // RFC 9457 calls the occurrence id `instance`; our bodies emit it as\n // `request_id`. Tolerate both, preferring `request_id`.\n request_id: z.string().optional(),\n instance: z.string().optional(),\n errors: z\n .array(z.object({ field: z.string(), code: z.string(), detail: z.string() }))\n .optional(),\n});\n\nexport type PostrunProblem = z.infer<typeof ProblemSchema>;\n\n/** One invalid field on a validation (422) failure. */\nexport type PostrunFieldError = NonNullable<PostrunProblem['errors']>[number];\n\n/** A typed error thrown by the client on a failed request. */\nexport class PostrunError extends Error {\n readonly status: number;\n /** The machine-readable code to branch on (closed union), if the body had one. */\n readonly code?: PostrunErrorCode;\n /** The request id for support/debugging (our `request_id`, or RFC `instance`). */\n readonly request_id?: string;\n /** Per-field validation problems on a 422, surfaced for convenience. */\n readonly fieldErrors: PostrunFieldError[];\n readonly problem?: PostrunProblem;\n\n constructor(status: number, rawProblem?: unknown) {\n const problem = ProblemSchema.safeParse(rawProblem).data;\n super(problem?.detail ?? problem?.title ?? `Postrun API error (${status})`);\n this.name = 'PostrunError';\n this.status = status;\n // Re-validate the body's `code` against the generated closed set so the field\n // is the typed union, not a bare string — an unknown code stays `undefined`\n // (no swallowed surprise) rather than being cast in.\n this.code = zErrorCode.safeParse(problem?.code).data;\n this.request_id = problem?.request_id ?? problem?.instance;\n this.fieldErrors = problem?.errors ?? [];\n this.problem = problem;\n }\n}\n","/**\n * In-memory token cache for the Postrun client. The host app's `getToken`\n * becomes a trivial \"mint a token from my backend\"; this cache holds the result\n * and reuses it for every request. There is no expiry math, JWT decoding, or\n * timer — a stale token is detected reactively when a request returns `401`,\n * which calls `refresh()`. Concurrent fetches share one in-flight promise, so N\n * parallel requests (first load, or N concurrent 401s) mint exactly one token.\n */\n\nexport interface TokenCache {\n /** The cached token, minting one on first use. */\n current(): Promise<string>;\n /** Discard the cached token and mint a new one (use after a 401). */\n refresh(): Promise<string>;\n}\n\nexport function createTokenCache(\n getToken: () => string | Promise<string>,\n): TokenCache {\n let cached: string | undefined;\n let inFlight: Promise<string> | undefined;\n\n const mint = (): Promise<string> => {\n if (!inFlight) {\n inFlight = Promise.resolve()\n .then(getToken)\n .then((token) => {\n cached = token;\n return token;\n })\n .finally(() => {\n inFlight = undefined;\n });\n }\n return inFlight;\n };\n\n return {\n current() {\n return cached !== undefined ? Promise.resolve(cached) : mint();\n },\n refresh() {\n cached = undefined;\n return mint();\n },\n };\n}\n","import { createClient, createConfig } from './client/client';\nimport type { Client } from './client/client';\nimport { PostrunError } from './errors';\nimport { createTokenCache } from './token-cache';\nimport type { TokenCache } from './token-cache';\n\n/**\n * The strongly-typed Postrun API client (Hey API). Pass it to any generated SDK\n * function via `{ client }`; every path, param, body, and response is inferred\n * from the OpenAPI spec, so the SDK can never drift from the live API.\n */\nexport type PostrunClient = Client;\n\nexport interface PostrunClientOptions {\n /** Override the API base URL (defaults to the production gateway). */\n baseUrl?: string;\n /**\n * Returns a short-lived scoped token. The host app's backend mints it from a\n * secret `pr_` key (`POST /v1/tokens`); the secret never reaches the browser.\n * The client caches the result and only re-fetches reactively on a `401`, so\n * this can be a trivial \"fetch a token from my backend\" — it is NOT called\n * per request.\n */\n getToken: () => string | Promise<string>;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.postrun.ai/v1';\n\n/** The one status a fresh token can fix; 403/404 are scope/tenancy, not auth. */\nconst UNAUTHORIZED = 401;\n\n/**\n * Wrap `fetch` so a single `401` triggers one token refresh + retry. The request\n * is cloned BEFORE the first send so its body survives the retry; on retry only\n * `Authorization` is overridden — every other header (idempotency key,\n * content-type, …) is preserved. A refresh failure surfaces the original `401`.\n * Bounded to one retry (no recursion), so a genuinely bad credential just\n * returns the second `401` for the error interceptor to surface.\n */\nfunction createRetryingFetch(tokenCache: TokenCache): typeof fetch {\n const realFetch: typeof fetch = (...args) => globalThis.fetch(...args);\n\n return async (input, init) => {\n const request = new Request(input, init);\n const retryable = request.clone();\n\n const response = await realFetch(request);\n if (response.status !== UNAUTHORIZED) {\n return response;\n }\n\n try {\n const token = await tokenCache.refresh();\n const headers = new Headers(retryable.headers);\n headers.set('Authorization', `Bearer ${token}`);\n return await realFetch(new Request(retryable, { headers }));\n } catch {\n return response;\n }\n };\n}\n\n/** Append `key=value` (URL-encoded) for one scalar to the running parts list. */\nfunction appendScalar(parts: string[], key: string, value: unknown): void {\n parts.push(\n `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`,\n );\n}\n\n/**\n * Serialize the query string for every Postrun request, by value shape:\n *\n * - **Array** (e.g. `status`) → repeated params (`status=a&status=b`), the\n * OpenAPI `form`/`explode` form the API parses into a `.in(...)` filter. A\n * JSON-encoded array would fail the array-of-enum validation.\n * - **Object** (e.g. `metadata`) → one URL-encoded JSON blob, because the API's\n * schema runs a `JSON.parse` preprocess on it; bracket form would mean the\n * server never sees a `metadata` key and silently drops the filter.\n * - **Scalar** → the value as-is.\n *\n * Operations needing a different shape (the ads reads' `metrics`/`segments`\n * params) carry their own per-call serializer in the generated SDK, which\n * overrides this.\n */\nfunction serializeQuery(query: Record<string, unknown>): string {\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n if (item !== undefined && item !== null) {\n appendScalar(parts, key, item);\n }\n }\n } else if (typeof value === 'object') {\n appendScalar(parts, key, JSON.stringify(value));\n } else {\n appendScalar(parts, key, value);\n }\n }\n\n return parts.join('&');\n}\n\n/**\n * Construct a typed client. The browser only ever holds the scoped token —\n * the cached token is sent as `Bearer <token>` for the spec's `bearerAuth`\n * security scheme, re-fetched only when a request returns `401`.\n *\n * Calls throw on failure (`throwOnError`), so SDK functions return the value\n * directly (no `{ data, error }` to unwrap) — the throw-based shape every major\n * SDK uses. The error interceptor maps the raw failure to a typed `PostrunError`\n * (status + machine `code` + RFC 9457 problem), so `catch` always gets the same\n * actionable shape.\n */\nexport function createPostrunClient(\n options: PostrunClientOptions,\n): PostrunClient {\n const tokenCache = createTokenCache(options.getToken);\n\n const client = createClient(\n createConfig({\n baseUrl: options.baseUrl ?? DEFAULT_BASE_URL,\n auth: () => tokenCache.current(),\n fetch: createRetryingFetch(tokenCache),\n querySerializer: serializeQuery,\n throwOnError: true,\n }),\n );\n\n client.interceptors.error.use((error, response) =>\n error instanceof PostrunError\n ? error\n : new PostrunError(response?.status ?? 0, error),\n );\n\n return client;\n}\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type Client, 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: Client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://api.postrun.ai/v1', throwOnError: true }));\n","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, ClientMeta, Options as Options2, RequestResult, TDataShape } from './client';\nimport { client } from './client.gen';\nimport type { ConnectionsConnectData, ConnectionsConnectErrors, ConnectionsConnectResponses, ConnectionsDeleteData, ConnectionsDeleteErrors, ConnectionsDeleteResponses, ConnectionsGetAnalyticsData, ConnectionsGetAnalyticsErrors, ConnectionsGetAnalyticsResponses, ConnectionsGetData, ConnectionsGetErrors, ConnectionsGetResponses, ConnectionsListAccountsData, ConnectionsListAccountsErrors, ConnectionsListAccountsResponses, ConnectionsListByProfileData, ConnectionsListByProfileErrors, ConnectionsListByProfileResponses, ConnectionsSelectData, ConnectionsSelectErrors, ConnectionsSelectResponses, LogsGetData, LogsGetErrors, LogsGetResponses, LogsListData, LogsListErrors, LogsListResponses, MediaAbortData, MediaAbortErrors, MediaAbortResponses, MediaCompleteData, MediaCompleteErrors, MediaCompleteResponses, MediaCreateData, MediaCreateErrors, MediaCreateResponses, MediaDeleteData, MediaDeleteErrors, MediaDeleteResponses, MediaGetData, MediaGetErrors, MediaGetResponses, MediaListData, MediaListErrors, MediaListPartsData, MediaListPartsErrors, MediaListPartsResponses, MediaListResponses, MediaSignPartData, MediaSignPartErrors, MediaSignPartResponses, MediaUpdateData, MediaUpdateErrors, MediaUpdateResponses, PostsCreateData, PostsCreateErrors, PostsCreateResponses, PostsDeleteData, PostsDeleteErrors, PostsDeleteResponses, PostsGetAnalyticsData, PostsGetAnalyticsErrors, PostsGetAnalyticsResponses, PostsGetData, PostsGetErrors, PostsGetResponses, PostsListData, PostsListErrors, PostsListResponses, PostsRetryData, PostsRetryErrors, PostsRetryResponses, PostsUpdateData, PostsUpdateErrors, PostsUpdateResponses, PostsValidateData, PostsValidateErrors, PostsValidateResponses, ProfilesCreateData, ProfilesCreateErrors, ProfilesCreateResponses, ProfilesDeleteData, ProfilesDeleteErrors, ProfilesDeleteResponses, ProfilesGetData, ProfilesGetErrors, ProfilesGetResponses, ProfilesListData, ProfilesListErrors, ProfilesListResponses, ProfilesUpdateData, ProfilesUpdateErrors, ProfilesUpdateResponses, TiktokCreatorInfoData, TiktokCreatorInfoErrors, TiktokCreatorInfoResponses, TokensMintData, TokensMintErrors, TokensMintResponses, WebhooksCreateEndpointData, WebhooksCreateEndpointErrors, WebhooksCreateEndpointResponses, WebhooksCreatePortalData, WebhooksCreatePortalErrors, WebhooksCreatePortalResponses, WebhooksDeleteEndpointData, WebhooksDeleteEndpointErrors, WebhooksDeleteEndpointResponses, WebhooksGetEndpointData, WebhooksGetEndpointErrors, WebhooksGetEndpointResponses, WebhooksListEndpointsData, WebhooksListEndpointsErrors, WebhooksListEndpointsResponses, WebhooksListEventTypesData, WebhooksListEventTypesErrors, WebhooksListEventTypesResponses, WebhooksPingData, WebhooksPingErrors, WebhooksPingResponses, WebhooksUpdateEndpointData, WebhooksUpdateEndpointErrors, WebhooksUpdateEndpointResponses } 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?: keyof ClientMeta extends never ? Record<string, unknown> : ClientMeta;\n};\n\n/**\n * List profiles\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the profiles under your account, newest first.\n */\nexport const profilesList = <ThrowOnError extends boolean = true>(options?: Options<ProfilesListData, ThrowOnError>): RequestResult<ProfilesListResponses, ProfilesListErrors, ThrowOnError> => (options?.client ?? client).get<ProfilesListResponses, ProfilesListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles',\n ...options\n});\n\n/**\n * Create a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:write` with account-wide profile scope (`all`); a profile-scoped token cannot create.\n *\n * Creates a profile — a client/brand workspace under your account, and the unit connections attach to.\n */\nexport const profilesCreate = <ThrowOnError extends boolean = true>(options: Options<ProfilesCreateData, ThrowOnError>): RequestResult<ProfilesCreateResponses, ProfilesCreateErrors, ThrowOnError> => (options.client ?? client).post<ProfilesCreateResponses, ProfilesCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:delete` scoped to the target profile.\n *\n * Deletes a profile. The profile must have no connections — delete its connections first (and a connection in turn cannot be deleted while a post still publishes through it).\n */\nexport const profilesDelete = <ThrowOnError extends boolean = true>(options: Options<ProfilesDeleteData, ThrowOnError>): RequestResult<ProfilesDeleteResponses, ProfilesDeleteErrors, ThrowOnError> => (options.client ?? client).delete<ProfilesDeleteResponses, ProfilesDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options\n});\n\n/**\n * Retrieve a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:read` scoped to the target profile.\n *\n * Retrieves a single profile by id.\n */\nexport const profilesGet = <ThrowOnError extends boolean = true>(options: Options<ProfilesGetData, ThrowOnError>): RequestResult<ProfilesGetResponses, ProfilesGetErrors, ThrowOnError> => (options.client ?? client).get<ProfilesGetResponses, ProfilesGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options\n});\n\n/**\n * Update a profile\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `profiles:write` scoped to the target profile.\n *\n * Updates a profile. Send only the fields you want to change; provide at least one.\n */\nexport const profilesUpdate = <ThrowOnError extends boolean = true>(options: Options<ProfilesUpdateData, ThrowOnError>): RequestResult<ProfilesUpdateResponses, ProfilesUpdateErrors, ThrowOnError> => (options.client ?? client).patch<ProfilesUpdateResponses, ProfilesUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List a profile's connections\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the target profile.\n *\n * Lists the external accounts connected to a profile, most recent first. Returns 404 if the profile doesn't exist in your account.\n */\nexport const connectionsListByProfile = <ThrowOnError extends boolean = true>(options: Options<ConnectionsListByProfileData, ThrowOnError>): RequestResult<ConnectionsListByProfileResponses, ConnectionsListByProfileErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsListByProfileResponses, ConnectionsListByProfileErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}/connections',\n ...options\n});\n\n/**\n * Delete a connection\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:delete` scoped to the profile that owns the connection.\n *\n * Disconnects a connection. Returns a deletion marker; returns 404 if it does not exist in your account. Disconnect is unconditional — any scheduled posts that target this connection are not blocked; they fail gracefully at publish time with a `connection_removed` error until you reconnect and reschedule.\n */\nexport const connectionsDelete = <ThrowOnError extends boolean = true>(options: Options<ConnectionsDeleteData, ThrowOnError>): RequestResult<ConnectionsDeleteResponses, ConnectionsDeleteErrors, ThrowOnError> => (options.client ?? client).delete<ConnectionsDeleteResponses, ConnectionsDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options\n});\n\n/**\n * Retrieve a connection\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Retrieves a single connection by id.\n */\nexport const connectionsGet = <ThrowOnError extends boolean = true>(options: Options<ConnectionsGetData, ThrowOnError>): RequestResult<ConnectionsGetResponses, ConnectionsGetErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsGetResponses, ConnectionsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options\n});\n\n/**\n * Select a connection account\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:write` scoped to the profile that owns the connection.\n *\n * Activates a pending connection by choosing which external account (e.g. which Facebook Page) it uses. The account must be one reachable through the connection’s OAuth grant; its canonical name + currency are resolved server-side from discovery, so the stored display values can’t be spoofed by the caller.\n */\nexport const connectionsSelect = <ThrowOnError extends boolean = true>(options: Options<ConnectionsSelectData, ThrowOnError>): RequestResult<ConnectionsSelectResponses, ConnectionsSelectErrors, ThrowOnError> => (options.client ?? client).patch<ConnectionsSelectResponses, ConnectionsSelectErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List a connection’s discoverable accounts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Lists the external accounts reachable through this connection’s OAuth grant — the picker shown after OAuth, while the connection is still pending account selection. Returns 404 if the connection does not exist in your account, and 501 if account discovery is not yet supported for the connection’s platform.\n */\nexport const connectionsListAccounts = <ThrowOnError extends boolean = true>(options: Options<ConnectionsListAccountsData, ThrowOnError>): RequestResult<ConnectionsListAccountsResponses, ConnectionsListAccountsErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsListAccountsResponses, ConnectionsListAccountsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/accounts',\n ...options\n});\n\n/**\n * Connect a platform account\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:write` scoped to the target profile.\n *\n * Starts an OAuth connect flow for a platform on this profile. Returns a short-lived session the client uses to authorize; the connection is created once authorization succeeds.\n */\nexport const connectionsConnect = <ThrowOnError extends boolean = true>(options: Options<ConnectionsConnectData, ThrowOnError>): RequestResult<ConnectionsConnectResponses, ConnectionsConnectErrors, ThrowOnError> => (options.client ?? client).post<ConnectionsConnectResponses, ConnectionsConnectErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/profiles/{id}/connect',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve account analytics\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Reads a connected account’s totals and its daily activity live from the platform: the last 60 days for TikTok, 30 for Instagram and 90 for Facebook Pages. TikTok, Instagram and Facebook Page connections are supported. TikTok finalizes a day 24–48 hours after it ends, and Meta updates Page insights about once a day. Returns 404 if the connection does not exist in your account, 501 if its platform has no analytics yet, 409 if the account must be reconnected, and 502 if the platform’s call fails.\n */\nexport const connectionsGetAnalytics = <ThrowOnError extends boolean = true>(options: Options<ConnectionsGetAnalyticsData, ThrowOnError>): RequestResult<ConnectionsGetAnalyticsResponses, ConnectionsGetAnalyticsErrors, ThrowOnError> => (options.client ?? client).get<ConnectionsGetAnalyticsResponses, ConnectionsGetAnalyticsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/analytics',\n ...options\n});\n\n/**\n * List media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the media assets under your account, newest first. Filter by profile, status, kind, your own external_id, or metadata.\n */\nexport const mediaList = <ThrowOnError extends boolean = true>(options?: Options<MediaListData, ThrowOnError>): RequestResult<MediaListResponses, MediaListErrors, ThrowOnError> => (options?.client ?? client).get<MediaListResponses, MediaListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media',\n ...options\n});\n\n/**\n * Upload media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the target profile.\n *\n * Creates a media asset. Two ways to supply the bytes: (1) omit `source_url` and upload the bytes with the returned multipart `upload` session — chunk the file at `part_size`, sign each part via `POST /media/{id}/multipart/sign`, PUT the bytes, then `POST /media/{id}/multipart/complete` (the direct-upload path; `upload` is non-null and resumable), or (2) supply a public `https` `source_url` and we fetch the bytes server-side, validate, transform, and store them (the import path; `upload` is null). Either way the asset settles through the same probe/transform flow.\n */\nexport const mediaCreate = <ThrowOnError extends boolean = true>(options: Options<MediaCreateData, ThrowOnError>): RequestResult<MediaCreateResponses, MediaCreateErrors, ThrowOnError> => (options.client ?? client).post<MediaCreateResponses, MediaCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:delete` scoped to the profile that owns the media asset.\n *\n * Deletes a media asset and its stored renditions.\n */\nexport const mediaDelete = <ThrowOnError extends boolean = true>(options: Options<MediaDeleteData, ThrowOnError>): RequestResult<MediaDeleteResponses, MediaDeleteErrors, ThrowOnError> => (options.client ?? client).delete<MediaDeleteResponses, MediaDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options\n});\n\n/**\n * Retrieve media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:read` scoped to the profile that owns the media asset.\n *\n * Retrieves a media asset, including its per-platform processing status and renditions.\n */\nexport const mediaGet = <ThrowOnError extends boolean = true>(options: Options<MediaGetData, ThrowOnError>): RequestResult<MediaGetResponses, MediaGetErrors, ThrowOnError> => (options.client ?? client).get<MediaGetResponses, MediaGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options\n});\n\n/**\n * Update media\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Updates a media asset (alt text, metadata, external_id) or adds `targets` to pre-warm more platforms. Send only the fields to change.\n */\nexport const mediaUpdate = <ThrowOnError extends boolean = true>(options: Options<MediaUpdateData, ThrowOnError>): RequestResult<MediaUpdateResponses, MediaUpdateErrors, ThrowOnError> => (options.client ?? client).patch<MediaUpdateResponses, MediaUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Sign an upload part\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Returns a presigned URL to PUT one part of a multipart upload. Chunk the file at the session’s `part_size` and sign each 1-indexed part; read each part PUT’s `ETag` for `complete`.\n */\nexport const mediaSignPart = <ThrowOnError extends boolean = true>(options: Options<MediaSignPartData, ThrowOnError>): RequestResult<MediaSignPartResponses, MediaSignPartErrors, ThrowOnError> => (options.client ?? client).post<MediaSignPartResponses, MediaSignPartErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/sign',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * List uploaded parts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Lists the parts already uploaded for this asset’s multipart upload (ascending). Skip re-uploading these to resume after a dropped connection.\n */\nexport const mediaListParts = <ThrowOnError extends boolean = true>(options: Options<MediaListPartsData, ThrowOnError>): RequestResult<MediaListPartsResponses, MediaListPartsErrors, ThrowOnError> => (options.client ?? client).get<MediaListPartsResponses, MediaListPartsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/parts',\n ...options\n});\n\n/**\n * Complete an upload\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Finishes a multipart upload by assembling the uploaded parts. Send every part as `{ part_number, etag }`. Idempotent: completing an already-finished upload returns the asset.\n */\nexport const mediaComplete = <ThrowOnError extends boolean = true>(options: Options<MediaCompleteData, ThrowOnError>): RequestResult<MediaCompleteResponses, MediaCompleteErrors, ThrowOnError> => (options.client ?? client).post<MediaCompleteResponses, MediaCompleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/complete',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Abort an upload\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `media:write` scoped to the profile that owns the media asset.\n *\n * Aborts an in-flight multipart upload and discards its parts. Idempotent: aborting an already-finished or unknown upload still returns the asset.\n */\nexport const mediaAbort = <ThrowOnError extends boolean = true>(options: Options<MediaAbortData, ThrowOnError>): RequestResult<MediaAbortResponses, MediaAbortErrors, ThrowOnError> => (options.client ?? client).post<MediaAbortResponses, MediaAbortErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/media/{id}/multipart/abort',\n ...options\n});\n\n/**\n * List posts\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` (the response is limited to the profiles the token is scoped to).\n *\n * Lists the posts under your account, newest first. Filter by profile or your own external_id.\n */\nexport const postsList = <ThrowOnError extends boolean = true>(options?: Options<PostsListData, ThrowOnError>): RequestResult<PostsListResponses, PostsListErrors, ThrowOnError> => (options?.client ?? client).get<PostsListResponses, PostsListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts',\n ...options\n});\n\n/**\n * Create a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the target profile.\n *\n * Composes a post + its per-channel variants. `publish` decides the outcome: `now` publishes immediately, `schedule` publishes at `schedule_at`, `draft` just stores it. The response is the post in its current state. A post with a YouTube variant publishes in the background, and the request waits up to 4 minutes for it; if it is still `publishing` after the wait, use the `post.*` webhooks or poll `GET /v1/posts/{id}`.\n */\nexport const postsCreate = <ThrowOnError extends boolean = true>(options: Options<PostsCreateData, ThrowOnError>): RequestResult<PostsCreateResponses, PostsCreateErrors, ThrowOnError> => (options.client ?? client).post<PostsCreateResponses, PostsCreateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:delete` scoped to the profile that owns the post.\n *\n * Deletes a post and its variants. Returns a deletion marker; 404 if it does not exist in your account. Already-published posts are not retracted from the platform.\n */\nexport const postsDelete = <ThrowOnError extends boolean = true>(options: Options<PostsDeleteData, ThrowOnError>): RequestResult<PostsDeleteResponses, PostsDeleteErrors, ThrowOnError> => (options.client ?? client).delete<PostsDeleteResponses, PostsDeleteErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options\n});\n\n/**\n * Retrieve a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the profile that owns the post.\n *\n * Retrieves a single post by id, including its per-channel variants and their derived status.\n */\nexport const postsGet = <ThrowOnError extends boolean = true>(options: Options<PostsGetData, ThrowOnError>): RequestResult<PostsGetResponses, PostsGetErrors, ThrowOnError> => (options.client ?? client).get<PostsGetResponses, PostsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options\n});\n\n/**\n * Update a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the profile that owns the post.\n *\n * Edits a post and/or transitions its publish state (`draft` / `schedule` / `now`). Valid only while the post is draft or scheduled. Send only the fields to change; providing `variants` replaces the whole set. The response is the post in its current state. A post with a YouTube variant publishes in the background, and the request waits up to 4 minutes for it; if it is still `publishing` after the wait, use the `post.*` webhooks or poll `GET /v1/posts/{id}`.\n */\nexport const postsUpdate = <ThrowOnError extends boolean = true>(options: Options<PostsUpdateData, ThrowOnError>): RequestResult<PostsUpdateResponses, PostsUpdateErrors, ThrowOnError> => (options.client ?? client).patch<PostsUpdateResponses, PostsUpdateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retry a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:write` scoped to the profile that owns the post.\n *\n * Re-publishes the post’s failed variants now, through the same path as `publish: \"now\"`. Published variants are never touched, and a failure that may already be live on the platform (e.g. `x_publish_failed`) is never re-sent, so a retry can’t post twice. Failed attempts are never billed. The response is the post in its current state. A post with a YouTube variant publishes in the background, and the request waits up to 4 minutes for it; if it is still `publishing` after the wait, use the `post.*` webhooks or poll `GET /v1/posts/{id}`.\n */\nexport const postsRetry = <ThrowOnError extends boolean = true>(options: Options<PostsRetryData, ThrowOnError>): RequestResult<PostsRetryResponses, PostsRetryErrors, ThrowOnError> => (options.client ?? client).post<PostsRetryResponses, PostsRetryErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}/retry',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Validate a post\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the target profile.\n *\n * Runs the exact ownership + publish-readiness checks the create path runs under dry_run, with no side effects. Returns a per-issue verdict (`publishable` + `issues[]`) on 200; a reference to a connection/media outside the profile is a typed 422.\n */\nexport const postsValidate = <ThrowOnError extends boolean = true>(options: Options<PostsValidateData, ThrowOnError>): RequestResult<PostsValidateResponses, PostsValidateErrors, ThrowOnError> => (options.client ?? client).post<PostsValidateResponses, PostsValidateErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/validate',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Retrieve post analytics\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `posts:read` scoped to the profile that owns the post.\n *\n * Reads each variant’s metrics live from its platform. TikTok, Instagram and Facebook Page variants return metrics; X and LinkedIn variants return `analytics_not_supported`. A variant with nothing to read (not published, connection removed, not public, deleted, or not yet reported by the platform) returns `analytics_no_data`. TikTok updates metrics 24–48 hours after the activity, and Meta can take up to 48 hours to report a new post. Returns 404 if the post does not exist in your account, 409 if an account must be reconnected, and 502 if the platform’s call fails.\n */\nexport const postsGetAnalytics = <ThrowOnError extends boolean = true>(options: Options<PostsGetAnalyticsData, ThrowOnError>): RequestResult<PostsGetAnalyticsResponses, PostsGetAnalyticsErrors, ThrowOnError> => (options.client ?? client).get<PostsGetAnalyticsResponses, PostsGetAnalyticsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/posts/{id}/analytics',\n ...options\n});\n\n/**\n * Retrieve TikTok creator info\n *\n * **Authentication.** Secret `pr_` API key, or a browser-safe frontend token granting `connections:read` scoped to the profile that owns the connection.\n *\n * Retrieves a TikTok account’s publish options live from TikTok: the creator nickname + avatar, the audiences (`privacy_options`) available for photo posts, the Comment/Duet/Stitch availability, and the maximum video length. Returns 404 if the connection does not exist in your account or is not a TikTok connection, 409 if the TikTok account must be reconnected, and 502 if TikTok’s call fails.\n */\nexport const tiktokCreatorInfo = <ThrowOnError extends boolean = true>(options: Options<TiktokCreatorInfoData, ThrowOnError>): RequestResult<TiktokCreatorInfoResponses, TiktokCreatorInfoErrors, ThrowOnError> => (options.client ?? client).get<TiktokCreatorInfoResponses, TiktokCreatorInfoErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }, {\n key: 'frontendToken',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/connections/{id}/tiktok/creator-info',\n ...options\n});\n\n/**\n * List request logs\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the API activity for your account — one entry per action, newest first. Filter by profile, connection, platform, status, source, action, or time range.\n */\nexport const logsList = <ThrowOnError extends boolean = true>(options?: Options<LogsListData, ThrowOnError>): RequestResult<LogsListResponses, LogsListErrors, ThrowOnError> => (options?.client ?? client).get<LogsListResponses, LogsListErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/logs',\n ...options\n});\n\n/**\n * Retrieve a request log\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Retrieves a single request log entry by id.\n */\nexport const logsGet = <ThrowOnError extends boolean = true>(options: Options<LogsGetData, ThrowOnError>): RequestResult<LogsGetResponses, LogsGetErrors, ThrowOnError> => (options.client ?? client).get<LogsGetResponses, LogsGetErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/logs/{id}',\n ...options\n});\n\n/**\n * List webhook endpoints\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the webhook endpoints registered for your account.\n */\nexport const webhooksListEndpoints = <ThrowOnError extends boolean = true>(options?: Options<WebhooksListEndpointsData, ThrowOnError>): RequestResult<WebhooksListEndpointsResponses, WebhooksListEndpointsErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListEndpointsResponses, WebhooksListEndpointsErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints',\n ...options\n});\n\n/**\n * Create a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Registers a URL to receive the chosen event types. Delivery, retries, and signing are handled for you.\n */\nexport const webhooksCreateEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksCreateEndpointData, ThrowOnError>): RequestResult<WebhooksCreateEndpointResponses, WebhooksCreateEndpointErrors, ThrowOnError> => (options.client ?? client).post<WebhooksCreateEndpointResponses, WebhooksCreateEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Deletes a webhook endpoint. Delivery to it stops immediately.\n */\nexport const webhooksDeleteEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksDeleteEndpointData, ThrowOnError>): RequestResult<WebhooksDeleteEndpointResponses, WebhooksDeleteEndpointErrors, ThrowOnError> => (options.client ?? client).delete<WebhooksDeleteEndpointResponses, WebhooksDeleteEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options\n});\n\n/**\n * Retrieve a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Retrieves a single webhook endpoint by id.\n */\nexport const webhooksGetEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksGetEndpointData, ThrowOnError>): RequestResult<WebhooksGetEndpointResponses, WebhooksGetEndpointErrors, ThrowOnError> => (options.client ?? client).get<WebhooksGetEndpointResponses, WebhooksGetEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options\n});\n\n/**\n * Update a webhook endpoint\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Updates a webhook endpoint. Send only the fields you want to change; provide at least one.\n */\nexport const webhooksUpdateEndpoint = <ThrowOnError extends boolean = true>(options: Options<WebhooksUpdateEndpointData, ThrowOnError>): RequestResult<WebhooksUpdateEndpointResponses, WebhooksUpdateEndpointErrors, ThrowOnError> => (options.client ?? client).patch<WebhooksUpdateEndpointResponses, WebhooksUpdateEndpointErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/endpoints/{id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Create a webhook portal link\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Mints a one-time App Portal URL where you (or your customer) self-serve webhook delivery logs and signing secrets.\n */\nexport const webhooksCreatePortal = <ThrowOnError extends boolean = true>(options?: Options<WebhooksCreatePortalData, ThrowOnError>): RequestResult<WebhooksCreatePortalResponses, WebhooksCreatePortalErrors, ThrowOnError> => (options?.client ?? client).post<WebhooksCreatePortalResponses, WebhooksCreatePortalErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/portal',\n ...options\n});\n\n/**\n * List webhook event types\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Lists the event types you can subscribe an endpoint to (the catalog).\n */\nexport const webhooksListEventTypes = <ThrowOnError extends boolean = true>(options?: Options<WebhooksListEventTypesData, ThrowOnError>): RequestResult<WebhooksListEventTypesResponses, WebhooksListEventTypesErrors, ThrowOnError> => (options?.client ?? client).get<WebhooksListEventTypesResponses, WebhooksListEventTypesErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/event-types',\n ...options\n});\n\n/**\n * Send a test event\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Emits a `webhook.ping` event to your subscribed endpoints so you can verify delivery end to end.\n */\nexport const webhooksPing = <ThrowOnError extends boolean = true>(options: Options<WebhooksPingData, ThrowOnError>): RequestResult<WebhooksPingResponses, WebhooksPingErrors, ThrowOnError> => (options.client ?? client).post<WebhooksPingResponses, WebhooksPingErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/webhooks/ping',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Mint a scoped frontend token\n *\n * **Authentication.** Secret `pr_` API key only — this endpoint cannot be called with a browser token.\n *\n * Mints a short-lived, profile-scoped token from your secret `pr_` key. Call this from your backend; the returned token is safe to hand to a browser, which then calls the Postrun API directly. The secret key never touches the browser.\n */\nexport const tokensMint = <ThrowOnError extends boolean = true>(options: Options<TokensMintData, ThrowOnError>): RequestResult<TokensMintResponses, TokensMintErrors, ThrowOnError> => (options.client ?? client).post<TokensMintResponses, TokensMintErrors, ThrowOnError>({\n security: [{\n key: 'secretKey',\n scheme: 'bearer',\n type: 'http'\n }],\n url: '/tokens',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n","import type {\n ConnectionsConnectData,\n ConnectionsConnectResponse,\n ConnectionsGetResponse,\n ConnectionsListAccountsResponse,\n ConnectionsListByProfileData,\n ConnectionsListByProfileResponse,\n ConnectionsSelectData,\n MediaCreateData,\n MediaCreateResponse,\n MediaGetResponse,\n MediaListData,\n MediaListResponse,\n MediaUpdateData,\n PostsCreateData,\n PostsGetResponse,\n PostsListData,\n PostsListResponse,\n PostsUpdateData,\n PostsValidateData,\n PostsValidateResponse,\n ProfilesCreateData,\n ProfilesGetResponse,\n ProfilesListData,\n ProfilesListResponse,\n ProfilesUpdateData,\n TiktokCreatorInfoResponse,\n} from './client/types.gen';\n\n/**\n * Resource and input shapes, DERIVED from the generated Hey API operation types\n * (`*Data` = request `{ body, path, query }`, `*Response` = success body). Never\n * hand-declared — there is exactly one definition of each, sourced from the\n * contract, so `pnpm generate` keeps them in lockstep with the live API.\n */\n\n/** A profile — a client/brand workspace. */\nexport type Profile = ProfilesGetResponse;\n\n/** A page of profiles (the list envelope). */\nexport type ProfileList = ProfilesListResponse;\n\n/** Query parameters for listing profiles (filters + pagination). */\nexport type ListProfilesQuery = NonNullable<ProfilesListData['query']>;\n\n/** Request body to create a profile. */\nexport type CreateProfileInput = NonNullable<ProfilesCreateData['body']>;\n\n/** Request body to update a profile (send only what changes). */\nexport type UpdateProfileInput = NonNullable<ProfilesUpdateData['body']>;\n\n/** A connected social/ads account on a profile. */\nexport type Connection = ConnectionsGetResponse;\n\n/** A page of a profile's connections. */\nexport type ConnectionList = ConnectionsListByProfileResponse;\n\n/** Query filters for listing a profile's connections (kind / status / pagination). */\nexport type ListConnectionsQuery = NonNullable<\n ConnectionsListByProfileData['query']\n>;\n\n/** A connection's kind — `posting` (social) or `ads`. From the contract. */\nexport type ConnectionKind = NonNullable<ListConnectionsQuery['kind']>;\n\n/** A connection's lifecycle status — `pending` / `active` / `needs_reauth`. */\nexport type ConnectionStatus = NonNullable<ListConnectionsQuery['status']>;\n\n/** The session returned when starting a connect (OAuth) flow. */\nexport type ConnectSession = ConnectionsConnectResponse;\n\n/** A platform a connection can start an OAuth connect flow for. */\nexport type ConnectablePlatform =\n NonNullable<ConnectionsConnectData['body']>['platform'];\n\n/** Accounts discoverable on a pending connection, for the selection step. */\nexport type DiscoverableAccountList = ConnectionsListAccountsResponse;\n\n/**\n * A TikTok creator's live publish options for a connection — the data TikTok's\n * publishing UI renders: `creator` (nickname + avatar), the `privacy_options` to\n * offer for PHOTO posts (with NO default — videos publish publicly), the\n * positive `interaction` (allowed) flags for Comment/Duet/Stitch toggles, and\n * `max_video_duration_sec`. Derived from the contract, never hand-declared.\n */\nexport type TikTokCreatorInfo = TiktokCreatorInfoResponse;\n\n/**\n * One TikTok privacy level — a member of the closed audience union\n * (`PUBLIC_TO_EVERYONE` / `MUTUAL_FOLLOW_FRIENDS` / `FOLLOWER_OF_CREATOR` /\n * `SELF_ONLY`). The per-account ALLOWED subset is `TikTokCreatorInfo.privacy_options`;\n * this is one value from it (what you bind a dropdown option to). Derived from\n * the contract, never hand-declared; render it with {@link tiktokPrivacyLabel}.\n */\nexport type TikTokPrivacyLevel = TikTokCreatorInfo['privacy_options'][number];\n\n/** Request body to select an account on a pending connection. */\nexport type SelectAccountInput = NonNullable<ConnectionsSelectData['body']>;\n\n/** The create/update post body, derived from the contract. */\ntype CreatePostBody = NonNullable<PostsCreateData['body']>;\n\n/**\n * One channel's variant on WRITE — the per-platform discriminated-union member\n * with fully typed native `settings`. Preferred over the read resource's variant\n * for anything that inspects settings (on read, `settings` is an opaque record);\n * it is also the compose-time shape, which is exactly what a live preview renders.\n */\nexport type PostVariantInput = CreatePostBody['variants'][number];\n\n/** The X (Twitter) member of the write variant union — typed native settings\n * (`quote_tweet_id`, `reply`, `poll`, …). Narrowed from the contract, never\n * hand-declared. */\nexport type XPostVariant = Extract<PostVariantInput, { platform: 'x' }>;\n\n/** The LinkedIn member of the write variant union — typed native settings\n * (`visibility`, `article`, `poll`, `document`, `mentions`). The `content_kind`\n * shape is server-DERIVED and read-only (see {@link PostVariant}). Narrowed from\n * the contract, never hand-declared. */\nexport type LinkedInPostVariant = Extract<\n PostVariantInput,\n { platform: 'linkedin' }\n>;\n\n/** The TikTok member of the write variant union — typed native settings\n * (photo-only `privacy_level`, `disable_comment`/`disable_duet`/`disable_stitch`,\n * `is_branded_content`/`is_brand_organic`, `is_ai_generated`, photo/video cover).\n * Narrowed from the contract, never hand-declared — it is the compose-time shape a\n * live TikTok preview renders. */\nexport type TikTokPostVariant = Extract<\n PostVariantInput,\n { platform: 'tiktok' }\n>;\n\n/** The Instagram member of the write variant union — typed native settings\n * (`collaborators`, `user_tags`, `location_id`, and the reel-only\n * `share_to_feed`/`audio_name`/`cover_url`/`thumb_offset`). The `media_type` shape\n * is server-DERIVED and read-only (see {@link PostVariant}). Narrowed from the\n * contract, never hand-declared — the compose-time shape an IG preview renders. */\nexport type InstagramPostVariant = Extract<\n PostVariantInput,\n { platform: 'instagram' }\n>;\n\n/** The YouTube member of the write variant union — typed native settings\n * (`title`, `privacy_status`, `tags`, `category_id`, `thumbnail_media_id`, the\n * made-for-kids and synthetic-media declarations); `body` is the description.\n * The `short` vs `video` shape is server-DERIVED from the video's duration and\n * size. Narrowed from the contract, never hand-declared. */\nexport type YouTubePostVariant = Extract<\n PostVariantInput,\n { platform: 'youtube' }\n>;\n\n/** A post — its variants, schedule, and derived status (the read resource). */\nexport type Post = PostsGetResponse;\n\n/**\n * One per-platform variant on a RETURNED post (the read resource): its own\n * `status`, a typed `error` ({@link PostVariantError}) when it failed, and a\n * `result` (platform id + permalink) when it published. Derived from the post\n * resource, never hand-declared. (For inspecting compose-time native `settings`,\n * prefer {@link PostVariantInput}; on read `settings` is opaque.)\n */\nexport type PostVariant = Post['variants'][number];\n\n/**\n * A variant's typed publish failure — `{ code, message }`. The `code` is the\n * adapter's own minted reason (`x_access_not_permitted`, `linkedin_auth_expired`,\n * …); it stays a `string` because adapter codes are minted outside the API's\n * closed registry. Derived from the variant, never hand-declared.\n */\nexport type PostVariantError = NonNullable<PostVariant['error']>;\n\n/**\n * Did the post fully publish? `true` ONLY when the rollup `status` is\n * `'published'` — `partially_published` and `failed` are NOT success. The single\n * pure predicate every surface (SDK, React hook, composer) shares, so \"success\"\n * has exactly one definition.\n */\nexport const isPublished = (post: Post): boolean =>\n post.status === 'published';\n\n/**\n * The variants that FAILED to publish, each carrying its typed {@link\n * PostVariantError}. Empty when none failed. The pure helper behind\n * `useCreatePost().failedVariants` — usable directly from a non-React caller so\n * the \"which platforms failed, and why\" projection has one definition.\n */\nexport const failedVariants = (post: Post): PostVariant[] =>\n post.variants.filter((variant) => variant.status === 'failed');\n\n/** A page of posts (the calendar/queue list). */\nexport type PostList = PostsListResponse;\n\n/** Query parameters for listing posts (filters + pagination). */\nexport type ListPostsQuery = NonNullable<PostsListData['query']>;\n\n/**\n * A post's derived rollup status — the values accepted by the list `status`\n * filter (draft / scheduled / publishing / partially_published / published /\n * failed). Sourced from the generated query contract, never hand-listed.\n */\nexport type PostStatus = NonNullable<ListPostsQuery['status']>[number];\n\n/** The full create-post request body — what `buildCreatePost` produces. */\nexport type CreatePostInput = CreatePostBody;\n\n/** The update-post request body — what `buildUpdatePost` produces. */\nexport type UpdatePostInput = NonNullable<PostsUpdateData['body']>;\n\n/**\n * The validate-post request body — the composition-only subset of the create\n * body (`profile_id` + `variants`). `buildCreatePost` produces a superset, so\n * its output is structurally assignable here. Derived from the contract.\n */\nexport type ValidatePostInput = NonNullable<PostsValidateData['body']>;\n\n/**\n * The server's publish-readiness verdict for a composed post — `{ object,\n * publishable, issues }`. The SERVER is the sole authority on validity; the SDK\n * only builds a best-effort payload and relays this result. Derived from the\n * contract, never hand-declared.\n */\nexport type PostValidation = PostsValidateResponse;\n\n/**\n * One typed, per-variant problem in a `PostValidation` — a closed-registry\n * `code`, a human `message`, the `variant_index` + `path` it applies to, and the\n * optional `hint`/`allowed`/`got` the rule produced. Narrowed from the contract.\n */\nexport type ValidationIssue = PostValidation['issues'][number];\n\n/** A posting platform — the variant discriminator (x / linkedin / …). */\nexport type PostPlatform = PostVariantInput['platform'];\n\n/**\n * The post shape (`text` / `single_image` / `multi_image` / `video` / `reel` /\n * `carousel`) — DERIVED server-side from the attached media, never sent on write.\n * It surfaces on the READ variant (`PostVariant.post_type`, null while\n * undetermined); this strips that null to the concrete union. Derived from the\n * contract, never hand-listed.\n */\nexport type PostType = NonNullable<PostVariant['post_type']>;\n\n/** The native `settings` shape for a given platform (typed per channel). */\nexport type SettingsFor<P extends PostPlatform> = Extract<\n PostVariantInput,\n { platform: P }\n>['settings'];\n\n/** Publish mode: `now` | `schedule` | `draft`. */\nexport type PublishMode = NonNullable<CreatePostBody['publish']>;\n\n/** Customer metadata on a post (the shared scalar map). */\nexport type PostMetadata = NonNullable<CreatePostBody['metadata']>;\n\n/** A media asset (image/video/gif/document) with its per-platform renditions. */\nexport type MediaResource = MediaGetResponse;\n\n/**\n * A media asset's kind (image / video / gif / document), from the contract. The\n * resource's `kind` is nullable only in the transient pre-detection `uploading`\n * window; this is the concrete family, so it strips that null — what you pass to\n * create/upload and switch over on a settled asset.\n */\nexport type MediaKind = NonNullable<MediaResource['kind']>;\n\n/** A media render target — one of the post platforms. */\nexport type MediaTarget = NonNullable<\n NonNullable<MediaCreateData['body']>['targets']\n>[number];\n\n/** The create-media response: the resource plus a multipart upload session. */\nexport type CreateMediaResult = MediaCreateResponse;\n\n/** Request body to create a media asset. */\nexport type CreateMediaInput = NonNullable<MediaCreateData['body']>;\n\n/** Request body to update a media asset (alt text / metadata / extend targets). */\nexport type UpdateMediaInput = NonNullable<MediaUpdateData['body']>;\n\n/** A page of media assets (the list envelope). */\nexport type MediaList = MediaListResponse;\n\n/** Query parameters for listing media (filters + pagination). */\nexport type ListMediaQuery = NonNullable<MediaListData['query']>;\n\n/**\n * A media asset's lifecycle state — the values the list `status` filter accepts\n * (uploading / processing / ready / failed). From the contract, never hand-listed.\n */\nexport type MediaStatus = NonNullable<ListMediaQuery['status']>;\n\n/**\n * Customer metadata — a flat scalar map (`string | number | boolean`; ≤50 keys,\n * keys ≤40 chars, ≤500-char strings, 16 KiB serialized). The contract uses this\n * SAME shape on every stored resource (profiles / posts / media); this alias is\n * derived from the media write body as a stable representative, so it's the type\n * to annotate metadata you send — never `Record<string, unknown>`. (The three\n * resources share one structural shape in the spec; were the API ever to diverge\n * one, prefer that resource's own `*['metadata']` for it.)\n */\nexport type Metadata = NonNullable<CreateMediaInput['metadata']>;\n\n/**\n * A metadata filter for list endpoints — the same scalar map, matched by exact\n * containment (multiple keys ANDed; omit for no filter). Pass the object directly\n * from the SDK/React hooks; the client URL-encodes it for the REST query.\n */\nexport type MetadataFilter = NonNullable<ListMediaQuery['metadata']>;\n","import type { AwsS3Part } from '@uppy/aws-s3';\n\nimport type {\n MediaCompleteData,\n MediaListPartsResponse,\n} from '../client/types.gen';\n\n/**\n * The casing seam between Uppy's `@uppy/aws-s3` callbacks (which speak S3\n * PascalCase — `{ PartNumber, ETag, Size }`) and our endpoints (which speak the\n * API's snake_case — `{ part_number, etag, size }`). Uppy reads the parts we hand\n * it back from `listParts` and hands us the parts to send to `complete`, so a\n * silent mismatch here would break resume/complete with no error. Both maps are\n * pure and tested; the shapes are DERIVED from the generated client + Uppy types,\n * never hand-declared.\n */\n\n/** One part as our `GET /media/{id}/multipart/parts` endpoint returns it. */\ntype ApiListedPart = MediaListPartsResponse['parts'][number];\n\n/** One part as our `POST /media/{id}/multipart/complete` body carries it. */\ntype ApiCompletePart = NonNullable<MediaCompleteData['body']>['parts'][number];\n\n/**\n * Map our snake_case listed parts → Uppy's S3 `AwsS3Part[]` so a resume after a\n * dropped connection skips the parts R2 already holds. A 1:1 field map — the\n * endpoint's `parts` contract guarantees `part_number`/`etag`/`size` on every\n * entry, so there's nothing to drop.\n */\nexport function listedPartsToS3(\n parts: readonly ApiListedPart[],\n): AwsS3Part[] {\n return parts.map((part) => ({\n PartNumber: part.part_number,\n ETag: part.etag,\n Size: part.size,\n }));\n}\n\n/**\n * Map Uppy's S3 `AwsS3Part[]` (handed to `completeMultipartUpload`) → our\n * snake_case `complete` body parts. `AwsS3Part` types `PartNumber`/`ETag` as\n * optional; a part Uppy completes with always has both, but we assert the\n * invariant explicitly rather than cast — a missing field is a hard error, not a\n * silently-dropped part.\n */\nexport function s3PartsToComplete(\n parts: readonly AwsS3Part[],\n): ApiCompletePart[] {\n return parts.map((part) => {\n if (part.PartNumber === undefined || part.ETag === undefined) {\n throw new Error(\n 'Multipart complete received a part without PartNumber/ETag.',\n );\n }\n return { part_number: part.PartNumber, etag: part.ETag };\n });\n}\n","/**\n * A failed direct-to-storage (multipart) upload. `cause` carries the underlying\n * Uppy / network / API error so callers can inspect the real reason; `message` is\n * a short human summary. Thrown by {@link uploadFile} on a hard upload failure\n * (one or more parts could not be uploaded, or `complete` failed).\n */\nexport class UploadError extends Error {\n constructor(message: string, options?: { cause?: unknown }) {\n super(message, options);\n this.name = 'UploadError';\n }\n}\n","import Uppy from '@uppy/core';\nimport AwsS3 from '@uppy/aws-s3';\n\nimport type { PostrunClient } from '../client';\nimport {\n mediaAbort,\n mediaComplete,\n mediaListParts,\n mediaSignPart,\n} from '../client/sdk.gen';\nimport type { MediaCreateResponse } from '../client/types.gen';\nimport { listedPartsToS3, s3PartsToComplete } from './casing';\nimport { UploadError } from './upload-error';\n\n/**\n * The multipart session the create response carries on its `upload` field — the\n * cached `{ upload_id, key, part_size, expires_at }` Uppy's `createMultipartUpload`\n * returns without a second HTTP call. Derived from the contract, never declared.\n */\nexport type MultipartSession = NonNullable<MediaCreateResponse['upload']>;\n\nexport interface UploadFileOptions {\n /** The media id the create call returned — binds the multipart sub-endpoints. */\n mediaId: string;\n /** The cached `upload` session from the create response (`upload_id`/`key`/…). */\n session: MultipartSession;\n /** The typed client the sub-endpoint calls go through (auth + base URL). */\n client: PostrunClient;\n /** Fraction uploaded, 0..1, as bytes flow; called once with 1 on success. */\n onProgress?: (fraction: number) => void;\n /** Abort the in-flight upload (cancels Uppy and aborts the R2 session). */\n signal?: AbortSignal;\n}\n\n/**\n * Upload ONE file's bytes to R2 with a resilient, resumable multipart upload,\n * driving `@uppy/aws-s3` headless (no DOM). Uppy owns the bug-prone mechanics —\n * fixed-size chunking, parallel parts, per-part retry, resume via `listParts`,\n * and progress — wired to OUR signing endpoints (`createMultipartUpload` returns\n * the cached create-response session, so there's no extra round-trip to start).\n *\n * Resolves when the upload is fully assembled on R2 (the object then settles\n * through the same probe/transform pipeline a `source_url` import does). Throws\n * {@link UploadError} on a hard failure, or a `DOMException('AbortError')` when\n * `signal` fires.\n */\nexport async function uploadFile(\n file: Blob,\n options: UploadFileOptions,\n): Promise<void> {\n const { mediaId, session, client, onProgress, signal } = options;\n\n if (signal?.aborted) {\n throw new DOMException('Upload aborted', 'AbortError');\n }\n\n const uppy = new Uppy({ autoProceed: false }).use(AwsS3, {\n // Every file is one resumable multipart upload — no size-threshold split, so\n // the path is uniform and a tiny file is just a 1-part upload (PLAN §2). The\n // literal `true` (not a `() => true`) selects Uppy's always-multipart variant.\n shouldUseMultipart: true,\n // Pin Uppy's chunk size to the server's part size — every part except the\n // last MUST be exactly this (an R2 requirement the session encodes).\n getChunkSize: () => session.part_size,\n\n // Start: hand back the cached session from the create response — NO HTTP.\n createMultipartUpload: () => ({\n uploadId: session.upload_id,\n key: session.key,\n }),\n\n // Sign one part → POST /media/{id}/multipart/sign. The sub-endpoint reads the\n // upload id from the asset row, so the body carries only the part number.\n signPart: async (_file, { partNumber }) => {\n const { data } = await mediaSignPart({\n client,\n path: { id: mediaId },\n body: { part_number: partNumber },\n });\n return { url: data.url };\n },\n\n // Resume: GET /media/{id}/multipart/parts → map snake_case → S3 PascalCase so\n // Uppy skips the parts R2 already holds after a dropped connection.\n listParts: async () => {\n const { data } = await mediaListParts({\n client,\n path: { id: mediaId },\n });\n return listedPartsToS3(data.parts);\n },\n\n // Finish: map Uppy's S3 parts → snake_case → POST /media/{id}/multipart/complete.\n completeMultipartUpload: async (_file, { parts }) => {\n await mediaComplete({\n client,\n path: { id: mediaId },\n body: { parts: s3PartsToComplete(parts) },\n });\n return {};\n },\n\n // Cancel: POST /media/{id}/multipart/abort (idempotent server-side).\n abortMultipartUpload: async () => {\n await mediaAbort({ client, path: { id: mediaId } });\n },\n });\n\n // Uppy's `progress` event is the overall 0–100 across all parts of the queue\n // (one file here) — forward it as a 0..1 fraction.\n uppy.on('progress', (percent) => onProgress?.(percent / 100));\n\n const onAbort = () => {\n uppy.cancelAll();\n };\n signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n uppy.addFile({ name: fileName(file), type: file.type, data: file });\n const result = await uppy.upload();\n\n if (signal?.aborted) {\n throw new DOMException('Upload aborted', 'AbortError');\n }\n\n const failed = result?.failed ?? [];\n if (failed.length > 0) {\n throw new UploadError('Multipart upload failed.', {\n cause: failed[0]?.error,\n });\n }\n\n onProgress?.(1);\n } finally {\n signal?.removeEventListener('abort', onAbort);\n uppy.destroy();\n }\n}\n\n/** Uppy needs a file name; a bare `Blob` has none, so fall back to a stable one. */\nfunction fileName(file: Blob): string {\n return file instanceof File ? file.name : 'upload';\n}\n","import pWaitFor from 'p-wait-for';\n\nimport type { PostrunClient } from './client';\nimport { mediaGet } from './client/sdk.gen';\nimport type { MediaResource } from './resources';\n\n/** Default delay between status polls. */\nconst DEFAULT_POLL_INTERVAL_MS = 1_500;\n\n/**\n * Default ceiling before giving up. Server-side video transcode can legitimately\n * take many minutes on a busy worker, so this backstop is generous — a short one\n * marks still-processing-but-eventually-ready videos as a timeout. 30 minutes is\n * a backstop, NOT the expectation; assets normally settle in seconds-to-minutes.\n */\nconst DEFAULT_POLL_TIMEOUT_MS = 30 * 60 * 1_000;\n\nexport interface WaitForMediaOptions {\n /** Typed client to poll through; falls back to the SDK's default client. */\n client?: PostrunClient;\n /** Milliseconds between polls (default 1500). */\n pollInterval?: number;\n /** Milliseconds before giving up and rejecting (default 30 minutes). */\n timeout?: number;\n /** Abort the wait early. */\n signal?: AbortSignal;\n /** Each polled snapshot — surface `progress.percent` while it processes. */\n onPoll?: (media: MediaResource) => void;\n}\n\n/**\n * Resolve once a media asset stops processing. Polls `GET /v1/media/{id}` until\n * `status` is `ready` OR `failed`, returning that settled resource — a `failed`\n * asset RESOLVES (the caller inspects `status`/`error`), it does not throw. Rejects\n * on timeout or when `signal` aborts (a `DOMException('…', 'AbortError')`).\n */\nexport async function waitForMedia(\n mediaId: string,\n options: WaitForMediaOptions = {},\n): Promise<MediaResource> {\n const {\n client,\n pollInterval = DEFAULT_POLL_INTERVAL_MS,\n timeout = DEFAULT_POLL_TIMEOUT_MS,\n signal,\n onPoll,\n } = options;\n\n let latest: MediaResource | undefined;\n await pWaitFor(\n async () => {\n if (signal?.aborted) {\n throw new DOMException('Media wait aborted', 'AbortError');\n }\n latest = (await mediaGet({ client, path: { id: mediaId } })).data;\n onPoll?.(latest);\n return latest.status === 'ready' || latest.status === 'failed';\n },\n { interval: pollInterval, timeout },\n );\n\n if (!latest) {\n throw new Error('Media polling returned no result.');\n }\n return latest;\n}\n","import type { TikTokPrivacyLevel } from './resources';\n\n/**\n * Map a TikTok privacy level to a short, human label for the composer's privacy\n * dropdown — the presentation the API deliberately keeps OFF the wire (the\n * `creator-info` response returns the typed `privacy_options`; the SDK owns how\n * they read).\n *\n * Exhaustive over the closed `TikTokPrivacyLevel` union with no `default` branch,\n * so adding a TikTok privacy level upstream surfaces as a compile error here\n * rather than silently rendering a raw enum string.\n */\nexport function tiktokPrivacyLabel(value: TikTokPrivacyLevel): string {\n switch (value) {\n case 'PUBLIC_TO_EVERYONE':\n return 'Everyone';\n case 'MUTUAL_FOLLOW_FRIENDS':\n return 'Friends';\n case 'FOLLOWER_OF_CREATOR':\n return 'Followers';\n case 'SELF_ONLY':\n return 'Only you';\n }\n}\n","import type { LinkedInPostVariant } from './resources';\n\n/**\n * One LinkedIn poll duration — DERIVED from the contract (the poll `duration`\n * field), never hand-listed, so it can't drift from the API shape.\n */\nexport type LinkedInPollDuration = NonNullable<\n NonNullable<LinkedInPostVariant['settings']>['poll']\n>['duration'];\n\n/**\n * Map a poll duration to the short \"time left\" label LinkedIn shows on the poll\n * card — the presentation the wire keeps enum-only. Exhaustive over the closed\n * union with no `default` branch, so adding a duration upstream surfaces as a\n * compile error here rather than silently rendering a raw enum string.\n */\nexport function linkedinPollDurationLabel(value: LinkedInPollDuration): string {\n switch (value) {\n case 'ONE_DAY':\n return '1 day left';\n case 'THREE_DAYS':\n return '3 days left';\n case 'SEVEN_DAYS':\n return '1 week left';\n case 'FOURTEEN_DAYS':\n return '2 weeks left';\n }\n}\n","import type { XPostVariant } from './resources';\n\n/** An X poll's settings shape — DERIVED from the contract, never re-declared. */\nexport type XPoll = NonNullable<\n NonNullable<XPostVariant['settings']>['poll']\n>;\n\n/** `n unit left`, pluralizing the unit. */\nfunction plural(n: number, unit: string): string {\n return `${n} ${unit}${n === 1 ? '' : 's'} left`;\n}\n\n/**\n * Turn an X poll's `duration_minutes` (5–10080, i.e. 5 min – 7 days) into the\n * \"time left\" label the poll card shows, floored to the coarsest sensible unit\n * (days ≥ 1 day, else hours ≥ 1 hour, else minutes). Pure — pin it in tests.\n */\nexport function xPollDurationLabel(durationMinutes: number): string {\n if (durationMinutes >= 1440) {\n return plural(Math.floor(durationMinutes / 1440), 'day');\n }\n if (durationMinutes >= 60) {\n return plural(Math.floor(durationMinutes / 60), 'hour');\n }\n return plural(durationMinutes, 'minute');\n}\n","import type {\n AccountMetrics,\n FacebookPageMetrics,\n FacebookPostMetrics,\n InstagramAccountMetrics,\n InstagramPostMetrics,\n PostMetrics,\n PostVariantStatus,\n TikTokAccountMetrics,\n TikTokPostMetrics,\n} from './client/types.gen';\n// From `./resources`, which re-declares these names: importing the generated\n// ones too gives the d.ts bundle two symbols under one exported name, and\n// @postrun/react's inferred hook types then fail TS2742.\nimport type { PostPlatform, PostType } from './resources';\n\n/**\n * Presentation helpers for the analytics reads (`postsGetAnalytics`,\n * `connectionsGetAnalytics`). The wire keeps each network's own field names;\n * these carry the domain knowledge a UI needs on top: which metrics apply to a\n * post type, their labels, and their units. Pure — pin them in tests.\n */\n\n/** How to read a metric's number: `ratio` is 0–1, `percent` is 0–100. */\nexport type MetricFormat =\n | 'count'\n | 'seconds'\n | 'milliseconds'\n | 'ratio'\n | 'percent';\n\n/** A count, a breakdown keyed by the network's own type names, or `null` when\n * the network didn't report it. */\nexport type MetricValue = number | Record<string, number> | null;\n\nexport interface MetricRow {\n key: string;\n label: string;\n format: MetricFormat;\n value: MetricValue;\n}\n\nexport interface MetricPoint {\n date: string;\n value: number;\n}\n\nconst ANALYTICS_PLATFORMS = [\n 'tiktok',\n 'instagram',\n 'facebook_page',\n] as const satisfies readonly PostPlatform[];\n\nexport type AnalyticsPlatform = (typeof ANALYTICS_PLATFORMS)[number];\n\n/** Whether Postrun reads analytics for this network. */\nexport function hasAnalytics(platform: string): platform is AnalyticsPlatform {\n return ANALYTICS_PLATFORMS.some((supported) => supported === platform);\n}\n\n/** Only a published variant on a network with analytics has metrics to read.\n * Narrows `platform`, so the variant can go straight to code keyed by\n * `AnalyticsPlatform`. */\nexport function hasPostAnalytics<\n Variant extends { platform: PostPlatform; status: PostVariantStatus },\n>(variant: Variant): variant is Variant & { platform: AnalyticsPlatform } {\n return variant.status === 'published' && hasAnalytics(variant.platform);\n}\n\ninterface MetricField<Key> {\n key: Key;\n label: string;\n format?: MetricFormat;\n}\n\ntype Fields<Metrics> = readonly MetricField<\n Exclude<keyof Metrics, 'platform'>\n>[];\n\n// `total_time_watched` is left out: next to views and average watch time it\n// adds nothing a reader acts on.\nconst TIKTOK_POST: Fields<TikTokPostMetrics> = [\n { key: 'video_views', label: 'Views' },\n { key: 'reach', label: 'Reach' },\n { key: 'likes', label: 'Likes' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n { key: 'favorites', label: 'Saves' },\n { key: 'average_time_watched', label: 'Avg. watch time', format: 'seconds' },\n { key: 'full_video_watched_rate', label: 'Completion', format: 'ratio' },\n { key: 'new_followers', label: 'New followers' },\n { key: 'profile_views', label: 'Profile views' },\n];\n\nconst INSTAGRAM_SHARED: Fields<InstagramPostMetrics> = [\n { key: 'views', label: 'Views' },\n { key: 'reach', label: 'Reach' },\n { key: 'likes', label: 'Likes' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n { key: 'saved', label: 'Saves' },\n { key: 'reposts', label: 'Reposts' },\n { key: 'total_interactions', label: 'Interactions' },\n];\n\n// Meta reports these for single image and carousel posts only.\nconst INSTAGRAM_FEED: Fields<InstagramPostMetrics> = [\n ...INSTAGRAM_SHARED,\n { key: 'follows', label: 'Follows' },\n { key: 'profile_visits', label: 'Profile visits' },\n { key: 'profile_activity', label: 'Profile activity' },\n];\n\nconst INSTAGRAM_REEL: Fields<InstagramPostMetrics> = [\n ...INSTAGRAM_SHARED,\n {\n key: 'ig_reels_avg_watch_time',\n label: 'Avg. watch time',\n format: 'milliseconds',\n },\n {\n key: 'ig_reels_video_view_total_time',\n label: 'Watch time',\n format: 'milliseconds',\n },\n { key: 'reels_skip_rate', label: 'Skip rate', format: 'percent' },\n];\n\nconst FACEBOOK_FEED: Fields<FacebookPostMetrics> = [\n { key: 'post_media_view', label: 'Views' },\n { key: 'post_total_media_view_unique', label: 'Viewers' },\n { key: 'post_reactions_by_type_total', label: 'Reactions' },\n { key: 'post_clicks', label: 'Clicks' },\n { key: 'post_clicks_by_type', label: 'Clicks by type' },\n { key: 'comments', label: 'Comments' },\n { key: 'shares', label: 'Shares' },\n];\n\nconst FACEBOOK_REEL: Fields<FacebookPostMetrics> = [\n { key: 'blue_reels_play_count', label: 'Plays' },\n { key: 'fb_reels_total_plays', label: 'Total plays' },\n { key: 'fb_reels_replay_count', label: 'Replays' },\n {\n key: 'post_video_avg_time_watched',\n label: 'Avg. watch time',\n format: 'milliseconds',\n },\n { key: 'post_video_view_time', label: 'Watch time', format: 'milliseconds' },\n { key: 'post_video_followers', label: 'New followers' },\n { key: 'post_video_likes_by_reaction_type', label: 'Reactions' },\n];\n\nfunction rowsOf<Key extends string>(\n fields: readonly MetricField<Key>[],\n metrics: Record<Key, MetricValue>,\n): MetricRow[] {\n return fields.map(({ key, label, format = 'count' }) => ({\n key,\n label,\n format,\n value: metrics[key],\n }));\n}\n\n/**\n * The metrics that apply to a post, in display order. Meta reports different\n * metrics for Reels than for other posts, so `postType` (the variant's\n * `post_type`) picks the set; a metric that doesn't apply is left out rather\n * than shown as unreported.\n */\nexport function postMetricRows(\n metrics: PostMetrics,\n postType: PostType | null,\n): MetricRow[] {\n switch (metrics.platform) {\n case 'tiktok':\n return rowsOf(TIKTOK_POST, metrics);\n case 'instagram':\n return rowsOf(\n postType === 'reel' ? INSTAGRAM_REEL : INSTAGRAM_FEED,\n metrics,\n );\n case 'facebook_page':\n return rowsOf(\n postType === 'reel' ? FACEBOOK_REEL : FACEBOOK_FEED,\n metrics,\n );\n }\n}\n\nconst TIKTOK_ACCOUNT: Fields<Omit<TikTokAccountMetrics, 'daily'>> = [\n { key: 'followers_count', label: 'Followers' },\n { key: 'following_count', label: 'Following' },\n { key: 'total_likes', label: 'Likes' },\n { key: 'videos_count', label: 'Videos' },\n];\n\nconst INSTAGRAM_ACCOUNT: Fields<\n Omit<InstagramAccountMetrics, 'daily' | 'last_30_days'>\n> = [\n { key: 'followers_count', label: 'Followers' },\n { key: 'follows_count', label: 'Following' },\n { key: 'media_count', label: 'Posts' },\n];\n\nconst INSTAGRAM_LAST_30_DAYS: Fields<InstagramAccountMetrics['last_30_days']> =\n [\n { key: 'views', label: 'Views · 30d' },\n { key: 'reach', label: 'Reach · 30d' },\n { key: 'accounts_engaged', label: 'Engaged · 30d' },\n { key: 'total_interactions', label: 'Interactions · 30d' },\n ];\n\nconst FACEBOOK_ACCOUNT: Fields<Omit<FacebookPageMetrics, 'daily'>> = [\n { key: 'followers_count', label: 'Followers' },\n];\n\n/** An account's headline numbers, in display order. */\nexport function accountMetricRows(metrics: AccountMetrics): MetricRow[] {\n switch (metrics.platform) {\n case 'tiktok':\n return rowsOf(TIKTOK_ACCOUNT, metrics);\n case 'instagram':\n return [\n ...rowsOf(INSTAGRAM_ACCOUNT, metrics),\n ...rowsOf(INSTAGRAM_LAST_30_DAYS, metrics.last_30_days),\n ];\n case 'facebook_page':\n return rowsOf(FACEBOOK_ACCOUNT, metrics);\n }\n}\n\nfunction pointsOf<Key extends string>(\n daily: ReadonlyArray<{ date: string } & Record<Key, number | null>>,\n key: Key,\n): MetricPoint[] {\n return daily.flatMap((day) => {\n const value = day[key];\n\n return value === null ? [] : [{ date: day.date, value }];\n });\n}\n\n/**\n * The account's main daily series for a trend line, oldest first, leaving out\n * days the network didn't report. Instagram's is reach: it is the only account\n * metric Meta reports per day.\n */\nexport function accountTrend(metrics: AccountMetrics): {\n label: string;\n points: MetricPoint[];\n} {\n switch (metrics.platform) {\n case 'tiktok':\n return {\n label: 'Followers',\n points: pointsOf(metrics.daily, 'followers_count'),\n };\n case 'instagram':\n return { label: 'Reach', points: pointsOf(metrics.daily, 'reach') };\n case 'facebook_page':\n return {\n label: 'Followers',\n points: pointsOf(metrics.daily, 'page_follows'),\n };\n }\n}\n\n// Pinned to en-US to match the English labels: a reader's locale would turn\n// \"1.2K\" into \"12L\" (en-IN) next to them.\nconst COUNT = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n maximumFractionDigits: 1,\n});\nconst PERCENT = new Intl.NumberFormat('en-US', {\n style: 'percent',\n maximumFractionDigits: 1,\n});\nconst unit = (name: 'second' | 'minute' | 'hour') =>\n new Intl.NumberFormat('en-US', {\n style: 'unit',\n unit: name,\n unitDisplay: 'narrow',\n maximumFractionDigits: 1,\n });\nconst SECONDS = unit('second');\nconst MINUTES = unit('minute');\nconst HOURS = unit('hour');\n\n// Compared after rounding to the shown precision, so 59.96 s reads \"1m\", not \"60s\".\nconst roundsBelow = (value: number, limit: number) =>\n Math.round(value * 10) / 10 < limit;\n\nfunction formatDuration(seconds: number): string {\n if (roundsBelow(seconds, 60)) {\n return SECONDS.format(seconds);\n }\n\n const minutes = seconds / 60;\n\n return roundsBelow(minutes, 60)\n ? MINUTES.format(minutes)\n : HOURS.format(minutes / 60);\n}\n\nfunction formatNumber(value: number, format: MetricFormat): string {\n switch (format) {\n case 'count':\n return COUNT.format(value);\n case 'seconds':\n return formatDuration(value);\n case 'milliseconds':\n return formatDuration(value / 1000);\n case 'ratio':\n return PERCENT.format(value);\n case 'percent':\n return PERCENT.format(value / 100);\n }\n}\n\nconst capitalize = (text: string) =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\n/**\n * A metric for display. `null` (not reported) reads \"—\", never a made-up 0. A\n * breakdown lists its types largest first: \"Like 1.2K · Love 3\".\n */\nexport function formatMetric(\n value: MetricValue,\n format: MetricFormat = 'count',\n): string {\n if (value === null) {\n return '—';\n }\n\n if (typeof value === 'number') {\n return formatNumber(value, format);\n }\n\n const entries = Object.entries(value).sort(([, a], [, b]) => b - a);\n\n return entries.length === 0\n ? '0'\n : entries\n .map(([type, count]) => `${capitalize(type)} ${COUNT.format(count)}`)\n .join(' · ');\n}\n","import type {\n MediaResource,\n Post,\n PostType,\n SettingsFor,\n TikTokCreatorInfo,\n} from './resources';\nimport { type TikTokPrivacyLevel } from './resources';\nimport { tiktokPrivacyLabel } from './tiktok';\n\n/**\n * The TikTok composer's publish-options model — the framework-agnostic glue\n * between the live `creator-info` payload and a TikTok post's settings. This is\n * the SINGLE source for the audience / creator-gated interaction / commercial\n * disclosure rules; the React panel and the dashboard composer both consume it\n * (never re-implement it). The no-default audience and explicit-consent flow are\n * Postrun's own UX choices, not API requirements.\n *\n * The creator-info shape, the privacy union, and the privacy label come from the\n * contract (`./resources`, `./tiktok`) — never re-declared. This module owns the\n * controlled FORM value, the selection rules, and the mapping into the SDK's\n * per-platform `tiktok` settings.\n */\n\n/** TikTok caption caps, mirrored from the publish contract (`BODY_MAX.tiktok_*`).\n * A video post caps the title (2200), a photo post the description (4000). Lives\n * here (not in React) so non-React consumers (MCP, API client, scripts) can use\n * it. The server enforces these; the editor surfaces them. */\nexport const TIKTOK_CAPTION_MAX = { video: 2200, photo: 4000 } as const;\n\n/** The caption cap for a given post_type (video → title cap, photo → description).\n * `post_type` is server-derived from the media (read-only) — the composer passes\n * the shape it knows it's building (a video post vs a photo post). */\nexport function captionMaxFor(postType: PostType): number {\n return postType === 'video'\n ? TIKTOK_CAPTION_MAX.video\n : TIKTOK_CAPTION_MAX.photo;\n}\n\n/** The creator-gated interactions we surface — DERIVED from the creator-info\n * contract (`interaction` keys), never hand-listed, so it can never drift from\n * the API shape. */\nexport type TikTokInteractionKey = keyof TikTokCreatorInfo['interaction'];\n\n/** Which commercial-disclosure brand option a control maps to. */\nexport type TikTokBrandKind = 'your_brand' | 'branded_content';\n\n/**\n * The controlled value a TikTok composer/preview owns. `privacy_level` is\n * PHOTO-ONLY (TikTok publishes every video publicly) and optional because we\n * make the user pick — there is NO default (an absent value is the \"must choose\"\n * state the photo publish gate keys off). Interaction flags are POSITIVE\n * (\"allow\"); `tiktokSettings` inverts them to the API's `disable_*` shape.\n */\nexport interface TikTokOptionsValue {\n privacy_level?: TikTokPrivacyLevel;\n allow_comment: boolean;\n allow_duet: boolean;\n allow_stitch: boolean;\n /** Commercial Content Disclosure master toggle (off by default). When on, at\n * least one of `your_brand` / `branded_content` must be chosen. */\n commercial_disclosure: boolean;\n your_brand: boolean;\n branded_content: boolean;\n /** AI-generated content disclosure → the API's `is_ai_generated`. Video-only,\n * off by default. */\n ai_generated: boolean;\n}\n\nexport interface AudiencePrivacyChoice {\n level: TikTokPrivacyLevel;\n label: string;\n disabled: boolean;\n /** Why the option is disabled; present only when disabled. */\n disabledReason?: string;\n}\n\nexport interface TikTokInteractionRow {\n key: TikTokInteractionKey;\n label: string;\n /** Disabled (and forced off) when the creator forbids it — TikTok mandate. */\n disabled: boolean;\n}\n\n/* --------------------------- required wording --------------------------- */\n\n/** TikTok's Music Usage Confirmation — the legal URL the declaration links to. */\nexport const TIKTOK_MUSIC_CONFIRMATION_URL =\n 'https://www.tiktok.com/legal/page/global/music-usage-confirmation/en';\n\n/** TikTok's Branded Content Policy — linked when a paid partnership is disclosed. */\nexport const TIKTOK_BRANDED_CONTENT_POLICY_URL =\n 'https://www.tiktok.com/legal/page/global/bc-policy/en';\n\n/** TikTok's exact required prompt when disclosure is on but nothing is chosen. */\nexport const TIKTOK_DISCLOSURE_REQUIRED_HINT =\n 'You need to indicate if your content promotes yourself, a third party, or both.';\n\n/** Shown when a photo post has no audience picked yet. */\nexport const TIKTOK_AUDIENCE_REQUIRED_HINT =\n 'Choose who can view this post before publishing.';\n\n/** Why branded content can't be combined with a private audience. */\nexport const TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON =\n 'Branded content visibility cannot be set to private.';\n\n/** A published post may take a few minutes to process; tells the user so. */\nexport const TIKTOK_PROCESSING_NOTICE =\n 'After you publish, it may take a few minutes for your post to process and appear on your TikTok profile.';\n\n/* ------------------------------ defaults ------------------------------ */\n\n/**\n * The initial value for a TikTok post: nothing pre-selected. We make the user\n * actively choose — no default audience, every interaction OFF, no disclosure.\n * The panel still greys the interactions the creator forbids.\n */\nexport function defaultTikTokOptions(): TikTokOptionsValue {\n return {\n privacy_level: undefined,\n allow_comment: false,\n allow_duet: false,\n allow_stitch: false,\n commercial_disclosure: false,\n your_brand: false,\n branded_content: false,\n ai_generated: false,\n };\n}\n\n/* ------------------------------ audience ------------------------------ */\n\n/** Narrow a raw dropdown value to a `TikTokPrivacyLevel` against the creator's\n * allowed options — returns `undefined` for anything not offered (no cast). */\nexport function parsePrivacyLevel(\n value: string,\n options: readonly TikTokPrivacyLevel[],\n): TikTokPrivacyLevel | undefined {\n return options.find((option) => option === value);\n}\n\n/** Effective brand flags (only meaningful while disclosure is on). */\nfunction discloses(value: TikTokOptionsValue, kind: TikTokBrandKind): boolean {\n return value.commercial_disclosure && value[kind];\n}\n\n/**\n * The audience choices for a PHOTO post — one per creator-allowed level. While\n * branded content is disclosed, `SELF_ONLY` stays visible but disabled with the\n * reason (branded content can't be private); it is never silently removed or\n * swapped, so the user's selection is never changed behind their back.\n */\nexport function audiencePrivacyOptions(\n options: readonly TikTokPrivacyLevel[],\n value: TikTokOptionsValue,\n): AudiencePrivacyChoice[] {\n const brandedContent = discloses(value, 'branded_content');\n\n return options.map((level) => {\n const disabled = brandedContent && level === 'SELF_ONLY';\n return {\n level,\n label: tiktokPrivacyLabel(level),\n disabled,\n ...(disabled\n ? { disabledReason: TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON }\n : {}),\n };\n });\n}\n\n/** A photo post with no audience picked yet — must BLOCK publish (the API\n * requires `privacy_level` on photos and we offer no default). A video never\n * needs one: TikTok publishes every video publicly. */\nexport function audienceUnselected(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): boolean {\n return !isVideo && value.privacy_level === undefined;\n}\n\n/* --------------------------- commercial disclosure --------------------------- */\n\n/** Disclosure is on but neither brand option is chosen — TikTok requires ≥1. */\nexport function commercialDisclosureIncomplete(\n value: TikTokOptionsValue,\n): boolean {\n return (\n value.commercial_disclosure && !value.your_brand && !value.branded_content\n );\n}\n\n/** True when the post is disclosed as branded content (drives the BC declaration). */\nexport function brandedContentDeclared(value: TikTokOptionsValue): boolean {\n return discloses(value, 'branded_content');\n}\n\n/**\n * TikTok's required label notice for the disclosed content — branded content\n * (alone OR with your-brand) is \"Paid partnership\"; your-brand alone is\n * \"Promotional content\". `null` when nothing is disclosed. Wording is verbatim.\n */\nexport function commercialLabelNotice(\n value: TikTokOptionsValue,\n): string | null {\n if (discloses(value, 'branded_content')) {\n return \"Your photo/video will be labeled as 'Paid partnership'\";\n }\n if (discloses(value, 'your_brand')) {\n return \"Your photo/video will be labeled as 'Promotional content'\";\n }\n return null;\n}\n\n/** Toggle the master disclosure switch. Turning it OFF clears both brand\n * selections (a hidden control must not keep sending a stale selection). */\nexport function setCommercialDisclosure(\n value: TikTokOptionsValue,\n on: boolean,\n): TikTokOptionsValue {\n return on\n ? { ...value, commercial_disclosure: true }\n : {\n ...value,\n commercial_disclosure: false,\n your_brand: false,\n branded_content: false,\n };\n}\n\n/** Set one brand option. Never touches the audience (see\n * `brandedContentDisabledReason` for how a private audience locks branded content). */\nexport function setBrandKind(\n value: TikTokOptionsValue,\n kind: TikTokBrandKind,\n on: boolean,\n): TikTokOptionsValue {\n return { ...value, [kind]: on };\n}\n\n/* ------------------------------ interactions ------------------------------ */\n\n/**\n * Why \"Branded content\" is locked, or undefined when it can be toggled. With a\n * private audience already picked the option stays visible but disabled WITH the\n * reason — an already-checked box stays untickable.\n */\nexport function brandedContentDisabledReason(\n value: TikTokOptionsValue,\n): string | undefined {\n return value.privacy_level === 'SELF_ONLY' && !value.branded_content\n ? TIKTOK_BRANDED_CONTENT_PRIVATE_DISABLED_REASON\n : undefined;\n}\n\n/** True when the creator does NOT permit this interaction (so it's locked off). */\nexport function isInteractionForbidden(\n info: TikTokCreatorInfo,\n key: TikTokInteractionKey,\n): boolean {\n return !info.interaction[key];\n}\n\nconst INTERACTION_LABELS: Record<TikTokInteractionKey, string> = {\n comment: 'Comment',\n duet: 'Duet',\n stitch: 'Stitch',\n};\n\n/** Duet & Stitch are video-only — the API rejects `disable_duet` /\n * `disable_stitch` on a photo post — so a photo post shows only Comment. */\nconst VIDEO_INTERACTIONS: readonly TikTokInteractionKey[] = [\n 'comment',\n 'duet',\n 'stitch',\n];\nconst PHOTO_INTERACTIONS: readonly TikTokInteractionKey[] = ['comment'];\n\nconst INTERACTION_VALUE_KEY = {\n comment: 'allow_comment',\n duet: 'allow_duet',\n stitch: 'allow_stitch',\n} as const satisfies Record<TikTokInteractionKey, keyof TikTokOptionsValue>;\n\n/** The interaction toggles to render — video shows Comment/Duet/Stitch (each\n * disabled iff the creator forbids it); photo shows only Comment. */\nexport function interactionRows(\n info: TikTokCreatorInfo,\n isVideo: boolean,\n): TikTokInteractionRow[] {\n const order = isVideo ? VIDEO_INTERACTIONS : PHOTO_INTERACTIONS;\n return order.map((key) => ({\n key,\n label: INTERACTION_LABELS[key],\n disabled: isInteractionForbidden(info, key),\n }));\n}\n\n/** The `TikTokOptionsValue` flag an interaction key maps to. */\nexport function interactionValueKey(\n key: TikTokInteractionKey,\n): keyof TikTokOptionsValue {\n return INTERACTION_VALUE_KEY[key];\n}\n\n/** Immutably set an interaction flag — returns a new value, never mutates. */\nexport function toggleInteraction(\n value: TikTokOptionsValue,\n key: TikTokInteractionKey,\n on: boolean,\n): TikTokOptionsValue {\n return { ...value, [INTERACTION_VALUE_KEY[key]]: on };\n}\n\n/* -------------------------------- mapping -------------------------------- */\n\n/**\n * Map the composer's positive value into the SDK's `tiktok` settings — INVERTING\n * `allow_*` into TikTok's `disable_*`. The API rejects video-only fields\n * (`disable_duet`/`disable_stitch`/`is_ai_generated`) on a photo and\n * `privacy_level` on a video (`field_placement_invalid`), so each post kind sends\n * only its own.\n */\nexport function tiktokSettings(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): NonNullable<SettingsFor<'tiktok'>> {\n const base = {\n disable_comment: !value.allow_comment,\n is_brand_organic: discloses(value, 'your_brand'),\n is_branded_content: discloses(value, 'branded_content'),\n };\n\n return isVideo\n ? {\n ...base,\n disable_duet: !value.allow_duet,\n disable_stitch: !value.allow_stitch,\n is_ai_generated: value.ai_generated,\n }\n : { ...base, privacy_level: value.privacy_level };\n}\n\n/** A fetched post's TikTok variant settings (the read shape) — derived from the\n * contract, never re-declared. */\ntype TikTokVariantSettings = Extract<\n Post['variants'][number],\n { platform: 'tiktok' }\n>['settings'];\n\n/**\n * The inverse of {@link tiktokSettings}: rebuild the composer's controlled\n * options from a fetched post's TikTok settings — the open-a-draft / scheduled\n * path. `disable_*` flags invert back to positive \"allow\"; disclosure is on when\n * either brand flag is.\n */\nexport function tiktokOptionsFromSettings(\n settings: TikTokVariantSettings,\n): TikTokOptionsValue {\n const yourBrand = settings.is_brand_organic ?? false;\n const brandedContent = settings.is_branded_content ?? false;\n\n return {\n privacy_level: settings.privacy_level,\n allow_comment: !(settings.disable_comment ?? false),\n allow_duet: !(settings.disable_duet ?? false),\n allow_stitch: !(settings.disable_stitch ?? false),\n commercial_disclosure: yourBrand || brandedContent,\n your_brand: yourBrand,\n branded_content: brandedContent,\n ai_generated: settings.is_ai_generated ?? false,\n };\n}\n\n/* ------------------------------ readiness ------------------------------ */\n\n/**\n * A render-ready block message when the selected video exceeds the creator's\n * `max_video_duration_sec`, else `null`. Video-only. Never false-blocks: missing\n * creator-info (still loading), no video asset, or a duration the probe hasn't\n * reported yet (`source.duration_ms === null`) all return `null` — it only fires\n * on a KNOWN over-limit duration.\n */\nexport function tiktokDurationError(\n media: readonly MediaResource[],\n info: TikTokCreatorInfo | null,\n isVideo: boolean,\n): string | null {\n if (!isVideo || !info) return null;\n\n const durationMs = media.find((asset) => asset.kind === 'video')?.source\n ?.duration_ms;\n if (durationMs == null) return null;\n if (durationMs / 1000 <= info.max_video_duration_sec) return null;\n\n return `This video is longer than your TikTok account allows (max ${info.max_video_duration_sec}s).`;\n}\n\n/**\n * Is the TikTok post ready to publish (client-side gate mirroring the API)?\n * A photo needs an audience; any post with disclosure on needs a brand kind.\n * The caption-cap + media-count checks live with their own components.\n */\nexport function tiktokOptionsReady(\n value: TikTokOptionsValue,\n isVideo: boolean,\n): boolean {\n // Branded content can't be private (the API rejects it) — checked here so a\n // host that builds the options object directly (bypassing setBrandKind's\n // clearing) still can't enable Post on a state the wire will refuse.\n const brandedPrivate =\n !isVideo &&\n discloses(value, 'branded_content') &&\n value.privacy_level === 'SELF_ONLY';\n return (\n !audienceUnselected(value, isVideo) &&\n !commercialDisclosureIncomplete(value) &&\n !brandedPrivate\n );\n}\n","import type {\n Connection,\n CreatePostInput,\n MediaResource,\n PostMetadata,\n PostPlatform,\n PostVariantInput,\n PublishMode,\n SettingsFor,\n UpdatePostInput,\n} from './resources';\n\n/* --------------------------------- types --------------------------------- */\n\n/**\n * A media attachment — just the uploaded asset's id. The post SHAPE (`post_type`\n * and the LinkedIn `content_kind` / Instagram `media_type`) is DERIVED server-side\n * from the media's byte-detected kind, so the customer never declares a media\n * `kind` here — they attach the asset and we figure out the rest.\n */\nexport type MediaInput = Pick<MediaResource, 'id'>;\n\n/** Base content, shared across channels unless a channel overrides it. */\nexport interface PostContent {\n body?: string;\n media?: readonly MediaInput[];\n}\n\n/**\n * One channel's config. The SDK owns the plumbing (connection, media, assembly);\n * the CUSTOMER owns `settings` — the platform's native, fully-typed config. An\n * Instagram setting on an X channel is a compile error. The post shape is never\n * specified here — the server derives it from the attached media.\n */\nexport interface ChannelConfig<P extends PostPlatform> {\n settings: SettingsFor<P>;\n body?: string;\n media?: readonly MediaInput[];\n connectionId?: string;\n}\n\n/** Channels keyed by platform — each value typed to that platform. */\nexport type Channels = { [P in PostPlatform]?: ChannelConfig<P> };\n\nexport interface ComposePostInput {\n profileId: string;\n content?: PostContent;\n channels: Channels;\n publish?: PublishMode;\n scheduleAt?: string;\n externalId?: string;\n metadata?: PostMetadata;\n tags?: readonly string[];\n notes?: string;\n dryRun?: boolean;\n}\n\n/** A post edit. Omit `channels` for a light edit; include it to rebuild variants. */\nexport interface ComposeUpdateInput {\n content?: PostContent;\n channels?: Channels;\n publish?: PublishMode;\n scheduleAt?: string;\n externalId?: string;\n metadata?: PostMetadata;\n tags?: readonly string[];\n notes?: string;\n dryRun?: boolean;\n}\n\n/** The connections a build resolves against (accepts a full `Connection[]`). */\nexport type ConnectionRef = Pick<Connection, 'id' | 'platform'>;\n\n/**\n * Thrown only for a genuine USAGE error the SDK can't paper over — an\n * unresolvable connection, or a build with zero channels. It is NEVER thrown for\n * a media combination: validity (which media a platform accepts, document\n * support, count limits, …) is the SERVER's job — it derives the post shape from\n * the media and surfaces any problem as a typed `ValidationIssue` from\n * `POST /v1/posts/validate`. So the SDK can always build an in-progress composition.\n */\nexport class ComposeError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'ComposeError';\n }\n}\n\ntype VariantFor<P extends PostPlatform> = Extract<PostVariantInput, { platform: P }>;\n\n/* ----------------------------- platform handlers -------------------------- */\n\n/** What a handler receives to assemble one variant. */\ninterface ResolvedChannel<P extends PostPlatform> {\n settings: SettingsFor<P>;\n connectionId: string;\n body: string | undefined;\n media: readonly { media_id: string }[];\n}\n\n/**\n * A per-platform variant builder: assemble the typed variant from a resolved\n * channel, passing `settings` straight through (the customer owns it). Each\n * platform gets its own builder so the literal `platform` discriminant ties the\n * result to the right union member with no cast — and so the registry is\n * exhaustive over `PostPlatform`. The post shape is NOT set here: the server\n * derives it from the media.\n */\ninterface PlatformHandler<P extends PostPlatform> {\n buildVariant(resolved: ResolvedChannel<P>): VariantFor<P>;\n}\n\nconst xHandler: PlatformHandler<'x'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'x',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst linkedInHandler: PlatformHandler<'linkedin'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'linkedin',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst facebookHandler: PlatformHandler<'facebook_page'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'facebook_page',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst instagramHandler: PlatformHandler<'instagram'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'instagram',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst tiktokHandler: PlatformHandler<'tiktok'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'tiktok',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\nconst youtubeHandler: PlatformHandler<'youtube'> = {\n buildVariant: ({ settings, connectionId, body, media }) => ({\n platform: 'youtube',\n connection_id: connectionId,\n body,\n media: [...media],\n settings,\n }),\n};\n\n/**\n * The handler registry. A `Record<PostPlatform, …>` (no optional keys), so a\n * platform the contract defines without a handler here is a COMPILE ERROR.\n */\nconst PLATFORM_HANDLERS: { [P in PostPlatform]: PlatformHandler<P> } = {\n x: xHandler,\n linkedin: linkedInHandler,\n facebook_page: facebookHandler,\n instagram: instagramHandler,\n tiktok: tiktokHandler,\n youtube: youtubeHandler,\n};\n\n/** Narrow any platform string to a posting platform. */\nexport function isPostPlatform(value: string): value is PostPlatform {\n return Object.prototype.hasOwnProperty.call(PLATFORM_HANDLERS, value);\n}\n\n/** Posting platforms — the single source, derived from the handler registry\n * (the `.filter` type-guard narrows `string[]` → `PostPlatform[]`, cast-free). */\nexport const POST_PLATFORMS: PostPlatform[] =\n Object.keys(PLATFORM_HANDLERS).filter(isPostPlatform);\n\n/* -------------------------------- assembly -------------------------------- */\n\nfunction resolveConnectionId(\n platform: PostPlatform,\n connectionId: string | undefined,\n connections: readonly ConnectionRef[],\n): string {\n if (connectionId) return connectionId;\n const match = connections.find((connection) => connection.platform === platform);\n if (!match) {\n throw new ComposeError(\n `No connection for \"${platform}\" on this profile. Connect the account or pass connectionId.`,\n );\n }\n return match.id;\n}\n\n/** Resolve one channel into its typed variant. Generic over the concrete `P`, so\n * the handler / config / result stay correlated with no cast. */\nfunction buildChannel<P extends PostPlatform>(\n handler: PlatformHandler<P>,\n platform: P,\n config: ChannelConfig<P>,\n content: PostContent,\n connections: readonly ConnectionRef[],\n): VariantFor<P> {\n const media = config.media ?? content.media ?? [];\n return handler.buildVariant({\n settings: config.settings,\n connectionId: resolveConnectionId(platform, config.connectionId, connections),\n body: config.body ?? content.body,\n media: media.map((item) => ({ media_id: item.id })),\n });\n}\n\n/**\n * Resolve ONE platform's channel, or `undefined` when the caller didn't include\n * it. Generic over the concrete `P`, so `channels[platform]` and\n * `PLATFORM_HANDLERS[platform]` stay correlated to the same platform with no cast.\n * Wrapping the registry lookup in this generic is what lets `buildVariants`\n * iterate `POST_PLATFORMS` (a union) without the per-member variance error.\n */\nfunction collectChannel<P extends PostPlatform>(\n platform: P,\n channels: Channels,\n content: PostContent,\n connections: readonly ConnectionRef[],\n): VariantFor<P> | undefined {\n const config = channels[platform];\n if (!config) return undefined;\n return buildChannel(\n PLATFORM_HANDLERS[platform],\n platform,\n config,\n content,\n connections,\n );\n}\n\nfunction buildVariants(\n content: PostContent,\n channels: Channels,\n connections: readonly ConnectionRef[],\n): PostVariantInput[] {\n // Driven by POST_PLATFORMS (derived from the exhaustive PLATFORM_HANDLERS), so a\n // new platform added to the registry is dispatched here automatically — no\n // hand-maintained per-platform branch to forget (the gap that once dropped TikTok).\n const variants = POST_PLATFORMS.flatMap((platform) => {\n const variant = collectChannel(platform, channels, content, connections);\n return variant ? [variant] : [];\n });\n\n if (variants.length === 0) {\n // The ONE retained composition-level guard: \"you called build with no\n // channels\" is a programmer USAGE error, not a per-end-user validity judgment.\n // It is NOT a verdict on whether the media is publishable — that authority\n // (and the post-shape derivation) lives entirely on the server.\n throw new ComposeError('At least one channel is required.');\n }\n return variants;\n}\n\n/**\n * Turn an ergonomic `{ content, channels }` input into the exact\n * `CreatePostInput` the API expects — resolving each channel's connection and\n * attaching the shared/overridden media. The server derives the post shape from\n * that media, so the build is TOTAL: it never throws for a media combination and\n * an in-progress post can always be built to validate. The customer never\n * assembles `variants[]` or sees a `connection_id`, and owns each channel's typed\n * `settings`.\n */\nexport function buildCreatePost(\n input: ComposePostInput,\n connections: readonly ConnectionRef[],\n): CreatePostInput {\n return {\n profile_id: input.profileId,\n publish: input.publish,\n schedule_at: input.scheduleAt,\n external_id: input.externalId,\n metadata: input.metadata,\n tags: input.tags ? [...input.tags] : undefined,\n notes: input.notes,\n dry_run: input.dryRun,\n variants: buildVariants(input.content ?? {}, input.channels, connections),\n };\n}\n\n/** The envelope fields the API counts as a real edit (`dry_run` deliberately not). */\nconst MUTABLE_ENVELOPE_KEYS = [\n 'publish',\n 'scheduleAt',\n 'externalId',\n 'metadata',\n 'tags',\n 'notes',\n] as const satisfies readonly (keyof ComposeUpdateInput)[];\n\n/**\n * Build an `UpdatePostInput`. With `channels`, the full variant set is rebuilt\n * (the API's PATCH replaces it); without it, only the envelope changes.\n */\nexport function buildUpdatePost(\n input: ComposeUpdateInput,\n connections: readonly ConnectionRef[] = [],\n): UpdatePostInput {\n const changesEnvelope = MUTABLE_ENVELOPE_KEYS.some((key) => input[key] !== undefined);\n if (!input.channels && !changesEnvelope) {\n throw new ComposeError(\n 'A post update must change at least one field — pass content/channels or an ' +\n 'envelope field (publish, scheduleAt, tags, …).',\n );\n }\n\n return {\n publish: input.publish,\n schedule_at: input.scheduleAt,\n external_id: input.externalId,\n metadata: input.metadata,\n tags: input.tags ? [...input.tags] : undefined,\n notes: input.notes,\n dry_run: input.dryRun,\n variants: input.channels\n ? buildVariants(input.content ?? {}, input.channels, connections)\n : undefined,\n };\n}\n"]}
|